@apexnative/navigation 0.0.0-stage → 1.0.0-alpha.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1373) hide show
  1. package/ApexNavigation.podspec +42 -0
  2. package/CHANGELOG.md +8 -0
  3. package/LICENSE +21 -0
  4. package/README.md +76 -2
  5. package/android/CLAUDE.md +183 -0
  6. package/android/CORE.md +219 -0
  7. package/android/MATERIAL_SYMBOLS_LICENSE.txt +205 -0
  8. package/android/RECIPES.md +39 -0
  9. package/android/build.gradle +108 -0
  10. package/android/consumer-rules.pro +2 -0
  11. package/android/src/main/AndroidManifest.xml +9 -0
  12. package/android/src/main/java/dev/apexnative/navigation/EdgeToEdgeDecision.kt +25 -0
  13. package/android/src/main/java/dev/apexnative/navigation/NavigationActivity.kt +339 -0
  14. package/android/src/main/java/dev/apexnative/navigation/NavigationApplication.kt +90 -0
  15. package/android/src/main/java/dev/apexnative/navigation/NavigationPackage.kt +37 -0
  16. package/android/src/main/java/dev/apexnative/navigation/customrow/BottomTabsCustomRowOptions.kt +85 -0
  17. package/android/src/main/java/dev/apexnative/navigation/layout/LayoutChecks.kt +51 -0
  18. package/android/src/main/java/dev/apexnative/navigation/layout/LayoutException.kt +7 -0
  19. package/android/src/main/java/dev/apexnative/navigation/layout/LayoutNode.kt +118 -0
  20. package/android/src/main/java/dev/apexnative/navigation/layout/LayoutReader.kt +274 -0
  21. package/android/src/main/java/dev/apexnative/navigation/layout/LayoutType.kt +35 -0
  22. package/android/src/main/java/dev/apexnative/navigation/nativescreen/NativeScreenCalls.kt +61 -0
  23. package/android/src/main/java/dev/apexnative/navigation/nativescreen/NativeScreenContext.kt +84 -0
  24. package/android/src/main/java/dev/apexnative/navigation/nativescreen/NativeScreenCreator.kt +17 -0
  25. package/android/src/main/java/dev/apexnative/navigation/options/AnimationsOptions.kt +54 -0
  26. package/android/src/main/java/dev/apexnative/navigation/options/BottomTabOptions.kt +238 -0
  27. package/android/src/main/java/dev/apexnative/navigation/options/BottomTabsOptions.kt +244 -0
  28. package/android/src/main/java/dev/apexnative/navigation/options/ButtonMenuOptions.kt +70 -0
  29. package/android/src/main/java/dev/apexnative/navigation/options/ButtonOptions.kt +296 -0
  30. package/android/src/main/java/dev/apexnative/navigation/options/ComponentOptions.kt +141 -0
  31. package/android/src/main/java/dev/apexnative/navigation/options/DefaultOptions.kt +21 -0
  32. package/android/src/main/java/dev/apexnative/navigation/options/FabOptions.kt +97 -0
  33. package/android/src/main/java/dev/apexnative/navigation/options/FontOptions.kt +47 -0
  34. package/android/src/main/java/dev/apexnative/navigation/options/HardwareBackButtonOptions.kt +49 -0
  35. package/android/src/main/java/dev/apexnative/navigation/options/InterpolationOptions.kt +203 -0
  36. package/android/src/main/java/dev/apexnative/navigation/options/KeyCommandOptions.kt +49 -0
  37. package/android/src/main/java/dev/apexnative/navigation/options/LargeTitleOptions.kt +78 -0
  38. package/android/src/main/java/dev/apexnative/navigation/options/LayoutAnimation.kt +157 -0
  39. package/android/src/main/java/dev/apexnative/navigation/options/LayoutOptions.kt +94 -0
  40. package/android/src/main/java/dev/apexnative/navigation/options/ModalOptions.kt +87 -0
  41. package/android/src/main/java/dev/apexnative/navigation/options/ModalPlacementOptions.kt +90 -0
  42. package/android/src/main/java/dev/apexnative/navigation/options/NavigationBarOptions.kt +44 -0
  43. package/android/src/main/java/dev/apexnative/navigation/options/Options.kt +167 -0
  44. package/android/src/main/java/dev/apexnative/navigation/options/OptionsCache.kt +21 -0
  45. package/android/src/main/java/dev/apexnative/navigation/options/OptionsReader.kt +133 -0
  46. package/android/src/main/java/dev/apexnative/navigation/options/PreviewOptions.kt +97 -0
  47. package/android/src/main/java/dev/apexnative/navigation/options/ReadableMaps.kt +70 -0
  48. package/android/src/main/java/dev/apexnative/navigation/options/ScrollEdgeEffectOptions.kt +98 -0
  49. package/android/src/main/java/dev/apexnative/navigation/options/SearchBarOptions.kt +151 -0
  50. package/android/src/main/java/dev/apexnative/navigation/options/SharedElementTransitionOptions.kt +57 -0
  51. package/android/src/main/java/dev/apexnative/navigation/options/SheetOptions.kt +108 -0
  52. package/android/src/main/java/dev/apexnative/navigation/options/SideMenuOptions.kt +130 -0
  53. package/android/src/main/java/dev/apexnative/navigation/options/SplitViewGroupOptions.kt +190 -0
  54. package/android/src/main/java/dev/apexnative/navigation/options/SplitViewOptions.kt +28 -0
  55. package/android/src/main/java/dev/apexnative/navigation/options/StackAnimationOptions.kt +270 -0
  56. package/android/src/main/java/dev/apexnative/navigation/options/StatusBarOptions.kt +75 -0
  57. package/android/src/main/java/dev/apexnative/navigation/options/TitleOptions.kt +167 -0
  58. package/android/src/main/java/dev/apexnative/navigation/options/ToolbarOptions.kt +60 -0
  59. package/android/src/main/java/dev/apexnative/navigation/options/TopBarAppearanceOptions.kt +223 -0
  60. package/android/src/main/java/dev/apexnative/navigation/options/TopBarOptions.kt +381 -0
  61. package/android/src/main/java/dev/apexnative/navigation/options/ViewAnimationOptions.kt +225 -0
  62. package/android/src/main/java/dev/apexnative/navigation/options/WindowOptions.kt +36 -0
  63. package/android/src/main/java/dev/apexnative/navigation/options/params/Bool.kt +23 -0
  64. package/android/src/main/java/dev/apexnative/navigation/options/params/Fraction.kt +12 -0
  65. package/android/src/main/java/dev/apexnative/navigation/options/params/LayoutDirection.kt +26 -0
  66. package/android/src/main/java/dev/apexnative/navigation/options/params/Param.kt +24 -0
  67. package/android/src/main/java/dev/apexnative/navigation/options/params/Text.kt +24 -0
  68. package/android/src/main/java/dev/apexnative/navigation/options/params/ThemeColour.kt +259 -0
  69. package/android/src/main/java/dev/apexnative/navigation/options/params/Variant.kt +36 -0
  70. package/android/src/main/java/dev/apexnative/navigation/options/parsers/BoolParser.kt +15 -0
  71. package/android/src/main/java/dev/apexnative/navigation/options/parsers/FontParser.kt +28 -0
  72. package/android/src/main/java/dev/apexnative/navigation/options/parsers/FractionParser.kt +24 -0
  73. package/android/src/main/java/dev/apexnative/navigation/options/parsers/IconParser.kt +48 -0
  74. package/android/src/main/java/dev/apexnative/navigation/options/parsers/StringListParser.kt +27 -0
  75. package/android/src/main/java/dev/apexnative/navigation/options/parsers/TextParser.kt +32 -0
  76. package/android/src/main/java/dev/apexnative/navigation/options/parsers/TypefaceLoader.kt +42 -0
  77. package/android/src/main/java/dev/apexnative/navigation/options/parsers/VariantParser.kt +34 -0
  78. package/android/src/main/java/dev/apexnative/navigation/react/ArrangementStates.kt +41 -0
  79. package/android/src/main/java/dev/apexnative/navigation/react/CommandAnswer.kt +111 -0
  80. package/android/src/main/java/dev/apexnative/navigation/react/CommandListener.kt +27 -0
  81. package/android/src/main/java/dev/apexnative/navigation/react/CommandRunner.kt +131 -0
  82. package/android/src/main/java/dev/apexnative/navigation/react/DeveloperReload.kt +69 -0
  83. package/android/src/main/java/dev/apexnative/navigation/react/ErrorTexts.kt +123 -0
  84. package/android/src/main/java/dev/apexnative/navigation/react/Hinge.kt +154 -0
  85. package/android/src/main/java/dev/apexnative/navigation/react/LaunchLink.kt +37 -0
  86. package/android/src/main/java/dev/apexnative/navigation/react/NavigationTurboModule.kt +311 -0
  87. package/android/src/main/java/dev/apexnative/navigation/react/OptionsCommands.kt +89 -0
  88. package/android/src/main/java/dev/apexnative/navigation/react/ReactGateway.kt +67 -0
  89. package/android/src/main/java/dev/apexnative/navigation/react/ReactView.kt +197 -0
  90. package/android/src/main/java/dev/apexnative/navigation/react/ReadableJson.kt +60 -0
  91. package/android/src/main/java/dev/apexnative/navigation/react/ReloadCoordinator.kt +130 -0
  92. package/android/src/main/java/dev/apexnative/navigation/react/ScreenInsets.kt +69 -0
  93. package/android/src/main/java/dev/apexnative/navigation/react/ScreenRegions.kt +87 -0
  94. package/android/src/main/java/dev/apexnative/navigation/react/ScrollEvents.kt +160 -0
  95. package/android/src/main/java/dev/apexnative/navigation/react/StartInfo.kt +44 -0
  96. package/android/src/main/java/dev/apexnative/navigation/react/events/AppearanceDispatcher.kt +507 -0
  97. package/android/src/main/java/dev/apexnative/navigation/react/events/ComponentType.kt +13 -0
  98. package/android/src/main/java/dev/apexnative/navigation/react/events/EventEmitter.kt +199 -0
  99. package/android/src/main/java/dev/apexnative/navigation/react/events/NavigationStateReporter.kt +62 -0
  100. package/android/src/main/java/dev/apexnative/navigation/react/events/ScreenAppearance.kt +87 -0
  101. package/android/src/main/java/dev/apexnative/navigation/react/events/StateHold.kt +62 -0
  102. package/android/src/main/java/dev/apexnative/navigation/safearea/SafeAreaReadyEvent.kt +16 -0
  103. package/android/src/main/java/dev/apexnative/navigation/safearea/SafeAreaView.kt +140 -0
  104. package/android/src/main/java/dev/apexnative/navigation/safearea/SafeAreaViewManager.kt +45 -0
  105. package/android/src/main/java/dev/apexnative/navigation/slots/SlotContainers.kt +44 -0
  106. package/android/src/main/java/dev/apexnative/navigation/slots/SlotHost.kt +91 -0
  107. package/android/src/main/java/dev/apexnative/navigation/slots/SlotScreenView.kt +158 -0
  108. package/android/src/main/java/dev/apexnative/navigation/slots/SlotView.kt +141 -0
  109. package/android/src/main/java/dev/apexnative/navigation/slots/SlotViewManager.kt +50 -0
  110. package/android/src/main/java/dev/apexnative/navigation/splash/SplashHold.kt +67 -0
  111. package/android/src/main/java/dev/apexnative/navigation/splash/SplashTheme.kt +81 -0
  112. package/android/src/main/java/dev/apexnative/navigation/splash/SplashView.kt +77 -0
  113. package/android/src/main/java/dev/apexnative/navigation/system/AppDirection.kt +92 -0
  114. package/android/src/main/java/dev/apexnative/navigation/system/SystemUiLayers.kt +126 -0
  115. package/android/src/main/java/dev/apexnative/navigation/system/SystemUiOwner.kt +229 -0
  116. package/android/src/main/java/dev/apexnative/navigation/system/SystemUiRules.kt +302 -0
  117. package/android/src/main/java/dev/apexnative/navigation/system/SystemUiState.kt +58 -0
  118. package/android/src/main/java/dev/apexnative/navigation/system/SystemUiWindow.kt +405 -0
  119. package/android/src/main/java/dev/apexnative/navigation/utils/ColorUtils.kt +22 -0
  120. package/android/src/main/java/dev/apexnative/navigation/utils/DevelopmentLog.kt +45 -0
  121. package/android/src/main/java/dev/apexnative/navigation/utils/DimensionExtensions.kt +16 -0
  122. package/android/src/main/java/dev/apexnative/navigation/utils/ImageLoader.kt +112 -0
  123. package/android/src/main/java/dev/apexnative/navigation/utils/MaterialTheme.kt +148 -0
  124. package/android/src/main/java/dev/apexnative/navigation/utils/NavigationLog.kt +6 -0
  125. package/android/src/main/java/dev/apexnative/navigation/utils/ScrollToTop.kt +33 -0
  126. package/android/src/main/java/dev/apexnative/navigation/utils/SystemUiUtils.kt +41 -0
  127. package/android/src/main/java/dev/apexnative/navigation/utils/TestIds.kt +89 -0
  128. package/android/src/main/java/dev/apexnative/navigation/utils/TextViewUtils.kt +10 -0
  129. package/android/src/main/java/dev/apexnative/navigation/utils/UiThread.kt +31 -0
  130. package/android/src/main/java/dev/apexnative/navigation/utils/UiUtils.kt +43 -0
  131. package/android/src/main/java/dev/apexnative/navigation/utils/ViewController.kt +124 -0
  132. package/android/src/main/java/dev/apexnative/navigation/utils/ViewExtensions.kt +41 -0
  133. package/android/src/main/java/dev/apexnative/navigation/utils/ViewUtils.kt +15 -0
  134. package/android/src/main/java/dev/apexnative/navigation/utils/WindowFolds.kt +107 -0
  135. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/arrangement/ArrangementController.kt +258 -0
  136. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/arrangement/ArrangementDefinition.kt +57 -0
  137. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/arrangement/ArrangementLayout.kt +225 -0
  138. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/arrangement/ArrangementPlanner.kt +120 -0
  139. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/arrangement/SecondaryScreenPresenter.kt +31 -0
  140. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/BottomTabsCollapseBehavior.kt +54 -0
  141. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/BottomTabsController.kt +664 -0
  142. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/BottomTabsPresenter.kt +367 -0
  143. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/CustomTabRowGeometry.kt +81 -0
  144. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/CustomTabRowPlacer.kt +223 -0
  145. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/TabBarLook.kt +74 -0
  146. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/TabBarMotion.kt +83 -0
  147. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/TabCellState.kt +27 -0
  148. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/TabHistory.kt +38 -0
  149. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/TabItems.kt +172 -0
  150. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/TabSelection.kt +65 -0
  151. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/TabsAttach.kt +42 -0
  152. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/TabsRoom.kt +72 -0
  153. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/child/ChildController.kt +45 -0
  154. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/child/ChildControllersRegistry.kt +29 -0
  155. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/component/ComponentPresenter.kt +90 -0
  156. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/component/ComponentViewController.kt +254 -0
  157. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/component/ContentReadiness.kt +65 -0
  158. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/component/RenderWait.kt +231 -0
  159. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/component/RestPlace.kt +28 -0
  160. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/component/ScreenContentFactory.kt +28 -0
  161. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/component/ScreenFocus.kt +22 -0
  162. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/component/ScreenFrame.kt +154 -0
  163. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/component/ScreenReadiness.kt +104 -0
  164. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/component/ScreenSafeArea.kt +148 -0
  165. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/externalcomponent/ExternalComponentCreator.kt +18 -0
  166. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/externalcomponent/ExternalComponentViewController.kt +187 -0
  167. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/externalcomponent/NativeScreens.kt +25 -0
  168. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/modal/ModalAnimations.kt +40 -0
  169. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/modal/ModalContainer.kt +20 -0
  170. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/modal/ModalCoordinator.kt +1269 -0
  171. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/modal/ModalRecord.kt +186 -0
  172. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/modal/ModalSheet.kt +342 -0
  173. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/modal/ModalViews.kt +398 -0
  174. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/modal/SheetContainer.kt +67 -0
  175. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/navigator/BackCallbackState.kt +78 -0
  176. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/navigator/FirstRootDraw.kt +58 -0
  177. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/navigator/LayoutFactory.kt +203 -0
  178. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/navigator/Navigator.kt +562 -0
  179. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/navigator/Navigators.kt +53 -0
  180. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/navigator/RootCoordinator.kt +514 -0
  181. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/navigator/WaitingLayer.kt +18 -0
  182. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/overlay/OverlayContainer.kt +33 -0
  183. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/overlay/OverlayCoordinator.kt +383 -0
  184. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/overlay/OverlayTouches.kt +44 -0
  185. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/overlay/OverlayViews.kt +117 -0
  186. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/parent/Capabilities.kt +62 -0
  187. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/parent/ContainerBackground.kt +43 -0
  188. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/parent/ParentController.kt +218 -0
  189. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/parent/ShownChildren.kt +82 -0
  190. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/sidemenu/SideMenuController.kt +283 -0
  191. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/sidemenu/SideMenuMotion.kt +276 -0
  192. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/sidemenu/SideMenuPresenter.kt +92 -0
  193. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/sidemenu/SideMenuRules.kt +107 -0
  194. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/splitview/SplitPanes.kt +59 -0
  195. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/splitview/SplitViewController.kt +509 -0
  196. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/splitview/SplitViewLayout.kt +61 -0
  197. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/splitview/SplitViewPresenter.kt +25 -0
  198. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/PreparedFrame.kt +19 -0
  199. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/PreparedPushes.kt +114 -0
  200. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/StackCommands.kt +387 -0
  201. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/StackController.kt +635 -0
  202. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/StackDisplay.kt +167 -0
  203. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/StackPresenter.kt +24 -0
  204. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/StackQueue.kt +1274 -0
  205. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/StackTransitions.kt +82 -0
  206. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/StackViews.kt +222 -0
  207. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/fab/FabPlacement.kt +47 -0
  208. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/fab/FabPlan.kt +44 -0
  209. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/fab/FabPresenter.kt +279 -0
  210. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/search/ScreenSearch.kt +450 -0
  211. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/search/SearchPanel.kt +176 -0
  212. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/search/StackSearchPresenter.kt +243 -0
  213. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/topbar/BarComponents.kt +211 -0
  214. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/topbar/BarRowTransition.kt +122 -0
  215. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/topbar/ButtonCells.kt +30 -0
  216. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/topbar/ButtonPlaces.kt +65 -0
  217. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/topbar/LargeTitleCollapse.kt +71 -0
  218. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/topbar/MenuChecks.kt +72 -0
  219. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/topbar/TopBarCollapseBehavior.kt +104 -0
  220. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/topbar/TopBarPresenter.kt +1085 -0
  221. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/topbar/TopBarRoom.kt +95 -0
  222. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/topbar/TopBarVisibility.kt +122 -0
  223. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/viewcontroller/IReactView.kt +89 -0
  224. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/viewcontroller/Presenter.kt +51 -0
  225. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/viewcontroller/ScrollEventListener.kt +194 -0
  226. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/viewcontroller/ViewController.kt +320 -0
  227. package/android/src/main/java/dev/apexnative/navigation/views/animations/AnimationRules.kt +141 -0
  228. package/android/src/main/java/dev/apexnative/navigation/views/animations/Curves.kt +193 -0
  229. package/android/src/main/java/dev/apexnative/navigation/views/animations/FadeThrough.kt +57 -0
  230. package/android/src/main/java/dev/apexnative/navigation/views/animations/SideAnimator.kt +143 -0
  231. package/android/src/main/java/dev/apexnative/navigation/views/animations/SystemTransition.kt +26 -0
  232. package/android/src/main/java/dev/apexnative/navigation/views/animations/ValueInterpolation.kt +93 -0
  233. package/android/src/main/java/dev/apexnative/navigation/views/bottomtabs/BottomTabItem.kt +13 -0
  234. package/android/src/main/java/dev/apexnative/navigation/views/bottomtabs/BottomTabs.kt +550 -0
  235. package/android/src/main/java/dev/apexnative/navigation/views/bottomtabs/BottomTabsContainer.kt +135 -0
  236. package/android/src/main/java/dev/apexnative/navigation/views/bottomtabs/BottomTabsLayout.kt +89 -0
  237. package/android/src/main/java/dev/apexnative/navigation/views/bottomtabs/CustomBottomTabItemView.kt +91 -0
  238. package/android/src/main/java/dev/apexnative/navigation/views/bottomtabs/CustomTabRow.kt +165 -0
  239. package/android/src/main/java/dev/apexnative/navigation/views/component/ComponentLayout.kt +89 -0
  240. package/android/src/main/java/dev/apexnative/navigation/views/component/Renderable.kt +6 -0
  241. package/android/src/main/java/dev/apexnative/navigation/views/element/DrawOrder.kt +44 -0
  242. package/android/src/main/java/dev/apexnative/navigation/views/element/ElementStub.kt +31 -0
  243. package/android/src/main/java/dev/apexnative/navigation/views/element/ElementTransitions.kt +281 -0
  244. package/android/src/main/java/dev/apexnative/navigation/views/element/ImageLoads.kt +103 -0
  245. package/android/src/main/java/dev/apexnative/navigation/views/element/TargetsWait.kt +112 -0
  246. package/android/src/main/java/dev/apexnative/navigation/views/element/TransitionLayer.kt +152 -0
  247. package/android/src/main/java/dev/apexnative/navigation/views/element/TransitionTargets.kt +53 -0
  248. package/android/src/main/java/dev/apexnative/navigation/views/element/animators/ElementPictures.kt +46 -0
  249. package/android/src/main/java/dev/apexnative/navigation/views/element/animators/FlightGeometry.kt +53 -0
  250. package/android/src/main/java/dev/apexnative/navigation/views/element/animators/ImageMatrixAnimator.kt +138 -0
  251. package/android/src/main/java/dev/apexnative/navigation/views/element/animators/PlainViewAnimator.kt +88 -0
  252. package/android/src/main/java/dev/apexnative/navigation/views/element/animators/PropertyAnimatorCreator.kt +33 -0
  253. package/android/src/main/java/dev/apexnative/navigation/views/element/animators/ReactImageAnimator.kt +66 -0
  254. package/android/src/main/java/dev/apexnative/navigation/views/element/animators/SharedAnimatorFactory.kt +70 -0
  255. package/android/src/main/java/dev/apexnative/navigation/views/element/animators/TextChangeAnimator.kt +179 -0
  256. package/android/src/main/java/dev/apexnative/navigation/views/element/animators/ViewChangeAnimator.kt +139 -0
  257. package/android/src/main/java/dev/apexnative/navigation/views/externalcomponent/ExternalComponentLayout.kt +44 -0
  258. package/android/src/main/java/dev/apexnative/navigation/views/sidemenu/SideMenuView.kt +183 -0
  259. package/android/src/main/java/dev/apexnative/navigation/views/stack/StackLayout.kt +137 -0
  260. package/android/src/main/java/dev/apexnative/navigation/views/stack/fab/Fab.kt +125 -0
  261. package/android/src/main/java/dev/apexnative/navigation/views/stack/fab/FabAnimator.kt +8 -0
  262. package/android/src/main/java/dev/apexnative/navigation/views/stack/fab/FabCollapseBehaviour.kt +34 -0
  263. package/android/src/main/java/dev/apexnative/navigation/views/stack/fab/FabMenu.kt +133 -0
  264. package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/LargeTitleView.kt +45 -0
  265. package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/TitleBar.kt +211 -0
  266. package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/TopBar.kt +407 -0
  267. package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/TopBarDefaults.kt +35 -0
  268. package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/search/ScopeRow.kt +82 -0
  269. package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/search/SearchField.kt +130 -0
  270. package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/search/SearchStyle.kt +29 -0
  271. package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/search/SuggestionList.kt +77 -0
  272. package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/titlebar/BarButtonComponentCell.kt +80 -0
  273. package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/titlebar/ButtonBar.kt +334 -0
  274. package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/titlebar/ButtonMenus.kt +106 -0
  275. package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/titlebar/IconBackgroundDrawable.kt +93 -0
  276. package/android/src/main/jni/ApexNavigationSpec.h +18 -0
  277. package/android/src/main/jni/CMakeLists.txt +33 -0
  278. package/android/src/main/res/color/apex_navigation_highlight_inverse.xml +5 -0
  279. package/android/src/main/res/color/apex_navigation_text_primary.xml +6 -0
  280. package/android/src/main/res/color/apex_navigation_text_primary_inverse.xml +6 -0
  281. package/android/src/main/res/color/apex_navigation_text_secondary.xml +6 -0
  282. package/android/src/main/res/color/apex_navigation_text_secondary_inverse.xml +6 -0
  283. package/android/src/main/res/drawable/apex_navigation_ic_arrow_back.xml +13 -0
  284. package/android/src/main/res/drawable/apex_navigation_ic_close.xml +12 -0
  285. package/android/src/main/res/drawable/ic_fab_add_24dp.xml +12 -0
  286. package/android/src/main/res/values/attrs.xml +13 -0
  287. package/android/src/main/res/values/dimens.xml +5 -0
  288. package/android/src/main/res/values/dimens_splash.xml +9 -0
  289. package/android/src/main/res/values/ids.xml +12 -0
  290. package/android/src/main/res/values/styles.xml +18 -0
  291. package/android/src/main/res/values/themes.xml +75 -0
  292. package/android/src/main/res/values-night/styles.xml +6 -0
  293. package/android/src/main/res/values-night/themes.xml +67 -0
  294. package/cli/app.js +113 -0
  295. package/cli/changes.js +235 -0
  296. package/cli/codegen/commands.js +356 -0
  297. package/cli/codegen/index.js +211 -0
  298. package/cli/codegen/kotlin.js +396 -0
  299. package/cli/codegen/names.js +99 -0
  300. package/cli/codegen/read.js +602 -0
  301. package/cli/codegen/swift.js +342 -0
  302. package/cli/config.js +78 -0
  303. package/cli/diff.js +139 -0
  304. package/cli/doctor/checks/android.js +217 -0
  305. package/cli/doctor/checks/app.js +305 -0
  306. package/cli/doctor/checks/conflicts.js +42 -0
  307. package/cli/doctor/checks/devices.js +98 -0
  308. package/cli/doctor/checks/icons.js +69 -0
  309. package/cli/doctor/checks/ios.js +187 -0
  310. package/cli/doctor/checks/navigation.js +285 -0
  311. package/cli/doctor/checks/splash.js +102 -0
  312. package/cli/doctor/fix.js +66 -0
  313. package/cli/doctor/index.js +136 -0
  314. package/cli/doctor/types.js +30 -0
  315. package/cli/exec.js +34 -0
  316. package/cli/gradle.js +142 -0
  317. package/cli/icons/android.js +173 -0
  318. package/cli/icons/images.js +202 -0
  319. package/cli/icons/index.js +97 -0
  320. package/cli/icons/ios.js +113 -0
  321. package/cli/icons/settings.js +116 -0
  322. package/cli/images.js +67 -0
  323. package/cli/index.js +307 -0
  324. package/cli/info/index.js +290 -0
  325. package/cli/init/index.js +426 -0
  326. package/cli/init/packageManager.js +48 -0
  327. package/cli/init/starter.js +440 -0
  328. package/cli/links/files.js +109 -0
  329. package/cli/links/identity.js +75 -0
  330. package/cli/links/index.js +532 -0
  331. package/cli/links/native.js +396 -0
  332. package/cli/links/open.js +120 -0
  333. package/cli/links/prefixes.js +89 -0
  334. package/cli/mcp/appMap.js +128 -0
  335. package/cli/mcp/docs.js +175 -0
  336. package/cli/mcp/index.js +153 -0
  337. package/cli/mcp/markdown.js +210 -0
  338. package/cli/mcp/protocol.js +151 -0
  339. package/cli/mcp/tools.js +389 -0
  340. package/cli/migrate/entry.js +451 -0
  341. package/cli/migrate/index.js +305 -0
  342. package/cli/migrate/native.js +250 -0
  343. package/cli/migrate/report.js +238 -0
  344. package/cli/pods.js +56 -0
  345. package/cli/project.js +189 -0
  346. package/cli/screen/index.js +383 -0
  347. package/cli/screen/templates/compose.js +46 -0
  348. package/cli/screen/templates/native.js +40 -0
  349. package/cli/screen/templates/react.js +47 -0
  350. package/cli/screen/templates/swiftui.js +30 -0
  351. package/cli/screen/templates/uikit.js +48 -0
  352. package/cli/screen/templates/views.js +46 -0
  353. package/cli/setup/index.js +240 -0
  354. package/cli/setup/source.js +58 -0
  355. package/cli/setup/steps/app.js +76 -0
  356. package/cli/setup/steps/appDelegate.js +98 -0
  357. package/cli/setup/steps/entry.js +68 -0
  358. package/cli/setup/steps/env.js +245 -0
  359. package/cli/setup/steps/infoPlist.js +39 -0
  360. package/cli/setup/steps/mainActivity.js +60 -0
  361. package/cli/setup/steps/mainApplication.js +58 -0
  362. package/cli/setup/steps/manifest.js +38 -0
  363. package/cli/setup/steps/styles.js +29 -0
  364. package/cli/setup/steps/types.js +14 -0
  365. package/cli/splash/android.js +239 -0
  366. package/cli/splash/files.js +50 -0
  367. package/cli/splash/images.js +117 -0
  368. package/cli/splash/index.js +109 -0
  369. package/cli/splash/ios.js +349 -0
  370. package/cli/splash/settings.js +143 -0
  371. package/cli/typescript.js +473 -0
  372. package/cli/ui.js +268 -0
  373. package/cli/upgrade/changelog.js +45 -0
  374. package/cli/upgrade/index.js +347 -0
  375. package/cli/upgrade/versions.js +105 -0
  376. package/cli/workspace.js +60 -0
  377. package/cli/xcode/pbxproj.js +327 -0
  378. package/docs-md/architecture/errors-and-loading.md +138 -0
  379. package/docs-md/architecture/native-screens.md +290 -0
  380. package/docs-md/architecture/one-tree.md +164 -0
  381. package/docs-md/architecture/theme-and-context.md +368 -0
  382. package/docs-md/architecture/transitions.md +191 -0
  383. package/docs-md/containers/arrangement.md +320 -0
  384. package/docs-md/containers/modals.md +195 -0
  385. package/docs-md/containers/overlays.md +109 -0
  386. package/docs-md/containers/side-menu.md +138 -0
  387. package/docs-md/containers/split-view.md +155 -0
  388. package/docs-md/containers/stack.md +156 -0
  389. package/docs-md/containers/tabs.md +187 -0
  390. package/docs-md/flows/a-search-screen.md +311 -0
  391. package/docs-md/flows/an-app-with-tabs.md +380 -0
  392. package/docs-md/flows/bottom-sheets.md +326 -0
  393. package/docs-md/flows/forms-in-a-modal.md +420 -0
  394. package/docs-md/flows/list-and-details.md +428 -0
  395. package/docs-md/flows/onboarding.md +454 -0
  396. package/docs-md/flows/sign-in-and-sign-out.md +693 -0
  397. package/docs-md/fundamentals/lifecycle-and-events.md +224 -0
  398. package/docs-md/fundamentals/moving-between-screens.md +267 -0
  399. package/docs-md/fundamentals/screen-options.md +197 -0
  400. package/docs-md/fundamentals/screens-and-props.md +314 -0
  401. package/docs-md/fundamentals/starting-the-app.md +317 -0
  402. package/docs-md/fundamentals/switching-roots.md +166 -0
  403. package/docs-md/guides/analytics.md +377 -0
  404. package/docs-md/guides/app-context.md +554 -0
  405. package/docs-md/guides/building-a-screen.md +350 -0
  406. package/docs-md/guides/cli.md +421 -0
  407. package/docs-md/guides/data-fetching.md +492 -0
  408. package/docs-md/guides/deep-links.md +694 -0
  409. package/docs-md/guides/error-reporting.md +290 -0
  410. package/docs-md/guides/gestures-and-animations.md +381 -0
  411. package/docs-md/guides/notifications.md +548 -0
  412. package/docs-md/guides/overview.md +65 -0
  413. package/docs-md/guides/right-to-left.md +273 -0
  414. package/docs-md/guides/splash-screen.md +30 -0
  415. package/docs-md/guides/state-management.md +1050 -0
  416. package/docs-md/guides/testing.md +293 -0
  417. package/docs-md/help/glossary.md +433 -0
  418. package/docs-md/help/troubleshooting.md +709 -0
  419. package/docs-md/index.json +4205 -0
  420. package/docs-md/migration/from-expo-router.md +446 -0
  421. package/docs-md/migration/from-react-native-navigation.md +789 -0
  422. package/docs-md/migration/from-react-navigation.md +628 -0
  423. package/docs-md/screen-ui/back-and-gestures.md +178 -0
  424. package/docs-md/screen-ui/bar-buttons.md +312 -0
  425. package/docs-md/screen-ui/search.md +181 -0
  426. package/docs-md/screen-ui/system-ui.md +337 -0
  427. package/docs-md/screen-ui/toolbar-and-fab.md +146 -0
  428. package/docs-md/screen-ui/top-bar.md +247 -0
  429. package/docs-md/start/installation.md +233 -0
  430. package/docs-md/start/introduction.md +46 -0
  431. package/docs-md/start/quick-start.md +124 -0
  432. package/ios/Animations/ANNAnimationRules.h +72 -0
  433. package/ios/Animations/ANNAnimationRules.mm +122 -0
  434. package/ios/Animations/ANNFrameDriver.h +46 -0
  435. package/ios/Animations/ANNFrameDriver.mm +126 -0
  436. package/ios/Animations/ANNTransitionAnimator.h +34 -0
  437. package/ios/Animations/ANNTransitionAnimator.mm +293 -0
  438. package/ios/Animations/ANNTransitionPlan.h +115 -0
  439. package/ios/Animations/ANNTransitionPlan.mm +130 -0
  440. package/ios/Animations/ANNTransitionWait.h +29 -0
  441. package/ios/Animations/ANNTransitionWait.mm +135 -0
  442. package/ios/Animations/Elements/ANNElementFinder.h +26 -0
  443. package/ios/Animations/Elements/ANNElementFinder.mm +37 -0
  444. package/ios/Animations/Elements/ANNElementTransition.h +30 -0
  445. package/ios/Animations/Elements/ANNElementTransition.mm +75 -0
  446. package/ios/Animations/Elements/ANNSharedElementFlight.h +42 -0
  447. package/ios/Animations/Elements/ANNSharedElementFlight.mm +340 -0
  448. package/ios/Animations/Elements/ANNZoomAnchor.h +33 -0
  449. package/ios/Animations/Elements/ANNZoomAnchor.mm +133 -0
  450. package/ios/Animations/Interpolators/ANNCurve.h +61 -0
  451. package/ios/Animations/Interpolators/ANNCurve.mm +301 -0
  452. package/ios/Animations/Interpolators/ANNInterpolate.h +69 -0
  453. package/ios/Animations/Interpolators/ANNTrack.h +52 -0
  454. package/ios/Animations/Interpolators/ANNTrack.mm +77 -0
  455. package/ios/Animations/Interpolators/ANNViewTracks.h +57 -0
  456. package/ios/Animations/Interpolators/ANNViewTracks.mm +261 -0
  457. package/ios/ApexNavigation-prefix.h +6 -0
  458. package/ios/CLAUDE.md +151 -0
  459. package/ios/CORE.md +177 -0
  460. package/ios/Contract/ANNCommandAnswer.h +38 -0
  461. package/ios/Contract/ANNCommandAnswer.mm +99 -0
  462. package/ios/Contract/ANNCommandRunner.h +42 -0
  463. package/ios/Contract/ANNCommandRunner.mm +89 -0
  464. package/ios/Contract/ANNErrorTexts.h +86 -0
  465. package/ios/Contract/ANNErrorTexts.mm +230 -0
  466. package/ios/Contract/ANNLayoutNode.h +64 -0
  467. package/ios/Contract/ANNLayoutNode.mm +153 -0
  468. package/ios/Contract/ANNLayoutReader.h +34 -0
  469. package/ios/Contract/ANNLayoutReader.mm +282 -0
  470. package/ios/Contract/ANNLayoutRoot.h +26 -0
  471. package/ios/Contract/ANNLayoutRoot.mm +21 -0
  472. package/ios/Contract/ANNLayoutTreeOptions.h +22 -0
  473. package/ios/Contract/ANNLayoutTreeOptions.mm +32 -0
  474. package/ios/Contract/ANNLayoutType.h +44 -0
  475. package/ios/Contract/ANNLayoutValidator.h +23 -0
  476. package/ios/Contract/ANNLayoutValidator.mm +28 -0
  477. package/ios/Core/ANNAppDelegate.mm +122 -0
  478. package/ios/Core/ANNAppDirection.h +43 -0
  479. package/ios/Core/ANNAppDirection.mm +194 -0
  480. package/ios/Core/ANNAppearanceDispatcher.h +117 -0
  481. package/ios/Core/ANNAppearanceDispatcher.mm +433 -0
  482. package/ios/Core/ANNAssert.h +7 -0
  483. package/ios/Core/ANNDeepLinkQueue.h +35 -0
  484. package/ios/Core/ANNDeepLinkQueue.mm +136 -0
  485. package/ios/Core/ANNErrorHandler.h +17 -0
  486. package/ios/Core/ANNErrorHandler.mm +14 -0
  487. package/ios/Core/ANNEventEmitter.h +174 -0
  488. package/ios/Core/ANNEventEmitter.mm +337 -0
  489. package/ios/Core/ANNHinge.h +26 -0
  490. package/ios/Core/ANNHinge.mm +116 -0
  491. package/ios/Core/ANNKeyCommands.h +12 -0
  492. package/ios/Core/ANNKeyCommands.mm +74 -0
  493. package/ios/Core/ANNLayoutInfo.h +18 -0
  494. package/ios/Core/ANNLayoutInfo.mm +13 -0
  495. package/ios/Core/ANNLayoutProtocol.h +155 -0
  496. package/ios/Core/ANNNavigationState.h +38 -0
  497. package/ios/Core/ANNNavigationState.mm +127 -0
  498. package/ios/Core/ANNNodeHelper.h +114 -0
  499. package/ios/Core/ANNNodeHelper.mm +260 -0
  500. package/ios/Core/ANNNodePresenter.h +86 -0
  501. package/ios/Core/ANNNodePresenter.mm +92 -0
  502. package/ios/Core/ANNNodeRegistry.h +30 -0
  503. package/ios/Core/ANNNodeRegistry.mm +48 -0
  504. package/ios/Core/ANNOptionsRepaint.h +19 -0
  505. package/ios/Core/ANNOptionsRepaint.mm +59 -0
  506. package/ios/Core/ANNParking.h +34 -0
  507. package/ios/Core/ANNParking.mm +117 -0
  508. package/ios/Core/ANNPendingLayers.h +31 -0
  509. package/ios/Core/ANNPendingLayers.mm +57 -0
  510. package/ios/Core/ANNReloadCoordinator.h +26 -0
  511. package/ios/Core/ANNReloadCoordinator.mm +211 -0
  512. package/ios/Core/ANNRenderWait.h +105 -0
  513. package/ios/Core/ANNRenderWait.mm +496 -0
  514. package/ios/Core/ANNSceneDelegate.mm +92 -0
  515. package/ios/Core/ANNScreenAppearance+Internal.h +29 -0
  516. package/ios/Core/ANNScreenAppearance.h +60 -0
  517. package/ios/Core/ANNScreenAppearance.mm +44 -0
  518. package/ios/Core/ANNShownScreens.h +27 -0
  519. package/ios/Core/ANNShownScreens.mm +16 -0
  520. package/ios/Core/ANNSystemUI.h +95 -0
  521. package/ios/Core/ANNSystemUI.mm +401 -0
  522. package/ios/Core/ANNSystemUIRules.h +35 -0
  523. package/ios/Core/ANNSystemUIRules.mm +139 -0
  524. package/ios/Core/ANNUtils.h +35 -0
  525. package/ios/Core/ANNUtils.mm +111 -0
  526. package/ios/Core/ApexNavigation+Internal.h +26 -0
  527. package/ios/Core/ApexNavigation.mm +177 -0
  528. package/ios/Core/UIViewController+LayoutProtocol.h +102 -0
  529. package/ios/Core/UIViewController+LayoutProtocol.mm +253 -0
  530. package/ios/Layouts/Arrangement/ANNArrangementScreenDelegate.h +18 -0
  531. package/ios/Layouts/Arrangement/ANNArrangementState.h +30 -0
  532. package/ios/Layouts/Arrangement/ANNArrangementState.mm +53 -0
  533. package/ios/Layouts/Arrangement/ANNArrangementViewController.h +38 -0
  534. package/ios/Layouts/Arrangement/ANNArrangementViewController.mm +573 -0
  535. package/ios/Layouts/External/ANNExternalViewController.h +28 -0
  536. package/ios/Layouts/External/ANNExternalViewController.mm +118 -0
  537. package/ios/Layouts/External/ANNNativeScreenCalls.h +27 -0
  538. package/ios/Layouts/External/ANNNativeScreenCalls.mm +77 -0
  539. package/ios/Layouts/Modal/ANNModal.h +121 -0
  540. package/ios/Layouts/Modal/ANNModal.mm +64 -0
  541. package/ios/Layouts/Modal/ANNModalCoordinator.h +99 -0
  542. package/ios/Layouts/Modal/ANNModalCoordinator.mm +1965 -0
  543. package/ios/Layouts/Modal/ANNModalHostViewComponentView.h +13 -0
  544. package/ios/Layouts/Modal/ANNModalHostViewComponentView.mm +24 -0
  545. package/ios/Layouts/Modal/ANNModalPresentation.h +73 -0
  546. package/ios/Layouts/Modal/ANNModalPresentation.mm +189 -0
  547. package/ios/Layouts/Modal/ANNModalSizePresenter.h +13 -0
  548. package/ios/Layouts/Modal/ANNModalSizePresenter.mm +65 -0
  549. package/ios/Layouts/Modal/ANNModalTransitions.h +29 -0
  550. package/ios/Layouts/Modal/ANNModalTransitions.mm +40 -0
  551. package/ios/Layouts/Modal/ANNPopoverPresenter.h +29 -0
  552. package/ios/Layouts/Modal/ANNPopoverPresenter.mm +158 -0
  553. package/ios/Layouts/Modal/ANNPresentationGate.h +52 -0
  554. package/ios/Layouts/Modal/ANNPresentationGate.mm +153 -0
  555. package/ios/Layouts/Modal/ANNSheetPresenter.h +31 -0
  556. package/ios/Layouts/Modal/ANNSheetPresenter.mm +247 -0
  557. package/ios/Layouts/Overlay/ANNOverlayCoordinator.h +66 -0
  558. package/ios/Layouts/Overlay/ANNOverlayCoordinator.mm +604 -0
  559. package/ios/Layouts/Overlay/ANNOverlayWindow.h +10 -0
  560. package/ios/Layouts/Overlay/ANNOverlayWindow.mm +71 -0
  561. package/ios/Layouts/Root/ANNLayoutFactory.h +31 -0
  562. package/ios/Layouts/Root/ANNLayoutFactory.mm +349 -0
  563. package/ios/Layouts/Root/ANNRootCoordinator.h +42 -0
  564. package/ios/Layouts/Root/ANNRootCoordinator.mm +847 -0
  565. package/ios/Layouts/Root/ANNSplashViewController.h +30 -0
  566. package/ios/Layouts/Root/ANNSplashViewController.mm +138 -0
  567. package/ios/Layouts/Screen/ANNComponentPresenter.h +32 -0
  568. package/ios/Layouts/Screen/ANNComponentPresenter.mm +136 -0
  569. package/ios/Layouts/Screen/ANNComponentViewController.h +100 -0
  570. package/ios/Layouts/Screen/ANNComponentViewController.mm +652 -0
  571. package/ios/Layouts/Screen/ANNNativeScreenContext+Internal.h +19 -0
  572. package/ios/Layouts/Screen/ANNNativeScreenContext.mm +84 -0
  573. package/ios/Layouts/Screen/ANNPreviewInteraction.h +38 -0
  574. package/ios/Layouts/Screen/ANNPreviewInteraction.mm +252 -0
  575. package/ios/Layouts/Screen/ANNScreenBars.h +29 -0
  576. package/ios/Layouts/Screen/ANNScreenBars.mm +47 -0
  577. package/ios/Layouts/Screen/ANNScreenInsets.h +30 -0
  578. package/ios/Layouts/Screen/ANNScreenInsets.mm +68 -0
  579. package/ios/Layouts/Screen/ANNScreenReadiness.h +92 -0
  580. package/ios/Layouts/Screen/ANNScreenReadiness.mm +186 -0
  581. package/ios/Layouts/Screen/ANNScreenRegions.h +33 -0
  582. package/ios/Layouts/Screen/ANNScreenRegions.mm +105 -0
  583. package/ios/Layouts/Screen/ANNScreenSafeArea.h +38 -0
  584. package/ios/Layouts/Screen/ANNScreenSafeArea.mm +58 -0
  585. package/ios/Layouts/SideMenu/ANNSideMenuChildViewController.h +41 -0
  586. package/ios/Layouts/SideMenu/ANNSideMenuChildViewController.mm +113 -0
  587. package/ios/Layouts/SideMenu/ANNSideMenuPresenter.h +28 -0
  588. package/ios/Layouts/SideMenu/ANNSideMenuPresenter.mm +260 -0
  589. package/ios/Layouts/SideMenu/ANNSideMenuTypes.h +19 -0
  590. package/ios/Layouts/SideMenu/ANNSideMenuViewController.h +46 -0
  591. package/ios/Layouts/SideMenu/ANNSideMenuViewController.mm +891 -0
  592. package/ios/Layouts/SplitView/ANNSplitViewCommands.h +39 -0
  593. package/ios/Layouts/SplitView/ANNSplitViewCommands.mm +612 -0
  594. package/ios/Layouts/SplitView/ANNSplitViewController.h +52 -0
  595. package/ios/Layouts/SplitView/ANNSplitViewController.mm +494 -0
  596. package/ios/Layouts/SplitView/ANNSplitViewPresenter.h +18 -0
  597. package/ios/Layouts/SplitView/ANNSplitViewPresenter.mm +181 -0
  598. package/ios/Layouts/SplitView/UISplitViewController+ANNOptions.h +32 -0
  599. package/ios/Layouts/SplitView/UISplitViewController+ANNOptions.mm +133 -0
  600. package/ios/Layouts/Stack/ANNPreviewPush.h +46 -0
  601. package/ios/Layouts/Stack/ANNPreviewPush.mm +298 -0
  602. package/ios/Layouts/Stack/ANNStackAnimatingDelegate.h +32 -0
  603. package/ios/Layouts/Stack/ANNStackAnimatingDelegate.mm +92 -0
  604. package/ios/Layouts/Stack/ANNStackCommands.h +51 -0
  605. package/ios/Layouts/Stack/ANNStackCommands.mm +403 -0
  606. package/ios/Layouts/Stack/ANNStackController.h +161 -0
  607. package/ios/Layouts/Stack/ANNStackController.mm +1597 -0
  608. package/ios/Layouts/Stack/ANNStackPresenter.h +44 -0
  609. package/ios/Layouts/Stack/ANNStackPresenter.mm +181 -0
  610. package/ios/Layouts/Stack/ANNStackQueue.h +194 -0
  611. package/ios/Layouts/Stack/ANNStackQueue.mm +1300 -0
  612. package/ios/Layouts/Stack/InteractivePopGestureDelegate.h +53 -0
  613. package/ios/Layouts/Stack/InteractivePopGestureDelegate.mm +228 -0
  614. package/ios/Layouts/Stack/UINavigationController+ANNCommands.h +19 -0
  615. package/ios/Layouts/Stack/UINavigationController+ANNCommands.mm +29 -0
  616. package/ios/Layouts/Tabs/ANNBottomTabCellView.h +33 -0
  617. package/ios/Layouts/Tabs/ANNBottomTabCellView.mm +100 -0
  618. package/ios/Layouts/Tabs/ANNBottomTabItemBuilder.h +49 -0
  619. package/ios/Layouts/Tabs/ANNBottomTabItemBuilder.mm +153 -0
  620. package/ios/Layouts/Tabs/ANNBottomTabsAccessoryView.h +17 -0
  621. package/ios/Layouts/Tabs/ANNBottomTabsAccessoryView.mm +56 -0
  622. package/ios/Layouts/Tabs/ANNBottomTabsController.h +121 -0
  623. package/ios/Layouts/Tabs/ANNBottomTabsController.mm +1404 -0
  624. package/ios/Layouts/Tabs/ANNBottomTabsCustomRow.h +47 -0
  625. package/ios/Layouts/Tabs/ANNBottomTabsCustomRow.mm +280 -0
  626. package/ios/Layouts/Tabs/ANNBottomTabsPresenter.h +81 -0
  627. package/ios/Layouts/Tabs/ANNBottomTabsPresenter.mm +1026 -0
  628. package/ios/Layouts/Tabs/ANNMoreNavigationDelegate.h +24 -0
  629. package/ios/Layouts/Tabs/ANNMoreNavigationDelegate.mm +58 -0
  630. package/ios/Layouts/Tabs/ANNScrollToTop.h +23 -0
  631. package/ios/Layouts/Tabs/ANNScrollToTop.mm +55 -0
  632. package/ios/Layouts/Tabs/ANNTabDotView.h +19 -0
  633. package/ios/Layouts/Tabs/ANNTabDotView.mm +46 -0
  634. package/ios/Layouts/Tabs/ANNTabLongPress.h +28 -0
  635. package/ios/Layouts/Tabs/ANNTabLongPress.mm +98 -0
  636. package/ios/Layouts/Tabs/ANNTabsDesign.h +26 -0
  637. package/ios/Layouts/Tabs/ANNTabsDesign.mm +34 -0
  638. package/ios/Layouts/Tabs/ANNTabsPreloadWindow.h +27 -0
  639. package/ios/Layouts/Tabs/ANNTabsPreloadWindow.mm +55 -0
  640. package/ios/Layouts/Tabs/UITabBar+utils.h +24 -0
  641. package/ios/Layouts/Tabs/UITabBar+utils.mm +103 -0
  642. package/ios/Options/ANNAnimationOptions.h +22 -0
  643. package/ios/Options/ANNAnimationOptions.mm +16 -0
  644. package/ios/Options/ANNAnimationPropertyOptions.h +17 -0
  645. package/ios/Options/ANNAnimationPropertyOptions.mm +15 -0
  646. package/ios/Options/ANNBottomTabDotIndicatorOptions.h +14 -0
  647. package/ios/Options/ANNBottomTabDotIndicatorOptions.mm +13 -0
  648. package/ios/Options/ANNBottomTabOptions.h +51 -0
  649. package/ios/Options/ANNBottomTabOptions.mm +47 -0
  650. package/ios/Options/ANNBottomTabsAccessoryOptions.h +19 -0
  651. package/ios/Options/ANNBottomTabsAccessoryOptions.mm +25 -0
  652. package/ios/Options/ANNBottomTabsAnimationOptions.h +12 -0
  653. package/ios/Options/ANNBottomTabsAnimationOptions.mm +11 -0
  654. package/ios/Options/ANNBottomTabsCustomRowOptions.h +19 -0
  655. package/ios/Options/ANNBottomTabsCustomRowOptions.mm +17 -0
  656. package/ios/Options/ANNBottomTabsOptions.h +51 -0
  657. package/ios/Options/ANNBottomTabsOptions.mm +48 -0
  658. package/ios/Options/ANNBottomTabsShadowOptions.h +14 -0
  659. package/ios/Options/ANNBottomTabsShadowOptions.mm +13 -0
  660. package/ios/Options/ANNButtonComponentOptions.h +13 -0
  661. package/ios/Options/ANNButtonComponentOptions.mm +12 -0
  662. package/ios/Options/ANNButtonOptions.h +56 -0
  663. package/ios/Options/ANNButtonOptions.mm +53 -0
  664. package/ios/Options/ANNButtonsParser.h +13 -0
  665. package/ios/Options/ANNButtonsParser.mm +18 -0
  666. package/ios/Options/ANNComponentOptions.h +14 -0
  667. package/ios/Options/ANNComponentOptions.mm +12 -0
  668. package/ios/Options/ANNDefaultOptions.h +18 -0
  669. package/ios/Options/ANNDefaultOptions.mm +22 -0
  670. package/ios/Options/ANNElementAnimationOptions.h +18 -0
  671. package/ios/Options/ANNElementAnimationOptions.mm +15 -0
  672. package/ios/Options/ANNElementTransitionOptions.h +26 -0
  673. package/ios/Options/ANNElementTransitionOptions.mm +28 -0
  674. package/ios/Options/ANNEnterExitBottomTabsAnimationOptions.h +14 -0
  675. package/ios/Options/ANNEnterExitBottomTabsAnimationOptions.mm +12 -0
  676. package/ios/Options/ANNEnterExitScreenAnimationOptions.h +14 -0
  677. package/ios/Options/ANNEnterExitScreenAnimationOptions.mm +12 -0
  678. package/ios/Options/ANNEnterExitTopBarAnimationOptions.h +14 -0
  679. package/ios/Options/ANNEnterExitTopBarAnimationOptions.mm +12 -0
  680. package/ios/Options/ANNFabOptions.h +26 -0
  681. package/ios/Options/ANNFabOptions.mm +23 -0
  682. package/ios/Options/ANNFontOptions.h +24 -0
  683. package/ios/Options/ANNFontOptions.mm +65 -0
  684. package/ios/Options/ANNHardwareBackButtonOptions.h +15 -0
  685. package/ios/Options/ANNHardwareBackButtonOptions.mm +13 -0
  686. package/ios/Options/ANNIconBackgroundOptions.h +16 -0
  687. package/ios/Options/ANNIconBackgroundOptions.mm +15 -0
  688. package/ios/Options/ANNIconInsetsOptions.h +16 -0
  689. package/ios/Options/ANNIconInsetsOptions.mm +14 -0
  690. package/ios/Options/ANNInterpolationOptions.h +22 -0
  691. package/ios/Options/ANNInterpolationOptions.mm +22 -0
  692. package/ios/Options/ANNLayoutOptions.h +26 -0
  693. package/ios/Options/ANNLayoutOptions.mm +25 -0
  694. package/ios/Options/ANNMenuOptions.h +37 -0
  695. package/ios/Options/ANNMenuOptions.mm +136 -0
  696. package/ios/Options/ANNModalAnimationOptions.h +17 -0
  697. package/ios/Options/ANNModalAnimationOptions.mm +15 -0
  698. package/ios/Options/ANNModalContentSizeOptions.h +14 -0
  699. package/ios/Options/ANNModalContentSizeOptions.mm +15 -0
  700. package/ios/Options/ANNModalOptions.h +19 -0
  701. package/ios/Options/ANNModalOptions.mm +15 -0
  702. package/ios/Options/ANNNavigationBarOptions.h +14 -0
  703. package/ios/Options/ANNNavigationBarOptions.mm +13 -0
  704. package/ios/Options/ANNNavigationOptions.h +60 -0
  705. package/ios/Options/ANNNavigationOptions.mm +54 -0
  706. package/ios/Options/ANNOptionField.h +91 -0
  707. package/ios/Options/ANNOptionField.mm +173 -0
  708. package/ios/Options/ANNOptions.h +62 -0
  709. package/ios/Options/ANNOptions.mm +329 -0
  710. package/ios/Options/ANNOptionsCache.h +22 -0
  711. package/ios/Options/ANNOptionsCache.mm +17 -0
  712. package/ios/Options/ANNOptionsReader.h +33 -0
  713. package/ios/Options/ANNOptionsReader.mm +63 -0
  714. package/ios/Options/ANNOverlayOptions.h +14 -0
  715. package/ios/Options/ANNOverlayOptions.mm +12 -0
  716. package/ios/Options/ANNPopoverOptions.h +17 -0
  717. package/ios/Options/ANNPopoverOptions.mm +31 -0
  718. package/ios/Options/ANNPreviewOptions.h +17 -0
  719. package/ios/Options/ANNPreviewOptions.mm +15 -0
  720. package/ios/Options/ANNScreenAnimationOptions.h +13 -0
  721. package/ios/Options/ANNScreenAnimationOptions.mm +12 -0
  722. package/ios/Options/ANNScrollEdgeEffectOptions.h +20 -0
  723. package/ios/Options/ANNScrollEdgeEffectOptions.mm +16 -0
  724. package/ios/Options/ANNScrollEdgeOptions.h +14 -0
  725. package/ios/Options/ANNScrollEdgeOptions.mm +12 -0
  726. package/ios/Options/ANNSearchBarOptions.h +49 -0
  727. package/ios/Options/ANNSearchBarOptions.mm +41 -0
  728. package/ios/Options/ANNSearchScopeOptions.h +15 -0
  729. package/ios/Options/ANNSearchScopeOptions.mm +13 -0
  730. package/ios/Options/ANNSearchSuggestionOptions.h +19 -0
  731. package/ios/Options/ANNSearchSuggestionOptions.mm +16 -0
  732. package/ios/Options/ANNSearchTokenOptions.h +18 -0
  733. package/ios/Options/ANNSearchTokenOptions.mm +15 -0
  734. package/ios/Options/ANNSetStackRootAnimationOptions.h +12 -0
  735. package/ios/Options/ANNSetStackRootAnimationOptions.mm +11 -0
  736. package/ios/Options/ANNSharedElementTransitionOptions.h +17 -0
  737. package/ios/Options/ANNSharedElementTransitionOptions.mm +15 -0
  738. package/ios/Options/ANNSheetOptions.h +25 -0
  739. package/ios/Options/ANNSheetOptions.mm +41 -0
  740. package/ios/Options/ANNSideMenuOptions.h +19 -0
  741. package/ios/Options/ANNSideMenuOptions.mm +16 -0
  742. package/ios/Options/ANNSideMenuSideOptions.h +23 -0
  743. package/ios/Options/ANNSideMenuSideOptions.mm +20 -0
  744. package/ios/Options/ANNSplitViewColumnOptions.h +14 -0
  745. package/ios/Options/ANNSplitViewColumnOptions.mm +13 -0
  746. package/ios/Options/ANNSplitViewInspectorOptions.h +13 -0
  747. package/ios/Options/ANNSplitViewInspectorOptions.mm +9 -0
  748. package/ios/Options/ANNSplitViewOptions.h +29 -0
  749. package/ios/Options/ANNSplitViewOptions.mm +26 -0
  750. package/ios/Options/ANNStackAnimationOptions.h +23 -0
  751. package/ios/Options/ANNStackAnimationOptions.mm +20 -0
  752. package/ios/Options/ANNStackPushAnimationOptions.h +13 -0
  753. package/ios/Options/ANNStackPushAnimationOptions.mm +11 -0
  754. package/ios/Options/ANNStatusBarOptions.h +20 -0
  755. package/ios/Options/ANNStatusBarOptions.mm +18 -0
  756. package/ios/Options/ANNToolbarOptions.h +14 -0
  757. package/ios/Options/ANNToolbarOptions.mm +27 -0
  758. package/ios/Options/ANNTopBarAnimationOptions.h +12 -0
  759. package/ios/Options/ANNTopBarAnimationOptions.mm +11 -0
  760. package/ios/Options/ANNTopBarBackButtonOptions.h +31 -0
  761. package/ios/Options/ANNTopBarBackButtonOptions.mm +35 -0
  762. package/ios/Options/ANNTopBarBackgroundComponentOptions.h +13 -0
  763. package/ios/Options/ANNTopBarBackgroundComponentOptions.mm +11 -0
  764. package/ios/Options/ANNTopBarBackgroundOptions.h +17 -0
  765. package/ios/Options/ANNTopBarBackgroundOptions.mm +15 -0
  766. package/ios/Options/ANNTopBarLargeTitleOptions.h +19 -0
  767. package/ios/Options/ANNTopBarLargeTitleOptions.mm +15 -0
  768. package/ios/Options/ANNTopBarOptions.h +62 -0
  769. package/ios/Options/ANNTopBarOptions.mm +49 -0
  770. package/ios/Options/ANNTopBarScrollEdgeAppearanceBackgroundOptions.h +14 -0
  771. package/ios/Options/ANNTopBarScrollEdgeAppearanceBackgroundOptions.mm +12 -0
  772. package/ios/Options/ANNTopBarScrollEdgeAppearanceOptions.h +19 -0
  773. package/ios/Options/ANNTopBarScrollEdgeAppearanceOptions.mm +16 -0
  774. package/ios/Options/ANNTopBarScrollEdgeAppearanceTitleOptions.h +16 -0
  775. package/ios/Options/ANNTopBarScrollEdgeAppearanceTitleOptions.mm +12 -0
  776. package/ios/Options/ANNTopBarSubtitleOptions.h +18 -0
  777. package/ios/Options/ANNTopBarSubtitleOptions.mm +14 -0
  778. package/ios/Options/ANNTopBarTitleComponentOptions.h +15 -0
  779. package/ios/Options/ANNTopBarTitleComponentOptions.mm +12 -0
  780. package/ios/Options/ANNTopBarTitleDocumentOptions.h +12 -0
  781. package/ios/Options/ANNTopBarTitleDocumentOptions.mm +11 -0
  782. package/ios/Options/ANNTopBarTitleOptions.h +29 -0
  783. package/ios/Options/ANNTopBarTitleOptions.mm +21 -0
  784. package/ios/Options/ANNViewAnimationOptions.h +26 -0
  785. package/ios/Options/ANNViewAnimationOptions.mm +58 -0
  786. package/ios/Options/ANNWindowOptions.h +12 -0
  787. package/ios/Options/ANNWindowOptions.mm +9 -0
  788. package/ios/Options/ANNZoomTransitionOptions.h +13 -0
  789. package/ios/Options/ANNZoomTransitionOptions.mm +12 -0
  790. package/ios/Options/Params/ANNIntegerParam.h +14 -0
  791. package/ios/Options/Params/ANNIntegerParam.mm +13 -0
  792. package/ios/Options/Params/ANNParam.h +28 -0
  793. package/ios/Options/Params/ANNParam.mm +29 -0
  794. package/ios/Options/Params/Bool.h +17 -0
  795. package/ios/Options/Params/Bool.mm +17 -0
  796. package/ios/Options/Params/BoolParser.h +12 -0
  797. package/ios/Options/Params/BoolParser.mm +10 -0
  798. package/ios/Options/Params/Color.h +43 -0
  799. package/ios/Options/Params/Color.mm +65 -0
  800. package/ios/Options/Params/ColorParser.h +14 -0
  801. package/ios/Options/Params/ColorParser.mm +95 -0
  802. package/ios/Options/Params/Double.h +14 -0
  803. package/ios/Options/Params/Double.mm +13 -0
  804. package/ios/Options/Params/DoubleParser.h +16 -0
  805. package/ios/Options/Params/DoubleParser.mm +16 -0
  806. package/ios/Options/Params/Image.h +15 -0
  807. package/ios/Options/Params/Image.mm +13 -0
  808. package/ios/Options/Params/ImageParser.h +16 -0
  809. package/ios/Options/Params/ImageParser.mm +103 -0
  810. package/ios/Options/Params/Number.h +14 -0
  811. package/ios/Options/Params/Number.mm +13 -0
  812. package/ios/Options/Params/NumberParser.h +13 -0
  813. package/ios/Options/Params/NumberParser.mm +10 -0
  814. package/ios/Options/Params/Param.h +16 -0
  815. package/ios/Options/Params/Param.mm +13 -0
  816. package/ios/Options/Params/Text.h +17 -0
  817. package/ios/Options/Params/Text.mm +17 -0
  818. package/ios/Options/Params/TextParser.h +17 -0
  819. package/ios/Options/Params/TextParser.mm +17 -0
  820. package/ios/Package.swift +58 -0
  821. package/ios/Public/ApexNavigation/ANNAppDelegate.h +66 -0
  822. package/ios/Public/ApexNavigation/ANNSceneDelegate.h +19 -0
  823. package/ios/Public/ApexNavigation/ApexNavigation.h +92 -0
  824. package/ios/Public/module.modulemap +8 -0
  825. package/ios/RECIPES.md +41 -0
  826. package/ios/React/ANNComponentType.h +22 -0
  827. package/ios/React/ANNComponentViewCreator.h +18 -0
  828. package/ios/React/ANNReactComponentRegistry.h +53 -0
  829. package/ios/React/ANNReactComponentRegistry.mm +153 -0
  830. package/ios/React/ANNReactView.h +104 -0
  831. package/ios/React/ANNReactView.mm +374 -0
  832. package/ios/React/ANNReactViewCreator.h +20 -0
  833. package/ios/React/ANNReactViewCreator.mm +42 -0
  834. package/ios/React/ANNSafeAreaViewComponentView.h +13 -0
  835. package/ios/React/ANNSafeAreaViewComponentView.mm +153 -0
  836. package/ios/React/ANNSurfaceHostingView.h +17 -0
  837. package/ios/React/ANNSurfaceHostingView.mm +68 -0
  838. package/ios/React/Slots/ANNSlotComponentView.h +10 -0
  839. package/ios/React/Slots/ANNSlotComponentView.mm +122 -0
  840. package/ios/React/Slots/ANNSlotContainers.h +34 -0
  841. package/ios/React/Slots/ANNSlotContainers.mm +39 -0
  842. package/ios/React/Slots/ANNSlotContentView.h +12 -0
  843. package/ios/React/Slots/ANNSlotContentView.mm +18 -0
  844. package/ios/React/Slots/ANNSlotHost.h +29 -0
  845. package/ios/React/Slots/ANNSlotHost.mm +59 -0
  846. package/ios/React/Slots/ANNSlotScreenView.h +38 -0
  847. package/ios/React/Slots/ANNSlotScreenView.mm +254 -0
  848. package/ios/TopBar/ANNBackButtonPresenter.h +35 -0
  849. package/ios/TopBar/ANNBackButtonPresenter.mm +187 -0
  850. package/ios/TopBar/ANNBarAppearance.h +53 -0
  851. package/ios/TopBar/ANNBarAppearance.mm +278 -0
  852. package/ios/TopBar/ANNBarBackgroundComponent.h +46 -0
  853. package/ios/TopBar/ANNBarBackgroundComponent.mm +163 -0
  854. package/ios/TopBar/ANNBarButtonComponentView.h +30 -0
  855. package/ios/TopBar/ANNBarButtonComponentView.mm +110 -0
  856. package/ios/TopBar/ANNBarButtons.h +65 -0
  857. package/ios/TopBar/ANNBarButtons.mm +1125 -0
  858. package/ios/TopBar/ANNBarComponentsWait.h +37 -0
  859. package/ios/TopBar/ANNBarComponentsWait.mm +116 -0
  860. package/ios/TopBar/ANNIconButtonImage.h +25 -0
  861. package/ios/TopBar/ANNIconButtonImage.mm +94 -0
  862. package/ios/TopBar/ANNLargeTitlePresenter.h +117 -0
  863. package/ios/TopBar/ANNLargeTitlePresenter.mm +402 -0
  864. package/ios/TopBar/ANNMainList.h +28 -0
  865. package/ios/TopBar/ANNMainList.mm +72 -0
  866. package/ios/TopBar/ANNScrollEdgeEffects.h +29 -0
  867. package/ios/TopBar/ANNScrollEdgeEffects.mm +122 -0
  868. package/ios/TopBar/ANNSearchPresenter.h +29 -0
  869. package/ios/TopBar/ANNSearchPresenter.mm +637 -0
  870. package/ios/TopBar/ANNSearchResultsViewController.h +16 -0
  871. package/ios/TopBar/ANNSearchResultsViewController.mm +56 -0
  872. package/ios/TopBar/ANNShowTextButton.h +22 -0
  873. package/ios/TopBar/ANNShowTextButton.mm +63 -0
  874. package/ios/TopBar/ANNTitleComponentView.h +37 -0
  875. package/ios/TopBar/ANNTitleComponentView.mm +86 -0
  876. package/ios/TopBar/ANNTitleGlassView.h +33 -0
  877. package/ios/TopBar/ANNTitleGlassView.mm +126 -0
  878. package/ios/TopBar/ANNTitleView.h +18 -0
  879. package/ios/TopBar/ANNTitleView.mm +63 -0
  880. package/ios/TopBar/ANNToolbarPresenter.h +26 -0
  881. package/ios/TopBar/ANNToolbarPresenter.mm +24 -0
  882. package/ios/TopBar/ANNTopBarPresenter.h +120 -0
  883. package/ios/TopBar/ANNTopBarPresenter.mm +1252 -0
  884. package/ios/TopBar/ANNUIBarButtonItem.h +16 -0
  885. package/ios/TopBar/ANNUIBarButtonItem.mm +5 -0
  886. package/ios/TurboModules/ANNTurboEventEmitter.h +31 -0
  887. package/ios/TurboModules/ANNTurboEventEmitter.mm +129 -0
  888. package/ios/TurboModules/ANNTurboModule.h +11 -0
  889. package/ios/TurboModules/ANNTurboModule.mm +626 -0
  890. package/ios/Utils/UIColor+ANNLuminance.h +13 -0
  891. package/ios/Utils/UIColor+ANNLuminance.mm +32 -0
  892. package/ios/Utils/UIView+Utils.h +12 -0
  893. package/ios/Utils/UIView+Utils.mm +21 -0
  894. package/ios/cpp/react/renderer/components/ApexNavigationSpec/ANNSafeAreaViewComponentDescriptor.h +19 -0
  895. package/ios/cpp/react/renderer/components/ApexNavigationSpec/ANNSafeAreaViewShadowNode.h +60 -0
  896. package/ios/cpp/react/renderer/components/ApexNavigationSpec/ANNSafeAreaViewState.h +33 -0
  897. package/ios/cpp/react/renderer/components/ApexNavigationSpec/ANNSlotComponentDescriptor.h +22 -0
  898. package/ios/cpp/react/renderer/components/ApexNavigationSpec/ANNSlotShadowNode.h +87 -0
  899. package/ios/cpp/react/renderer/components/ApexNavigationSpec/ANNSlotState.h +101 -0
  900. package/lib/module/ARCHITECTURE.md +289 -0
  901. package/lib/module/adapters/NativeANNTurboEventEmitter.js +12 -0
  902. package/lib/module/adapters/NativeANNTurboEventEmitter.js.map +1 -0
  903. package/lib/module/adapters/NativeANNTurboModule.js +13 -0
  904. package/lib/module/adapters/NativeANNTurboModule.js.map +1 -0
  905. package/lib/module/api/app/AppRegistry.js +52 -0
  906. package/lib/module/api/app/AppRegistry.js.map +1 -0
  907. package/lib/module/api/app/activeApp.js +12 -0
  908. package/lib/module/api/app/activeApp.js.map +1 -0
  909. package/lib/module/api/app/createNavigation.js +365 -0
  910. package/lib/module/api/app/createNavigation.js.map +1 -0
  911. package/lib/module/api/app/roots.js +20 -0
  912. package/lib/module/api/app/roots.js.map +1 -0
  913. package/lib/module/api/app/splash.js +124 -0
  914. package/lib/module/api/app/splash.js.map +1 -0
  915. package/lib/module/api/app/startFailure.js +38 -0
  916. package/lib/module/api/app/startFailure.js.map +1 -0
  917. package/lib/module/api/arrangement/arrangementState.js +86 -0
  918. package/lib/module/api/arrangement/arrangementState.js.map +1 -0
  919. package/lib/module/api/commands/commands.js +375 -0
  920. package/lib/module/api/commands/commands.js.map +1 -0
  921. package/lib/module/api/commands/errors.js +94 -0
  922. package/lib/module/api/commands/errors.js.map +1 -0
  923. package/lib/module/api/commands/presentation.js +4 -0
  924. package/lib/module/api/commands/presentation.js.map +1 -0
  925. package/lib/module/api/commands/sideMenus.js +134 -0
  926. package/lib/module/api/commands/sideMenus.js.map +1 -0
  927. package/lib/module/api/commands/transitions.js +245 -0
  928. package/lib/module/api/commands/transitions.js.map +1 -0
  929. package/lib/module/api/context/appContext.js +22 -0
  930. package/lib/module/api/context/appContext.js.map +1 -0
  931. package/lib/module/api/events/navigationEvents.js +69 -0
  932. package/lib/module/api/events/navigationEvents.js.map +1 -0
  933. package/lib/module/api/events/screenLifecycle.js +30 -0
  934. package/lib/module/api/events/screenLifecycle.js.map +1 -0
  935. package/lib/module/api/events/tabPresses.js +32 -0
  936. package/lib/module/api/events/tabPresses.js.map +1 -0
  937. package/lib/module/api/hinge/hinge.js +73 -0
  938. package/lib/module/api/hinge/hinge.js.map +1 -0
  939. package/lib/module/api/hooks/appHooks.js +26 -0
  940. package/lib/module/api/hooks/appHooks.js.map +1 -0
  941. package/lib/module/api/hooks/screenHooks.js +250 -0
  942. package/lib/module/api/hooks/screenHooks.js.map +1 -0
  943. package/lib/module/api/hooks/useArrangement.js +24 -0
  944. package/lib/module/api/hooks/useArrangement.js.map +1 -0
  945. package/lib/module/api/hooks/useHinge.js +29 -0
  946. package/lib/module/api/hooks/useHinge.js.map +1 -0
  947. package/lib/module/api/hooks/useNavigation.js +117 -0
  948. package/lib/module/api/hooks/useNavigation.js.map +1 -0
  949. package/lib/module/api/hooks/usePendingLink.js +12 -0
  950. package/lib/module/api/hooks/usePendingLink.js.map +1 -0
  951. package/lib/module/api/hooks/usePreview.js +97 -0
  952. package/lib/module/api/hooks/usePreview.js.map +1 -0
  953. package/lib/module/api/hooks/useReservedRegions.js +24 -0
  954. package/lib/module/api/hooks/useReservedRegions.js.map +1 -0
  955. package/lib/module/api/hooks/useSafeAreaInsets.js +25 -0
  956. package/lib/module/api/hooks/useSafeAreaInsets.js.map +1 -0
  957. package/lib/module/api/index.js +26 -0
  958. package/lib/module/api/index.js.map +1 -0
  959. package/lib/module/api/layout/Root.js +121 -0
  960. package/lib/module/api/layout/Root.js.map +1 -0
  961. package/lib/module/api/layout/Screen.js +52 -0
  962. package/lib/module/api/layout/Screen.js.map +1 -0
  963. package/lib/module/api/layout/SideMenu.js +85 -0
  964. package/lib/module/api/layout/SideMenu.js.map +1 -0
  965. package/lib/module/api/layout/SplitView.js +137 -0
  966. package/lib/module/api/layout/SplitView.js.map +1 -0
  967. package/lib/module/api/layout/Stack.js +36 -0
  968. package/lib/module/api/layout/Stack.js.map +1 -0
  969. package/lib/module/api/layout/Tabs.js +326 -0
  970. package/lib/module/api/layout/Tabs.js.map +1 -0
  971. package/lib/module/api/layout/element.js +100 -0
  972. package/lib/module/api/layout/element.js.map +1 -0
  973. package/lib/module/api/linking/linkPaths.js +132 -0
  974. package/lib/module/api/linking/linkPaths.js.map +1 -0
  975. package/lib/module/api/linking/linking.js +244 -0
  976. package/lib/module/api/linking/linking.js.map +1 -0
  977. package/lib/module/api/linking/pendingLinks.js +34 -0
  978. package/lib/module/api/linking/pendingLinks.js.map +1 -0
  979. package/lib/module/api/linking/types.js +4 -0
  980. package/lib/module/api/linking/types.js.map +1 -0
  981. package/lib/module/api/navigation.js +105 -0
  982. package/lib/module/api/navigation.js.map +1 -0
  983. package/lib/module/api/options/OptionsChain.js +158 -0
  984. package/lib/module/api/options/OptionsChain.js.map +1 -0
  985. package/lib/module/api/options/ScreenOptions.js +83 -0
  986. package/lib/module/api/options/ScreenOptions.js.map +1 -0
  987. package/lib/module/api/options/buttons.js +4 -0
  988. package/lib/module/api/options/buttons.js.map +1 -0
  989. package/lib/module/api/safeArea/ANNSafeAreaViewNativeComponent.ts +28 -0
  990. package/lib/module/api/safeArea/screenInsets.js +86 -0
  991. package/lib/module/api/safeArea/screenInsets.js.map +1 -0
  992. package/lib/module/api/safeArea/screenRegions.js +84 -0
  993. package/lib/module/api/safeArea/screenRegions.js.map +1 -0
  994. package/lib/module/api/screens/ScreenBoundary.js +44 -0
  995. package/lib/module/api/screens/ScreenBoundary.js.map +1 -0
  996. package/lib/module/api/screens/arrangement.js +63 -0
  997. package/lib/module/api/screens/arrangement.js.map +1 -0
  998. package/lib/module/api/screens/defineScreen.js +29 -0
  999. package/lib/module/api/screens/defineScreen.js.map +1 -0
  1000. package/lib/module/api/screens/nativeScreenCalls.js +34 -0
  1001. package/lib/module/api/screens/nativeScreenCalls.js.map +1 -0
  1002. package/lib/module/api/screens/nativeScreens.js +43 -0
  1003. package/lib/module/api/screens/nativeScreens.js.map +1 -0
  1004. package/lib/module/api/screens/registerScreens.js +305 -0
  1005. package/lib/module/api/screens/registerScreens.js.map +1 -0
  1006. package/lib/module/api/slots/ANNSlotNativeComponent.ts +23 -0
  1007. package/lib/module/api/slots/SlotHost.js +92 -0
  1008. package/lib/module/api/slots/SlotHost.js.map +1 -0
  1009. package/lib/module/api/state/navigationState.js +98 -0
  1010. package/lib/module/api/state/navigationState.js.map +1 -0
  1011. package/lib/module/api/testIDs.js +14 -0
  1012. package/lib/module/api/testIDs.js.map +1 -0
  1013. package/lib/module/api/theme/theme.js +180 -0
  1014. package/lib/module/api/theme/theme.js.map +1 -0
  1015. package/lib/module/api/types.js +4 -0
  1016. package/lib/module/api/types.js.map +1 -0
  1017. package/lib/module/engine/backListeners.js +39 -0
  1018. package/lib/module/engine/backListeners.js.map +1 -0
  1019. package/lib/module/engine/buttons.js +105 -0
  1020. package/lib/module/engine/buttons.js.map +1 -0
  1021. package/lib/module/engine/commands.js +388 -0
  1022. package/lib/module/engine/commands.js.map +1 -0
  1023. package/lib/module/engine/events.js +30 -0
  1024. package/lib/module/engine/events.js.map +1 -0
  1025. package/lib/module/engine/ids.js +10 -0
  1026. package/lib/module/engine/ids.js.map +1 -0
  1027. package/lib/module/engine/launchState.js +34 -0
  1028. package/lib/module/engine/launchState.js.map +1 -0
  1029. package/lib/module/engine/layout.js +202 -0
  1030. package/lib/module/engine/layout.js.map +1 -0
  1031. package/lib/module/engine/mergeOptions.js +23 -0
  1032. package/lib/module/engine/mergeOptions.js.map +1 -0
  1033. package/lib/module/engine/native.js +45 -0
  1034. package/lib/module/engine/native.js.map +1 -0
  1035. package/lib/module/engine/nativeScreens.js +265 -0
  1036. package/lib/module/engine/nativeScreens.js.map +1 -0
  1037. package/lib/module/engine/options.js +170 -0
  1038. package/lib/module/engine/options.js.map +1 -0
  1039. package/lib/module/engine/places.js +178 -0
  1040. package/lib/module/engine/places.js.map +1 -0
  1041. package/lib/module/engine/props.js +44 -0
  1042. package/lib/module/engine/props.js.map +1 -0
  1043. package/lib/module/engine/reactMeasures.js +23 -0
  1044. package/lib/module/engine/reactMeasures.js.map +1 -0
  1045. package/lib/module/engine/rememberedOptions.js +118 -0
  1046. package/lib/module/engine/rememberedOptions.js.map +1 -0
  1047. package/lib/module/engine/screens.js +194 -0
  1048. package/lib/module/engine/screens.js.map +1 -0
  1049. package/lib/module/engine/slots.js +200 -0
  1050. package/lib/module/engine/slots.js.map +1 -0
  1051. package/lib/module/engine/tabs.js +79 -0
  1052. package/lib/module/engine/tabs.js.map +1 -0
  1053. package/lib/module/index.js +5 -0
  1054. package/lib/module/index.js.map +1 -0
  1055. package/lib/module/interfaces/ComponentEvents.js +2 -0
  1056. package/lib/module/interfaces/ComponentEvents.js.map +1 -0
  1057. package/lib/module/interfaces/Events.js +2 -0
  1058. package/lib/module/interfaces/Events.js.map +1 -0
  1059. package/lib/module/interfaces/Layout.js +4 -0
  1060. package/lib/module/interfaces/Layout.js.map +1 -0
  1061. package/lib/module/interfaces/Options.js +4 -0
  1062. package/lib/module/interfaces/Options.js.map +1 -0
  1063. package/lib/module/interfaces/options/animations.js +2 -0
  1064. package/lib/module/interfaces/options/animations.js.map +1 -0
  1065. package/lib/module/interfaces/options/bottomTabs.js +4 -0
  1066. package/lib/module/interfaces/options/bottomTabs.js.map +1 -0
  1067. package/lib/module/interfaces/options/buttons.js +4 -0
  1068. package/lib/module/interfaces/options/buttons.js.map +1 -0
  1069. package/lib/module/interfaces/options/common.js +4 -0
  1070. package/lib/module/interfaces/options/common.js.map +1 -0
  1071. package/lib/module/interfaces/options/modals.js +2 -0
  1072. package/lib/module/interfaces/options/modals.js.map +1 -0
  1073. package/lib/module/interfaces/options/preview.js +2 -0
  1074. package/lib/module/interfaces/options/preview.js.map +1 -0
  1075. package/lib/module/interfaces/options/sideMenu.js +2 -0
  1076. package/lib/module/interfaces/options/sideMenu.js.map +1 -0
  1077. package/lib/module/interfaces/options/splitView.js +2 -0
  1078. package/lib/module/interfaces/options/splitView.js.map +1 -0
  1079. package/lib/module/interfaces/options/stack.js +4 -0
  1080. package/lib/module/interfaces/options/stack.js.map +1 -0
  1081. package/lib/module/interfaces/options/system.js +4 -0
  1082. package/lib/module/interfaces/options/system.js.map +1 -0
  1083. package/lib/module/interfaces/options/toolbar.js +4 -0
  1084. package/lib/module/interfaces/options/toolbar.js.map +1 -0
  1085. package/lib/module/interfaces/options/topBar.js +4 -0
  1086. package/lib/module/interfaces/options/topBar.js.map +1 -0
  1087. package/lib/module/package.json +1 -0
  1088. package/lib/typescript/adapters/NativeANNTurboEventEmitter.d.ts +14 -0
  1089. package/lib/typescript/adapters/NativeANNTurboEventEmitter.d.ts.map +1 -0
  1090. package/lib/typescript/adapters/NativeANNTurboModule.d.ts +77 -0
  1091. package/lib/typescript/adapters/NativeANNTurboModule.d.ts.map +1 -0
  1092. package/lib/typescript/api/app/AppRegistry.d.ts +14 -0
  1093. package/lib/typescript/api/app/AppRegistry.d.ts.map +1 -0
  1094. package/lib/typescript/api/app/activeApp.d.ts +12 -0
  1095. package/lib/typescript/api/app/activeApp.d.ts.map +1 -0
  1096. package/lib/typescript/api/app/createNavigation.d.ts +182 -0
  1097. package/lib/typescript/api/app/createNavigation.d.ts.map +1 -0
  1098. package/lib/typescript/api/app/roots.d.ts +15 -0
  1099. package/lib/typescript/api/app/roots.d.ts.map +1 -0
  1100. package/lib/typescript/api/app/splash.d.ts +81 -0
  1101. package/lib/typescript/api/app/splash.d.ts.map +1 -0
  1102. package/lib/typescript/api/app/startFailure.d.ts +15 -0
  1103. package/lib/typescript/api/app/startFailure.d.ts.map +1 -0
  1104. package/lib/typescript/api/arrangement/arrangementState.d.ts +21 -0
  1105. package/lib/typescript/api/arrangement/arrangementState.d.ts.map +1 -0
  1106. package/lib/typescript/api/commands/commands.d.ts +57 -0
  1107. package/lib/typescript/api/commands/commands.d.ts.map +1 -0
  1108. package/lib/typescript/api/commands/errors.d.ts +24 -0
  1109. package/lib/typescript/api/commands/errors.d.ts.map +1 -0
  1110. package/lib/typescript/api/commands/presentation.d.ts +69 -0
  1111. package/lib/typescript/api/commands/presentation.d.ts.map +1 -0
  1112. package/lib/typescript/api/commands/sideMenus.d.ts +14 -0
  1113. package/lib/typescript/api/commands/sideMenus.d.ts.map +1 -0
  1114. package/lib/typescript/api/commands/transitions.d.ts +33 -0
  1115. package/lib/typescript/api/commands/transitions.d.ts.map +1 -0
  1116. package/lib/typescript/api/context/appContext.d.ts +4 -0
  1117. package/lib/typescript/api/context/appContext.d.ts.map +1 -0
  1118. package/lib/typescript/api/events/navigationEvents.d.ts +70 -0
  1119. package/lib/typescript/api/events/navigationEvents.d.ts.map +1 -0
  1120. package/lib/typescript/api/events/screenLifecycle.d.ts +5 -0
  1121. package/lib/typescript/api/events/screenLifecycle.d.ts.map +1 -0
  1122. package/lib/typescript/api/events/tabPresses.d.ts +5 -0
  1123. package/lib/typescript/api/events/tabPresses.d.ts.map +1 -0
  1124. package/lib/typescript/api/hinge/hinge.d.ts +21 -0
  1125. package/lib/typescript/api/hinge/hinge.d.ts.map +1 -0
  1126. package/lib/typescript/api/hooks/appHooks.d.ts +15 -0
  1127. package/lib/typescript/api/hooks/appHooks.d.ts.map +1 -0
  1128. package/lib/typescript/api/hooks/screenHooks.d.ts +74 -0
  1129. package/lib/typescript/api/hooks/screenHooks.d.ts.map +1 -0
  1130. package/lib/typescript/api/hooks/useArrangement.d.ts +13 -0
  1131. package/lib/typescript/api/hooks/useArrangement.d.ts.map +1 -0
  1132. package/lib/typescript/api/hooks/useHinge.d.ts +16 -0
  1133. package/lib/typescript/api/hooks/useHinge.d.ts.map +1 -0
  1134. package/lib/typescript/api/hooks/useNavigation.d.ts +108 -0
  1135. package/lib/typescript/api/hooks/useNavigation.d.ts.map +1 -0
  1136. package/lib/typescript/api/hooks/usePendingLink.d.ts +7 -0
  1137. package/lib/typescript/api/hooks/usePendingLink.d.ts.map +1 -0
  1138. package/lib/typescript/api/hooks/usePreview.d.ts +29 -0
  1139. package/lib/typescript/api/hooks/usePreview.d.ts.map +1 -0
  1140. package/lib/typescript/api/hooks/useReservedRegions.d.ts +13 -0
  1141. package/lib/typescript/api/hooks/useReservedRegions.d.ts.map +1 -0
  1142. package/lib/typescript/api/hooks/useSafeAreaInsets.d.ts +14 -0
  1143. package/lib/typescript/api/hooks/useSafeAreaInsets.d.ts.map +1 -0
  1144. package/lib/typescript/api/index.d.ts +60 -0
  1145. package/lib/typescript/api/index.d.ts.map +1 -0
  1146. package/lib/typescript/api/layout/Root.d.ts +47 -0
  1147. package/lib/typescript/api/layout/Root.d.ts.map +1 -0
  1148. package/lib/typescript/api/layout/Screen.d.ts +32 -0
  1149. package/lib/typescript/api/layout/Screen.d.ts.map +1 -0
  1150. package/lib/typescript/api/layout/SideMenu.d.ts +33 -0
  1151. package/lib/typescript/api/layout/SideMenu.d.ts.map +1 -0
  1152. package/lib/typescript/api/layout/SplitView.d.ts +48 -0
  1153. package/lib/typescript/api/layout/SplitView.d.ts.map +1 -0
  1154. package/lib/typescript/api/layout/Stack.d.ts +21 -0
  1155. package/lib/typescript/api/layout/Stack.d.ts.map +1 -0
  1156. package/lib/typescript/api/layout/Tabs.d.ts +120 -0
  1157. package/lib/typescript/api/layout/Tabs.d.ts.map +1 -0
  1158. package/lib/typescript/api/layout/element.d.ts +52 -0
  1159. package/lib/typescript/api/layout/element.d.ts.map +1 -0
  1160. package/lib/typescript/api/linking/linkPaths.d.ts +31 -0
  1161. package/lib/typescript/api/linking/linkPaths.d.ts.map +1 -0
  1162. package/lib/typescript/api/linking/linking.d.ts +37 -0
  1163. package/lib/typescript/api/linking/linking.d.ts.map +1 -0
  1164. package/lib/typescript/api/linking/pendingLinks.d.ts +8 -0
  1165. package/lib/typescript/api/linking/pendingLinks.d.ts.map +1 -0
  1166. package/lib/typescript/api/linking/types.d.ts +105 -0
  1167. package/lib/typescript/api/linking/types.d.ts.map +1 -0
  1168. package/lib/typescript/api/navigation.d.ts +115 -0
  1169. package/lib/typescript/api/navigation.d.ts.map +1 -0
  1170. package/lib/typescript/api/options/OptionsChain.d.ts +47 -0
  1171. package/lib/typescript/api/options/OptionsChain.d.ts.map +1 -0
  1172. package/lib/typescript/api/options/ScreenOptions.d.ts +32 -0
  1173. package/lib/typescript/api/options/ScreenOptions.d.ts.map +1 -0
  1174. package/lib/typescript/api/options/buttons.d.ts +35 -0
  1175. package/lib/typescript/api/options/buttons.d.ts.map +1 -0
  1176. package/lib/typescript/api/safeArea/ANNSafeAreaViewNativeComponent.d.ts +20 -0
  1177. package/lib/typescript/api/safeArea/ANNSafeAreaViewNativeComponent.d.ts.map +1 -0
  1178. package/lib/typescript/api/safeArea/screenInsets.d.ts +20 -0
  1179. package/lib/typescript/api/safeArea/screenInsets.d.ts.map +1 -0
  1180. package/lib/typescript/api/safeArea/screenRegions.d.ts +24 -0
  1181. package/lib/typescript/api/safeArea/screenRegions.d.ts.map +1 -0
  1182. package/lib/typescript/api/screens/ScreenBoundary.d.ts +34 -0
  1183. package/lib/typescript/api/screens/ScreenBoundary.d.ts.map +1 -0
  1184. package/lib/typescript/api/screens/arrangement.d.ts +70 -0
  1185. package/lib/typescript/api/screens/arrangement.d.ts.map +1 -0
  1186. package/lib/typescript/api/screens/defineScreen.d.ts +41 -0
  1187. package/lib/typescript/api/screens/defineScreen.d.ts.map +1 -0
  1188. package/lib/typescript/api/screens/nativeScreenCalls.d.ts +3 -0
  1189. package/lib/typescript/api/screens/nativeScreenCalls.d.ts.map +1 -0
  1190. package/lib/typescript/api/screens/nativeScreens.d.ts +47 -0
  1191. package/lib/typescript/api/screens/nativeScreens.d.ts.map +1 -0
  1192. package/lib/typescript/api/screens/registerScreens.d.ts +61 -0
  1193. package/lib/typescript/api/screens/registerScreens.d.ts.map +1 -0
  1194. package/lib/typescript/api/slots/ANNSlotNativeComponent.d.ts +15 -0
  1195. package/lib/typescript/api/slots/ANNSlotNativeComponent.d.ts.map +1 -0
  1196. package/lib/typescript/api/slots/SlotHost.d.ts +8 -0
  1197. package/lib/typescript/api/slots/SlotHost.d.ts.map +1 -0
  1198. package/lib/typescript/api/state/navigationState.d.ts +26 -0
  1199. package/lib/typescript/api/state/navigationState.d.ts.map +1 -0
  1200. package/lib/typescript/api/testIDs.d.ts +12 -0
  1201. package/lib/typescript/api/testIDs.d.ts.map +1 -0
  1202. package/lib/typescript/api/theme/theme.d.ts +70 -0
  1203. package/lib/typescript/api/theme/theme.d.ts.map +1 -0
  1204. package/lib/typescript/api/types.d.ts +64 -0
  1205. package/lib/typescript/api/types.d.ts.map +1 -0
  1206. package/lib/typescript/engine/backListeners.d.ts +8 -0
  1207. package/lib/typescript/engine/backListeners.d.ts.map +1 -0
  1208. package/lib/typescript/engine/buttons.d.ts +11 -0
  1209. package/lib/typescript/engine/buttons.d.ts.map +1 -0
  1210. package/lib/typescript/engine/commands.d.ts +38 -0
  1211. package/lib/typescript/engine/commands.d.ts.map +1 -0
  1212. package/lib/typescript/engine/events.d.ts +17 -0
  1213. package/lib/typescript/engine/events.d.ts.map +1 -0
  1214. package/lib/typescript/engine/ids.d.ts +3 -0
  1215. package/lib/typescript/engine/ids.d.ts.map +1 -0
  1216. package/lib/typescript/engine/launchState.d.ts +25 -0
  1217. package/lib/typescript/engine/launchState.d.ts.map +1 -0
  1218. package/lib/typescript/engine/layout.d.ts +32 -0
  1219. package/lib/typescript/engine/layout.d.ts.map +1 -0
  1220. package/lib/typescript/engine/mergeOptions.d.ts +6 -0
  1221. package/lib/typescript/engine/mergeOptions.d.ts.map +1 -0
  1222. package/lib/typescript/engine/native.d.ts +22 -0
  1223. package/lib/typescript/engine/native.d.ts.map +1 -0
  1224. package/lib/typescript/engine/nativeScreens.d.ts +49 -0
  1225. package/lib/typescript/engine/nativeScreens.d.ts.map +1 -0
  1226. package/lib/typescript/engine/options.d.ts +12 -0
  1227. package/lib/typescript/engine/options.d.ts.map +1 -0
  1228. package/lib/typescript/engine/places.d.ts +57 -0
  1229. package/lib/typescript/engine/places.d.ts.map +1 -0
  1230. package/lib/typescript/engine/props.d.ts +10 -0
  1231. package/lib/typescript/engine/props.d.ts.map +1 -0
  1232. package/lib/typescript/engine/reactMeasures.d.ts +3 -0
  1233. package/lib/typescript/engine/reactMeasures.d.ts.map +1 -0
  1234. package/lib/typescript/engine/rememberedOptions.d.ts +28 -0
  1235. package/lib/typescript/engine/rememberedOptions.d.ts.map +1 -0
  1236. package/lib/typescript/engine/screens.d.ts +90 -0
  1237. package/lib/typescript/engine/screens.d.ts.map +1 -0
  1238. package/lib/typescript/engine/slots.d.ts +71 -0
  1239. package/lib/typescript/engine/slots.d.ts.map +1 -0
  1240. package/lib/typescript/engine/tabs.d.ts +24 -0
  1241. package/lib/typescript/engine/tabs.d.ts.map +1 -0
  1242. package/lib/typescript/index.d.ts +3 -0
  1243. package/lib/typescript/index.d.ts.map +1 -0
  1244. package/lib/typescript/interfaces/ComponentEvents.d.ts +189 -0
  1245. package/lib/typescript/interfaces/ComponentEvents.d.ts.map +1 -0
  1246. package/lib/typescript/interfaces/Events.d.ts +199 -0
  1247. package/lib/typescript/interfaces/Events.d.ts.map +1 -0
  1248. package/lib/typescript/interfaces/Layout.d.ts +150 -0
  1249. package/lib/typescript/interfaces/Layout.d.ts.map +1 -0
  1250. package/lib/typescript/interfaces/Options.d.ts +93 -0
  1251. package/lib/typescript/interfaces/Options.d.ts.map +1 -0
  1252. package/lib/typescript/interfaces/options/animations.d.ts +452 -0
  1253. package/lib/typescript/interfaces/options/animations.d.ts.map +1 -0
  1254. package/lib/typescript/interfaces/options/bottomTabs.d.ts +462 -0
  1255. package/lib/typescript/interfaces/options/bottomTabs.d.ts.map +1 -0
  1256. package/lib/typescript/interfaces/options/buttons.d.ts +331 -0
  1257. package/lib/typescript/interfaces/options/buttons.d.ts.map +1 -0
  1258. package/lib/typescript/interfaces/options/common.d.ts +51 -0
  1259. package/lib/typescript/interfaces/options/common.d.ts.map +1 -0
  1260. package/lib/typescript/interfaces/options/modals.d.ts +202 -0
  1261. package/lib/typescript/interfaces/options/modals.d.ts.map +1 -0
  1262. package/lib/typescript/interfaces/options/preview.d.ts +40 -0
  1263. package/lib/typescript/interfaces/options/preview.d.ts.map +1 -0
  1264. package/lib/typescript/interfaces/options/sideMenu.d.ts +130 -0
  1265. package/lib/typescript/interfaces/options/sideMenu.d.ts.map +1 -0
  1266. package/lib/typescript/interfaces/options/splitView.d.ts +118 -0
  1267. package/lib/typescript/interfaces/options/splitView.d.ts.map +1 -0
  1268. package/lib/typescript/interfaces/options/stack.d.ts +109 -0
  1269. package/lib/typescript/interfaces/options/stack.d.ts.map +1 -0
  1270. package/lib/typescript/interfaces/options/system.d.ts +238 -0
  1271. package/lib/typescript/interfaces/options/system.d.ts.map +1 -0
  1272. package/lib/typescript/interfaces/options/toolbar.d.ts +45 -0
  1273. package/lib/typescript/interfaces/options/toolbar.d.ts.map +1 -0
  1274. package/lib/typescript/interfaces/options/topBar.d.ts +804 -0
  1275. package/lib/typescript/interfaces/options/topBar.d.ts.map +1 -0
  1276. package/lib/typescript/package.json +1 -0
  1277. package/package.json +166 -4
  1278. package/react-native.config.js +22 -0
  1279. package/src/ARCHITECTURE.md +289 -0
  1280. package/src/adapters/NativeANNTurboEventEmitter.ts +15 -0
  1281. package/src/adapters/NativeANNTurboModule.ts +100 -0
  1282. package/src/api/app/AppRegistry.ts +57 -0
  1283. package/src/api/app/activeApp.ts +20 -0
  1284. package/src/api/app/createNavigation.ts +566 -0
  1285. package/src/api/app/roots.ts +40 -0
  1286. package/src/api/app/splash.ts +154 -0
  1287. package/src/api/app/startFailure.tsx +39 -0
  1288. package/src/api/arrangement/arrangementState.ts +98 -0
  1289. package/src/api/commands/commands.ts +371 -0
  1290. package/src/api/commands/errors.ts +99 -0
  1291. package/src/api/commands/presentation.ts +78 -0
  1292. package/src/api/commands/sideMenus.ts +122 -0
  1293. package/src/api/commands/transitions.ts +133 -0
  1294. package/src/api/context/appContext.ts +23 -0
  1295. package/src/api/events/navigationEvents.ts +175 -0
  1296. package/src/api/events/screenLifecycle.ts +27 -0
  1297. package/src/api/events/tabPresses.ts +35 -0
  1298. package/src/api/hinge/hinge.ts +84 -0
  1299. package/src/api/hooks/appHooks.ts +37 -0
  1300. package/src/api/hooks/screenHooks.ts +272 -0
  1301. package/src/api/hooks/useArrangement.ts +26 -0
  1302. package/src/api/hooks/useHinge.ts +26 -0
  1303. package/src/api/hooks/useNavigation.ts +267 -0
  1304. package/src/api/hooks/usePendingLink.ts +11 -0
  1305. package/src/api/hooks/usePreview.ts +111 -0
  1306. package/src/api/hooks/useReservedRegions.ts +26 -0
  1307. package/src/api/hooks/useSafeAreaInsets.ts +23 -0
  1308. package/src/api/index.ts +139 -0
  1309. package/src/api/layout/Root.ts +113 -0
  1310. package/src/api/layout/Screen.ts +55 -0
  1311. package/src/api/layout/SideMenu.ts +87 -0
  1312. package/src/api/layout/SplitView.ts +146 -0
  1313. package/src/api/layout/Stack.ts +48 -0
  1314. package/src/api/layout/Tabs.ts +339 -0
  1315. package/src/api/layout/element.ts +114 -0
  1316. package/src/api/linking/linkPaths.ts +159 -0
  1317. package/src/api/linking/linking.ts +242 -0
  1318. package/src/api/linking/pendingLinks.ts +37 -0
  1319. package/src/api/linking/types.ts +130 -0
  1320. package/src/api/navigation.ts +269 -0
  1321. package/src/api/options/OptionsChain.ts +142 -0
  1322. package/src/api/options/ScreenOptions.ts +81 -0
  1323. package/src/api/options/buttons.ts +43 -0
  1324. package/src/api/safeArea/ANNSafeAreaViewNativeComponent.ts +28 -0
  1325. package/src/api/safeArea/screenInsets.ts +86 -0
  1326. package/src/api/safeArea/screenRegions.ts +99 -0
  1327. package/src/api/screens/ScreenBoundary.tsx +52 -0
  1328. package/src/api/screens/arrangement.ts +106 -0
  1329. package/src/api/screens/defineScreen.ts +57 -0
  1330. package/src/api/screens/nativeScreenCalls.ts +59 -0
  1331. package/src/api/screens/nativeScreens.ts +58 -0
  1332. package/src/api/screens/registerScreens.tsx +364 -0
  1333. package/src/api/slots/ANNSlotNativeComponent.ts +23 -0
  1334. package/src/api/slots/SlotHost.tsx +64 -0
  1335. package/src/api/state/navigationState.ts +95 -0
  1336. package/src/api/testIDs.ts +11 -0
  1337. package/src/api/theme/theme.ts +184 -0
  1338. package/src/api/types.ts +95 -0
  1339. package/src/engine/backListeners.ts +36 -0
  1340. package/src/engine/buttons.ts +91 -0
  1341. package/src/engine/commands.ts +469 -0
  1342. package/src/engine/events.ts +24 -0
  1343. package/src/engine/ids.ts +7 -0
  1344. package/src/engine/launchState.ts +35 -0
  1345. package/src/engine/layout.ts +247 -0
  1346. package/src/engine/mergeOptions.ts +20 -0
  1347. package/src/engine/native.ts +51 -0
  1348. package/src/engine/nativeScreens.ts +263 -0
  1349. package/src/engine/options.ts +165 -0
  1350. package/src/engine/places.ts +205 -0
  1351. package/src/engine/props.ts +45 -0
  1352. package/src/engine/reactMeasures.ts +24 -0
  1353. package/src/engine/rememberedOptions.ts +111 -0
  1354. package/src/engine/screens.tsx +239 -0
  1355. package/src/engine/slots.ts +191 -0
  1356. package/src/engine/tabs.ts +95 -0
  1357. package/src/index.ts +3 -0
  1358. package/src/interfaces/ComponentEvents.ts +214 -0
  1359. package/src/interfaces/Events.ts +227 -0
  1360. package/src/interfaces/Layout.ts +161 -0
  1361. package/src/interfaces/Options.ts +175 -0
  1362. package/src/interfaces/options/animations.ts +480 -0
  1363. package/src/interfaces/options/bottomTabs.ts +481 -0
  1364. package/src/interfaces/options/buttons.ts +364 -0
  1365. package/src/interfaces/options/common.ts +76 -0
  1366. package/src/interfaces/options/modals.ts +217 -0
  1367. package/src/interfaces/options/preview.ts +40 -0
  1368. package/src/interfaces/options/sideMenu.ts +132 -0
  1369. package/src/interfaces/options/splitView.ts +127 -0
  1370. package/src/interfaces/options/stack.ts +110 -0
  1371. package/src/interfaces/options/system.ts +252 -0
  1372. package/src/interfaces/options/toolbar.ts +47 -0
  1373. package/src/interfaces/options/topBar.ts +828 -0
