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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1372) hide show
  1. package/ApexNavigation.podspec +42 -0
  2. package/LICENSE +21 -0
  3. package/README.md +76 -2
  4. package/android/CLAUDE.md +183 -0
  5. package/android/CORE.md +219 -0
  6. package/android/MATERIAL_SYMBOLS_LICENSE.txt +205 -0
  7. package/android/RECIPES.md +39 -0
  8. package/android/build.gradle +108 -0
  9. package/android/consumer-rules.pro +2 -0
  10. package/android/src/main/AndroidManifest.xml +9 -0
  11. package/android/src/main/java/dev/apexnative/navigation/EdgeToEdgeDecision.kt +25 -0
  12. package/android/src/main/java/dev/apexnative/navigation/NavigationActivity.kt +339 -0
  13. package/android/src/main/java/dev/apexnative/navigation/NavigationApplication.kt +90 -0
  14. package/android/src/main/java/dev/apexnative/navigation/NavigationPackage.kt +37 -0
  15. package/android/src/main/java/dev/apexnative/navigation/customrow/BottomTabsCustomRowOptions.kt +85 -0
  16. package/android/src/main/java/dev/apexnative/navigation/layout/LayoutChecks.kt +51 -0
  17. package/android/src/main/java/dev/apexnative/navigation/layout/LayoutException.kt +7 -0
  18. package/android/src/main/java/dev/apexnative/navigation/layout/LayoutNode.kt +118 -0
  19. package/android/src/main/java/dev/apexnative/navigation/layout/LayoutReader.kt +274 -0
  20. package/android/src/main/java/dev/apexnative/navigation/layout/LayoutType.kt +35 -0
  21. package/android/src/main/java/dev/apexnative/navigation/nativescreen/NativeScreenCalls.kt +61 -0
  22. package/android/src/main/java/dev/apexnative/navigation/nativescreen/NativeScreenContext.kt +84 -0
  23. package/android/src/main/java/dev/apexnative/navigation/nativescreen/NativeScreenCreator.kt +17 -0
  24. package/android/src/main/java/dev/apexnative/navigation/options/AnimationsOptions.kt +54 -0
  25. package/android/src/main/java/dev/apexnative/navigation/options/BottomTabOptions.kt +238 -0
  26. package/android/src/main/java/dev/apexnative/navigation/options/BottomTabsOptions.kt +244 -0
  27. package/android/src/main/java/dev/apexnative/navigation/options/ButtonMenuOptions.kt +70 -0
  28. package/android/src/main/java/dev/apexnative/navigation/options/ButtonOptions.kt +296 -0
  29. package/android/src/main/java/dev/apexnative/navigation/options/ComponentOptions.kt +141 -0
  30. package/android/src/main/java/dev/apexnative/navigation/options/DefaultOptions.kt +21 -0
  31. package/android/src/main/java/dev/apexnative/navigation/options/FabOptions.kt +97 -0
  32. package/android/src/main/java/dev/apexnative/navigation/options/FontOptions.kt +47 -0
  33. package/android/src/main/java/dev/apexnative/navigation/options/HardwareBackButtonOptions.kt +49 -0
  34. package/android/src/main/java/dev/apexnative/navigation/options/InterpolationOptions.kt +203 -0
  35. package/android/src/main/java/dev/apexnative/navigation/options/KeyCommandOptions.kt +49 -0
  36. package/android/src/main/java/dev/apexnative/navigation/options/LargeTitleOptions.kt +78 -0
  37. package/android/src/main/java/dev/apexnative/navigation/options/LayoutAnimation.kt +157 -0
  38. package/android/src/main/java/dev/apexnative/navigation/options/LayoutOptions.kt +94 -0
  39. package/android/src/main/java/dev/apexnative/navigation/options/ModalOptions.kt +87 -0
  40. package/android/src/main/java/dev/apexnative/navigation/options/ModalPlacementOptions.kt +90 -0
  41. package/android/src/main/java/dev/apexnative/navigation/options/NavigationBarOptions.kt +44 -0
  42. package/android/src/main/java/dev/apexnative/navigation/options/Options.kt +167 -0
  43. package/android/src/main/java/dev/apexnative/navigation/options/OptionsCache.kt +21 -0
  44. package/android/src/main/java/dev/apexnative/navigation/options/OptionsReader.kt +133 -0
  45. package/android/src/main/java/dev/apexnative/navigation/options/PreviewOptions.kt +97 -0
  46. package/android/src/main/java/dev/apexnative/navigation/options/ReadableMaps.kt +70 -0
  47. package/android/src/main/java/dev/apexnative/navigation/options/ScrollEdgeEffectOptions.kt +98 -0
  48. package/android/src/main/java/dev/apexnative/navigation/options/SearchBarOptions.kt +151 -0
  49. package/android/src/main/java/dev/apexnative/navigation/options/SharedElementTransitionOptions.kt +57 -0
  50. package/android/src/main/java/dev/apexnative/navigation/options/SheetOptions.kt +108 -0
  51. package/android/src/main/java/dev/apexnative/navigation/options/SideMenuOptions.kt +130 -0
  52. package/android/src/main/java/dev/apexnative/navigation/options/SplitViewGroupOptions.kt +190 -0
  53. package/android/src/main/java/dev/apexnative/navigation/options/SplitViewOptions.kt +28 -0
  54. package/android/src/main/java/dev/apexnative/navigation/options/StackAnimationOptions.kt +270 -0
  55. package/android/src/main/java/dev/apexnative/navigation/options/StatusBarOptions.kt +75 -0
  56. package/android/src/main/java/dev/apexnative/navigation/options/TitleOptions.kt +167 -0
  57. package/android/src/main/java/dev/apexnative/navigation/options/ToolbarOptions.kt +60 -0
  58. package/android/src/main/java/dev/apexnative/navigation/options/TopBarAppearanceOptions.kt +223 -0
  59. package/android/src/main/java/dev/apexnative/navigation/options/TopBarOptions.kt +381 -0
  60. package/android/src/main/java/dev/apexnative/navigation/options/ViewAnimationOptions.kt +225 -0
  61. package/android/src/main/java/dev/apexnative/navigation/options/WindowOptions.kt +36 -0
  62. package/android/src/main/java/dev/apexnative/navigation/options/params/Bool.kt +23 -0
  63. package/android/src/main/java/dev/apexnative/navigation/options/params/Fraction.kt +12 -0
  64. package/android/src/main/java/dev/apexnative/navigation/options/params/LayoutDirection.kt +26 -0
  65. package/android/src/main/java/dev/apexnative/navigation/options/params/Param.kt +24 -0
  66. package/android/src/main/java/dev/apexnative/navigation/options/params/Text.kt +24 -0
  67. package/android/src/main/java/dev/apexnative/navigation/options/params/ThemeColour.kt +259 -0
  68. package/android/src/main/java/dev/apexnative/navigation/options/params/Variant.kt +36 -0
  69. package/android/src/main/java/dev/apexnative/navigation/options/parsers/BoolParser.kt +15 -0
  70. package/android/src/main/java/dev/apexnative/navigation/options/parsers/FontParser.kt +28 -0
  71. package/android/src/main/java/dev/apexnative/navigation/options/parsers/FractionParser.kt +24 -0
  72. package/android/src/main/java/dev/apexnative/navigation/options/parsers/IconParser.kt +48 -0
  73. package/android/src/main/java/dev/apexnative/navigation/options/parsers/StringListParser.kt +27 -0
  74. package/android/src/main/java/dev/apexnative/navigation/options/parsers/TextParser.kt +32 -0
  75. package/android/src/main/java/dev/apexnative/navigation/options/parsers/TypefaceLoader.kt +42 -0
  76. package/android/src/main/java/dev/apexnative/navigation/options/parsers/VariantParser.kt +34 -0
  77. package/android/src/main/java/dev/apexnative/navigation/react/ArrangementStates.kt +41 -0
  78. package/android/src/main/java/dev/apexnative/navigation/react/CommandAnswer.kt +111 -0
  79. package/android/src/main/java/dev/apexnative/navigation/react/CommandListener.kt +27 -0
  80. package/android/src/main/java/dev/apexnative/navigation/react/CommandRunner.kt +131 -0
  81. package/android/src/main/java/dev/apexnative/navigation/react/DeveloperReload.kt +69 -0
  82. package/android/src/main/java/dev/apexnative/navigation/react/ErrorTexts.kt +123 -0
  83. package/android/src/main/java/dev/apexnative/navigation/react/Hinge.kt +154 -0
  84. package/android/src/main/java/dev/apexnative/navigation/react/LaunchLink.kt +37 -0
  85. package/android/src/main/java/dev/apexnative/navigation/react/NavigationTurboModule.kt +311 -0
  86. package/android/src/main/java/dev/apexnative/navigation/react/OptionsCommands.kt +89 -0
  87. package/android/src/main/java/dev/apexnative/navigation/react/ReactGateway.kt +67 -0
  88. package/android/src/main/java/dev/apexnative/navigation/react/ReactView.kt +197 -0
  89. package/android/src/main/java/dev/apexnative/navigation/react/ReadableJson.kt +60 -0
  90. package/android/src/main/java/dev/apexnative/navigation/react/ReloadCoordinator.kt +130 -0
  91. package/android/src/main/java/dev/apexnative/navigation/react/ScreenInsets.kt +69 -0
  92. package/android/src/main/java/dev/apexnative/navigation/react/ScreenRegions.kt +87 -0
  93. package/android/src/main/java/dev/apexnative/navigation/react/ScrollEvents.kt +160 -0
  94. package/android/src/main/java/dev/apexnative/navigation/react/StartInfo.kt +44 -0
  95. package/android/src/main/java/dev/apexnative/navigation/react/events/AppearanceDispatcher.kt +507 -0
  96. package/android/src/main/java/dev/apexnative/navigation/react/events/ComponentType.kt +13 -0
  97. package/android/src/main/java/dev/apexnative/navigation/react/events/EventEmitter.kt +199 -0
  98. package/android/src/main/java/dev/apexnative/navigation/react/events/NavigationStateReporter.kt +62 -0
  99. package/android/src/main/java/dev/apexnative/navigation/react/events/ScreenAppearance.kt +87 -0
  100. package/android/src/main/java/dev/apexnative/navigation/react/events/StateHold.kt +62 -0
  101. package/android/src/main/java/dev/apexnative/navigation/safearea/SafeAreaReadyEvent.kt +16 -0
  102. package/android/src/main/java/dev/apexnative/navigation/safearea/SafeAreaView.kt +140 -0
  103. package/android/src/main/java/dev/apexnative/navigation/safearea/SafeAreaViewManager.kt +45 -0
  104. package/android/src/main/java/dev/apexnative/navigation/slots/SlotContainers.kt +44 -0
  105. package/android/src/main/java/dev/apexnative/navigation/slots/SlotHost.kt +91 -0
  106. package/android/src/main/java/dev/apexnative/navigation/slots/SlotScreenView.kt +158 -0
  107. package/android/src/main/java/dev/apexnative/navigation/slots/SlotView.kt +141 -0
  108. package/android/src/main/java/dev/apexnative/navigation/slots/SlotViewManager.kt +50 -0
  109. package/android/src/main/java/dev/apexnative/navigation/splash/SplashHold.kt +67 -0
  110. package/android/src/main/java/dev/apexnative/navigation/splash/SplashTheme.kt +81 -0
  111. package/android/src/main/java/dev/apexnative/navigation/splash/SplashView.kt +77 -0
  112. package/android/src/main/java/dev/apexnative/navigation/system/AppDirection.kt +92 -0
  113. package/android/src/main/java/dev/apexnative/navigation/system/SystemUiLayers.kt +126 -0
  114. package/android/src/main/java/dev/apexnative/navigation/system/SystemUiOwner.kt +229 -0
  115. package/android/src/main/java/dev/apexnative/navigation/system/SystemUiRules.kt +302 -0
  116. package/android/src/main/java/dev/apexnative/navigation/system/SystemUiState.kt +58 -0
  117. package/android/src/main/java/dev/apexnative/navigation/system/SystemUiWindow.kt +405 -0
  118. package/android/src/main/java/dev/apexnative/navigation/utils/ColorUtils.kt +22 -0
  119. package/android/src/main/java/dev/apexnative/navigation/utils/DevelopmentLog.kt +45 -0
  120. package/android/src/main/java/dev/apexnative/navigation/utils/DimensionExtensions.kt +16 -0
  121. package/android/src/main/java/dev/apexnative/navigation/utils/ImageLoader.kt +112 -0
  122. package/android/src/main/java/dev/apexnative/navigation/utils/MaterialTheme.kt +148 -0
  123. package/android/src/main/java/dev/apexnative/navigation/utils/NavigationLog.kt +6 -0
  124. package/android/src/main/java/dev/apexnative/navigation/utils/ScrollToTop.kt +33 -0
  125. package/android/src/main/java/dev/apexnative/navigation/utils/SystemUiUtils.kt +41 -0
  126. package/android/src/main/java/dev/apexnative/navigation/utils/TestIds.kt +89 -0
  127. package/android/src/main/java/dev/apexnative/navigation/utils/TextViewUtils.kt +10 -0
  128. package/android/src/main/java/dev/apexnative/navigation/utils/UiThread.kt +31 -0
  129. package/android/src/main/java/dev/apexnative/navigation/utils/UiUtils.kt +43 -0
  130. package/android/src/main/java/dev/apexnative/navigation/utils/ViewController.kt +124 -0
  131. package/android/src/main/java/dev/apexnative/navigation/utils/ViewExtensions.kt +41 -0
  132. package/android/src/main/java/dev/apexnative/navigation/utils/ViewUtils.kt +15 -0
  133. package/android/src/main/java/dev/apexnative/navigation/utils/WindowFolds.kt +107 -0
  134. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/arrangement/ArrangementController.kt +258 -0
  135. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/arrangement/ArrangementDefinition.kt +57 -0
  136. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/arrangement/ArrangementLayout.kt +225 -0
  137. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/arrangement/ArrangementPlanner.kt +120 -0
  138. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/arrangement/SecondaryScreenPresenter.kt +31 -0
  139. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/BottomTabsCollapseBehavior.kt +54 -0
  140. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/BottomTabsController.kt +664 -0
  141. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/BottomTabsPresenter.kt +367 -0
  142. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/CustomTabRowGeometry.kt +81 -0
  143. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/CustomTabRowPlacer.kt +223 -0
  144. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/TabBarLook.kt +74 -0
  145. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/TabBarMotion.kt +83 -0
  146. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/TabCellState.kt +27 -0
  147. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/TabHistory.kt +38 -0
  148. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/TabItems.kt +172 -0
  149. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/TabSelection.kt +65 -0
  150. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/TabsAttach.kt +42 -0
  151. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/TabsRoom.kt +72 -0
  152. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/child/ChildController.kt +45 -0
  153. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/child/ChildControllersRegistry.kt +29 -0
  154. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/component/ComponentPresenter.kt +90 -0
  155. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/component/ComponentViewController.kt +254 -0
  156. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/component/ContentReadiness.kt +65 -0
  157. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/component/RenderWait.kt +231 -0
  158. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/component/RestPlace.kt +28 -0
  159. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/component/ScreenContentFactory.kt +28 -0
  160. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/component/ScreenFocus.kt +22 -0
  161. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/component/ScreenFrame.kt +154 -0
  162. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/component/ScreenReadiness.kt +104 -0
  163. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/component/ScreenSafeArea.kt +148 -0
  164. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/externalcomponent/ExternalComponentCreator.kt +18 -0
  165. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/externalcomponent/ExternalComponentViewController.kt +187 -0
  166. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/externalcomponent/NativeScreens.kt +25 -0
  167. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/modal/ModalAnimations.kt +40 -0
  168. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/modal/ModalContainer.kt +20 -0
  169. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/modal/ModalCoordinator.kt +1269 -0
  170. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/modal/ModalRecord.kt +186 -0
  171. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/modal/ModalSheet.kt +342 -0
  172. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/modal/ModalViews.kt +398 -0
  173. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/modal/SheetContainer.kt +67 -0
  174. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/navigator/BackCallbackState.kt +78 -0
  175. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/navigator/FirstRootDraw.kt +58 -0
  176. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/navigator/LayoutFactory.kt +203 -0
  177. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/navigator/Navigator.kt +562 -0
  178. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/navigator/Navigators.kt +53 -0
  179. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/navigator/RootCoordinator.kt +514 -0
  180. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/navigator/WaitingLayer.kt +18 -0
  181. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/overlay/OverlayContainer.kt +33 -0
  182. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/overlay/OverlayCoordinator.kt +383 -0
  183. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/overlay/OverlayTouches.kt +44 -0
  184. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/overlay/OverlayViews.kt +117 -0
  185. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/parent/Capabilities.kt +62 -0
  186. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/parent/ContainerBackground.kt +43 -0
  187. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/parent/ParentController.kt +218 -0
  188. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/parent/ShownChildren.kt +82 -0
  189. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/sidemenu/SideMenuController.kt +283 -0
  190. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/sidemenu/SideMenuMotion.kt +276 -0
  191. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/sidemenu/SideMenuPresenter.kt +92 -0
  192. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/sidemenu/SideMenuRules.kt +107 -0
  193. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/splitview/SplitPanes.kt +59 -0
  194. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/splitview/SplitViewController.kt +509 -0
  195. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/splitview/SplitViewLayout.kt +61 -0
  196. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/splitview/SplitViewPresenter.kt +25 -0
  197. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/PreparedFrame.kt +19 -0
  198. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/PreparedPushes.kt +114 -0
  199. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/StackCommands.kt +387 -0
  200. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/StackController.kt +635 -0
  201. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/StackDisplay.kt +167 -0
  202. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/StackPresenter.kt +24 -0
  203. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/StackQueue.kt +1274 -0
  204. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/StackTransitions.kt +82 -0
  205. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/StackViews.kt +222 -0
  206. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/fab/FabPlacement.kt +47 -0
  207. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/fab/FabPlan.kt +44 -0
  208. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/fab/FabPresenter.kt +279 -0
  209. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/search/ScreenSearch.kt +450 -0
  210. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/search/SearchPanel.kt +176 -0
  211. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/search/StackSearchPresenter.kt +243 -0
  212. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/topbar/BarComponents.kt +211 -0
  213. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/topbar/BarRowTransition.kt +122 -0
  214. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/topbar/ButtonCells.kt +30 -0
  215. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/topbar/ButtonPlaces.kt +65 -0
  216. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/topbar/LargeTitleCollapse.kt +71 -0
  217. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/topbar/MenuChecks.kt +72 -0
  218. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/topbar/TopBarCollapseBehavior.kt +104 -0
  219. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/topbar/TopBarPresenter.kt +1085 -0
  220. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/topbar/TopBarRoom.kt +95 -0
  221. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/topbar/TopBarVisibility.kt +122 -0
  222. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/viewcontroller/IReactView.kt +89 -0
  223. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/viewcontroller/Presenter.kt +51 -0
  224. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/viewcontroller/ScrollEventListener.kt +194 -0
  225. package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/viewcontroller/ViewController.kt +320 -0
  226. package/android/src/main/java/dev/apexnative/navigation/views/animations/AnimationRules.kt +141 -0
  227. package/android/src/main/java/dev/apexnative/navigation/views/animations/Curves.kt +193 -0
  228. package/android/src/main/java/dev/apexnative/navigation/views/animations/FadeThrough.kt +57 -0
  229. package/android/src/main/java/dev/apexnative/navigation/views/animations/SideAnimator.kt +143 -0
  230. package/android/src/main/java/dev/apexnative/navigation/views/animations/SystemTransition.kt +26 -0
  231. package/android/src/main/java/dev/apexnative/navigation/views/animations/ValueInterpolation.kt +93 -0
  232. package/android/src/main/java/dev/apexnative/navigation/views/bottomtabs/BottomTabItem.kt +13 -0
  233. package/android/src/main/java/dev/apexnative/navigation/views/bottomtabs/BottomTabs.kt +550 -0
  234. package/android/src/main/java/dev/apexnative/navigation/views/bottomtabs/BottomTabsContainer.kt +135 -0
  235. package/android/src/main/java/dev/apexnative/navigation/views/bottomtabs/BottomTabsLayout.kt +89 -0
  236. package/android/src/main/java/dev/apexnative/navigation/views/bottomtabs/CustomBottomTabItemView.kt +91 -0
  237. package/android/src/main/java/dev/apexnative/navigation/views/bottomtabs/CustomTabRow.kt +165 -0
  238. package/android/src/main/java/dev/apexnative/navigation/views/component/ComponentLayout.kt +89 -0
  239. package/android/src/main/java/dev/apexnative/navigation/views/component/Renderable.kt +6 -0
  240. package/android/src/main/java/dev/apexnative/navigation/views/element/DrawOrder.kt +44 -0
  241. package/android/src/main/java/dev/apexnative/navigation/views/element/ElementStub.kt +31 -0
  242. package/android/src/main/java/dev/apexnative/navigation/views/element/ElementTransitions.kt +281 -0
  243. package/android/src/main/java/dev/apexnative/navigation/views/element/ImageLoads.kt +103 -0
  244. package/android/src/main/java/dev/apexnative/navigation/views/element/TargetsWait.kt +112 -0
  245. package/android/src/main/java/dev/apexnative/navigation/views/element/TransitionLayer.kt +152 -0
  246. package/android/src/main/java/dev/apexnative/navigation/views/element/TransitionTargets.kt +53 -0
  247. package/android/src/main/java/dev/apexnative/navigation/views/element/animators/ElementPictures.kt +46 -0
  248. package/android/src/main/java/dev/apexnative/navigation/views/element/animators/FlightGeometry.kt +53 -0
  249. package/android/src/main/java/dev/apexnative/navigation/views/element/animators/ImageMatrixAnimator.kt +138 -0
  250. package/android/src/main/java/dev/apexnative/navigation/views/element/animators/PlainViewAnimator.kt +88 -0
  251. package/android/src/main/java/dev/apexnative/navigation/views/element/animators/PropertyAnimatorCreator.kt +33 -0
  252. package/android/src/main/java/dev/apexnative/navigation/views/element/animators/ReactImageAnimator.kt +66 -0
  253. package/android/src/main/java/dev/apexnative/navigation/views/element/animators/SharedAnimatorFactory.kt +70 -0
  254. package/android/src/main/java/dev/apexnative/navigation/views/element/animators/TextChangeAnimator.kt +179 -0
  255. package/android/src/main/java/dev/apexnative/navigation/views/element/animators/ViewChangeAnimator.kt +139 -0
  256. package/android/src/main/java/dev/apexnative/navigation/views/externalcomponent/ExternalComponentLayout.kt +44 -0
  257. package/android/src/main/java/dev/apexnative/navigation/views/sidemenu/SideMenuView.kt +183 -0
  258. package/android/src/main/java/dev/apexnative/navigation/views/stack/StackLayout.kt +137 -0
  259. package/android/src/main/java/dev/apexnative/navigation/views/stack/fab/Fab.kt +125 -0
  260. package/android/src/main/java/dev/apexnative/navigation/views/stack/fab/FabAnimator.kt +8 -0
  261. package/android/src/main/java/dev/apexnative/navigation/views/stack/fab/FabCollapseBehaviour.kt +34 -0
  262. package/android/src/main/java/dev/apexnative/navigation/views/stack/fab/FabMenu.kt +133 -0
  263. package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/LargeTitleView.kt +45 -0
  264. package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/TitleBar.kt +211 -0
  265. package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/TopBar.kt +407 -0
  266. package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/TopBarDefaults.kt +35 -0
  267. package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/search/ScopeRow.kt +82 -0
  268. package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/search/SearchField.kt +130 -0
  269. package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/search/SearchStyle.kt +29 -0
  270. package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/search/SuggestionList.kt +77 -0
  271. package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/titlebar/BarButtonComponentCell.kt +80 -0
  272. package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/titlebar/ButtonBar.kt +334 -0
  273. package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/titlebar/ButtonMenus.kt +106 -0
  274. package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/titlebar/IconBackgroundDrawable.kt +93 -0
  275. package/android/src/main/jni/ApexNavigationSpec.h +18 -0
  276. package/android/src/main/jni/CMakeLists.txt +33 -0
  277. package/android/src/main/res/color/apex_navigation_highlight_inverse.xml +5 -0
  278. package/android/src/main/res/color/apex_navigation_text_primary.xml +6 -0
  279. package/android/src/main/res/color/apex_navigation_text_primary_inverse.xml +6 -0
  280. package/android/src/main/res/color/apex_navigation_text_secondary.xml +6 -0
  281. package/android/src/main/res/color/apex_navigation_text_secondary_inverse.xml +6 -0
  282. package/android/src/main/res/drawable/apex_navigation_ic_arrow_back.xml +13 -0
  283. package/android/src/main/res/drawable/apex_navigation_ic_close.xml +12 -0
  284. package/android/src/main/res/drawable/ic_fab_add_24dp.xml +12 -0
  285. package/android/src/main/res/values/attrs.xml +13 -0
  286. package/android/src/main/res/values/dimens.xml +5 -0
  287. package/android/src/main/res/values/dimens_splash.xml +9 -0
  288. package/android/src/main/res/values/ids.xml +12 -0
  289. package/android/src/main/res/values/styles.xml +18 -0
  290. package/android/src/main/res/values/themes.xml +75 -0
  291. package/android/src/main/res/values-night/styles.xml +6 -0
  292. package/android/src/main/res/values-night/themes.xml +67 -0
  293. package/cli/app.js +113 -0
  294. package/cli/changes.js +235 -0
  295. package/cli/codegen/commands.js +356 -0
  296. package/cli/codegen/index.js +211 -0
  297. package/cli/codegen/kotlin.js +396 -0
  298. package/cli/codegen/names.js +99 -0
  299. package/cli/codegen/read.js +602 -0
  300. package/cli/codegen/swift.js +342 -0
  301. package/cli/config.js +78 -0
  302. package/cli/diff.js +139 -0
  303. package/cli/doctor/checks/android.js +217 -0
  304. package/cli/doctor/checks/app.js +305 -0
  305. package/cli/doctor/checks/conflicts.js +42 -0
  306. package/cli/doctor/checks/devices.js +98 -0
  307. package/cli/doctor/checks/icons.js +69 -0
  308. package/cli/doctor/checks/ios.js +187 -0
  309. package/cli/doctor/checks/navigation.js +285 -0
  310. package/cli/doctor/checks/splash.js +102 -0
  311. package/cli/doctor/fix.js +66 -0
  312. package/cli/doctor/index.js +136 -0
  313. package/cli/doctor/types.js +30 -0
  314. package/cli/exec.js +34 -0
  315. package/cli/gradle.js +142 -0
  316. package/cli/icons/android.js +173 -0
  317. package/cli/icons/images.js +202 -0
  318. package/cli/icons/index.js +97 -0
  319. package/cli/icons/ios.js +113 -0
  320. package/cli/icons/settings.js +116 -0
  321. package/cli/images.js +67 -0
  322. package/cli/index.js +307 -0
  323. package/cli/info/index.js +290 -0
  324. package/cli/init/index.js +426 -0
  325. package/cli/init/packageManager.js +48 -0
  326. package/cli/init/starter.js +440 -0
  327. package/cli/links/files.js +109 -0
  328. package/cli/links/identity.js +75 -0
  329. package/cli/links/index.js +532 -0
  330. package/cli/links/native.js +396 -0
  331. package/cli/links/open.js +120 -0
  332. package/cli/links/prefixes.js +89 -0
  333. package/cli/mcp/appMap.js +128 -0
  334. package/cli/mcp/docs.js +175 -0
  335. package/cli/mcp/index.js +153 -0
  336. package/cli/mcp/markdown.js +210 -0
  337. package/cli/mcp/protocol.js +151 -0
  338. package/cli/mcp/tools.js +389 -0
  339. package/cli/migrate/entry.js +451 -0
  340. package/cli/migrate/index.js +305 -0
  341. package/cli/migrate/native.js +250 -0
  342. package/cli/migrate/report.js +238 -0
  343. package/cli/pods.js +56 -0
  344. package/cli/project.js +189 -0
  345. package/cli/screen/index.js +383 -0
  346. package/cli/screen/templates/compose.js +46 -0
  347. package/cli/screen/templates/native.js +40 -0
  348. package/cli/screen/templates/react.js +47 -0
  349. package/cli/screen/templates/swiftui.js +30 -0
  350. package/cli/screen/templates/uikit.js +48 -0
  351. package/cli/screen/templates/views.js +46 -0
  352. package/cli/setup/index.js +240 -0
  353. package/cli/setup/source.js +58 -0
  354. package/cli/setup/steps/app.js +76 -0
  355. package/cli/setup/steps/appDelegate.js +98 -0
  356. package/cli/setup/steps/entry.js +68 -0
  357. package/cli/setup/steps/env.js +245 -0
  358. package/cli/setup/steps/infoPlist.js +39 -0
  359. package/cli/setup/steps/mainActivity.js +60 -0
  360. package/cli/setup/steps/mainApplication.js +58 -0
  361. package/cli/setup/steps/manifest.js +38 -0
  362. package/cli/setup/steps/styles.js +29 -0
  363. package/cli/setup/steps/types.js +14 -0
  364. package/cli/splash/android.js +239 -0
  365. package/cli/splash/files.js +50 -0
  366. package/cli/splash/images.js +117 -0
  367. package/cli/splash/index.js +109 -0
  368. package/cli/splash/ios.js +349 -0
  369. package/cli/splash/settings.js +143 -0
  370. package/cli/typescript.js +473 -0
  371. package/cli/ui.js +268 -0
  372. package/cli/upgrade/changelog.js +45 -0
  373. package/cli/upgrade/index.js +347 -0
  374. package/cli/upgrade/versions.js +105 -0
  375. package/cli/workspace.js +60 -0
  376. package/cli/xcode/pbxproj.js +327 -0
  377. package/docs-md/architecture/errors-and-loading.md +138 -0
  378. package/docs-md/architecture/native-screens.md +290 -0
  379. package/docs-md/architecture/one-tree.md +164 -0
  380. package/docs-md/architecture/theme-and-context.md +368 -0
  381. package/docs-md/architecture/transitions.md +191 -0
  382. package/docs-md/containers/arrangement.md +320 -0
  383. package/docs-md/containers/modals.md +195 -0
  384. package/docs-md/containers/overlays.md +109 -0
  385. package/docs-md/containers/side-menu.md +138 -0
  386. package/docs-md/containers/split-view.md +155 -0
  387. package/docs-md/containers/stack.md +156 -0
  388. package/docs-md/containers/tabs.md +187 -0
  389. package/docs-md/flows/a-search-screen.md +311 -0
  390. package/docs-md/flows/an-app-with-tabs.md +380 -0
  391. package/docs-md/flows/bottom-sheets.md +326 -0
  392. package/docs-md/flows/forms-in-a-modal.md +420 -0
  393. package/docs-md/flows/list-and-details.md +428 -0
  394. package/docs-md/flows/onboarding.md +454 -0
  395. package/docs-md/flows/sign-in-and-sign-out.md +693 -0
  396. package/docs-md/fundamentals/lifecycle-and-events.md +224 -0
  397. package/docs-md/fundamentals/moving-between-screens.md +267 -0
  398. package/docs-md/fundamentals/screen-options.md +197 -0
  399. package/docs-md/fundamentals/screens-and-props.md +314 -0
  400. package/docs-md/fundamentals/starting-the-app.md +317 -0
  401. package/docs-md/fundamentals/switching-roots.md +166 -0
  402. package/docs-md/guides/analytics.md +377 -0
  403. package/docs-md/guides/app-context.md +554 -0
  404. package/docs-md/guides/building-a-screen.md +350 -0
  405. package/docs-md/guides/cli.md +421 -0
  406. package/docs-md/guides/data-fetching.md +492 -0
  407. package/docs-md/guides/deep-links.md +694 -0
  408. package/docs-md/guides/error-reporting.md +290 -0
  409. package/docs-md/guides/gestures-and-animations.md +381 -0
  410. package/docs-md/guides/notifications.md +548 -0
  411. package/docs-md/guides/overview.md +65 -0
  412. package/docs-md/guides/right-to-left.md +273 -0
  413. package/docs-md/guides/splash-screen.md +30 -0
  414. package/docs-md/guides/state-management.md +1050 -0
  415. package/docs-md/guides/testing.md +293 -0
  416. package/docs-md/help/glossary.md +433 -0
  417. package/docs-md/help/troubleshooting.md +709 -0
  418. package/docs-md/index.json +4205 -0
  419. package/docs-md/migration/from-expo-router.md +446 -0
  420. package/docs-md/migration/from-react-native-navigation.md +789 -0
  421. package/docs-md/migration/from-react-navigation.md +628 -0
  422. package/docs-md/screen-ui/back-and-gestures.md +178 -0
  423. package/docs-md/screen-ui/bar-buttons.md +312 -0
  424. package/docs-md/screen-ui/search.md +181 -0
  425. package/docs-md/screen-ui/system-ui.md +337 -0
  426. package/docs-md/screen-ui/toolbar-and-fab.md +146 -0
  427. package/docs-md/screen-ui/top-bar.md +247 -0
  428. package/docs-md/start/installation.md +233 -0
  429. package/docs-md/start/introduction.md +46 -0
  430. package/docs-md/start/quick-start.md +124 -0
  431. package/ios/Animations/ANNAnimationRules.h +72 -0
  432. package/ios/Animations/ANNAnimationRules.mm +122 -0
  433. package/ios/Animations/ANNFrameDriver.h +46 -0
  434. package/ios/Animations/ANNFrameDriver.mm +126 -0
  435. package/ios/Animations/ANNTransitionAnimator.h +34 -0
  436. package/ios/Animations/ANNTransitionAnimator.mm +293 -0
  437. package/ios/Animations/ANNTransitionPlan.h +115 -0
  438. package/ios/Animations/ANNTransitionPlan.mm +130 -0
  439. package/ios/Animations/ANNTransitionWait.h +29 -0
  440. package/ios/Animations/ANNTransitionWait.mm +135 -0
  441. package/ios/Animations/Elements/ANNElementFinder.h +26 -0
  442. package/ios/Animations/Elements/ANNElementFinder.mm +37 -0
  443. package/ios/Animations/Elements/ANNElementTransition.h +30 -0
  444. package/ios/Animations/Elements/ANNElementTransition.mm +75 -0
  445. package/ios/Animations/Elements/ANNSharedElementFlight.h +42 -0
  446. package/ios/Animations/Elements/ANNSharedElementFlight.mm +340 -0
  447. package/ios/Animations/Elements/ANNZoomAnchor.h +33 -0
  448. package/ios/Animations/Elements/ANNZoomAnchor.mm +133 -0
  449. package/ios/Animations/Interpolators/ANNCurve.h +61 -0
  450. package/ios/Animations/Interpolators/ANNCurve.mm +301 -0
  451. package/ios/Animations/Interpolators/ANNInterpolate.h +69 -0
  452. package/ios/Animations/Interpolators/ANNTrack.h +52 -0
  453. package/ios/Animations/Interpolators/ANNTrack.mm +77 -0
  454. package/ios/Animations/Interpolators/ANNViewTracks.h +57 -0
  455. package/ios/Animations/Interpolators/ANNViewTracks.mm +261 -0
  456. package/ios/ApexNavigation-prefix.h +6 -0
  457. package/ios/CLAUDE.md +151 -0
  458. package/ios/CORE.md +177 -0
  459. package/ios/Contract/ANNCommandAnswer.h +38 -0
  460. package/ios/Contract/ANNCommandAnswer.mm +99 -0
  461. package/ios/Contract/ANNCommandRunner.h +42 -0
  462. package/ios/Contract/ANNCommandRunner.mm +89 -0
  463. package/ios/Contract/ANNErrorTexts.h +86 -0
  464. package/ios/Contract/ANNErrorTexts.mm +230 -0
  465. package/ios/Contract/ANNLayoutNode.h +64 -0
  466. package/ios/Contract/ANNLayoutNode.mm +153 -0
  467. package/ios/Contract/ANNLayoutReader.h +34 -0
  468. package/ios/Contract/ANNLayoutReader.mm +282 -0
  469. package/ios/Contract/ANNLayoutRoot.h +26 -0
  470. package/ios/Contract/ANNLayoutRoot.mm +21 -0
  471. package/ios/Contract/ANNLayoutTreeOptions.h +22 -0
  472. package/ios/Contract/ANNLayoutTreeOptions.mm +32 -0
  473. package/ios/Contract/ANNLayoutType.h +44 -0
  474. package/ios/Contract/ANNLayoutValidator.h +23 -0
  475. package/ios/Contract/ANNLayoutValidator.mm +28 -0
  476. package/ios/Core/ANNAppDelegate.mm +122 -0
  477. package/ios/Core/ANNAppDirection.h +43 -0
  478. package/ios/Core/ANNAppDirection.mm +194 -0
  479. package/ios/Core/ANNAppearanceDispatcher.h +117 -0
  480. package/ios/Core/ANNAppearanceDispatcher.mm +433 -0
  481. package/ios/Core/ANNAssert.h +7 -0
  482. package/ios/Core/ANNDeepLinkQueue.h +35 -0
  483. package/ios/Core/ANNDeepLinkQueue.mm +136 -0
  484. package/ios/Core/ANNErrorHandler.h +17 -0
  485. package/ios/Core/ANNErrorHandler.mm +14 -0
  486. package/ios/Core/ANNEventEmitter.h +174 -0
  487. package/ios/Core/ANNEventEmitter.mm +337 -0
  488. package/ios/Core/ANNHinge.h +26 -0
  489. package/ios/Core/ANNHinge.mm +116 -0
  490. package/ios/Core/ANNKeyCommands.h +12 -0
  491. package/ios/Core/ANNKeyCommands.mm +74 -0
  492. package/ios/Core/ANNLayoutInfo.h +18 -0
  493. package/ios/Core/ANNLayoutInfo.mm +13 -0
  494. package/ios/Core/ANNLayoutProtocol.h +155 -0
  495. package/ios/Core/ANNNavigationState.h +38 -0
  496. package/ios/Core/ANNNavigationState.mm +127 -0
  497. package/ios/Core/ANNNodeHelper.h +114 -0
  498. package/ios/Core/ANNNodeHelper.mm +260 -0
  499. package/ios/Core/ANNNodePresenter.h +86 -0
  500. package/ios/Core/ANNNodePresenter.mm +92 -0
  501. package/ios/Core/ANNNodeRegistry.h +30 -0
  502. package/ios/Core/ANNNodeRegistry.mm +48 -0
  503. package/ios/Core/ANNOptionsRepaint.h +19 -0
  504. package/ios/Core/ANNOptionsRepaint.mm +59 -0
  505. package/ios/Core/ANNParking.h +34 -0
  506. package/ios/Core/ANNParking.mm +117 -0
  507. package/ios/Core/ANNPendingLayers.h +31 -0
  508. package/ios/Core/ANNPendingLayers.mm +57 -0
  509. package/ios/Core/ANNReloadCoordinator.h +26 -0
  510. package/ios/Core/ANNReloadCoordinator.mm +211 -0
  511. package/ios/Core/ANNRenderWait.h +105 -0
  512. package/ios/Core/ANNRenderWait.mm +496 -0
  513. package/ios/Core/ANNSceneDelegate.mm +92 -0
  514. package/ios/Core/ANNScreenAppearance+Internal.h +29 -0
  515. package/ios/Core/ANNScreenAppearance.h +60 -0
  516. package/ios/Core/ANNScreenAppearance.mm +44 -0
  517. package/ios/Core/ANNShownScreens.h +27 -0
  518. package/ios/Core/ANNShownScreens.mm +16 -0
  519. package/ios/Core/ANNSystemUI.h +95 -0
  520. package/ios/Core/ANNSystemUI.mm +401 -0
  521. package/ios/Core/ANNSystemUIRules.h +35 -0
  522. package/ios/Core/ANNSystemUIRules.mm +139 -0
  523. package/ios/Core/ANNUtils.h +35 -0
  524. package/ios/Core/ANNUtils.mm +111 -0
  525. package/ios/Core/ApexNavigation+Internal.h +26 -0
  526. package/ios/Core/ApexNavigation.mm +177 -0
  527. package/ios/Core/UIViewController+LayoutProtocol.h +102 -0
  528. package/ios/Core/UIViewController+LayoutProtocol.mm +253 -0
  529. package/ios/Layouts/Arrangement/ANNArrangementScreenDelegate.h +18 -0
  530. package/ios/Layouts/Arrangement/ANNArrangementState.h +30 -0
  531. package/ios/Layouts/Arrangement/ANNArrangementState.mm +53 -0
  532. package/ios/Layouts/Arrangement/ANNArrangementViewController.h +38 -0
  533. package/ios/Layouts/Arrangement/ANNArrangementViewController.mm +573 -0
  534. package/ios/Layouts/External/ANNExternalViewController.h +28 -0
  535. package/ios/Layouts/External/ANNExternalViewController.mm +118 -0
  536. package/ios/Layouts/External/ANNNativeScreenCalls.h +27 -0
  537. package/ios/Layouts/External/ANNNativeScreenCalls.mm +77 -0
  538. package/ios/Layouts/Modal/ANNModal.h +121 -0
  539. package/ios/Layouts/Modal/ANNModal.mm +64 -0
  540. package/ios/Layouts/Modal/ANNModalCoordinator.h +99 -0
  541. package/ios/Layouts/Modal/ANNModalCoordinator.mm +1965 -0
  542. package/ios/Layouts/Modal/ANNModalHostViewComponentView.h +13 -0
  543. package/ios/Layouts/Modal/ANNModalHostViewComponentView.mm +24 -0
  544. package/ios/Layouts/Modal/ANNModalPresentation.h +73 -0
  545. package/ios/Layouts/Modal/ANNModalPresentation.mm +189 -0
  546. package/ios/Layouts/Modal/ANNModalSizePresenter.h +13 -0
  547. package/ios/Layouts/Modal/ANNModalSizePresenter.mm +65 -0
  548. package/ios/Layouts/Modal/ANNModalTransitions.h +29 -0
  549. package/ios/Layouts/Modal/ANNModalTransitions.mm +40 -0
  550. package/ios/Layouts/Modal/ANNPopoverPresenter.h +29 -0
  551. package/ios/Layouts/Modal/ANNPopoverPresenter.mm +158 -0
  552. package/ios/Layouts/Modal/ANNPresentationGate.h +52 -0
  553. package/ios/Layouts/Modal/ANNPresentationGate.mm +153 -0
  554. package/ios/Layouts/Modal/ANNSheetPresenter.h +31 -0
  555. package/ios/Layouts/Modal/ANNSheetPresenter.mm +247 -0
  556. package/ios/Layouts/Overlay/ANNOverlayCoordinator.h +66 -0
  557. package/ios/Layouts/Overlay/ANNOverlayCoordinator.mm +604 -0
  558. package/ios/Layouts/Overlay/ANNOverlayWindow.h +10 -0
  559. package/ios/Layouts/Overlay/ANNOverlayWindow.mm +71 -0
  560. package/ios/Layouts/Root/ANNLayoutFactory.h +31 -0
  561. package/ios/Layouts/Root/ANNLayoutFactory.mm +349 -0
  562. package/ios/Layouts/Root/ANNRootCoordinator.h +42 -0
  563. package/ios/Layouts/Root/ANNRootCoordinator.mm +847 -0
  564. package/ios/Layouts/Root/ANNSplashViewController.h +30 -0
  565. package/ios/Layouts/Root/ANNSplashViewController.mm +138 -0
  566. package/ios/Layouts/Screen/ANNComponentPresenter.h +32 -0
  567. package/ios/Layouts/Screen/ANNComponentPresenter.mm +136 -0
  568. package/ios/Layouts/Screen/ANNComponentViewController.h +100 -0
  569. package/ios/Layouts/Screen/ANNComponentViewController.mm +652 -0
  570. package/ios/Layouts/Screen/ANNNativeScreenContext+Internal.h +19 -0
  571. package/ios/Layouts/Screen/ANNNativeScreenContext.mm +84 -0
  572. package/ios/Layouts/Screen/ANNPreviewInteraction.h +38 -0
  573. package/ios/Layouts/Screen/ANNPreviewInteraction.mm +252 -0
  574. package/ios/Layouts/Screen/ANNScreenBars.h +29 -0
  575. package/ios/Layouts/Screen/ANNScreenBars.mm +47 -0
  576. package/ios/Layouts/Screen/ANNScreenInsets.h +30 -0
  577. package/ios/Layouts/Screen/ANNScreenInsets.mm +68 -0
  578. package/ios/Layouts/Screen/ANNScreenReadiness.h +92 -0
  579. package/ios/Layouts/Screen/ANNScreenReadiness.mm +186 -0
  580. package/ios/Layouts/Screen/ANNScreenRegions.h +33 -0
  581. package/ios/Layouts/Screen/ANNScreenRegions.mm +105 -0
  582. package/ios/Layouts/Screen/ANNScreenSafeArea.h +38 -0
  583. package/ios/Layouts/Screen/ANNScreenSafeArea.mm +58 -0
  584. package/ios/Layouts/SideMenu/ANNSideMenuChildViewController.h +41 -0
  585. package/ios/Layouts/SideMenu/ANNSideMenuChildViewController.mm +113 -0
  586. package/ios/Layouts/SideMenu/ANNSideMenuPresenter.h +28 -0
  587. package/ios/Layouts/SideMenu/ANNSideMenuPresenter.mm +260 -0
  588. package/ios/Layouts/SideMenu/ANNSideMenuTypes.h +19 -0
  589. package/ios/Layouts/SideMenu/ANNSideMenuViewController.h +46 -0
  590. package/ios/Layouts/SideMenu/ANNSideMenuViewController.mm +891 -0
  591. package/ios/Layouts/SplitView/ANNSplitViewCommands.h +39 -0
  592. package/ios/Layouts/SplitView/ANNSplitViewCommands.mm +612 -0
  593. package/ios/Layouts/SplitView/ANNSplitViewController.h +52 -0
  594. package/ios/Layouts/SplitView/ANNSplitViewController.mm +494 -0
  595. package/ios/Layouts/SplitView/ANNSplitViewPresenter.h +18 -0
  596. package/ios/Layouts/SplitView/ANNSplitViewPresenter.mm +181 -0
  597. package/ios/Layouts/SplitView/UISplitViewController+ANNOptions.h +32 -0
  598. package/ios/Layouts/SplitView/UISplitViewController+ANNOptions.mm +133 -0
  599. package/ios/Layouts/Stack/ANNPreviewPush.h +46 -0
  600. package/ios/Layouts/Stack/ANNPreviewPush.mm +298 -0
  601. package/ios/Layouts/Stack/ANNStackAnimatingDelegate.h +32 -0
  602. package/ios/Layouts/Stack/ANNStackAnimatingDelegate.mm +92 -0
  603. package/ios/Layouts/Stack/ANNStackCommands.h +51 -0
  604. package/ios/Layouts/Stack/ANNStackCommands.mm +403 -0
  605. package/ios/Layouts/Stack/ANNStackController.h +161 -0
  606. package/ios/Layouts/Stack/ANNStackController.mm +1597 -0
  607. package/ios/Layouts/Stack/ANNStackPresenter.h +44 -0
  608. package/ios/Layouts/Stack/ANNStackPresenter.mm +181 -0
  609. package/ios/Layouts/Stack/ANNStackQueue.h +194 -0
  610. package/ios/Layouts/Stack/ANNStackQueue.mm +1300 -0
  611. package/ios/Layouts/Stack/InteractivePopGestureDelegate.h +53 -0
  612. package/ios/Layouts/Stack/InteractivePopGestureDelegate.mm +228 -0
  613. package/ios/Layouts/Stack/UINavigationController+ANNCommands.h +19 -0
  614. package/ios/Layouts/Stack/UINavigationController+ANNCommands.mm +29 -0
  615. package/ios/Layouts/Tabs/ANNBottomTabCellView.h +33 -0
  616. package/ios/Layouts/Tabs/ANNBottomTabCellView.mm +100 -0
  617. package/ios/Layouts/Tabs/ANNBottomTabItemBuilder.h +49 -0
  618. package/ios/Layouts/Tabs/ANNBottomTabItemBuilder.mm +153 -0
  619. package/ios/Layouts/Tabs/ANNBottomTabsAccessoryView.h +17 -0
  620. package/ios/Layouts/Tabs/ANNBottomTabsAccessoryView.mm +56 -0
  621. package/ios/Layouts/Tabs/ANNBottomTabsController.h +121 -0
  622. package/ios/Layouts/Tabs/ANNBottomTabsController.mm +1404 -0
  623. package/ios/Layouts/Tabs/ANNBottomTabsCustomRow.h +47 -0
  624. package/ios/Layouts/Tabs/ANNBottomTabsCustomRow.mm +280 -0
  625. package/ios/Layouts/Tabs/ANNBottomTabsPresenter.h +81 -0
  626. package/ios/Layouts/Tabs/ANNBottomTabsPresenter.mm +1026 -0
  627. package/ios/Layouts/Tabs/ANNMoreNavigationDelegate.h +24 -0
  628. package/ios/Layouts/Tabs/ANNMoreNavigationDelegate.mm +58 -0
  629. package/ios/Layouts/Tabs/ANNScrollToTop.h +23 -0
  630. package/ios/Layouts/Tabs/ANNScrollToTop.mm +55 -0
  631. package/ios/Layouts/Tabs/ANNTabDotView.h +19 -0
  632. package/ios/Layouts/Tabs/ANNTabDotView.mm +46 -0
  633. package/ios/Layouts/Tabs/ANNTabLongPress.h +28 -0
  634. package/ios/Layouts/Tabs/ANNTabLongPress.mm +98 -0
  635. package/ios/Layouts/Tabs/ANNTabsDesign.h +26 -0
  636. package/ios/Layouts/Tabs/ANNTabsDesign.mm +34 -0
  637. package/ios/Layouts/Tabs/ANNTabsPreloadWindow.h +27 -0
  638. package/ios/Layouts/Tabs/ANNTabsPreloadWindow.mm +55 -0
  639. package/ios/Layouts/Tabs/UITabBar+utils.h +24 -0
  640. package/ios/Layouts/Tabs/UITabBar+utils.mm +103 -0
  641. package/ios/Options/ANNAnimationOptions.h +22 -0
  642. package/ios/Options/ANNAnimationOptions.mm +16 -0
  643. package/ios/Options/ANNAnimationPropertyOptions.h +17 -0
  644. package/ios/Options/ANNAnimationPropertyOptions.mm +15 -0
  645. package/ios/Options/ANNBottomTabDotIndicatorOptions.h +14 -0
  646. package/ios/Options/ANNBottomTabDotIndicatorOptions.mm +13 -0
  647. package/ios/Options/ANNBottomTabOptions.h +51 -0
  648. package/ios/Options/ANNBottomTabOptions.mm +47 -0
  649. package/ios/Options/ANNBottomTabsAccessoryOptions.h +19 -0
  650. package/ios/Options/ANNBottomTabsAccessoryOptions.mm +25 -0
  651. package/ios/Options/ANNBottomTabsAnimationOptions.h +12 -0
  652. package/ios/Options/ANNBottomTabsAnimationOptions.mm +11 -0
  653. package/ios/Options/ANNBottomTabsCustomRowOptions.h +19 -0
  654. package/ios/Options/ANNBottomTabsCustomRowOptions.mm +17 -0
  655. package/ios/Options/ANNBottomTabsOptions.h +51 -0
  656. package/ios/Options/ANNBottomTabsOptions.mm +48 -0
  657. package/ios/Options/ANNBottomTabsShadowOptions.h +14 -0
  658. package/ios/Options/ANNBottomTabsShadowOptions.mm +13 -0
  659. package/ios/Options/ANNButtonComponentOptions.h +13 -0
  660. package/ios/Options/ANNButtonComponentOptions.mm +12 -0
  661. package/ios/Options/ANNButtonOptions.h +56 -0
  662. package/ios/Options/ANNButtonOptions.mm +53 -0
  663. package/ios/Options/ANNButtonsParser.h +13 -0
  664. package/ios/Options/ANNButtonsParser.mm +18 -0
  665. package/ios/Options/ANNComponentOptions.h +14 -0
  666. package/ios/Options/ANNComponentOptions.mm +12 -0
  667. package/ios/Options/ANNDefaultOptions.h +18 -0
  668. package/ios/Options/ANNDefaultOptions.mm +22 -0
  669. package/ios/Options/ANNElementAnimationOptions.h +18 -0
  670. package/ios/Options/ANNElementAnimationOptions.mm +15 -0
  671. package/ios/Options/ANNElementTransitionOptions.h +26 -0
  672. package/ios/Options/ANNElementTransitionOptions.mm +28 -0
  673. package/ios/Options/ANNEnterExitBottomTabsAnimationOptions.h +14 -0
  674. package/ios/Options/ANNEnterExitBottomTabsAnimationOptions.mm +12 -0
  675. package/ios/Options/ANNEnterExitScreenAnimationOptions.h +14 -0
  676. package/ios/Options/ANNEnterExitScreenAnimationOptions.mm +12 -0
  677. package/ios/Options/ANNEnterExitTopBarAnimationOptions.h +14 -0
  678. package/ios/Options/ANNEnterExitTopBarAnimationOptions.mm +12 -0
  679. package/ios/Options/ANNFabOptions.h +26 -0
  680. package/ios/Options/ANNFabOptions.mm +23 -0
  681. package/ios/Options/ANNFontOptions.h +24 -0
  682. package/ios/Options/ANNFontOptions.mm +65 -0
  683. package/ios/Options/ANNHardwareBackButtonOptions.h +15 -0
  684. package/ios/Options/ANNHardwareBackButtonOptions.mm +13 -0
  685. package/ios/Options/ANNIconBackgroundOptions.h +16 -0
  686. package/ios/Options/ANNIconBackgroundOptions.mm +15 -0
  687. package/ios/Options/ANNIconInsetsOptions.h +16 -0
  688. package/ios/Options/ANNIconInsetsOptions.mm +14 -0
  689. package/ios/Options/ANNInterpolationOptions.h +22 -0
  690. package/ios/Options/ANNInterpolationOptions.mm +22 -0
  691. package/ios/Options/ANNLayoutOptions.h +26 -0
  692. package/ios/Options/ANNLayoutOptions.mm +25 -0
  693. package/ios/Options/ANNMenuOptions.h +37 -0
  694. package/ios/Options/ANNMenuOptions.mm +136 -0
  695. package/ios/Options/ANNModalAnimationOptions.h +17 -0
  696. package/ios/Options/ANNModalAnimationOptions.mm +15 -0
  697. package/ios/Options/ANNModalContentSizeOptions.h +14 -0
  698. package/ios/Options/ANNModalContentSizeOptions.mm +15 -0
  699. package/ios/Options/ANNModalOptions.h +19 -0
  700. package/ios/Options/ANNModalOptions.mm +15 -0
  701. package/ios/Options/ANNNavigationBarOptions.h +14 -0
  702. package/ios/Options/ANNNavigationBarOptions.mm +13 -0
  703. package/ios/Options/ANNNavigationOptions.h +60 -0
  704. package/ios/Options/ANNNavigationOptions.mm +54 -0
  705. package/ios/Options/ANNOptionField.h +91 -0
  706. package/ios/Options/ANNOptionField.mm +173 -0
  707. package/ios/Options/ANNOptions.h +62 -0
  708. package/ios/Options/ANNOptions.mm +329 -0
  709. package/ios/Options/ANNOptionsCache.h +22 -0
  710. package/ios/Options/ANNOptionsCache.mm +17 -0
  711. package/ios/Options/ANNOptionsReader.h +33 -0
  712. package/ios/Options/ANNOptionsReader.mm +63 -0
  713. package/ios/Options/ANNOverlayOptions.h +14 -0
  714. package/ios/Options/ANNOverlayOptions.mm +12 -0
  715. package/ios/Options/ANNPopoverOptions.h +17 -0
  716. package/ios/Options/ANNPopoverOptions.mm +31 -0
  717. package/ios/Options/ANNPreviewOptions.h +17 -0
  718. package/ios/Options/ANNPreviewOptions.mm +15 -0
  719. package/ios/Options/ANNScreenAnimationOptions.h +13 -0
  720. package/ios/Options/ANNScreenAnimationOptions.mm +12 -0
  721. package/ios/Options/ANNScrollEdgeEffectOptions.h +20 -0
  722. package/ios/Options/ANNScrollEdgeEffectOptions.mm +16 -0
  723. package/ios/Options/ANNScrollEdgeOptions.h +14 -0
  724. package/ios/Options/ANNScrollEdgeOptions.mm +12 -0
  725. package/ios/Options/ANNSearchBarOptions.h +49 -0
  726. package/ios/Options/ANNSearchBarOptions.mm +41 -0
  727. package/ios/Options/ANNSearchScopeOptions.h +15 -0
  728. package/ios/Options/ANNSearchScopeOptions.mm +13 -0
  729. package/ios/Options/ANNSearchSuggestionOptions.h +19 -0
  730. package/ios/Options/ANNSearchSuggestionOptions.mm +16 -0
  731. package/ios/Options/ANNSearchTokenOptions.h +18 -0
  732. package/ios/Options/ANNSearchTokenOptions.mm +15 -0
  733. package/ios/Options/ANNSetStackRootAnimationOptions.h +12 -0
  734. package/ios/Options/ANNSetStackRootAnimationOptions.mm +11 -0
  735. package/ios/Options/ANNSharedElementTransitionOptions.h +17 -0
  736. package/ios/Options/ANNSharedElementTransitionOptions.mm +15 -0
  737. package/ios/Options/ANNSheetOptions.h +25 -0
  738. package/ios/Options/ANNSheetOptions.mm +41 -0
  739. package/ios/Options/ANNSideMenuOptions.h +19 -0
  740. package/ios/Options/ANNSideMenuOptions.mm +16 -0
  741. package/ios/Options/ANNSideMenuSideOptions.h +23 -0
  742. package/ios/Options/ANNSideMenuSideOptions.mm +20 -0
  743. package/ios/Options/ANNSplitViewColumnOptions.h +14 -0
  744. package/ios/Options/ANNSplitViewColumnOptions.mm +13 -0
  745. package/ios/Options/ANNSplitViewInspectorOptions.h +13 -0
  746. package/ios/Options/ANNSplitViewInspectorOptions.mm +9 -0
  747. package/ios/Options/ANNSplitViewOptions.h +29 -0
  748. package/ios/Options/ANNSplitViewOptions.mm +26 -0
  749. package/ios/Options/ANNStackAnimationOptions.h +23 -0
  750. package/ios/Options/ANNStackAnimationOptions.mm +20 -0
  751. package/ios/Options/ANNStackPushAnimationOptions.h +13 -0
  752. package/ios/Options/ANNStackPushAnimationOptions.mm +11 -0
  753. package/ios/Options/ANNStatusBarOptions.h +20 -0
  754. package/ios/Options/ANNStatusBarOptions.mm +18 -0
  755. package/ios/Options/ANNToolbarOptions.h +14 -0
  756. package/ios/Options/ANNToolbarOptions.mm +27 -0
  757. package/ios/Options/ANNTopBarAnimationOptions.h +12 -0
  758. package/ios/Options/ANNTopBarAnimationOptions.mm +11 -0
  759. package/ios/Options/ANNTopBarBackButtonOptions.h +31 -0
  760. package/ios/Options/ANNTopBarBackButtonOptions.mm +35 -0
  761. package/ios/Options/ANNTopBarBackgroundComponentOptions.h +13 -0
  762. package/ios/Options/ANNTopBarBackgroundComponentOptions.mm +11 -0
  763. package/ios/Options/ANNTopBarBackgroundOptions.h +17 -0
  764. package/ios/Options/ANNTopBarBackgroundOptions.mm +15 -0
  765. package/ios/Options/ANNTopBarLargeTitleOptions.h +19 -0
  766. package/ios/Options/ANNTopBarLargeTitleOptions.mm +15 -0
  767. package/ios/Options/ANNTopBarOptions.h +62 -0
  768. package/ios/Options/ANNTopBarOptions.mm +49 -0
  769. package/ios/Options/ANNTopBarScrollEdgeAppearanceBackgroundOptions.h +14 -0
  770. package/ios/Options/ANNTopBarScrollEdgeAppearanceBackgroundOptions.mm +12 -0
  771. package/ios/Options/ANNTopBarScrollEdgeAppearanceOptions.h +19 -0
  772. package/ios/Options/ANNTopBarScrollEdgeAppearanceOptions.mm +16 -0
  773. package/ios/Options/ANNTopBarScrollEdgeAppearanceTitleOptions.h +16 -0
  774. package/ios/Options/ANNTopBarScrollEdgeAppearanceTitleOptions.mm +12 -0
  775. package/ios/Options/ANNTopBarSubtitleOptions.h +18 -0
  776. package/ios/Options/ANNTopBarSubtitleOptions.mm +14 -0
  777. package/ios/Options/ANNTopBarTitleComponentOptions.h +15 -0
  778. package/ios/Options/ANNTopBarTitleComponentOptions.mm +12 -0
  779. package/ios/Options/ANNTopBarTitleDocumentOptions.h +12 -0
  780. package/ios/Options/ANNTopBarTitleDocumentOptions.mm +11 -0
  781. package/ios/Options/ANNTopBarTitleOptions.h +29 -0
  782. package/ios/Options/ANNTopBarTitleOptions.mm +21 -0
  783. package/ios/Options/ANNViewAnimationOptions.h +26 -0
  784. package/ios/Options/ANNViewAnimationOptions.mm +58 -0
  785. package/ios/Options/ANNWindowOptions.h +12 -0
  786. package/ios/Options/ANNWindowOptions.mm +9 -0
  787. package/ios/Options/ANNZoomTransitionOptions.h +13 -0
  788. package/ios/Options/ANNZoomTransitionOptions.mm +12 -0
  789. package/ios/Options/Params/ANNIntegerParam.h +14 -0
  790. package/ios/Options/Params/ANNIntegerParam.mm +13 -0
  791. package/ios/Options/Params/ANNParam.h +28 -0
  792. package/ios/Options/Params/ANNParam.mm +29 -0
  793. package/ios/Options/Params/Bool.h +17 -0
  794. package/ios/Options/Params/Bool.mm +17 -0
  795. package/ios/Options/Params/BoolParser.h +12 -0
  796. package/ios/Options/Params/BoolParser.mm +10 -0
  797. package/ios/Options/Params/Color.h +43 -0
  798. package/ios/Options/Params/Color.mm +65 -0
  799. package/ios/Options/Params/ColorParser.h +14 -0
  800. package/ios/Options/Params/ColorParser.mm +95 -0
  801. package/ios/Options/Params/Double.h +14 -0
  802. package/ios/Options/Params/Double.mm +13 -0
  803. package/ios/Options/Params/DoubleParser.h +16 -0
  804. package/ios/Options/Params/DoubleParser.mm +16 -0
  805. package/ios/Options/Params/Image.h +15 -0
  806. package/ios/Options/Params/Image.mm +13 -0
  807. package/ios/Options/Params/ImageParser.h +16 -0
  808. package/ios/Options/Params/ImageParser.mm +103 -0
  809. package/ios/Options/Params/Number.h +14 -0
  810. package/ios/Options/Params/Number.mm +13 -0
  811. package/ios/Options/Params/NumberParser.h +13 -0
  812. package/ios/Options/Params/NumberParser.mm +10 -0
  813. package/ios/Options/Params/Param.h +16 -0
  814. package/ios/Options/Params/Param.mm +13 -0
  815. package/ios/Options/Params/Text.h +17 -0
  816. package/ios/Options/Params/Text.mm +17 -0
  817. package/ios/Options/Params/TextParser.h +17 -0
  818. package/ios/Options/Params/TextParser.mm +17 -0
  819. package/ios/Package.swift +58 -0
  820. package/ios/Public/ApexNavigation/ANNAppDelegate.h +66 -0
  821. package/ios/Public/ApexNavigation/ANNSceneDelegate.h +19 -0
  822. package/ios/Public/ApexNavigation/ApexNavigation.h +92 -0
  823. package/ios/Public/module.modulemap +8 -0
  824. package/ios/RECIPES.md +41 -0
  825. package/ios/React/ANNComponentType.h +22 -0
  826. package/ios/React/ANNComponentViewCreator.h +18 -0
  827. package/ios/React/ANNReactComponentRegistry.h +53 -0
  828. package/ios/React/ANNReactComponentRegistry.mm +153 -0
  829. package/ios/React/ANNReactView.h +104 -0
  830. package/ios/React/ANNReactView.mm +374 -0
  831. package/ios/React/ANNReactViewCreator.h +20 -0
  832. package/ios/React/ANNReactViewCreator.mm +42 -0
  833. package/ios/React/ANNSafeAreaViewComponentView.h +13 -0
  834. package/ios/React/ANNSafeAreaViewComponentView.mm +153 -0
  835. package/ios/React/ANNSurfaceHostingView.h +17 -0
  836. package/ios/React/ANNSurfaceHostingView.mm +68 -0
  837. package/ios/React/Slots/ANNSlotComponentView.h +10 -0
  838. package/ios/React/Slots/ANNSlotComponentView.mm +122 -0
  839. package/ios/React/Slots/ANNSlotContainers.h +34 -0
  840. package/ios/React/Slots/ANNSlotContainers.mm +39 -0
  841. package/ios/React/Slots/ANNSlotContentView.h +12 -0
  842. package/ios/React/Slots/ANNSlotContentView.mm +18 -0
  843. package/ios/React/Slots/ANNSlotHost.h +29 -0
  844. package/ios/React/Slots/ANNSlotHost.mm +59 -0
  845. package/ios/React/Slots/ANNSlotScreenView.h +38 -0
  846. package/ios/React/Slots/ANNSlotScreenView.mm +254 -0
  847. package/ios/TopBar/ANNBackButtonPresenter.h +35 -0
  848. package/ios/TopBar/ANNBackButtonPresenter.mm +187 -0
  849. package/ios/TopBar/ANNBarAppearance.h +53 -0
  850. package/ios/TopBar/ANNBarAppearance.mm +278 -0
  851. package/ios/TopBar/ANNBarBackgroundComponent.h +46 -0
  852. package/ios/TopBar/ANNBarBackgroundComponent.mm +163 -0
  853. package/ios/TopBar/ANNBarButtonComponentView.h +30 -0
  854. package/ios/TopBar/ANNBarButtonComponentView.mm +110 -0
  855. package/ios/TopBar/ANNBarButtons.h +65 -0
  856. package/ios/TopBar/ANNBarButtons.mm +1125 -0
  857. package/ios/TopBar/ANNBarComponentsWait.h +37 -0
  858. package/ios/TopBar/ANNBarComponentsWait.mm +116 -0
  859. package/ios/TopBar/ANNIconButtonImage.h +25 -0
  860. package/ios/TopBar/ANNIconButtonImage.mm +94 -0
  861. package/ios/TopBar/ANNLargeTitlePresenter.h +117 -0
  862. package/ios/TopBar/ANNLargeTitlePresenter.mm +402 -0
  863. package/ios/TopBar/ANNMainList.h +28 -0
  864. package/ios/TopBar/ANNMainList.mm +72 -0
  865. package/ios/TopBar/ANNScrollEdgeEffects.h +29 -0
  866. package/ios/TopBar/ANNScrollEdgeEffects.mm +122 -0
  867. package/ios/TopBar/ANNSearchPresenter.h +29 -0
  868. package/ios/TopBar/ANNSearchPresenter.mm +637 -0
  869. package/ios/TopBar/ANNSearchResultsViewController.h +16 -0
  870. package/ios/TopBar/ANNSearchResultsViewController.mm +56 -0
  871. package/ios/TopBar/ANNShowTextButton.h +22 -0
  872. package/ios/TopBar/ANNShowTextButton.mm +63 -0
  873. package/ios/TopBar/ANNTitleComponentView.h +37 -0
  874. package/ios/TopBar/ANNTitleComponentView.mm +86 -0
  875. package/ios/TopBar/ANNTitleGlassView.h +33 -0
  876. package/ios/TopBar/ANNTitleGlassView.mm +126 -0
  877. package/ios/TopBar/ANNTitleView.h +18 -0
  878. package/ios/TopBar/ANNTitleView.mm +63 -0
  879. package/ios/TopBar/ANNToolbarPresenter.h +26 -0
  880. package/ios/TopBar/ANNToolbarPresenter.mm +24 -0
  881. package/ios/TopBar/ANNTopBarPresenter.h +120 -0
  882. package/ios/TopBar/ANNTopBarPresenter.mm +1252 -0
  883. package/ios/TopBar/ANNUIBarButtonItem.h +16 -0
  884. package/ios/TopBar/ANNUIBarButtonItem.mm +5 -0
  885. package/ios/TurboModules/ANNTurboEventEmitter.h +31 -0
  886. package/ios/TurboModules/ANNTurboEventEmitter.mm +129 -0
  887. package/ios/TurboModules/ANNTurboModule.h +11 -0
  888. package/ios/TurboModules/ANNTurboModule.mm +626 -0
  889. package/ios/Utils/UIColor+ANNLuminance.h +13 -0
  890. package/ios/Utils/UIColor+ANNLuminance.mm +32 -0
  891. package/ios/Utils/UIView+Utils.h +12 -0
  892. package/ios/Utils/UIView+Utils.mm +21 -0
  893. package/ios/cpp/react/renderer/components/ApexNavigationSpec/ANNSafeAreaViewComponentDescriptor.h +19 -0
  894. package/ios/cpp/react/renderer/components/ApexNavigationSpec/ANNSafeAreaViewShadowNode.h +60 -0
  895. package/ios/cpp/react/renderer/components/ApexNavigationSpec/ANNSafeAreaViewState.h +33 -0
  896. package/ios/cpp/react/renderer/components/ApexNavigationSpec/ANNSlotComponentDescriptor.h +22 -0
  897. package/ios/cpp/react/renderer/components/ApexNavigationSpec/ANNSlotShadowNode.h +87 -0
  898. package/ios/cpp/react/renderer/components/ApexNavigationSpec/ANNSlotState.h +101 -0
  899. package/lib/module/ARCHITECTURE.md +289 -0
  900. package/lib/module/adapters/NativeANNTurboEventEmitter.js +12 -0
  901. package/lib/module/adapters/NativeANNTurboEventEmitter.js.map +1 -0
  902. package/lib/module/adapters/NativeANNTurboModule.js +13 -0
  903. package/lib/module/adapters/NativeANNTurboModule.js.map +1 -0
  904. package/lib/module/api/app/AppRegistry.js +52 -0
  905. package/lib/module/api/app/AppRegistry.js.map +1 -0
  906. package/lib/module/api/app/activeApp.js +12 -0
  907. package/lib/module/api/app/activeApp.js.map +1 -0
  908. package/lib/module/api/app/createNavigation.js +365 -0
  909. package/lib/module/api/app/createNavigation.js.map +1 -0
  910. package/lib/module/api/app/roots.js +20 -0
  911. package/lib/module/api/app/roots.js.map +1 -0
  912. package/lib/module/api/app/splash.js +124 -0
  913. package/lib/module/api/app/splash.js.map +1 -0
  914. package/lib/module/api/app/startFailure.js +38 -0
  915. package/lib/module/api/app/startFailure.js.map +1 -0
  916. package/lib/module/api/arrangement/arrangementState.js +86 -0
  917. package/lib/module/api/arrangement/arrangementState.js.map +1 -0
  918. package/lib/module/api/commands/commands.js +375 -0
  919. package/lib/module/api/commands/commands.js.map +1 -0
  920. package/lib/module/api/commands/errors.js +94 -0
  921. package/lib/module/api/commands/errors.js.map +1 -0
  922. package/lib/module/api/commands/presentation.js +4 -0
  923. package/lib/module/api/commands/presentation.js.map +1 -0
  924. package/lib/module/api/commands/sideMenus.js +134 -0
  925. package/lib/module/api/commands/sideMenus.js.map +1 -0
  926. package/lib/module/api/commands/transitions.js +245 -0
  927. package/lib/module/api/commands/transitions.js.map +1 -0
  928. package/lib/module/api/context/appContext.js +22 -0
  929. package/lib/module/api/context/appContext.js.map +1 -0
  930. package/lib/module/api/events/navigationEvents.js +69 -0
  931. package/lib/module/api/events/navigationEvents.js.map +1 -0
  932. package/lib/module/api/events/screenLifecycle.js +30 -0
  933. package/lib/module/api/events/screenLifecycle.js.map +1 -0
  934. package/lib/module/api/events/tabPresses.js +32 -0
  935. package/lib/module/api/events/tabPresses.js.map +1 -0
  936. package/lib/module/api/hinge/hinge.js +73 -0
  937. package/lib/module/api/hinge/hinge.js.map +1 -0
  938. package/lib/module/api/hooks/appHooks.js +26 -0
  939. package/lib/module/api/hooks/appHooks.js.map +1 -0
  940. package/lib/module/api/hooks/screenHooks.js +250 -0
  941. package/lib/module/api/hooks/screenHooks.js.map +1 -0
  942. package/lib/module/api/hooks/useArrangement.js +24 -0
  943. package/lib/module/api/hooks/useArrangement.js.map +1 -0
  944. package/lib/module/api/hooks/useHinge.js +29 -0
  945. package/lib/module/api/hooks/useHinge.js.map +1 -0
  946. package/lib/module/api/hooks/useNavigation.js +117 -0
  947. package/lib/module/api/hooks/useNavigation.js.map +1 -0
  948. package/lib/module/api/hooks/usePendingLink.js +12 -0
  949. package/lib/module/api/hooks/usePendingLink.js.map +1 -0
  950. package/lib/module/api/hooks/usePreview.js +97 -0
  951. package/lib/module/api/hooks/usePreview.js.map +1 -0
  952. package/lib/module/api/hooks/useReservedRegions.js +24 -0
  953. package/lib/module/api/hooks/useReservedRegions.js.map +1 -0
  954. package/lib/module/api/hooks/useSafeAreaInsets.js +25 -0
  955. package/lib/module/api/hooks/useSafeAreaInsets.js.map +1 -0
  956. package/lib/module/api/index.js +26 -0
  957. package/lib/module/api/index.js.map +1 -0
  958. package/lib/module/api/layout/Root.js +121 -0
  959. package/lib/module/api/layout/Root.js.map +1 -0
  960. package/lib/module/api/layout/Screen.js +52 -0
  961. package/lib/module/api/layout/Screen.js.map +1 -0
  962. package/lib/module/api/layout/SideMenu.js +85 -0
  963. package/lib/module/api/layout/SideMenu.js.map +1 -0
  964. package/lib/module/api/layout/SplitView.js +137 -0
  965. package/lib/module/api/layout/SplitView.js.map +1 -0
  966. package/lib/module/api/layout/Stack.js +36 -0
  967. package/lib/module/api/layout/Stack.js.map +1 -0
  968. package/lib/module/api/layout/Tabs.js +326 -0
  969. package/lib/module/api/layout/Tabs.js.map +1 -0
  970. package/lib/module/api/layout/element.js +100 -0
  971. package/lib/module/api/layout/element.js.map +1 -0
  972. package/lib/module/api/linking/linkPaths.js +132 -0
  973. package/lib/module/api/linking/linkPaths.js.map +1 -0
  974. package/lib/module/api/linking/linking.js +244 -0
  975. package/lib/module/api/linking/linking.js.map +1 -0
  976. package/lib/module/api/linking/pendingLinks.js +34 -0
  977. package/lib/module/api/linking/pendingLinks.js.map +1 -0
  978. package/lib/module/api/linking/types.js +4 -0
  979. package/lib/module/api/linking/types.js.map +1 -0
  980. package/lib/module/api/navigation.js +105 -0
  981. package/lib/module/api/navigation.js.map +1 -0
  982. package/lib/module/api/options/OptionsChain.js +158 -0
  983. package/lib/module/api/options/OptionsChain.js.map +1 -0
  984. package/lib/module/api/options/ScreenOptions.js +83 -0
  985. package/lib/module/api/options/ScreenOptions.js.map +1 -0
  986. package/lib/module/api/options/buttons.js +4 -0
  987. package/lib/module/api/options/buttons.js.map +1 -0
  988. package/lib/module/api/safeArea/ANNSafeAreaViewNativeComponent.ts +28 -0
  989. package/lib/module/api/safeArea/screenInsets.js +86 -0
  990. package/lib/module/api/safeArea/screenInsets.js.map +1 -0
  991. package/lib/module/api/safeArea/screenRegions.js +84 -0
  992. package/lib/module/api/safeArea/screenRegions.js.map +1 -0
  993. package/lib/module/api/screens/ScreenBoundary.js +44 -0
  994. package/lib/module/api/screens/ScreenBoundary.js.map +1 -0
  995. package/lib/module/api/screens/arrangement.js +63 -0
  996. package/lib/module/api/screens/arrangement.js.map +1 -0
  997. package/lib/module/api/screens/defineScreen.js +29 -0
  998. package/lib/module/api/screens/defineScreen.js.map +1 -0
  999. package/lib/module/api/screens/nativeScreenCalls.js +34 -0
  1000. package/lib/module/api/screens/nativeScreenCalls.js.map +1 -0
  1001. package/lib/module/api/screens/nativeScreens.js +43 -0
  1002. package/lib/module/api/screens/nativeScreens.js.map +1 -0
  1003. package/lib/module/api/screens/registerScreens.js +305 -0
  1004. package/lib/module/api/screens/registerScreens.js.map +1 -0
  1005. package/lib/module/api/slots/ANNSlotNativeComponent.ts +23 -0
  1006. package/lib/module/api/slots/SlotHost.js +92 -0
  1007. package/lib/module/api/slots/SlotHost.js.map +1 -0
  1008. package/lib/module/api/state/navigationState.js +98 -0
  1009. package/lib/module/api/state/navigationState.js.map +1 -0
  1010. package/lib/module/api/testIDs.js +14 -0
  1011. package/lib/module/api/testIDs.js.map +1 -0
  1012. package/lib/module/api/theme/theme.js +180 -0
  1013. package/lib/module/api/theme/theme.js.map +1 -0
  1014. package/lib/module/api/types.js +4 -0
  1015. package/lib/module/api/types.js.map +1 -0
  1016. package/lib/module/engine/backListeners.js +39 -0
  1017. package/lib/module/engine/backListeners.js.map +1 -0
  1018. package/lib/module/engine/buttons.js +105 -0
  1019. package/lib/module/engine/buttons.js.map +1 -0
  1020. package/lib/module/engine/commands.js +388 -0
  1021. package/lib/module/engine/commands.js.map +1 -0
  1022. package/lib/module/engine/events.js +30 -0
  1023. package/lib/module/engine/events.js.map +1 -0
  1024. package/lib/module/engine/ids.js +10 -0
  1025. package/lib/module/engine/ids.js.map +1 -0
  1026. package/lib/module/engine/launchState.js +34 -0
  1027. package/lib/module/engine/launchState.js.map +1 -0
  1028. package/lib/module/engine/layout.js +202 -0
  1029. package/lib/module/engine/layout.js.map +1 -0
  1030. package/lib/module/engine/mergeOptions.js +23 -0
  1031. package/lib/module/engine/mergeOptions.js.map +1 -0
  1032. package/lib/module/engine/native.js +45 -0
  1033. package/lib/module/engine/native.js.map +1 -0
  1034. package/lib/module/engine/nativeScreens.js +265 -0
  1035. package/lib/module/engine/nativeScreens.js.map +1 -0
  1036. package/lib/module/engine/options.js +170 -0
  1037. package/lib/module/engine/options.js.map +1 -0
  1038. package/lib/module/engine/places.js +178 -0
  1039. package/lib/module/engine/places.js.map +1 -0
  1040. package/lib/module/engine/props.js +44 -0
  1041. package/lib/module/engine/props.js.map +1 -0
  1042. package/lib/module/engine/reactMeasures.js +23 -0
  1043. package/lib/module/engine/reactMeasures.js.map +1 -0
  1044. package/lib/module/engine/rememberedOptions.js +118 -0
  1045. package/lib/module/engine/rememberedOptions.js.map +1 -0
  1046. package/lib/module/engine/screens.js +194 -0
  1047. package/lib/module/engine/screens.js.map +1 -0
  1048. package/lib/module/engine/slots.js +200 -0
  1049. package/lib/module/engine/slots.js.map +1 -0
  1050. package/lib/module/engine/tabs.js +79 -0
  1051. package/lib/module/engine/tabs.js.map +1 -0
  1052. package/lib/module/index.js +5 -0
  1053. package/lib/module/index.js.map +1 -0
  1054. package/lib/module/interfaces/ComponentEvents.js +2 -0
  1055. package/lib/module/interfaces/ComponentEvents.js.map +1 -0
  1056. package/lib/module/interfaces/Events.js +2 -0
  1057. package/lib/module/interfaces/Events.js.map +1 -0
  1058. package/lib/module/interfaces/Layout.js +4 -0
  1059. package/lib/module/interfaces/Layout.js.map +1 -0
  1060. package/lib/module/interfaces/Options.js +4 -0
  1061. package/lib/module/interfaces/Options.js.map +1 -0
  1062. package/lib/module/interfaces/options/animations.js +2 -0
  1063. package/lib/module/interfaces/options/animations.js.map +1 -0
  1064. package/lib/module/interfaces/options/bottomTabs.js +4 -0
  1065. package/lib/module/interfaces/options/bottomTabs.js.map +1 -0
  1066. package/lib/module/interfaces/options/buttons.js +4 -0
  1067. package/lib/module/interfaces/options/buttons.js.map +1 -0
  1068. package/lib/module/interfaces/options/common.js +4 -0
  1069. package/lib/module/interfaces/options/common.js.map +1 -0
  1070. package/lib/module/interfaces/options/modals.js +2 -0
  1071. package/lib/module/interfaces/options/modals.js.map +1 -0
  1072. package/lib/module/interfaces/options/preview.js +2 -0
  1073. package/lib/module/interfaces/options/preview.js.map +1 -0
  1074. package/lib/module/interfaces/options/sideMenu.js +2 -0
  1075. package/lib/module/interfaces/options/sideMenu.js.map +1 -0
  1076. package/lib/module/interfaces/options/splitView.js +2 -0
  1077. package/lib/module/interfaces/options/splitView.js.map +1 -0
  1078. package/lib/module/interfaces/options/stack.js +4 -0
  1079. package/lib/module/interfaces/options/stack.js.map +1 -0
  1080. package/lib/module/interfaces/options/system.js +4 -0
  1081. package/lib/module/interfaces/options/system.js.map +1 -0
  1082. package/lib/module/interfaces/options/toolbar.js +4 -0
  1083. package/lib/module/interfaces/options/toolbar.js.map +1 -0
  1084. package/lib/module/interfaces/options/topBar.js +4 -0
  1085. package/lib/module/interfaces/options/topBar.js.map +1 -0
  1086. package/lib/module/package.json +1 -0
  1087. package/lib/typescript/adapters/NativeANNTurboEventEmitter.d.ts +14 -0
  1088. package/lib/typescript/adapters/NativeANNTurboEventEmitter.d.ts.map +1 -0
  1089. package/lib/typescript/adapters/NativeANNTurboModule.d.ts +77 -0
  1090. package/lib/typescript/adapters/NativeANNTurboModule.d.ts.map +1 -0
  1091. package/lib/typescript/api/app/AppRegistry.d.ts +14 -0
  1092. package/lib/typescript/api/app/AppRegistry.d.ts.map +1 -0
  1093. package/lib/typescript/api/app/activeApp.d.ts +12 -0
  1094. package/lib/typescript/api/app/activeApp.d.ts.map +1 -0
  1095. package/lib/typescript/api/app/createNavigation.d.ts +182 -0
  1096. package/lib/typescript/api/app/createNavigation.d.ts.map +1 -0
  1097. package/lib/typescript/api/app/roots.d.ts +15 -0
  1098. package/lib/typescript/api/app/roots.d.ts.map +1 -0
  1099. package/lib/typescript/api/app/splash.d.ts +81 -0
  1100. package/lib/typescript/api/app/splash.d.ts.map +1 -0
  1101. package/lib/typescript/api/app/startFailure.d.ts +15 -0
  1102. package/lib/typescript/api/app/startFailure.d.ts.map +1 -0
  1103. package/lib/typescript/api/arrangement/arrangementState.d.ts +21 -0
  1104. package/lib/typescript/api/arrangement/arrangementState.d.ts.map +1 -0
  1105. package/lib/typescript/api/commands/commands.d.ts +57 -0
  1106. package/lib/typescript/api/commands/commands.d.ts.map +1 -0
  1107. package/lib/typescript/api/commands/errors.d.ts +24 -0
  1108. package/lib/typescript/api/commands/errors.d.ts.map +1 -0
  1109. package/lib/typescript/api/commands/presentation.d.ts +69 -0
  1110. package/lib/typescript/api/commands/presentation.d.ts.map +1 -0
  1111. package/lib/typescript/api/commands/sideMenus.d.ts +14 -0
  1112. package/lib/typescript/api/commands/sideMenus.d.ts.map +1 -0
  1113. package/lib/typescript/api/commands/transitions.d.ts +33 -0
  1114. package/lib/typescript/api/commands/transitions.d.ts.map +1 -0
  1115. package/lib/typescript/api/context/appContext.d.ts +4 -0
  1116. package/lib/typescript/api/context/appContext.d.ts.map +1 -0
  1117. package/lib/typescript/api/events/navigationEvents.d.ts +70 -0
  1118. package/lib/typescript/api/events/navigationEvents.d.ts.map +1 -0
  1119. package/lib/typescript/api/events/screenLifecycle.d.ts +5 -0
  1120. package/lib/typescript/api/events/screenLifecycle.d.ts.map +1 -0
  1121. package/lib/typescript/api/events/tabPresses.d.ts +5 -0
  1122. package/lib/typescript/api/events/tabPresses.d.ts.map +1 -0
  1123. package/lib/typescript/api/hinge/hinge.d.ts +21 -0
  1124. package/lib/typescript/api/hinge/hinge.d.ts.map +1 -0
  1125. package/lib/typescript/api/hooks/appHooks.d.ts +15 -0
  1126. package/lib/typescript/api/hooks/appHooks.d.ts.map +1 -0
  1127. package/lib/typescript/api/hooks/screenHooks.d.ts +74 -0
  1128. package/lib/typescript/api/hooks/screenHooks.d.ts.map +1 -0
  1129. package/lib/typescript/api/hooks/useArrangement.d.ts +13 -0
  1130. package/lib/typescript/api/hooks/useArrangement.d.ts.map +1 -0
  1131. package/lib/typescript/api/hooks/useHinge.d.ts +16 -0
  1132. package/lib/typescript/api/hooks/useHinge.d.ts.map +1 -0
  1133. package/lib/typescript/api/hooks/useNavigation.d.ts +108 -0
  1134. package/lib/typescript/api/hooks/useNavigation.d.ts.map +1 -0
  1135. package/lib/typescript/api/hooks/usePendingLink.d.ts +7 -0
  1136. package/lib/typescript/api/hooks/usePendingLink.d.ts.map +1 -0
  1137. package/lib/typescript/api/hooks/usePreview.d.ts +29 -0
  1138. package/lib/typescript/api/hooks/usePreview.d.ts.map +1 -0
  1139. package/lib/typescript/api/hooks/useReservedRegions.d.ts +13 -0
  1140. package/lib/typescript/api/hooks/useReservedRegions.d.ts.map +1 -0
  1141. package/lib/typescript/api/hooks/useSafeAreaInsets.d.ts +14 -0
  1142. package/lib/typescript/api/hooks/useSafeAreaInsets.d.ts.map +1 -0
  1143. package/lib/typescript/api/index.d.ts +60 -0
  1144. package/lib/typescript/api/index.d.ts.map +1 -0
  1145. package/lib/typescript/api/layout/Root.d.ts +47 -0
  1146. package/lib/typescript/api/layout/Root.d.ts.map +1 -0
  1147. package/lib/typescript/api/layout/Screen.d.ts +32 -0
  1148. package/lib/typescript/api/layout/Screen.d.ts.map +1 -0
  1149. package/lib/typescript/api/layout/SideMenu.d.ts +33 -0
  1150. package/lib/typescript/api/layout/SideMenu.d.ts.map +1 -0
  1151. package/lib/typescript/api/layout/SplitView.d.ts +48 -0
  1152. package/lib/typescript/api/layout/SplitView.d.ts.map +1 -0
  1153. package/lib/typescript/api/layout/Stack.d.ts +21 -0
  1154. package/lib/typescript/api/layout/Stack.d.ts.map +1 -0
  1155. package/lib/typescript/api/layout/Tabs.d.ts +120 -0
  1156. package/lib/typescript/api/layout/Tabs.d.ts.map +1 -0
  1157. package/lib/typescript/api/layout/element.d.ts +52 -0
  1158. package/lib/typescript/api/layout/element.d.ts.map +1 -0
  1159. package/lib/typescript/api/linking/linkPaths.d.ts +31 -0
  1160. package/lib/typescript/api/linking/linkPaths.d.ts.map +1 -0
  1161. package/lib/typescript/api/linking/linking.d.ts +37 -0
  1162. package/lib/typescript/api/linking/linking.d.ts.map +1 -0
  1163. package/lib/typescript/api/linking/pendingLinks.d.ts +8 -0
  1164. package/lib/typescript/api/linking/pendingLinks.d.ts.map +1 -0
  1165. package/lib/typescript/api/linking/types.d.ts +105 -0
  1166. package/lib/typescript/api/linking/types.d.ts.map +1 -0
  1167. package/lib/typescript/api/navigation.d.ts +115 -0
  1168. package/lib/typescript/api/navigation.d.ts.map +1 -0
  1169. package/lib/typescript/api/options/OptionsChain.d.ts +47 -0
  1170. package/lib/typescript/api/options/OptionsChain.d.ts.map +1 -0
  1171. package/lib/typescript/api/options/ScreenOptions.d.ts +32 -0
  1172. package/lib/typescript/api/options/ScreenOptions.d.ts.map +1 -0
  1173. package/lib/typescript/api/options/buttons.d.ts +35 -0
  1174. package/lib/typescript/api/options/buttons.d.ts.map +1 -0
  1175. package/lib/typescript/api/safeArea/ANNSafeAreaViewNativeComponent.d.ts +20 -0
  1176. package/lib/typescript/api/safeArea/ANNSafeAreaViewNativeComponent.d.ts.map +1 -0
  1177. package/lib/typescript/api/safeArea/screenInsets.d.ts +20 -0
  1178. package/lib/typescript/api/safeArea/screenInsets.d.ts.map +1 -0
  1179. package/lib/typescript/api/safeArea/screenRegions.d.ts +24 -0
  1180. package/lib/typescript/api/safeArea/screenRegions.d.ts.map +1 -0
  1181. package/lib/typescript/api/screens/ScreenBoundary.d.ts +34 -0
  1182. package/lib/typescript/api/screens/ScreenBoundary.d.ts.map +1 -0
  1183. package/lib/typescript/api/screens/arrangement.d.ts +70 -0
  1184. package/lib/typescript/api/screens/arrangement.d.ts.map +1 -0
  1185. package/lib/typescript/api/screens/defineScreen.d.ts +41 -0
  1186. package/lib/typescript/api/screens/defineScreen.d.ts.map +1 -0
  1187. package/lib/typescript/api/screens/nativeScreenCalls.d.ts +3 -0
  1188. package/lib/typescript/api/screens/nativeScreenCalls.d.ts.map +1 -0
  1189. package/lib/typescript/api/screens/nativeScreens.d.ts +47 -0
  1190. package/lib/typescript/api/screens/nativeScreens.d.ts.map +1 -0
  1191. package/lib/typescript/api/screens/registerScreens.d.ts +61 -0
  1192. package/lib/typescript/api/screens/registerScreens.d.ts.map +1 -0
  1193. package/lib/typescript/api/slots/ANNSlotNativeComponent.d.ts +15 -0
  1194. package/lib/typescript/api/slots/ANNSlotNativeComponent.d.ts.map +1 -0
  1195. package/lib/typescript/api/slots/SlotHost.d.ts +8 -0
  1196. package/lib/typescript/api/slots/SlotHost.d.ts.map +1 -0
  1197. package/lib/typescript/api/state/navigationState.d.ts +26 -0
  1198. package/lib/typescript/api/state/navigationState.d.ts.map +1 -0
  1199. package/lib/typescript/api/testIDs.d.ts +12 -0
  1200. package/lib/typescript/api/testIDs.d.ts.map +1 -0
  1201. package/lib/typescript/api/theme/theme.d.ts +70 -0
  1202. package/lib/typescript/api/theme/theme.d.ts.map +1 -0
  1203. package/lib/typescript/api/types.d.ts +64 -0
  1204. package/lib/typescript/api/types.d.ts.map +1 -0
  1205. package/lib/typescript/engine/backListeners.d.ts +8 -0
  1206. package/lib/typescript/engine/backListeners.d.ts.map +1 -0
  1207. package/lib/typescript/engine/buttons.d.ts +11 -0
  1208. package/lib/typescript/engine/buttons.d.ts.map +1 -0
  1209. package/lib/typescript/engine/commands.d.ts +38 -0
  1210. package/lib/typescript/engine/commands.d.ts.map +1 -0
  1211. package/lib/typescript/engine/events.d.ts +17 -0
  1212. package/lib/typescript/engine/events.d.ts.map +1 -0
  1213. package/lib/typescript/engine/ids.d.ts +3 -0
  1214. package/lib/typescript/engine/ids.d.ts.map +1 -0
  1215. package/lib/typescript/engine/launchState.d.ts +25 -0
  1216. package/lib/typescript/engine/launchState.d.ts.map +1 -0
  1217. package/lib/typescript/engine/layout.d.ts +32 -0
  1218. package/lib/typescript/engine/layout.d.ts.map +1 -0
  1219. package/lib/typescript/engine/mergeOptions.d.ts +6 -0
  1220. package/lib/typescript/engine/mergeOptions.d.ts.map +1 -0
  1221. package/lib/typescript/engine/native.d.ts +22 -0
  1222. package/lib/typescript/engine/native.d.ts.map +1 -0
  1223. package/lib/typescript/engine/nativeScreens.d.ts +49 -0
  1224. package/lib/typescript/engine/nativeScreens.d.ts.map +1 -0
  1225. package/lib/typescript/engine/options.d.ts +12 -0
  1226. package/lib/typescript/engine/options.d.ts.map +1 -0
  1227. package/lib/typescript/engine/places.d.ts +57 -0
  1228. package/lib/typescript/engine/places.d.ts.map +1 -0
  1229. package/lib/typescript/engine/props.d.ts +10 -0
  1230. package/lib/typescript/engine/props.d.ts.map +1 -0
  1231. package/lib/typescript/engine/reactMeasures.d.ts +3 -0
  1232. package/lib/typescript/engine/reactMeasures.d.ts.map +1 -0
  1233. package/lib/typescript/engine/rememberedOptions.d.ts +28 -0
  1234. package/lib/typescript/engine/rememberedOptions.d.ts.map +1 -0
  1235. package/lib/typescript/engine/screens.d.ts +90 -0
  1236. package/lib/typescript/engine/screens.d.ts.map +1 -0
  1237. package/lib/typescript/engine/slots.d.ts +71 -0
  1238. package/lib/typescript/engine/slots.d.ts.map +1 -0
  1239. package/lib/typescript/engine/tabs.d.ts +24 -0
  1240. package/lib/typescript/engine/tabs.d.ts.map +1 -0
  1241. package/lib/typescript/index.d.ts +3 -0
  1242. package/lib/typescript/index.d.ts.map +1 -0
  1243. package/lib/typescript/interfaces/ComponentEvents.d.ts +189 -0
  1244. package/lib/typescript/interfaces/ComponentEvents.d.ts.map +1 -0
  1245. package/lib/typescript/interfaces/Events.d.ts +199 -0
  1246. package/lib/typescript/interfaces/Events.d.ts.map +1 -0
  1247. package/lib/typescript/interfaces/Layout.d.ts +150 -0
  1248. package/lib/typescript/interfaces/Layout.d.ts.map +1 -0
  1249. package/lib/typescript/interfaces/Options.d.ts +93 -0
  1250. package/lib/typescript/interfaces/Options.d.ts.map +1 -0
  1251. package/lib/typescript/interfaces/options/animations.d.ts +452 -0
  1252. package/lib/typescript/interfaces/options/animations.d.ts.map +1 -0
  1253. package/lib/typescript/interfaces/options/bottomTabs.d.ts +462 -0
  1254. package/lib/typescript/interfaces/options/bottomTabs.d.ts.map +1 -0
  1255. package/lib/typescript/interfaces/options/buttons.d.ts +331 -0
  1256. package/lib/typescript/interfaces/options/buttons.d.ts.map +1 -0
  1257. package/lib/typescript/interfaces/options/common.d.ts +51 -0
  1258. package/lib/typescript/interfaces/options/common.d.ts.map +1 -0
  1259. package/lib/typescript/interfaces/options/modals.d.ts +202 -0
  1260. package/lib/typescript/interfaces/options/modals.d.ts.map +1 -0
  1261. package/lib/typescript/interfaces/options/preview.d.ts +40 -0
  1262. package/lib/typescript/interfaces/options/preview.d.ts.map +1 -0
  1263. package/lib/typescript/interfaces/options/sideMenu.d.ts +130 -0
  1264. package/lib/typescript/interfaces/options/sideMenu.d.ts.map +1 -0
  1265. package/lib/typescript/interfaces/options/splitView.d.ts +118 -0
  1266. package/lib/typescript/interfaces/options/splitView.d.ts.map +1 -0
  1267. package/lib/typescript/interfaces/options/stack.d.ts +109 -0
  1268. package/lib/typescript/interfaces/options/stack.d.ts.map +1 -0
  1269. package/lib/typescript/interfaces/options/system.d.ts +238 -0
  1270. package/lib/typescript/interfaces/options/system.d.ts.map +1 -0
  1271. package/lib/typescript/interfaces/options/toolbar.d.ts +45 -0
  1272. package/lib/typescript/interfaces/options/toolbar.d.ts.map +1 -0
  1273. package/lib/typescript/interfaces/options/topBar.d.ts +804 -0
  1274. package/lib/typescript/interfaces/options/topBar.d.ts.map +1 -0
  1275. package/lib/typescript/package.json +1 -0
  1276. package/package.json +189 -4
  1277. package/react-native.config.js +22 -0
  1278. package/src/ARCHITECTURE.md +289 -0
  1279. package/src/adapters/NativeANNTurboEventEmitter.ts +15 -0
  1280. package/src/adapters/NativeANNTurboModule.ts +100 -0
  1281. package/src/api/app/AppRegistry.ts +57 -0
  1282. package/src/api/app/activeApp.ts +20 -0
  1283. package/src/api/app/createNavigation.ts +566 -0
  1284. package/src/api/app/roots.ts +40 -0
  1285. package/src/api/app/splash.ts +154 -0
  1286. package/src/api/app/startFailure.tsx +39 -0
  1287. package/src/api/arrangement/arrangementState.ts +98 -0
  1288. package/src/api/commands/commands.ts +371 -0
  1289. package/src/api/commands/errors.ts +99 -0
  1290. package/src/api/commands/presentation.ts +78 -0
  1291. package/src/api/commands/sideMenus.ts +122 -0
  1292. package/src/api/commands/transitions.ts +133 -0
  1293. package/src/api/context/appContext.ts +23 -0
  1294. package/src/api/events/navigationEvents.ts +175 -0
  1295. package/src/api/events/screenLifecycle.ts +27 -0
  1296. package/src/api/events/tabPresses.ts +35 -0
  1297. package/src/api/hinge/hinge.ts +84 -0
  1298. package/src/api/hooks/appHooks.ts +37 -0
  1299. package/src/api/hooks/screenHooks.ts +272 -0
  1300. package/src/api/hooks/useArrangement.ts +26 -0
  1301. package/src/api/hooks/useHinge.ts +26 -0
  1302. package/src/api/hooks/useNavigation.ts +267 -0
  1303. package/src/api/hooks/usePendingLink.ts +11 -0
  1304. package/src/api/hooks/usePreview.ts +111 -0
  1305. package/src/api/hooks/useReservedRegions.ts +26 -0
  1306. package/src/api/hooks/useSafeAreaInsets.ts +23 -0
  1307. package/src/api/index.ts +139 -0
  1308. package/src/api/layout/Root.ts +113 -0
  1309. package/src/api/layout/Screen.ts +55 -0
  1310. package/src/api/layout/SideMenu.ts +87 -0
  1311. package/src/api/layout/SplitView.ts +146 -0
  1312. package/src/api/layout/Stack.ts +48 -0
  1313. package/src/api/layout/Tabs.ts +339 -0
  1314. package/src/api/layout/element.ts +114 -0
  1315. package/src/api/linking/linkPaths.ts +159 -0
  1316. package/src/api/linking/linking.ts +242 -0
  1317. package/src/api/linking/pendingLinks.ts +37 -0
  1318. package/src/api/linking/types.ts +130 -0
  1319. package/src/api/navigation.ts +269 -0
  1320. package/src/api/options/OptionsChain.ts +142 -0
  1321. package/src/api/options/ScreenOptions.ts +81 -0
  1322. package/src/api/options/buttons.ts +43 -0
  1323. package/src/api/safeArea/ANNSafeAreaViewNativeComponent.ts +28 -0
  1324. package/src/api/safeArea/screenInsets.ts +86 -0
  1325. package/src/api/safeArea/screenRegions.ts +99 -0
  1326. package/src/api/screens/ScreenBoundary.tsx +52 -0
  1327. package/src/api/screens/arrangement.ts +106 -0
  1328. package/src/api/screens/defineScreen.ts +57 -0
  1329. package/src/api/screens/nativeScreenCalls.ts +59 -0
  1330. package/src/api/screens/nativeScreens.ts +58 -0
  1331. package/src/api/screens/registerScreens.tsx +364 -0
  1332. package/src/api/slots/ANNSlotNativeComponent.ts +23 -0
  1333. package/src/api/slots/SlotHost.tsx +64 -0
  1334. package/src/api/state/navigationState.ts +95 -0
  1335. package/src/api/testIDs.ts +11 -0
  1336. package/src/api/theme/theme.ts +184 -0
  1337. package/src/api/types.ts +95 -0
  1338. package/src/engine/backListeners.ts +36 -0
  1339. package/src/engine/buttons.ts +91 -0
  1340. package/src/engine/commands.ts +469 -0
  1341. package/src/engine/events.ts +24 -0
  1342. package/src/engine/ids.ts +7 -0
  1343. package/src/engine/launchState.ts +35 -0
  1344. package/src/engine/layout.ts +247 -0
  1345. package/src/engine/mergeOptions.ts +20 -0
  1346. package/src/engine/native.ts +51 -0
  1347. package/src/engine/nativeScreens.ts +263 -0
  1348. package/src/engine/options.ts +165 -0
  1349. package/src/engine/places.ts +205 -0
  1350. package/src/engine/props.ts +45 -0
  1351. package/src/engine/reactMeasures.ts +24 -0
  1352. package/src/engine/rememberedOptions.ts +111 -0
  1353. package/src/engine/screens.tsx +239 -0
  1354. package/src/engine/slots.ts +191 -0
  1355. package/src/engine/tabs.ts +95 -0
  1356. package/src/index.ts +3 -0
  1357. package/src/interfaces/ComponentEvents.ts +214 -0
  1358. package/src/interfaces/Events.ts +227 -0
  1359. package/src/interfaces/Layout.ts +161 -0
  1360. package/src/interfaces/Options.ts +175 -0
  1361. package/src/interfaces/options/animations.ts +480 -0
  1362. package/src/interfaces/options/bottomTabs.ts +481 -0
  1363. package/src/interfaces/options/buttons.ts +364 -0
  1364. package/src/interfaces/options/common.ts +76 -0
  1365. package/src/interfaces/options/modals.ts +217 -0
  1366. package/src/interfaces/options/preview.ts +40 -0
  1367. package/src/interfaces/options/sideMenu.ts +132 -0
  1368. package/src/interfaces/options/splitView.ts +127 -0
  1369. package/src/interfaces/options/stack.ts +110 -0
  1370. package/src/interfaces/options/system.ts +252 -0
  1371. package/src/interfaces/options/toolbar.ts +47 -0
  1372. package/src/interfaces/options/topBar.ts +828 -0
@@ -0,0 +1,509 @@
1
+ package dev.apexnative.navigation.viewcontrollers.splitview
2
+
3
+ import android.app.Activity
4
+ import android.os.Build
5
+ import android.transition.AutoTransition
6
+ import android.transition.Transition
7
+ import android.transition.TransitionManager
8
+ import android.view.View
9
+ import android.view.ViewGroup.LayoutParams.MATCH_PARENT
10
+ import androidx.core.view.doOnNextLayout
11
+ import androidx.slidingpanelayout.widget.SlidingPaneLayout
12
+ import dev.apexnative.navigation.NavigationActivity
13
+ import dev.apexnative.navigation.options.Options
14
+ import dev.apexnative.navigation.options.SplitViewGroupOptions
15
+ import dev.apexnative.navigation.options.SplitViewOptions
16
+ import dev.apexnative.navigation.react.CommandListener
17
+ import dev.apexnative.navigation.react.CommandListenerAdapter
18
+ import dev.apexnative.navigation.react.events.EventEmitter
19
+ import dev.apexnative.navigation.system.SystemUiOwner
20
+ import dev.apexnative.navigation.utils.TestIds
21
+ import dev.apexnative.navigation.utils.UiThread
22
+ import dev.apexnative.navigation.utils.UiUtils
23
+ import dev.apexnative.navigation.viewcontrollers.child.ChildControllersRegistry
24
+ import dev.apexnative.navigation.viewcontrollers.navigator.BackCallbackState
25
+ import dev.apexnative.navigation.viewcontrollers.navigator.Navigator
26
+ import dev.apexnative.navigation.viewcontrollers.parent.ChildOffsetFromRest
27
+ import dev.apexnative.navigation.viewcontrollers.parent.ParentController
28
+ import dev.apexnative.navigation.viewcontrollers.parent.ReturnsScreenFromColumn
29
+ import dev.apexnative.navigation.viewcontrollers.parent.ShowsColumns
30
+ import dev.apexnative.navigation.viewcontrollers.parent.ShownChildren
31
+ import dev.apexnative.navigation.viewcontrollers.stack.StackController
32
+ import dev.apexnative.navigation.viewcontrollers.viewcontroller.Presenter
33
+ import dev.apexnative.navigation.viewcontrollers.viewcontroller.ViewController
34
+
35
+ /**
36
+ * A split view: the primary pane beside the secondary one when the width takes both (a tablet, a phone in landscape).
37
+ * On a narrower screen the compact layout shows, or without it the secondary pane goes over the primary one, and back
38
+ * or the back button of its first screen takes it away. Android has no supplementary or inspector column.
39
+ */
40
+ class SplitViewController(
41
+ activity: Activity,
42
+ childRegistry: ChildControllersRegistry,
43
+ id: String,
44
+ presenter: Presenter,
45
+ initialOptions: Options,
46
+ private var split: SplitViewOptions,
47
+ private val primary: ViewController<*>,
48
+ private val secondary: ViewController<*>,
49
+ private val compact: ViewController<*>?,
50
+ private val eventEmitter: EventEmitter,
51
+ ) : ParentController<SplitViewLayout>(activity, childRegistry, id, presenter, initialOptions),
52
+ ReturnsScreenFromColumn, ChildOffsetFromRest, ShowsColumns {
53
+ // Done when the panes stop moving.
54
+ private val whenMoved = mutableListOf<Runnable>()
55
+ // The children told they appeared, and the panes' moves told in the dispatcher's order. The split view appeared
56
+ // (its show ended) until it disappears: only then do the panes' moves tell its children that they appear or
57
+ // disappear; before, its own appearance does.
58
+ private val shownChildren = ShownChildren(::visibleChildren)
59
+ // The app hid the primary pane beside the secondary one.
60
+ private var primaryHidden = false
61
+ private var measured = false
62
+ // What JS was last told of the panes one over the other; null until the first layout.
63
+ private var sentStacked: Boolean? = null
64
+ // A `compactTopColumn` that came after creation, for the next switch into panes one over the other.
65
+ private var laterTopColumn: String? = null
66
+ // The children shown and the current child as the navigator and the system UI were last told.
67
+ private var lastVisible: List<ViewController<*>>? = null
68
+ private var lastCurrent: ViewController<*>? = null
69
+ // The panes have the ids of a `splitView.testID` now.
70
+ private var panesNamed = false
71
+
72
+ private val navigator: Navigator?
73
+ get() = (activity as? NavigationActivity)?.navigator
74
+
75
+ init {
76
+ for (child in childControllers) child.setParentController(this)
77
+ }
78
+
79
+ override fun getChildControllers(): Collection<ViewController<*>> = listOfNotNull(primary, secondary, compact)
80
+
81
+ override fun getCurrentChild(): ViewController<*> {
82
+ if (!isViewCreated) return secondary
83
+ val layout = getView()
84
+ return when {
85
+ layout.isCompact -> compact ?: secondary
86
+ isSliding && !layout.panes.isOpen -> primary
87
+ else -> secondary
88
+ }
89
+ }
90
+
91
+ /**
92
+ * The children that show: the compact layout while it shows; side by side the primary pane, unless the app hid it,
93
+ * and the secondary one; one over the other the open pane, the secondary when it lies over the primary one, else
94
+ * the primary. Before the view measures, the current child: the split view tells the navigator when they change.
95
+ */
96
+ override fun visibleChildren(): List<ViewController<*>> {
97
+ val layout = peekView() ?: return listOf(getCurrentChild())
98
+ val wide = layout.isWide ?: return listOf(getCurrentChild())
99
+ return when {
100
+ layout.isCompact -> listOf(compact ?: secondary)
101
+ wide -> if (primaryHidden) listOf(secondary) else listOf(primary, secondary)
102
+ layout.panes.isOpen -> listOf(secondary)
103
+ else -> listOf(primary)
104
+ }
105
+ }
106
+
107
+ // A wait for the split view (as a root, a modal) waits for what it shows: a pane that lies closed or is hidden
108
+ // renders nothing.
109
+ override fun waitedChildren(): List<ViewController<*>> = visibleChildren()
110
+
111
+ // A split view laid out unseen (in a made tab that isn't selected, in a closed side of a side menu) asks its
112
+ // parent for the children it shows: their screens measure their safe area there too.
113
+ override fun measuresThoughNotShown(child: ViewController<*>): Boolean =
114
+ child in visibleChildren() && parentController?.measuresThoughNotShown(this) == true
115
+
116
+ // One pane over the other: the width doesn't take them side by side, and there is no compact layout.
117
+ private val isSliding: Boolean
118
+ get() = isViewCreated && getView().isWide == false && !getView().isCompact
119
+
120
+ override fun createView(): SplitViewLayout {
121
+ val primaryWidth = dp(split.width)
122
+ val secondaryWidth = dp(SplitViewOptions.PANE_WIDTH)
123
+ val layout = SplitViewLayout(activity, primaryWidth + secondaryWidth)
124
+ val panes = layout.panes
125
+ panes.addView(primary.getView(), SlidingPaneLayout.LayoutParams(primaryWidth, MATCH_PARENT))
126
+ panes.addView(
127
+ secondary.getView(),
128
+ SlidingPaneLayout.LayoutParams(secondaryWidth, MATCH_PARENT).apply { weight = 1f }
129
+ )
130
+ compact?.let { layout.setCompact(it.getView()) }
131
+ panes.lockMode = lockMode()
132
+ panes.addPanelSlideListener(object : SlidingPaneLayout.PanelSlideListener {
133
+ override fun onPanelSlide(panel: View, slideOffset: Float) {
134
+ revealPanes()
135
+ // The pane that comes into view starts to appear as it starts to slide.
136
+ shownChildren.moveStarted(listOf(primary, secondary))
137
+ }
138
+
139
+ override fun onPanelOpened(panel: View) = onPanesMoved()
140
+ override fun onPanelClosed(panel: View) = onPanesMoved()
141
+ })
142
+ layout.onWidthChanged = Runnable { onWidthChanged(layout) }
143
+ applyTestIds(primary.getView(), secondary.getView())
144
+ return layout
145
+ }
146
+
147
+ private fun lockMode(): Int =
148
+ if (split.presentsWithGesture) SlidingPaneLayout.LOCK_MODE_UNLOCKED else SlidingPaneLayout.LOCK_MODE_LOCKED
149
+
150
+ private fun onWidthChanged(layout: SplitViewLayout) {
151
+ primary.getView().visibility = if (primaryHidden && layout.isWide == true) View.GONE else View.VISIBLE
152
+ // Where a later `compactTopColumn` puts the pane over the other at this switch: true open, false closed.
153
+ val settle = if (measured && isSliding) laterTopColumn?.let { it == SECONDARY } else null
154
+ if (!measured) {
155
+ measured = true
156
+ // The first layout one over the other takes the value as it is now; side by side, a value that came after
157
+ // creation waits for the first switch into panes one over the other.
158
+ if (isSliding) laterTopColumn = null
159
+ // Before the first layout the pane opens without moving.
160
+ if (isSliding && split.compactTopColumn == SECONDARY) layout.panes.openPane()
161
+ } else if (settle != null) {
162
+ laterTopColumn = null
163
+ // Asked before the panes measure, as at the first layout: a layout that follows a change of their width
164
+ // lays the pane out there without moving; otherwise it moves there once the panes have laid out.
165
+ if (settle) layout.panes.openPane() else layout.panes.closePane()
166
+ }
167
+ layout.post {
168
+ if (!isDestroyed) {
169
+ updateBackButton()
170
+ sendStacked()
171
+ onPanesMoved()
172
+ settle?.let(::settlePane)
173
+ }
174
+ }
175
+ }
176
+
177
+ // The pane comes to the place a later `compactTopColumn` gives, with its own motion, when the layout didn't put it
178
+ // there; the end of its move tells the children.
179
+ private fun settlePane(open: Boolean) {
180
+ val panes = getView().panes
181
+ if (!isSliding || panes.isOpen == open) return
182
+ revealPanes()
183
+ if (open) panes.openPane() else panes.closePane()
184
+ }
185
+
186
+ /**
187
+ * New `splitView` options, resolved with the defaults: after a `mergeOptions` into the split view or into a screen
188
+ * inside it, and after `setDefaultOptions` (its presenter's repaint). `width` and `presentsWithGesture` apply at
189
+ * once; a new `compactTopColumn` at the next switch into panes one over the other; `testID` names the panes again.
190
+ * Main thread only.
191
+ */
192
+ internal fun setSplitOptions(next: SplitViewOptions) {
193
+ if (isDestroyed) return
194
+ if (next.compactTopColumn != split.compactTopColumn) laterTopColumn = next.compactTopColumn ?: PRIMARY
195
+ split = next
196
+ val layout = peekView() ?: return
197
+ applyTestIds(primary.getView(), secondary.getView())
198
+ layout.panes.lockMode = lockMode()
199
+ val primaryWidth = dp(next.width)
200
+ val primaryView = primary.getView()
201
+ primaryView.layoutParams?.let { params ->
202
+ if (params.width != primaryWidth) {
203
+ params.width = primaryWidth
204
+ primaryView.layoutParams = params
205
+ }
206
+ }
207
+ layout.panesWidth = primaryWidth + dp(SplitViewOptions.PANE_WIDTH)
208
+ }
209
+
210
+ // The split view's own `splitView`, with what the screens inside merged into it and the defaults.
211
+ private fun resolvedSplit(): SplitViewGroupOptions = resolveCurrentOptions(presenter.defaultOptions).splitView
212
+
213
+ // `splitView.testID` names the two panes: `<testID>.primary`, `<testID>.secondary`; without it they have none.
214
+ private fun applyTestIds(primaryView: View, secondaryView: View) {
215
+ val testId = resolvedSplit().testID.get(null)?.ifEmpty { null }
216
+ nameView(primaryView, testId?.let { "$it.primary" })
217
+ nameView(secondaryView, testId?.let { "$it.secondary" })
218
+ panesNamed = testId != null
219
+ }
220
+
221
+ // Over the view's own accessibility delegate, which a column's layout may have (a drawer). Android 10+ gives that
222
+ // delegate; before it the id replaces it, so the pane keeps its `resource-id`, and a pane never named is left as
223
+ // it is.
224
+ private fun nameView(view: View, testId: String?) {
225
+ if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) {
226
+ TestIds.applyOver(view, testId)
227
+ } else if (testId != null || panesNamed) {
228
+ TestIds.apply(view, testId)
229
+ }
230
+ }
231
+
232
+ // `mergeOptions` with the split view's id: its own options, the layouts around, then its new `splitView`.
233
+ override fun mergeOptions(options: Options) {
234
+ super.mergeOptions(options)
235
+ if (options.splitView.hasValue()) setSplitOptions(resolvedSplit().toSplitViewOptions())
236
+ }
237
+
238
+ // `mergeOptions` of a screen inside: the `splitView` it names goes into the split view's own options, which every
239
+ // later apply reads, and applies; the rest goes on to the layouts around.
240
+ override fun mergeChildOptions(options: Options, child: ViewController<*>) {
241
+ if (options.splitView.hasValue()) {
242
+ val merged = options.splitView
243
+ changeOptions { it.splitView.mergeWith(merged) }
244
+ setSplitOptions(resolvedSplit().toSplitViewOptions())
245
+ }
246
+ val rest = options.copy().apply { splitView = SplitViewGroupOptions() }
247
+ performOnParentController { it.mergeChildOptions(rest, this) }
248
+ }
249
+
250
+ // JS learns whether the panes show one over the other: the first screen of the secondary pane can pop then, and
251
+ // the pane goes. The first value always goes, as a layout sent again with the same ids starts anew in JS.
252
+ private fun sendStacked() {
253
+ val stacked = isSliding
254
+ if (stacked == sentStacked) return
255
+ sentStacked = stacked
256
+ eventEmitter.emitSplitViewColumnsStacked(id, stacked)
257
+ }
258
+
259
+ // Those that left view disappeared and the children that came into it appeared, once the split view appeared, and
260
+ // the calls waiting for the panes are done. A pane hidden under the other one or brought back is not laid out
261
+ // again: its screens learn it here. The panes' state decides what shows ([visibleChildren]), not the views, which
262
+ // show nothing while the activity is stopped.
263
+ private fun onPanesMoved() {
264
+ if (isViewCreated && !isDestroyed) hideCoveredPane()
265
+ // The pane over the other is open or closed only once it stops, after its last frame: back closes it or not.
266
+ BackCallbackState.update()
267
+ shownChildren.moved()
268
+ val done = whenMoved.toList()
269
+ whenMoved.clear()
270
+ done.forEach { it.run() }
271
+ tellShownChanged()
272
+ }
273
+
274
+ // A layer that waits to show the split view waits for the panes that show now, a modal's sheet holds the screen
275
+ // shown now; the system UI follows the current child, which changes with no screen appearing when the panes move or
276
+ // the width changes.
277
+ private fun tellShownChanged() {
278
+ if (isDestroyed) return
279
+ val visible = visibleChildren()
280
+ if (visible != lastVisible) {
281
+ lastVisible = visible
282
+ navigator?.shownScreensChanged(this)
283
+ }
284
+ val current = getCurrentChild()
285
+ if (current !== lastCurrent) {
286
+ lastCurrent = current
287
+ SystemUiOwner.of(activity)?.invalidate()
288
+ }
289
+ }
290
+
291
+ // One pane over the other, the one under it is hidden: it disappears, and accessibility doesn't read it.
292
+ private fun hideCoveredPane() {
293
+ val open = getView().panes.isOpen
294
+ val primaryView = primary.getView()
295
+ primaryView.visibility = when {
296
+ getView().isWide == true -> if (primaryHidden) View.GONE else View.VISIBLE
297
+ isSliding && open -> View.INVISIBLE
298
+ else -> View.VISIBLE
299
+ }
300
+ secondary.getView().visibility = if (isSliding && !open) View.INVISIBLE else View.VISIBLE
301
+ }
302
+
303
+ // The panes move: both show while they do.
304
+ private fun revealPanes() {
305
+ for (pane in listOf(primary.getView(), secondary.getView())) {
306
+ if (pane.visibility == View.INVISIBLE) pane.visibility = View.VISIBLE
307
+ }
308
+ }
309
+
310
+ // The children its appearance told it appeared ([visibleChildren]): a pane that the panes' moves hide afterwards
311
+ // disappears.
312
+ override fun onViewWillAppear() {
313
+ super.onViewWillAppear()
314
+ shownChildren.containerWillAppear()
315
+ }
316
+
317
+ override fun onViewDidAppear() {
318
+ shownChildren.containerDidAppear()
319
+ super.onViewDidAppear()
320
+ onPanesMoved()
321
+ }
322
+
323
+ override fun onViewDisappear() {
324
+ shownChildren.containerDisappeared()
325
+ super.onViewDisappear()
326
+ }
327
+
328
+ // The calls waiting for the panes are answered as the split view goes (a newer root, the activity going):
329
+ // JavaScript lives on and waits for them. Posted, so the navigation state they send is read once the teardown is
330
+ // over. A JS reload drops them: the JavaScript that sent them is gone.
331
+ override fun destroy() {
332
+ val waiting = whenMoved.toList()
333
+ whenMoved.clear()
334
+ super.destroy()
335
+ if (waiting.isEmpty() || Navigator.isReloading()) return
336
+ UiThread.post { waiting.forEach { it.run() } }
337
+ }
338
+
339
+ override fun sendOnNavigationButtonPressed(buttonId: String) {
340
+ getCurrentChild().sendOnNavigationButtonPressed(buttonId)
341
+ }
342
+
343
+ override fun handleBack(listener: CommandListener): Boolean {
344
+ if (!isViewCreated) return super.handleBack(listener)
345
+ val layout = getView()
346
+ val handled = when {
347
+ layout.isCompact -> compact?.handleBack(listener) == true
348
+ isSliding && !layout.panes.isOpen -> primary.handleBack(listener)
349
+ isSliding -> secondary.handleBack(listener) || closeSecondary(secondary)
350
+ else -> secondary.handleBack(listener) || primary.handleBack(listener)
351
+ }
352
+ return handled || super.handleBack(listener)
353
+ }
354
+
355
+ // As handleBack; the secondary pane over the primary one, open, is taken away by closeSecondary.
356
+ override fun canHandleBack(): Boolean {
357
+ if (!isViewCreated) return super.canHandleBack()
358
+ val layout = getView()
359
+ val can = when {
360
+ layout.isCompact -> compact?.canHandleBack() == true
361
+ isSliding && !layout.panes.isOpen -> primary.canHandleBack()
362
+ isSliding -> true
363
+ else -> secondary.canHandleBack() || primary.canHandleBack()
364
+ }
365
+ return can || super.canHandleBack()
366
+ }
367
+
368
+ /**
369
+ * How far the pane of [child] is from where it rests: the secondary pane sliding over the primary one rests over
370
+ * it, closed or on its way. Zero for the other children.
371
+ */
372
+ fun paneOffset(child: ViewController<*>): Int {
373
+ if (child != secondary || !isSliding || !child.isViewCreated) return 0
374
+ val panes = getView().panes
375
+ var pane: View = child.getView()
376
+ while (pane.parent !== panes) pane = pane.parent as? View ?: return 0
377
+ return if (panes.layoutDirection == View.LAYOUT_DIRECTION_RTL) panes.width - pane.right else -pane.left
378
+ }
379
+
380
+ // The capabilities the core asks for: the pop of the first screen of the secondary pane closes it, and the safe
381
+ // area of a screen of the pane counts where the pane comes to rest.
382
+ override fun returnsScreenFromColumn(screen: ViewController<*>, done: Runnable): Boolean =
383
+ closeSecondary(screen, done)
384
+
385
+ override fun childOffsetFromRest(child: ViewController<*>): Int = paneOffset(child)
386
+
387
+ /**
388
+ * The first screen of the secondary pane over the primary one goes back: the pane goes away, and [done] runs once
389
+ * it has stopped moving. False elsewhere, and [done] doesn't run.
390
+ */
391
+ @JvmOverloads
392
+ fun closeSecondary(from: ViewController<*>, done: Runnable? = null): Boolean {
393
+ if (from != secondary || !isSliding || !getView().panes.isOpen) return false
394
+ done?.let { whenMoved += it }
395
+ revealPanes()
396
+ val panes = getView().panes
397
+ when {
398
+ !panes.closePane() -> onPanesMoved()
399
+ // Before its first layout since it was attached the pane doesn't move: it is laid out closed, and nothing
400
+ // tells it. Until then it still reads as open, so the panes have moved once they have laid out.
401
+ !panes.isLaidOut -> {
402
+ panes.doOnNextLayout { if (!isDestroyed) onPanesMoved() }
403
+ panes.requestLayout()
404
+ }
405
+ }
406
+ return true
407
+ }
408
+
409
+ /**
410
+ * Shows [screen] in the secondary pane in place of what it shows and brings the pane into view. False with the
411
+ * compact layout on screen: the screen goes over [from], the screen the command comes from.
412
+ */
413
+ override fun showScreen(screen: ViewController<*>, from: ViewController<*>, listener: CommandListener): Boolean {
414
+ if (isViewCreated && getView().isCompact) return false
415
+ val stack = secondary as? StackController
416
+ if (stack == null) {
417
+ listener.onError("the 'secondary' column of the split view of the screen '${from.id}' is not a stack")
418
+ return true
419
+ }
420
+ stack.setRoot(listOf(screen), false, object : CommandListenerAdapter() {
421
+ override fun onSuccess(childId: String) {
422
+ updateBackButton()
423
+ showSecondary { listener.onSuccess(childId) }
424
+ }
425
+
426
+ override fun onError(message: String) = listener.onError(message)
427
+ })
428
+ return true
429
+ }
430
+
431
+ private fun showSecondary(done: Runnable) {
432
+ if (!isSliding || getView().panes.isOpen) {
433
+ done.run()
434
+ return
435
+ }
436
+ whenMoved += done
437
+ revealPanes()
438
+ if (!getView().panes.openPane()) onPanesMoved()
439
+ }
440
+
441
+ /** `showColumn` and `hideColumn` of the primary pane; Android has no other column to show or hide. */
442
+ override fun setColumnShown(column: String, shown: Boolean, done: Runnable) {
443
+ if (column != "primary" || !isViewCreated || getView().isCompact || getView().isWide == null) {
444
+ if (column == "primary") primaryHidden = !shown
445
+ done.run()
446
+ return
447
+ }
448
+ val layout = getView()
449
+ if (!isSliding) {
450
+ primaryHidden = !shown
451
+ val view = primary.getView()
452
+ whenMoved += done
453
+ if ((view.visibility == View.VISIBLE) == shown) {
454
+ onPanesMoved()
455
+ return
456
+ }
457
+ // Done when the transition ends: while it runs a hidden pane still counts as shown.
458
+ TransitionManager.beginDelayedTransition(layout.panes, AutoTransition().addListener(object :
459
+ Transition.TransitionListener {
460
+ override fun onTransitionStart(transition: Transition) {}
461
+ override fun onTransitionEnd(transition: Transition) = onPanesMoved()
462
+ override fun onTransitionCancel(transition: Transition) = onPanesMoved()
463
+ override fun onTransitionPause(transition: Transition) {}
464
+ override fun onTransitionResume(transition: Transition) {}
465
+ }))
466
+ view.visibility = if (shown) View.VISIBLE else View.GONE
467
+ layout.panes.requestApplyInsets()
468
+ return
469
+ }
470
+ // One pane over the other: the primary one shows when the secondary one goes.
471
+ if (shown != layout.panes.isOpen) {
472
+ done.run()
473
+ return
474
+ }
475
+ whenMoved += done
476
+ revealPanes()
477
+ val moving = if (shown) layout.panes.closePane() else layout.panes.openPane()
478
+ if (!moving) onPanesMoved()
479
+ }
480
+
481
+ // The first screen of the secondary pane over the primary one has the back button, which takes the pane away.
482
+ private fun updateBackButton() {
483
+ val root = (secondary as? StackController)?.childControllers?.firstOrNull() ?: return
484
+ if (root.initialOptions.topBar.buttons.back.hasValue() || root.options.topBar.buttons.left != null) return
485
+ val visible = isSliding
486
+ if (root.options.topBar.buttons.back.visible.isTrue() == visible) return
487
+ val options = Options()
488
+ if (visible) options.topBar.buttons.back.setVisible() else options.topBar.buttons.back.setHidden()
489
+ root.mergeOptions(options)
490
+ }
491
+
492
+ private fun dp(value: Double) = UiUtils.dpToPx(activity, value.toFloat()).toInt()
493
+
494
+ companion object {
495
+ private const val PRIMARY = "primary"
496
+ private const val SECONDARY = "secondary"
497
+
498
+ /** The split view [controller] is in, if it is in one. */
499
+ @JvmStatic
500
+ fun of(controller: ViewController<*>): SplitViewController? {
501
+ var parent: ViewController<*>? = controller
502
+ while (parent != null) {
503
+ if (parent is SplitViewController) return parent
504
+ parent = parent.parentController
505
+ }
506
+ return null
507
+ }
508
+ }
509
+ }
@@ -0,0 +1,61 @@
1
+ package dev.apexnative.navigation.viewcontrollers.splitview
2
+
3
+ import android.content.Context
4
+ import android.view.View
5
+ import android.widget.FrameLayout
6
+
7
+ /**
8
+ * The panes of a split view, and its compact layout, which shows in their place when the width doesn't take the
9
+ * panes side by side.
10
+ */
11
+ class SplitViewLayout(context: Context, panesWidth: Int) : FrameLayout(context) {
12
+ val panes = SplitPanes(context)
13
+
14
+ /**
15
+ * The least width that takes the panes side by side: the primary pane's and the secondary one's. A new one
16
+ * (`splitView.width` after creation) decides again at the next measure.
17
+ */
18
+ var panesWidth: Int = panesWidth
19
+ internal set(value) {
20
+ if (field == value) return
21
+ field = value
22
+ requestLayout()
23
+ }
24
+
25
+ private var compact: View? = null
26
+
27
+ /** The width takes the panes side by side; null before the first measure. */
28
+ var isWide: Boolean? = null
29
+ private set
30
+
31
+ /** The compact layout shows in place of the panes. */
32
+ var isCompact = false
33
+ private set
34
+
35
+ /** Before the panes measure, when the width goes between the panes side by side and not. */
36
+ var onWidthChanged: Runnable? = null
37
+
38
+ init {
39
+ addView(panes, LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT))
40
+ }
41
+
42
+ fun setCompact(view: View) {
43
+ compact = view
44
+ view.visibility = GONE
45
+ addView(view, LayoutParams(LayoutParams.MATCH_PARENT, LayoutParams.MATCH_PARENT))
46
+ }
47
+
48
+ override fun onMeasure(widthMeasureSpec: Int, heightMeasureSpec: Int) {
49
+ val wide = MeasureSpec.getSize(widthMeasureSpec) >= panesWidth
50
+ if (wide != isWide) {
51
+ isWide = wide
52
+ isCompact = compact != null && !wide
53
+ panes.visibility = if (isCompact) GONE else VISIBLE
54
+ compact?.visibility = if (isCompact) VISIBLE else GONE
55
+ panes.isSideBySide = wide
56
+ onWidthChanged?.run()
57
+ rootWindowInsets?.let { panes.dispatchApplyWindowInsets(it) }
58
+ }
59
+ super.onMeasure(widthMeasureSpec, heightMeasureSpec)
60
+ }
61
+ }
@@ -0,0 +1,25 @@
1
+ package dev.apexnative.navigation.viewcontrollers.splitview
2
+
3
+ import android.app.Activity
4
+ import dev.apexnative.navigation.options.DefaultOptions
5
+ import dev.apexnative.navigation.options.Options
6
+ import dev.apexnative.navigation.options.SplitViewOptions
7
+ import dev.apexnative.navigation.viewcontrollers.viewcontroller.Presenter
8
+ import dev.apexnative.navigation.viewcontrollers.viewcontroller.ViewController
9
+
10
+ /**
11
+ * The presenter of a split view. The split view module applies its own options; what the core gives it here is the
12
+ * repaint after `setDefaultOptions` (`Navigator.repaint`), which reaches a node only through its presenter: the split
13
+ * view's own `splitView` with the new defaults goes to [onSplitOptions], which the layout factory binds to the module
14
+ * as it makes the split view. The split view's own options, not those of its current child: they don't change as the
15
+ * panes move. Main thread only.
16
+ */
17
+ internal class SplitViewPresenter(activity: Activity) : Presenter(activity, DefaultOptions.current) {
18
+ /** Takes the split view's resolved `splitView` as Android reads it. */
19
+ var onSplitOptions: ((SplitViewOptions) -> Unit)? = null
20
+
21
+ override fun onConfigurationChanged(controller: ViewController<*>, options: Options) {
22
+ val split = controller.resolveCurrentOptions(defaultOptions).splitView.toSplitViewOptions()
23
+ onSplitOptions?.invoke(split)
24
+ }
25
+ }
@@ -0,0 +1,19 @@
1
+ package dev.apexnative.navigation.viewcontrollers.stack
2
+
3
+ import android.view.View
4
+ import com.facebook.react.uimanager.PixelUtil.pxToDp
5
+ import dev.apexnative.navigation.react.ScreenInsets
6
+
7
+ /**
8
+ * Where a screen prepared for a push (`preparePush`) shows, in dp: the size of the container its slot fills and the
9
+ * padding of its safe area view, as the push lays it out. JavaScript renders the screen with them before the push, and
10
+ * the slot and the safe area view start their states with them.
11
+ */
12
+ internal data class PreparedFrame(val width: Float, val height: Float, val padding: ScreenInsets.Insets) {
13
+ companion object {
14
+ /** The size of [container] as its slot measures it (`SlotView`), so the slot finds it equal. */
15
+ @JvmStatic
16
+ fun of(container: View, padding: ScreenInsets.Insets) =
17
+ PreparedFrame(container.width.toFloat().pxToDp(), container.height.toFloat().pxToDp(), padding)
18
+ }
19
+ }