@@ -0,0 +1,90 @@
1
+ package dev.apexnative.navigation.viewcontrollers.component
2
+
3
+ import android.app.Activity
4
+ import android.graphics.Color
5
+ import android.graphics.drawable.ColorDrawable
6
+ import android.graphics.drawable.Drawable
7
+ import android.graphics.drawable.LayerDrawable
8
+ import android.view.View
9
+ import dev.apexnative.navigation.options.DefaultOptions
10
+ import dev.apexnative.navigation.options.Options
11
+ import dev.apexnative.navigation.options.params.ThemeColour
12
+ import dev.apexnative.navigation.system.SystemUiOwner
13
+ import dev.apexnative.navigation.viewcontrollers.externalcomponent.ExternalComponentViewController
14
+ import dev.apexnative.navigation.viewcontrollers.viewcontroller.Presenter
15
+ import dev.apexnative.navigation.viewcontrollers.viewcontroller.ViewController
16
+
17
+ /**
18
+ * The presenter of a screen, React or native: its background — the screen's view takes `layout.backgroundColor`, kept
19
+ * out of the status bar's height where the status bar shows over it, and the React content takes
20
+ * `layout.componentBackgroundColor` over it —, its room for the bars, and its safe area again on `mergeOptions`
21
+ * (`mergeOptions` step 4). It applies as the screen appears, on `mergeOptions` of what it covers, and again with new
22
+ * default options or after a light/dark switch from the resolved options it is given, which it never writes. Each
23
+ * appearance tells the activity's system UI owner, which follows the screen on top. Main thread only.
24
+ */
25
+ open class ComponentPresenter(activity: Activity) : Presenter(activity, DefaultOptions.current) {
26
+ override fun applyOptions(view: ViewController<*>, options: Options) {
27
+ frameOf(view)?.applyRoom()
28
+ applyBackground(view, options)
29
+ SystemUiOwner.of(activity)?.invalidate()
30
+ }
31
+
32
+ override fun mergeOptions(viewController: ViewController<*>, options: Options) {
33
+ val statusBar = options.statusBar.visible.hasValue() || options.statusBar.drawBehind.hasValue()
34
+ if (statusBar) frameOf(viewController)?.applyRoom()
35
+ if (statusBar || options.layout.backgroundColor.hasValue() ||
36
+ options.layout.componentBackgroundColor.hasValue()
37
+ ) {
38
+ applyBackground(viewController, viewController.resolveCurrentOptions(defaultOptions))
39
+ }
40
+ // The keyboard's room again, with the keyboard open too; the padding over or under the navigation bar again
41
+ // (`navigationBar.drawBehind`).
42
+ val navigationBar = options.navigationBar.let { it.drawBehind.hasValue() || it.backgroundColor.hasValue() }
43
+ if (options.layout.adjustResize.hasValue() || navigationBar) frameOf(viewController)?.applyInsetsAgain()
44
+ // The edges, the large title and the bars' hiding may have changed.
45
+ (viewController as? ComponentViewController)?.updateSafeArea()
46
+ }
47
+
48
+ override fun onConfigurationChanged(controller: ViewController<*>, options: Options) =
49
+ applyBackground(controller, options)
50
+
51
+ /**
52
+ * The colors of [screen] from its resolved [options]: `layout.backgroundColor` on the screen's view, none without
53
+ * it (the window shows); `layout.componentBackgroundColor` on its React content.
54
+ */
55
+ fun applyBackground(screen: ViewController<*>, options: Options) {
56
+ val view = screen.peekView() ?: return
57
+ view.background = screenBackground(screen, options)
58
+ contentOf(screen)?.background = colorOf(options.layout.componentBackgroundColor)?.let(::ColorDrawable)
59
+ }
60
+
61
+ private fun screenBackground(screen: ViewController<*>, options: Options): Drawable? {
62
+ val color = colorOf(options.layout.backgroundColor) ?: return null
63
+ val frame = frameOf(screen) ?: return ColorDrawable(color)
64
+ val band = ScreenSafeArea.backgroundBand(
65
+ statusBarHeight = frame.statusBarHeight,
66
+ hiddenOrDrawBehind = options.statusBar.isHiddenOrDrawBehind,
67
+ inSideMenu = screen.isInSideMenu,
68
+ inSheet = screen.isInSheet,
69
+ inPair = frame.isInPair,
70
+ topRoom = frame.topRoom(),
71
+ )
72
+ if (band <= 0) return ColorDrawable(color)
73
+ // A layer inset reports no padding (an InsetDrawable does, and the view would take it in place of its own:
74
+ // the side bars, the navigation bar and the keyboard).
75
+ return LayerDrawable(arrayOf<Drawable>(ColorDrawable(color))).apply { setLayerInset(0, 0, band, 0, 0) }
76
+ }
77
+
78
+ // A color the options give, with the activity's theme for platform colors; none without one.
79
+ private fun colorOf(colour: ThemeColour): Int? =
80
+ if (colour.hasValue()) colour.get(activity, Color.TRANSPARENT) ?: Color.TRANSPARENT else null
81
+
82
+ private fun frameOf(screen: ViewController<*>): ScreenFrame? = when (screen) {
83
+ is ComponentViewController -> screen.frame
84
+ is ExternalComponentViewController -> screen.frame
85
+ else -> null
86
+ }
87
+
88
+ // The view under the React content: the React root, or the container of a slot screen. A native screen has none.
89
+ private fun contentOf(screen: ViewController<*>): View? = (screen as? ComponentViewController)?.content?.asView()
90
+ }
@@ -0,0 +1,254 @@
1
+ package dev.apexnative.navigation.viewcontrollers.component
2
+
3
+ import android.app.Activity
4
+ import android.graphics.Rect
5
+ import android.view.View
6
+ import android.view.ViewGroup
7
+ import androidx.core.view.ViewCompat
8
+ import androidx.core.view.WindowInsetsCompat
9
+ import dev.apexnative.navigation.options.DefaultOptions
10
+ import dev.apexnative.navigation.options.Options
11
+ import dev.apexnative.navigation.react.ArrangementStates
12
+ import dev.apexnative.navigation.react.ReactView
13
+ import dev.apexnative.navigation.react.ScreenInsets
14
+ import dev.apexnative.navigation.react.ScreenRegions
15
+ import dev.apexnative.navigation.react.events.AppearanceDispatcher
16
+ import dev.apexnative.navigation.react.events.ComponentType
17
+ import dev.apexnative.navigation.slots.SlotScreenView
18
+ import dev.apexnative.navigation.system.SystemUiOwner
19
+ import dev.apexnative.navigation.viewcontrollers.child.ChildController
20
+ import dev.apexnative.navigation.viewcontrollers.child.ChildControllersRegistry
21
+ import dev.apexnative.navigation.viewcontrollers.parent.ChildOffsetFromRest
22
+ import dev.apexnative.navigation.viewcontrollers.viewcontroller.IReactView
23
+ import dev.apexnative.navigation.viewcontrollers.viewcontroller.Presenter
24
+ import dev.apexnative.navigation.viewcontrollers.viewcontroller.ViewController
25
+ import dev.apexnative.navigation.views.component.ComponentLayout
26
+
27
+ /**
28
+ * A React screen (`Component` of the layout): its content is a React root of its own, or the container of a slot screen
29
+ * for a name starting with `slot:` ([ScreenContentFactory]). It tells its appearance through its content, which owns
30
+ * the appearance record (`AppearanceDispatcher`). Its view, and with it its content, is made when the layout that holds
31
+ * it is made, before it appears: a root's surfaces start as its view joins the window (`setRoot` step 2).
32
+ *
33
+ * The content fills the screen's view; the view keeps the room for the bars as its margins and what the system
34
+ * covers as its padding ([ScreenFrame]), and its presenter (`ComponentPresenter`) paints it. While the view shows, each
35
+ * layout of the window measures the screen's safe area and regions into the stores the hooks of JavaScript read
36
+ * ([updateSafeArea]).
37
+ */
38
+ class ComponentViewController(
39
+ activity: Activity,
40
+ childRegistry: ChildControllersRegistry,
41
+ id: String,
42
+ /** The name the screen was registered with in JavaScript, `slot:` included. */
43
+ val componentName: String,
44
+ presenter: Presenter,
45
+ initialOptions: Options,
46
+ ) : ChildController<ComponentLayout>(activity, childRegistry, id, presenter, initialOptions) {
47
+ /** The room of the screen's view for the bars and the system. */
48
+ internal val frame = ScreenFrame(this, consumesInsets = false)
49
+
50
+ init {
51
+ // The screen owns its id from now on, before its content exists: what an earlier screen with the id told of
52
+ // its readiness (a root made again with the same ids) isn't this one's.
53
+ ScreenReadiness.remove(id)
54
+ }
55
+
56
+ override val currentComponentName: String
57
+ get() = componentName.removePrefix(ScreenContentFactory.SLOT_PREFIX)
58
+
59
+ override fun createView(): ComponentLayout {
60
+ val layout = ComponentLayout(activity, ScreenContentFactory.create(activity, id, componentName))
61
+ frame.attach(layout)
62
+ frame.onInsetsApplied = ::applyBackgroundAgain
63
+ layout.onAttached = { frame.onAttached(layout) }
64
+ layout.onWindowLayout = ::updateSafeArea
65
+ return layout
66
+ }
67
+
68
+ /** What the screen shows, once its view is made: what a command waits for before the screen comes in. */
69
+ internal val content: IReactView?
70
+ get() = peekView()?.reactView
71
+
72
+ /**
73
+ * A command's wait for the content ended at its limit: the content counts as mounted, and the events held for it go
74
+ * at once.
75
+ */
76
+ internal fun markContentReady() {
77
+ when (val content = content) {
78
+ is ReactView -> content.appearance.markReady()
79
+ is SlotScreenView -> content.appearance.markReady()
80
+ else -> Unit
81
+ }
82
+ }
83
+
84
+ // The bar's buttons send ANN.NavigationButtonPressed with the screen's own id and JavaScript, whatever its content
85
+ // (a React root, a slot).
86
+ override fun sendOnNavigationButtonPressed(buttonId: String) =
87
+ AppearanceDispatcher.navigationButtonPressed(this, buttonId)
88
+
89
+ // The screen shows with its options, and the layout around takes its part of them (its bar, its FAB, its tabs).
90
+ override fun applyOptions(options: Options) {
91
+ presenter.applyOptions(this, options)
92
+ performOnParentController { it.applyChildOptions(options, this) }
93
+ }
94
+
95
+ override fun getTopInset(): Int = frame.topRoom()
96
+
97
+ override fun applyTopInset() = frame.applyRoom()
98
+
99
+ override fun getBottomInset(): Int = frame.bottomRoom()
100
+
101
+ override fun applyBottomInset() = frame.applyRoom()
102
+
103
+ // A screen that appears has its view: will and did appear go through it, made when needed; its options apply as
104
+ // it starts to appear. A screen whose view isn't made has shown nothing, so disappear makes none. A destroyed
105
+ // screen tells nothing.
106
+ override fun onViewWillAppear() {
107
+ if (isDestroyed) return
108
+ super.onViewWillAppear()
109
+ val layout = view
110
+ applyOptions(resolveCurrentOptions(DefaultOptions.current))
111
+ layout.reactView.sendComponentWillStart(ComponentType.Component)
112
+ // The components of its bar appear with it.
113
+ findParentStack()?.barScreenWillAppear(this)
114
+ }
115
+
116
+ override fun onViewDidAppear() {
117
+ if (isDestroyed) return
118
+ view.reactView.sendComponentStart(ComponentType.Component)
119
+ findParentStack()?.barScreenDidAppear(this)
120
+ super.onViewDidAppear()
121
+ }
122
+
123
+ // The system UI follows what is on top now (a modal or an overlay that goes).
124
+ override fun onViewDisappear() {
125
+ if (isDestroyed) return
126
+ peekView()?.reactView?.sendComponentStop(ComponentType.Component)
127
+ findParentStack()?.barScreenDisappeared(this)
128
+ super.onViewDisappear()
129
+ SystemUiOwner.of(activity)?.invalidate()
130
+ }
131
+
132
+ /**
133
+ * The screen starts to leave (`blurOnUnmount`): with `blurOnUnmount` in its resolved options, the view that has the
134
+ * activity's focus lets go of it, and a field of React Native hides the keyboard as it does.
135
+ */
136
+ override fun onLeaveStarted() {
137
+ if (isDestroyed) return
138
+ if (resolveCurrentOptions(DefaultOptions.current).blurOnUnmount.isTrue) ScreenFocus.blur(activity)
139
+ }
140
+
141
+ /**
142
+ * Measures the screen's safe area and its regions into the stores: what the bars and the system cover of the React
143
+ * content, in dp ([ScreenSafeArea.insets]), the part of it its safe area view keeps the content off
144
+ * ([ScreenSafeArea.paddedEdges]), and the folds and the cutout over it. Only while the screen's view shows, never
145
+ * while a layout is on its way: the next layout of the window measures then; a screen prepared for a push measures
146
+ * as its stack laid it out. A screen under another in its stack keeps what it has. Main thread.
147
+ */
148
+ internal fun updateSafeArea() {
149
+ if (isDestroyed) return
150
+ val layout = peekView() ?: return
151
+ val parent = parentController
152
+ val content = layout.reactView.asView()
153
+ // A screen prepared for a push measures too, though it doesn't show, as its stack laid it out.
154
+ val prepared = parent?.measuresThoughNotShown(this) == true
155
+ val measures = ScreenSafeArea.measuresNow(
156
+ shown = layout.isShown || prepared,
157
+ layoutPending = !prepared && isLayoutPending(content),
158
+ topOfStack = parent?.isTopOfStack(this) ?: true,
159
+ hasSafeArea = ScreenInsets.padding(id) != null,
160
+ )
161
+ if (!measures) return
162
+ val windowInsets = ViewCompat.getRootWindowInsets(content) ?: return
163
+ val window = content.rootView ?: return
164
+ val system = windowInsets.getInsets(SYSTEM_EDGES)
165
+ val place = ScreenSafeArea.placeInWindow(stepsToWindow(content), content.width, content.height)
166
+ val insets = ScreenSafeArea.insets(
167
+ windowWidth = window.width,
168
+ windowHeight = window.height,
169
+ system = ScreenSafeArea.Box(system.left, system.top, system.right, system.bottom),
170
+ root = place,
171
+ headerBottom = parent?.headerBottomOf(this),
172
+ tabsTop = parent?.tabsTopOf(this),
173
+ density = activity.resources.displayMetrics.density,
174
+ )
175
+ val edges = ScreenSafeArea.paddedEdges(
176
+ safeAreaEdges = resolveCurrentOptions(DefaultOptions.current).layout.safeAreaEdges,
177
+ topFree = parent?.leavesTopEdgeFree(this) == true,
178
+ bottomFree = parent?.leavesBottomEdgeFree(this) == true,
179
+ )
180
+ ScreenInsets.update(activity, id, insets, ScreenSafeArea.padding(insets, edges))
181
+ ScreenRegions.update(activity, id, Rect(place.left, place.top, place.right, place.bottom), windowInsets)
182
+ }
183
+
184
+ // A layout asked for on the content or on a view around it: it isn't in its place yet.
185
+ private fun isLayoutPending(content: View): Boolean {
186
+ var current: View? = content
187
+ while (current != null) {
188
+ if (current.isLayoutRequested) return true
189
+ current = current.parent as? View
190
+ }
191
+ return false
192
+ }
193
+
194
+ // The views from the content up to the window, each with its place and its parent's scroll, at rest as [RestPlace]
195
+ // counts them, the same rule as the header's bottom and the tabs' top. A child that moves counts where it rests
196
+ // (`ChildOffsetFromRest`): a side menu's drawer where the open menu is, a sliding pane where it is open: the split
197
+ // view gives the pane's distance from its open place (`ChildOffsetFromRest`), which takes the pane's move away.
198
+ private fun stepsToWindow(content: View): List<ScreenSafeArea.Step> {
199
+ val steps = ArrayList(RestPlace.stepsToWindow(content))
200
+ val offset = offsetFromRest()
201
+ if (offset != 0) steps += ScreenSafeArea.Step(offset, 0, 0, 0)
202
+ return steps
203
+ }
204
+
205
+ // How far the layouts around move this screen from where it rests, along the width: the sum of what each layout
206
+ // that moves a child gives for the child on the way to this screen.
207
+ private fun offsetFromRest(): Int {
208
+ var offset = 0
209
+ var node: ViewController<*> = this
210
+ var parent = parentController
211
+ while (parent != null) {
212
+ if (parent is ChildOffsetFromRest) offset += parent.childOffsetFromRest(node)
213
+ node = parent
214
+ parent = parent.parentController
215
+ }
216
+ return offset
217
+ }
218
+
219
+ // New window insets: the status bar's band of the background may have changed.
220
+ private fun applyBackgroundAgain() {
221
+ (presenter as? ComponentPresenter)?.applyBackground(this, resolveCurrentOptions(DefaultOptions.current))
222
+ }
223
+
224
+ /**
225
+ * Destroys the screen once: it disappears when it showed (its `ANN.ScreenPopped`, when it left a stack, went
226
+ * before), leaves the registry, its content stops — a view never made isn't made for it, and the screen counts as
227
+ * destroyed all the same —, its view stops listening to the window and to the scroll of its lists and leaves its
228
+ * parent, the link to its layout breaks, and what the synchronous methods kept for it goes, unless a later screen
229
+ * with the same id is in the registry: that is its own then.
230
+ */
231
+ override fun destroy() {
232
+ if (isDestroyed) return
233
+ onViewDisappear()
234
+ super.destroy()
235
+ // The layout it is in lets go of what it kept for it while its view is still there: the components of its bar
236
+ // stop before its own surface, its search goes, its stack forgets its FAB.
237
+ performOnParentController { it.onChildDestroyed(this) }
238
+ peekView()?.let { layout ->
239
+ layout.destroy()
240
+ (layout.parent as? ViewGroup)?.removeView(layout)
241
+ }
242
+ setParentController(null)
243
+ if (isIdTakenByAnother) return
244
+ ScreenInsets.remove(id)
245
+ ScreenRegions.remove(id)
246
+ ArrangementStates.remove(id)
247
+ ScreenReadiness.remove(id)
248
+ }
249
+
250
+ private companion object {
251
+ // What the system covers at the edges of the window: its bars and the cutout.
252
+ val SYSTEM_EDGES = WindowInsetsCompat.Type.systemBars() or WindowInsetsCompat.Type.displayCutout()
253
+ }
254
+ }
@@ -0,0 +1,65 @@
1
+ package dev.apexnative.navigation.viewcontrollers.component
2
+
3
+ import dev.apexnative.navigation.viewcontrollers.viewcontroller.ViewController
4
+
5
+ /**
6
+ * Whether a screen's content rendered, which a command waits for before the screen comes in: a new root (`setRoot`),
7
+ * a push with `waitForRender: true`, the new top of a `setStackRoot`. A wait never listens to the readiness store
8
+ * itself: the content keeps the one listener of its id and tells every waiter. Main thread only.
9
+ */
10
+ internal interface Readiness {
11
+ /** The content of [screen] rendered; a screen without content to wait for is ready. */
12
+ fun isReady(screen: ViewController<*>): Boolean
13
+
14
+ /** Calls [listener] once [screen] is ready; it can't be taken back, so the waiter guards it itself. */
15
+ fun whenReady(screen: ViewController<*>, listener: () -> Unit)
16
+
17
+ /** The wait ended at its limit: the content of [screen] counts as mounted. */
18
+ fun markReady(screen: ViewController<*>)
19
+
20
+ /**
21
+ * Whether the readiness store knows nothing of [screen] now: no safe area view has reported its id (none mounted
22
+ * yet, or it has none). Such a screen that renders `null` would never be ready, so a wait without a limit counts it
23
+ * as ready after a while; once a safe area view reported, it reports `null` too.
24
+ */
25
+ fun isRenderUnknown(screen: ViewController<*>): Boolean = false
26
+
27
+ /**
28
+ * Whether the components of the bar over [screen] that a wait counts have drawn: its stack's answer
29
+ * (`StackController.areBarComponentsDrawn`); a screen out of a stack has none.
30
+ */
31
+ fun areBarComponentsReady(screen: ViewController<*>): Boolean = true
32
+
33
+ /** Calls [listener] once [areBarComponentsReady]; it can't be taken back, so the waiter guards it itself. */
34
+ fun whenBarComponentsReady(screen: ViewController<*>, listener: () -> Unit) = listener()
35
+ }
36
+
37
+ /**
38
+ * The readiness of the core's screens: a React screen's content is ready when it rendered (`IReactView.isReady`); a
39
+ * screen whose view isn't made yet, and a node without React content (a native screen), are ready at once. A wait
40
+ * makes the screen's view before it asks.
41
+ */
42
+ internal object ContentReadiness : Readiness {
43
+ override fun isReady(screen: ViewController<*>): Boolean =
44
+ (screen as? ComponentViewController)?.content?.isReady() ?: true
45
+
46
+ override fun whenReady(screen: ViewController<*>, listener: () -> Unit) {
47
+ val content = (screen as? ComponentViewController)?.content ?: return listener()
48
+ content.whenReady { listener() }
49
+ }
50
+
51
+ override fun markReady(screen: ViewController<*>) {
52
+ (screen as? ComponentViewController)?.markContentReady()
53
+ }
54
+
55
+ override fun isRenderUnknown(screen: ViewController<*>): Boolean =
56
+ screen is ComponentViewController && ScreenReadiness.isContentRendered(screen.id) == null
57
+
58
+ override fun areBarComponentsReady(screen: ViewController<*>): Boolean =
59
+ screen.findParentStack()?.areBarComponentsDrawn(screen) ?: true
60
+
61
+ override fun whenBarComponentsReady(screen: ViewController<*>, listener: () -> Unit) {
62
+ val stack = screen.findParentStack() ?: return listener()
63
+ stack.whenBarComponentsDrawn(screen, listener)
64
+ }
65
+ }
@@ -0,0 +1,231 @@
1
+ package dev.apexnative.navigation.viewcontrollers.component
2
+
3
+ import dev.apexnative.navigation.react.events.AppearanceDispatcher
4
+ import dev.apexnative.navigation.viewcontrollers.parent.ParentController
5
+ import dev.apexnative.navigation.viewcontrollers.viewcontroller.ViewController
6
+
7
+ /**
8
+ * The one wait for screens to render before they come in: a new root, a push or a `setStackRoot` that waits. It waits
9
+ * for the content of its screens, within [limitMillis] or as long as it takes, and marks the content not ready at the
10
+ * limit as mounted; the components of the bars over the screens drawn in advance join it as [bar] says. Then [onEnd],
11
+ * once. [cancel] ends it without [onEnd]; [retake] waits for other screens with the same limit, and a bar phase that
12
+ * runs goes on.
13
+ *
14
+ * Screens made with the layer that don't show when it shows (the unselected tabs of `together`) count too, for their
15
+ * content only and only within their first [UNSEEN_LIMIT_MILLIS]: a screen the user doesn't see never holds a wait
16
+ * without a limit.
17
+ *
18
+ * What differs between its users are its values, never its steps: the readiness and the clock (fakes in the unit
19
+ * tests), [countsUnknownContent], how a readiness signal is delivered ([deliver]: at once, or posted to the next turn
20
+ * of the main loop), and [step], the guard the user runs every later step in (a timer, a signal). Main thread only.
21
+ */
22
+ internal class RenderWait(
23
+ private val readiness: Readiness,
24
+ private val scheduler: AppearanceDispatcher.Scheduler,
25
+ /** At most this long for the content (and the bar's components within it); none: as long as it takes. */
26
+ private val limitMillis: Long?,
27
+ private val bar: Bar,
28
+ /**
29
+ * Without a limit, a screen the readiness store still knows nothing of after [UNKNOWN_CONTENT_MILLIS] counts as
30
+ * ready (`Readiness.isRenderUnknown`): it is marked and the wait ends.
31
+ */
32
+ private val countsUnknownContent: Boolean,
33
+ /** How a readiness signal reaches the wait: at once by default; posted, when a signal may come inside a layout. */
34
+ private val deliver: (() -> Unit) -> Unit = { it() },
35
+ /** Runs a later step of the wait (a timer, a signal): the user's guards and protection; as it is by default. */
36
+ private val step: (() -> Unit) -> Unit = { it() },
37
+ private val onEnd: () -> Unit,
38
+ ) {
39
+ /** How the components of the bars drawn in advance count. */
40
+ enum class Bar {
41
+ /** They don't. */
42
+ None,
43
+
44
+ /** Within the same limit as the content: the wait ends when both are ready, or at the limit. */
45
+ WithinLimit,
46
+
47
+ /** In a phase of their own once the content is ready, [BAR_PHASE_MILLIS] at most; its end marks nothing. */
48
+ AfterContent,
49
+ }
50
+
51
+ private var screens: List<ViewController<*>> = emptyList()
52
+ private var unseen: List<ViewController<*>> = emptyList()
53
+ // The unseen screens no longer count: their limit passed.
54
+ private var unseenDone = true
55
+ private var cancelUnseenTimer: (() -> Unit)? = null
56
+ private var waiting = false
57
+ // The signals of the screens waited for now: they can't be taken back, so a newer set (or the end) wins.
58
+ private var token: Any? = null
59
+ // The limit of the content, or the time after which content of unknown readiness counts.
60
+ private var cancelContentTimer: (() -> Unit)? = null
61
+ private var cancelBarPhase: (() -> Unit)? = null
62
+
63
+ /** The wait runs: it neither ended nor was cancelled. */
64
+ val isWaiting: Boolean
65
+ get() = waiting
66
+
67
+ /** The screens waited for now. */
68
+ val waitedScreens: List<ViewController<*>>
69
+ get() = screens
70
+
71
+ /**
72
+ * Starts waiting for [screens], and for the content of [unseen] within its first [UNSEEN_LIMIT_MILLIS]; with all
73
+ * of them ready (and their bars' components, when they count within the limit) it ends at once, before it returns.
74
+ */
75
+ fun start(screens: List<ViewController<*>>, unseen: List<ViewController<*>> = emptyList()) {
76
+ this.screens = screens
77
+ this.unseen = unseen
78
+ unseenDone = unseen.isEmpty()
79
+ waiting = true
80
+ token = Any()
81
+ // Content ready at once ends the wait, unless the bar's components count within a limit: it runs for them.
82
+ if (contentReady() && !(bar == Bar.WithinLimit && limitMillis != null)) return contentDone()
83
+ cancelContentTimer = when {
84
+ limitMillis != null -> scheduler.schedule(limitMillis) { step { atLimit() } }
85
+ countsUnknownContent -> scheduler.schedule(UNKNOWN_CONTENT_MILLIS) { step { atUnknownContentLimit() } }
86
+ else -> null
87
+ }
88
+ startUnseenLimit()
89
+ await()
90
+ }
91
+
92
+ /**
93
+ * The screens to wait for changed (a command changed a top of the layer that waits): the wait goes on for
94
+ * [screens], with the limit that runs and a bar phase that runs; with all of them ready it ends now.
95
+ */
96
+ fun retake(screens: List<ViewController<*>>, unseen: List<ViewController<*>> = this.unseen) {
97
+ if (!waiting) return
98
+ this.screens = screens
99
+ this.unseen = unseen
100
+ token = Any()
101
+ await()
102
+ }
103
+
104
+ /** Ends the wait without [onEnd]: its timers stop, and the signals still to come do nothing. */
105
+ fun cancel() {
106
+ waiting = false
107
+ token = null
108
+ cancelContentTimer?.invoke()
109
+ cancelContentTimer = null
110
+ cancelBarPhase?.invoke()
111
+ cancelBarPhase = null
112
+ cancelUnseenTimer?.invoke()
113
+ cancelUnseenTimer = null
114
+ }
115
+
116
+ // The unseen screens count within their own limit, unless the wait's limit ends it before.
117
+ private fun startUnseenLimit() {
118
+ if (unseenDone || cancelUnseenTimer != null) return
119
+ if (limitMillis != null && limitMillis <= UNSEEN_LIMIT_MILLIS) return
120
+ cancelUnseenTimer = scheduler.schedule(UNSEEN_LIMIT_MILLIS) { step { atUnseenLimit() } }
121
+ }
122
+
123
+ // Their time is up: what of them isn't ready counts as mounted, and the wait goes on for the screens that show.
124
+ private fun atUnseenLimit() {
125
+ cancelUnseenTimer = null
126
+ if (!waiting || unseenDone) return
127
+ unseen.filterNot(readiness::isReady).forEach(readiness::markReady)
128
+ unseenDone = true
129
+ if (contentReady() && cancelBarPhase == null) contentDone()
130
+ }
131
+
132
+ // The content of every screen ready: on to the bars; else the signals of those not ready.
133
+ private fun await() {
134
+ if (contentReady()) return contentDone()
135
+ val token = token
136
+ for (screen in screens + countedUnseen()) {
137
+ if (this.token !== token) return
138
+ if (readiness.isReady(screen)) continue
139
+ readiness.whenReady(screen) {
140
+ deliver {
141
+ step { if (waiting && this.token === token && contentReady()) contentDone() }
142
+ }
143
+ }
144
+ }
145
+ }
146
+
147
+ // The content is ready: the wait ends, or goes on for the bars' components drawn in advance — within the limit
148
+ // that runs, or in a phase of their own after the content.
149
+ private fun contentDone() {
150
+ if (bar == Bar.None || barsReady()) return finish()
151
+ val token = Any()
152
+ this.token = token
153
+ if (bar == Bar.AfterContent && cancelBarPhase == null) {
154
+ cancelContentTimer?.invoke()
155
+ cancelContentTimer = null
156
+ // The bars' components not drawn in time: the screens come as they are, nothing is marked.
157
+ cancelBarPhase = scheduler.schedule(BAR_PHASE_MILLIS) { step { if (waiting) finish() } }
158
+ }
159
+ for (screen in screens) {
160
+ if (this.token !== token) return
161
+ if (readiness.areBarComponentsReady(screen)) continue
162
+ readiness.whenBarComponentsReady(screen) {
163
+ deliver {
164
+ step { if (waiting && this.token === token && barsReady()) finish() }
165
+ }
166
+ }
167
+ }
168
+ }
169
+
170
+ // Not rendered in time: the screens come as they are, and the events held for their content go now; the bars'
171
+ // components are not marked (their own events stay with the dispatcher).
172
+ private fun atLimit() {
173
+ if (!waiting) return
174
+ (screens + countedUnseen()).filterNot(readiness::isReady).forEach(readiness::markReady)
175
+ finish()
176
+ }
177
+
178
+ // Without a limit: content the readiness store still knows nothing of counts as ready, as content that renders
179
+ // `null` would never report; once a safe area view reported the id, the wait has no limit.
180
+ private fun atUnknownContentLimit() {
181
+ if (!waiting || contentReady()) return
182
+ val notReady = screens.filterNot(readiness::isReady)
183
+ if (!notReady.all(readiness::isRenderUnknown)) return
184
+ notReady.forEach(readiness::markReady)
185
+ finish()
186
+ }
187
+
188
+ private fun finish() {
189
+ if (!waiting) return
190
+ cancel()
191
+ onEnd()
192
+ }
193
+
194
+ private fun contentReady(): Boolean = screens.all(readiness::isReady) && countedUnseen().all(readiness::isReady)
195
+
196
+ private fun countedUnseen(): List<ViewController<*>> = if (unseenDone) emptyList() else unseen
197
+
198
+ private fun barsReady(): Boolean = screens.all(readiness::areBarComponentsReady)
199
+
200
+ companion object {
201
+ /** How long a bar phase after the content lasts at most. */
202
+ const val BAR_PHASE_MILLIS = 500L
203
+
204
+ /**
205
+ * After how long, from the start of a wait without a limit, content whose id no safe area view reported yet
206
+ * counts as ready ([countsUnknownContent]).
207
+ */
208
+ const val UNKNOWN_CONTENT_MILLIS = 1000L
209
+
210
+ /** How long the content of the screens that don't show counts at most, from the start of a wait. */
211
+ const val UNSEEN_LIMIT_MILLIS = 500L
212
+
213
+ /**
214
+ * The screens that show when [node] shows, which a wait for it waits for: [node] itself, or down through the
215
+ * waited children of its layouts at every level (`ParentController.waitedChildren`).
216
+ */
217
+ fun waitedScreens(node: ViewController<*>): List<ViewController<*>> =
218
+ if (node is ParentController<*>) node.waitedChildren().flatMap(::waitedScreens) else listOf(node)
219
+
220
+ /**
221
+ * The screens made with [node] that don't show when it shows, which a wait for it counts within
222
+ * [UNSEEN_LIMIT_MILLIS] (`ParentController.waitedUnseenChildren`), at every level; their bars' components
223
+ * don't count (only the bar of the stack the layout shows).
224
+ */
225
+ fun unseenScreens(node: ViewController<*>): List<ViewController<*>> {
226
+ if (node !is ParentController<*>) return emptyList()
227
+ return node.waitedUnseenChildren().flatMap { waitedScreens(it) + unseenScreens(it) } +
228
+ node.waitedChildren().flatMap(::unseenScreens)
229
+ }
230
+ }
231
+ }
@@ -0,0 +1,28 @@
1
+ package dev.apexnative.navigation.viewcontrollers.component
2
+
3
+ import android.view.View
4
+ import dev.apexnative.navigation.viewcontrollers.modal.SheetContainer
5
+
6
+ /**
7
+ * Where a view is in the window from layout only: the places of the views up to the window, each less its parent's
8
+ * scroll, without the translations of animations, and a sheet's container where the sheet rests, not where a drag took
9
+ * it. The one rule for the three parts of a screen's safe area: the screen's React root, the bottom of the stack's
10
+ * header and the top of the tabs, so they count the same place while something around them moves. Main thread only.
11
+ */
12
+ internal object RestPlace {
13
+ /** The views from [view] up to the window, each with its place in its parent and its parent's scroll. */
14
+ fun stepsToWindow(view: View): List<ScreenSafeArea.Step> {
15
+ val steps = ArrayList<ScreenSafeArea.Step>()
16
+ var current: View = view
17
+ while (true) {
18
+ val parent = current.parent as? View
19
+ val top = if (current is SheetContainer) SheetContainer.restTop(current.top, current.shift) else current.top
20
+ steps += ScreenSafeArea.Step(current.left, top, parent?.scrollX ?: 0, parent?.scrollY ?: 0)
21
+ current = parent ?: break
22
+ }
23
+ return steps
24
+ }
25
+
26
+ /** [view]'s top in the window, at rest. */
27
+ fun topInWindow(view: View): Int = ScreenSafeArea.placeInWindow(stepsToWindow(view), view.width, view.height).top
28
+ }