@apexnative/navigation 0.0.0-stage → 1.0.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/ApexNavigation.podspec +42 -0
- package/CHANGELOG.md +8 -0
- package/LICENSE +21 -0
- package/README.md +76 -2
- package/android/CLAUDE.md +183 -0
- package/android/CORE.md +219 -0
- package/android/MATERIAL_SYMBOLS_LICENSE.txt +205 -0
- package/android/RECIPES.md +39 -0
- package/android/build.gradle +108 -0
- package/android/consumer-rules.pro +2 -0
- package/android/src/main/AndroidManifest.xml +9 -0
- package/android/src/main/java/dev/apexnative/navigation/EdgeToEdgeDecision.kt +25 -0
- package/android/src/main/java/dev/apexnative/navigation/NavigationActivity.kt +339 -0
- package/android/src/main/java/dev/apexnative/navigation/NavigationApplication.kt +90 -0
- package/android/src/main/java/dev/apexnative/navigation/NavigationPackage.kt +37 -0
- package/android/src/main/java/dev/apexnative/navigation/customrow/BottomTabsCustomRowOptions.kt +85 -0
- package/android/src/main/java/dev/apexnative/navigation/layout/LayoutChecks.kt +51 -0
- package/android/src/main/java/dev/apexnative/navigation/layout/LayoutException.kt +7 -0
- package/android/src/main/java/dev/apexnative/navigation/layout/LayoutNode.kt +118 -0
- package/android/src/main/java/dev/apexnative/navigation/layout/LayoutReader.kt +274 -0
- package/android/src/main/java/dev/apexnative/navigation/layout/LayoutType.kt +35 -0
- package/android/src/main/java/dev/apexnative/navigation/nativescreen/NativeScreenCalls.kt +61 -0
- package/android/src/main/java/dev/apexnative/navigation/nativescreen/NativeScreenContext.kt +84 -0
- package/android/src/main/java/dev/apexnative/navigation/nativescreen/NativeScreenCreator.kt +17 -0
- package/android/src/main/java/dev/apexnative/navigation/options/AnimationsOptions.kt +54 -0
- package/android/src/main/java/dev/apexnative/navigation/options/BottomTabOptions.kt +238 -0
- package/android/src/main/java/dev/apexnative/navigation/options/BottomTabsOptions.kt +244 -0
- package/android/src/main/java/dev/apexnative/navigation/options/ButtonMenuOptions.kt +70 -0
- package/android/src/main/java/dev/apexnative/navigation/options/ButtonOptions.kt +296 -0
- package/android/src/main/java/dev/apexnative/navigation/options/ComponentOptions.kt +141 -0
- package/android/src/main/java/dev/apexnative/navigation/options/DefaultOptions.kt +21 -0
- package/android/src/main/java/dev/apexnative/navigation/options/FabOptions.kt +97 -0
- package/android/src/main/java/dev/apexnative/navigation/options/FontOptions.kt +47 -0
- package/android/src/main/java/dev/apexnative/navigation/options/HardwareBackButtonOptions.kt +49 -0
- package/android/src/main/java/dev/apexnative/navigation/options/InterpolationOptions.kt +203 -0
- package/android/src/main/java/dev/apexnative/navigation/options/KeyCommandOptions.kt +49 -0
- package/android/src/main/java/dev/apexnative/navigation/options/LargeTitleOptions.kt +78 -0
- package/android/src/main/java/dev/apexnative/navigation/options/LayoutAnimation.kt +157 -0
- package/android/src/main/java/dev/apexnative/navigation/options/LayoutOptions.kt +94 -0
- package/android/src/main/java/dev/apexnative/navigation/options/ModalOptions.kt +87 -0
- package/android/src/main/java/dev/apexnative/navigation/options/ModalPlacementOptions.kt +90 -0
- package/android/src/main/java/dev/apexnative/navigation/options/NavigationBarOptions.kt +44 -0
- package/android/src/main/java/dev/apexnative/navigation/options/Options.kt +167 -0
- package/android/src/main/java/dev/apexnative/navigation/options/OptionsCache.kt +21 -0
- package/android/src/main/java/dev/apexnative/navigation/options/OptionsReader.kt +133 -0
- package/android/src/main/java/dev/apexnative/navigation/options/PreviewOptions.kt +97 -0
- package/android/src/main/java/dev/apexnative/navigation/options/ReadableMaps.kt +70 -0
- package/android/src/main/java/dev/apexnative/navigation/options/ScrollEdgeEffectOptions.kt +98 -0
- package/android/src/main/java/dev/apexnative/navigation/options/SearchBarOptions.kt +151 -0
- package/android/src/main/java/dev/apexnative/navigation/options/SharedElementTransitionOptions.kt +57 -0
- package/android/src/main/java/dev/apexnative/navigation/options/SheetOptions.kt +108 -0
- package/android/src/main/java/dev/apexnative/navigation/options/SideMenuOptions.kt +130 -0
- package/android/src/main/java/dev/apexnative/navigation/options/SplitViewGroupOptions.kt +190 -0
- package/android/src/main/java/dev/apexnative/navigation/options/SplitViewOptions.kt +28 -0
- package/android/src/main/java/dev/apexnative/navigation/options/StackAnimationOptions.kt +270 -0
- package/android/src/main/java/dev/apexnative/navigation/options/StatusBarOptions.kt +75 -0
- package/android/src/main/java/dev/apexnative/navigation/options/TitleOptions.kt +167 -0
- package/android/src/main/java/dev/apexnative/navigation/options/ToolbarOptions.kt +60 -0
- package/android/src/main/java/dev/apexnative/navigation/options/TopBarAppearanceOptions.kt +223 -0
- package/android/src/main/java/dev/apexnative/navigation/options/TopBarOptions.kt +381 -0
- package/android/src/main/java/dev/apexnative/navigation/options/ViewAnimationOptions.kt +225 -0
- package/android/src/main/java/dev/apexnative/navigation/options/WindowOptions.kt +36 -0
- package/android/src/main/java/dev/apexnative/navigation/options/params/Bool.kt +23 -0
- package/android/src/main/java/dev/apexnative/navigation/options/params/Fraction.kt +12 -0
- package/android/src/main/java/dev/apexnative/navigation/options/params/LayoutDirection.kt +26 -0
- package/android/src/main/java/dev/apexnative/navigation/options/params/Param.kt +24 -0
- package/android/src/main/java/dev/apexnative/navigation/options/params/Text.kt +24 -0
- package/android/src/main/java/dev/apexnative/navigation/options/params/ThemeColour.kt +259 -0
- package/android/src/main/java/dev/apexnative/navigation/options/params/Variant.kt +36 -0
- package/android/src/main/java/dev/apexnative/navigation/options/parsers/BoolParser.kt +15 -0
- package/android/src/main/java/dev/apexnative/navigation/options/parsers/FontParser.kt +28 -0
- package/android/src/main/java/dev/apexnative/navigation/options/parsers/FractionParser.kt +24 -0
- package/android/src/main/java/dev/apexnative/navigation/options/parsers/IconParser.kt +48 -0
- package/android/src/main/java/dev/apexnative/navigation/options/parsers/StringListParser.kt +27 -0
- package/android/src/main/java/dev/apexnative/navigation/options/parsers/TextParser.kt +32 -0
- package/android/src/main/java/dev/apexnative/navigation/options/parsers/TypefaceLoader.kt +42 -0
- package/android/src/main/java/dev/apexnative/navigation/options/parsers/VariantParser.kt +34 -0
- package/android/src/main/java/dev/apexnative/navigation/react/ArrangementStates.kt +41 -0
- package/android/src/main/java/dev/apexnative/navigation/react/CommandAnswer.kt +111 -0
- package/android/src/main/java/dev/apexnative/navigation/react/CommandListener.kt +27 -0
- package/android/src/main/java/dev/apexnative/navigation/react/CommandRunner.kt +131 -0
- package/android/src/main/java/dev/apexnative/navigation/react/DeveloperReload.kt +69 -0
- package/android/src/main/java/dev/apexnative/navigation/react/ErrorTexts.kt +123 -0
- package/android/src/main/java/dev/apexnative/navigation/react/Hinge.kt +154 -0
- package/android/src/main/java/dev/apexnative/navigation/react/LaunchLink.kt +37 -0
- package/android/src/main/java/dev/apexnative/navigation/react/NavigationTurboModule.kt +311 -0
- package/android/src/main/java/dev/apexnative/navigation/react/OptionsCommands.kt +89 -0
- package/android/src/main/java/dev/apexnative/navigation/react/ReactGateway.kt +67 -0
- package/android/src/main/java/dev/apexnative/navigation/react/ReactView.kt +197 -0
- package/android/src/main/java/dev/apexnative/navigation/react/ReadableJson.kt +60 -0
- package/android/src/main/java/dev/apexnative/navigation/react/ReloadCoordinator.kt +130 -0
- package/android/src/main/java/dev/apexnative/navigation/react/ScreenInsets.kt +69 -0
- package/android/src/main/java/dev/apexnative/navigation/react/ScreenRegions.kt +87 -0
- package/android/src/main/java/dev/apexnative/navigation/react/ScrollEvents.kt +160 -0
- package/android/src/main/java/dev/apexnative/navigation/react/StartInfo.kt +44 -0
- package/android/src/main/java/dev/apexnative/navigation/react/events/AppearanceDispatcher.kt +507 -0
- package/android/src/main/java/dev/apexnative/navigation/react/events/ComponentType.kt +13 -0
- package/android/src/main/java/dev/apexnative/navigation/react/events/EventEmitter.kt +199 -0
- package/android/src/main/java/dev/apexnative/navigation/react/events/NavigationStateReporter.kt +62 -0
- package/android/src/main/java/dev/apexnative/navigation/react/events/ScreenAppearance.kt +87 -0
- package/android/src/main/java/dev/apexnative/navigation/react/events/StateHold.kt +62 -0
- package/android/src/main/java/dev/apexnative/navigation/safearea/SafeAreaReadyEvent.kt +16 -0
- package/android/src/main/java/dev/apexnative/navigation/safearea/SafeAreaView.kt +140 -0
- package/android/src/main/java/dev/apexnative/navigation/safearea/SafeAreaViewManager.kt +45 -0
- package/android/src/main/java/dev/apexnative/navigation/slots/SlotContainers.kt +44 -0
- package/android/src/main/java/dev/apexnative/navigation/slots/SlotHost.kt +91 -0
- package/android/src/main/java/dev/apexnative/navigation/slots/SlotScreenView.kt +158 -0
- package/android/src/main/java/dev/apexnative/navigation/slots/SlotView.kt +141 -0
- package/android/src/main/java/dev/apexnative/navigation/slots/SlotViewManager.kt +50 -0
- package/android/src/main/java/dev/apexnative/navigation/splash/SplashHold.kt +67 -0
- package/android/src/main/java/dev/apexnative/navigation/splash/SplashTheme.kt +81 -0
- package/android/src/main/java/dev/apexnative/navigation/splash/SplashView.kt +77 -0
- package/android/src/main/java/dev/apexnative/navigation/system/AppDirection.kt +92 -0
- package/android/src/main/java/dev/apexnative/navigation/system/SystemUiLayers.kt +126 -0
- package/android/src/main/java/dev/apexnative/navigation/system/SystemUiOwner.kt +229 -0
- package/android/src/main/java/dev/apexnative/navigation/system/SystemUiRules.kt +302 -0
- package/android/src/main/java/dev/apexnative/navigation/system/SystemUiState.kt +58 -0
- package/android/src/main/java/dev/apexnative/navigation/system/SystemUiWindow.kt +405 -0
- package/android/src/main/java/dev/apexnative/navigation/utils/ColorUtils.kt +22 -0
- package/android/src/main/java/dev/apexnative/navigation/utils/DevelopmentLog.kt +45 -0
- package/android/src/main/java/dev/apexnative/navigation/utils/DimensionExtensions.kt +16 -0
- package/android/src/main/java/dev/apexnative/navigation/utils/ImageLoader.kt +112 -0
- package/android/src/main/java/dev/apexnative/navigation/utils/MaterialTheme.kt +148 -0
- package/android/src/main/java/dev/apexnative/navigation/utils/NavigationLog.kt +6 -0
- package/android/src/main/java/dev/apexnative/navigation/utils/ScrollToTop.kt +33 -0
- package/android/src/main/java/dev/apexnative/navigation/utils/SystemUiUtils.kt +41 -0
- package/android/src/main/java/dev/apexnative/navigation/utils/TestIds.kt +89 -0
- package/android/src/main/java/dev/apexnative/navigation/utils/TextViewUtils.kt +10 -0
- package/android/src/main/java/dev/apexnative/navigation/utils/UiThread.kt +31 -0
- package/android/src/main/java/dev/apexnative/navigation/utils/UiUtils.kt +43 -0
- package/android/src/main/java/dev/apexnative/navigation/utils/ViewController.kt +124 -0
- package/android/src/main/java/dev/apexnative/navigation/utils/ViewExtensions.kt +41 -0
- package/android/src/main/java/dev/apexnative/navigation/utils/ViewUtils.kt +15 -0
- package/android/src/main/java/dev/apexnative/navigation/utils/WindowFolds.kt +107 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/arrangement/ArrangementController.kt +258 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/arrangement/ArrangementDefinition.kt +57 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/arrangement/ArrangementLayout.kt +225 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/arrangement/ArrangementPlanner.kt +120 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/arrangement/SecondaryScreenPresenter.kt +31 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/BottomTabsCollapseBehavior.kt +54 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/BottomTabsController.kt +664 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/BottomTabsPresenter.kt +367 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/CustomTabRowGeometry.kt +81 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/CustomTabRowPlacer.kt +223 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/TabBarLook.kt +74 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/TabBarMotion.kt +83 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/TabCellState.kt +27 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/TabHistory.kt +38 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/TabItems.kt +172 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/TabSelection.kt +65 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/TabsAttach.kt +42 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/TabsRoom.kt +72 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/child/ChildController.kt +45 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/child/ChildControllersRegistry.kt +29 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/component/ComponentPresenter.kt +90 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/component/ComponentViewController.kt +254 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/component/ContentReadiness.kt +65 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/component/RenderWait.kt +231 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/component/RestPlace.kt +28 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/component/ScreenContentFactory.kt +28 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/component/ScreenFocus.kt +22 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/component/ScreenFrame.kt +154 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/component/ScreenReadiness.kt +104 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/component/ScreenSafeArea.kt +148 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/externalcomponent/ExternalComponentCreator.kt +18 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/externalcomponent/ExternalComponentViewController.kt +187 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/externalcomponent/NativeScreens.kt +25 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/modal/ModalAnimations.kt +40 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/modal/ModalContainer.kt +20 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/modal/ModalCoordinator.kt +1269 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/modal/ModalRecord.kt +186 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/modal/ModalSheet.kt +342 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/modal/ModalViews.kt +398 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/modal/SheetContainer.kt +67 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/navigator/BackCallbackState.kt +78 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/navigator/FirstRootDraw.kt +58 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/navigator/LayoutFactory.kt +203 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/navigator/Navigator.kt +562 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/navigator/Navigators.kt +53 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/navigator/RootCoordinator.kt +514 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/navigator/WaitingLayer.kt +18 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/overlay/OverlayContainer.kt +33 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/overlay/OverlayCoordinator.kt +383 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/overlay/OverlayTouches.kt +44 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/overlay/OverlayViews.kt +117 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/parent/Capabilities.kt +62 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/parent/ContainerBackground.kt +43 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/parent/ParentController.kt +218 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/parent/ShownChildren.kt +82 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/sidemenu/SideMenuController.kt +283 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/sidemenu/SideMenuMotion.kt +276 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/sidemenu/SideMenuPresenter.kt +92 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/sidemenu/SideMenuRules.kt +107 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/splitview/SplitPanes.kt +59 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/splitview/SplitViewController.kt +509 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/splitview/SplitViewLayout.kt +61 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/splitview/SplitViewPresenter.kt +25 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/PreparedFrame.kt +19 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/PreparedPushes.kt +114 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/StackCommands.kt +387 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/StackController.kt +635 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/StackDisplay.kt +167 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/StackPresenter.kt +24 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/StackQueue.kt +1274 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/StackTransitions.kt +82 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/StackViews.kt +222 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/fab/FabPlacement.kt +47 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/fab/FabPlan.kt +44 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/fab/FabPresenter.kt +279 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/search/ScreenSearch.kt +450 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/search/SearchPanel.kt +176 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/search/StackSearchPresenter.kt +243 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/topbar/BarComponents.kt +211 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/topbar/BarRowTransition.kt +122 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/topbar/ButtonCells.kt +30 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/topbar/ButtonPlaces.kt +65 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/topbar/LargeTitleCollapse.kt +71 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/topbar/MenuChecks.kt +72 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/topbar/TopBarCollapseBehavior.kt +104 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/topbar/TopBarPresenter.kt +1085 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/topbar/TopBarRoom.kt +95 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/topbar/TopBarVisibility.kt +122 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/viewcontroller/IReactView.kt +89 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/viewcontroller/Presenter.kt +51 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/viewcontroller/ScrollEventListener.kt +194 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/viewcontroller/ViewController.kt +320 -0
- package/android/src/main/java/dev/apexnative/navigation/views/animations/AnimationRules.kt +141 -0
- package/android/src/main/java/dev/apexnative/navigation/views/animations/Curves.kt +193 -0
- package/android/src/main/java/dev/apexnative/navigation/views/animations/FadeThrough.kt +57 -0
- package/android/src/main/java/dev/apexnative/navigation/views/animations/SideAnimator.kt +143 -0
- package/android/src/main/java/dev/apexnative/navigation/views/animations/SystemTransition.kt +26 -0
- package/android/src/main/java/dev/apexnative/navigation/views/animations/ValueInterpolation.kt +93 -0
- package/android/src/main/java/dev/apexnative/navigation/views/bottomtabs/BottomTabItem.kt +13 -0
- package/android/src/main/java/dev/apexnative/navigation/views/bottomtabs/BottomTabs.kt +550 -0
- package/android/src/main/java/dev/apexnative/navigation/views/bottomtabs/BottomTabsContainer.kt +135 -0
- package/android/src/main/java/dev/apexnative/navigation/views/bottomtabs/BottomTabsLayout.kt +89 -0
- package/android/src/main/java/dev/apexnative/navigation/views/bottomtabs/CustomBottomTabItemView.kt +91 -0
- package/android/src/main/java/dev/apexnative/navigation/views/bottomtabs/CustomTabRow.kt +165 -0
- package/android/src/main/java/dev/apexnative/navigation/views/component/ComponentLayout.kt +89 -0
- package/android/src/main/java/dev/apexnative/navigation/views/component/Renderable.kt +6 -0
- package/android/src/main/java/dev/apexnative/navigation/views/element/DrawOrder.kt +44 -0
- package/android/src/main/java/dev/apexnative/navigation/views/element/ElementStub.kt +31 -0
- package/android/src/main/java/dev/apexnative/navigation/views/element/ElementTransitions.kt +281 -0
- package/android/src/main/java/dev/apexnative/navigation/views/element/ImageLoads.kt +103 -0
- package/android/src/main/java/dev/apexnative/navigation/views/element/TargetsWait.kt +112 -0
- package/android/src/main/java/dev/apexnative/navigation/views/element/TransitionLayer.kt +152 -0
- package/android/src/main/java/dev/apexnative/navigation/views/element/TransitionTargets.kt +53 -0
- package/android/src/main/java/dev/apexnative/navigation/views/element/animators/ElementPictures.kt +46 -0
- package/android/src/main/java/dev/apexnative/navigation/views/element/animators/FlightGeometry.kt +53 -0
- package/android/src/main/java/dev/apexnative/navigation/views/element/animators/ImageMatrixAnimator.kt +138 -0
- package/android/src/main/java/dev/apexnative/navigation/views/element/animators/PlainViewAnimator.kt +88 -0
- package/android/src/main/java/dev/apexnative/navigation/views/element/animators/PropertyAnimatorCreator.kt +33 -0
- package/android/src/main/java/dev/apexnative/navigation/views/element/animators/ReactImageAnimator.kt +66 -0
- package/android/src/main/java/dev/apexnative/navigation/views/element/animators/SharedAnimatorFactory.kt +70 -0
- package/android/src/main/java/dev/apexnative/navigation/views/element/animators/TextChangeAnimator.kt +179 -0
- package/android/src/main/java/dev/apexnative/navigation/views/element/animators/ViewChangeAnimator.kt +139 -0
- package/android/src/main/java/dev/apexnative/navigation/views/externalcomponent/ExternalComponentLayout.kt +44 -0
- package/android/src/main/java/dev/apexnative/navigation/views/sidemenu/SideMenuView.kt +183 -0
- package/android/src/main/java/dev/apexnative/navigation/views/stack/StackLayout.kt +137 -0
- package/android/src/main/java/dev/apexnative/navigation/views/stack/fab/Fab.kt +125 -0
- package/android/src/main/java/dev/apexnative/navigation/views/stack/fab/FabAnimator.kt +8 -0
- package/android/src/main/java/dev/apexnative/navigation/views/stack/fab/FabCollapseBehaviour.kt +34 -0
- package/android/src/main/java/dev/apexnative/navigation/views/stack/fab/FabMenu.kt +133 -0
- package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/LargeTitleView.kt +45 -0
- package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/TitleBar.kt +211 -0
- package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/TopBar.kt +407 -0
- package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/TopBarDefaults.kt +35 -0
- package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/search/ScopeRow.kt +82 -0
- package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/search/SearchField.kt +130 -0
- package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/search/SearchStyle.kt +29 -0
- package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/search/SuggestionList.kt +77 -0
- package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/titlebar/BarButtonComponentCell.kt +80 -0
- package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/titlebar/ButtonBar.kt +334 -0
- package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/titlebar/ButtonMenus.kt +106 -0
- package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/titlebar/IconBackgroundDrawable.kt +93 -0
- package/android/src/main/jni/ApexNavigationSpec.h +18 -0
- package/android/src/main/jni/CMakeLists.txt +33 -0
- package/android/src/main/res/color/apex_navigation_highlight_inverse.xml +5 -0
- package/android/src/main/res/color/apex_navigation_text_primary.xml +6 -0
- package/android/src/main/res/color/apex_navigation_text_primary_inverse.xml +6 -0
- package/android/src/main/res/color/apex_navigation_text_secondary.xml +6 -0
- package/android/src/main/res/color/apex_navigation_text_secondary_inverse.xml +6 -0
- package/android/src/main/res/drawable/apex_navigation_ic_arrow_back.xml +13 -0
- package/android/src/main/res/drawable/apex_navigation_ic_close.xml +12 -0
- package/android/src/main/res/drawable/ic_fab_add_24dp.xml +12 -0
- package/android/src/main/res/values/attrs.xml +13 -0
- package/android/src/main/res/values/dimens.xml +5 -0
- package/android/src/main/res/values/dimens_splash.xml +9 -0
- package/android/src/main/res/values/ids.xml +12 -0
- package/android/src/main/res/values/styles.xml +18 -0
- package/android/src/main/res/values/themes.xml +75 -0
- package/android/src/main/res/values-night/styles.xml +6 -0
- package/android/src/main/res/values-night/themes.xml +67 -0
- package/cli/app.js +113 -0
- package/cli/changes.js +235 -0
- package/cli/codegen/commands.js +356 -0
- package/cli/codegen/index.js +211 -0
- package/cli/codegen/kotlin.js +396 -0
- package/cli/codegen/names.js +99 -0
- package/cli/codegen/read.js +602 -0
- package/cli/codegen/swift.js +342 -0
- package/cli/config.js +78 -0
- package/cli/diff.js +139 -0
- package/cli/doctor/checks/android.js +217 -0
- package/cli/doctor/checks/app.js +305 -0
- package/cli/doctor/checks/conflicts.js +42 -0
- package/cli/doctor/checks/devices.js +98 -0
- package/cli/doctor/checks/icons.js +69 -0
- package/cli/doctor/checks/ios.js +187 -0
- package/cli/doctor/checks/navigation.js +285 -0
- package/cli/doctor/checks/splash.js +102 -0
- package/cli/doctor/fix.js +66 -0
- package/cli/doctor/index.js +136 -0
- package/cli/doctor/types.js +30 -0
- package/cli/exec.js +34 -0
- package/cli/gradle.js +142 -0
- package/cli/icons/android.js +173 -0
- package/cli/icons/images.js +202 -0
- package/cli/icons/index.js +97 -0
- package/cli/icons/ios.js +113 -0
- package/cli/icons/settings.js +116 -0
- package/cli/images.js +67 -0
- package/cli/index.js +307 -0
- package/cli/info/index.js +290 -0
- package/cli/init/index.js +426 -0
- package/cli/init/packageManager.js +48 -0
- package/cli/init/starter.js +440 -0
- package/cli/links/files.js +109 -0
- package/cli/links/identity.js +75 -0
- package/cli/links/index.js +532 -0
- package/cli/links/native.js +396 -0
- package/cli/links/open.js +120 -0
- package/cli/links/prefixes.js +89 -0
- package/cli/mcp/appMap.js +128 -0
- package/cli/mcp/docs.js +175 -0
- package/cli/mcp/index.js +153 -0
- package/cli/mcp/markdown.js +210 -0
- package/cli/mcp/protocol.js +151 -0
- package/cli/mcp/tools.js +389 -0
- package/cli/migrate/entry.js +451 -0
- package/cli/migrate/index.js +305 -0
- package/cli/migrate/native.js +250 -0
- package/cli/migrate/report.js +238 -0
- package/cli/pods.js +56 -0
- package/cli/project.js +189 -0
- package/cli/screen/index.js +383 -0
- package/cli/screen/templates/compose.js +46 -0
- package/cli/screen/templates/native.js +40 -0
- package/cli/screen/templates/react.js +47 -0
- package/cli/screen/templates/swiftui.js +30 -0
- package/cli/screen/templates/uikit.js +48 -0
- package/cli/screen/templates/views.js +46 -0
- package/cli/setup/index.js +240 -0
- package/cli/setup/source.js +58 -0
- package/cli/setup/steps/app.js +76 -0
- package/cli/setup/steps/appDelegate.js +98 -0
- package/cli/setup/steps/entry.js +68 -0
- package/cli/setup/steps/env.js +245 -0
- package/cli/setup/steps/infoPlist.js +39 -0
- package/cli/setup/steps/mainActivity.js +60 -0
- package/cli/setup/steps/mainApplication.js +58 -0
- package/cli/setup/steps/manifest.js +38 -0
- package/cli/setup/steps/styles.js +29 -0
- package/cli/setup/steps/types.js +14 -0
- package/cli/splash/android.js +239 -0
- package/cli/splash/files.js +50 -0
- package/cli/splash/images.js +117 -0
- package/cli/splash/index.js +109 -0
- package/cli/splash/ios.js +349 -0
- package/cli/splash/settings.js +143 -0
- package/cli/typescript.js +473 -0
- package/cli/ui.js +268 -0
- package/cli/upgrade/changelog.js +45 -0
- package/cli/upgrade/index.js +347 -0
- package/cli/upgrade/versions.js +105 -0
- package/cli/workspace.js +60 -0
- package/cli/xcode/pbxproj.js +327 -0
- package/docs-md/architecture/errors-and-loading.md +138 -0
- package/docs-md/architecture/native-screens.md +290 -0
- package/docs-md/architecture/one-tree.md +164 -0
- package/docs-md/architecture/theme-and-context.md +368 -0
- package/docs-md/architecture/transitions.md +191 -0
- package/docs-md/containers/arrangement.md +320 -0
- package/docs-md/containers/modals.md +195 -0
- package/docs-md/containers/overlays.md +109 -0
- package/docs-md/containers/side-menu.md +138 -0
- package/docs-md/containers/split-view.md +155 -0
- package/docs-md/containers/stack.md +156 -0
- package/docs-md/containers/tabs.md +187 -0
- package/docs-md/flows/a-search-screen.md +311 -0
- package/docs-md/flows/an-app-with-tabs.md +380 -0
- package/docs-md/flows/bottom-sheets.md +326 -0
- package/docs-md/flows/forms-in-a-modal.md +420 -0
- package/docs-md/flows/list-and-details.md +428 -0
- package/docs-md/flows/onboarding.md +454 -0
- package/docs-md/flows/sign-in-and-sign-out.md +693 -0
- package/docs-md/fundamentals/lifecycle-and-events.md +224 -0
- package/docs-md/fundamentals/moving-between-screens.md +267 -0
- package/docs-md/fundamentals/screen-options.md +197 -0
- package/docs-md/fundamentals/screens-and-props.md +314 -0
- package/docs-md/fundamentals/starting-the-app.md +317 -0
- package/docs-md/fundamentals/switching-roots.md +166 -0
- package/docs-md/guides/analytics.md +377 -0
- package/docs-md/guides/app-context.md +554 -0
- package/docs-md/guides/building-a-screen.md +350 -0
- package/docs-md/guides/cli.md +421 -0
- package/docs-md/guides/data-fetching.md +492 -0
- package/docs-md/guides/deep-links.md +694 -0
- package/docs-md/guides/error-reporting.md +290 -0
- package/docs-md/guides/gestures-and-animations.md +381 -0
- package/docs-md/guides/notifications.md +548 -0
- package/docs-md/guides/overview.md +65 -0
- package/docs-md/guides/right-to-left.md +273 -0
- package/docs-md/guides/splash-screen.md +30 -0
- package/docs-md/guides/state-management.md +1050 -0
- package/docs-md/guides/testing.md +293 -0
- package/docs-md/help/glossary.md +433 -0
- package/docs-md/help/troubleshooting.md +709 -0
- package/docs-md/index.json +4205 -0
- package/docs-md/migration/from-expo-router.md +446 -0
- package/docs-md/migration/from-react-native-navigation.md +789 -0
- package/docs-md/migration/from-react-navigation.md +628 -0
- package/docs-md/screen-ui/back-and-gestures.md +178 -0
- package/docs-md/screen-ui/bar-buttons.md +312 -0
- package/docs-md/screen-ui/search.md +181 -0
- package/docs-md/screen-ui/system-ui.md +337 -0
- package/docs-md/screen-ui/toolbar-and-fab.md +146 -0
- package/docs-md/screen-ui/top-bar.md +247 -0
- package/docs-md/start/installation.md +233 -0
- package/docs-md/start/introduction.md +46 -0
- package/docs-md/start/quick-start.md +124 -0
- package/ios/Animations/ANNAnimationRules.h +72 -0
- package/ios/Animations/ANNAnimationRules.mm +122 -0
- package/ios/Animations/ANNFrameDriver.h +46 -0
- package/ios/Animations/ANNFrameDriver.mm +126 -0
- package/ios/Animations/ANNTransitionAnimator.h +34 -0
- package/ios/Animations/ANNTransitionAnimator.mm +293 -0
- package/ios/Animations/ANNTransitionPlan.h +115 -0
- package/ios/Animations/ANNTransitionPlan.mm +130 -0
- package/ios/Animations/ANNTransitionWait.h +29 -0
- package/ios/Animations/ANNTransitionWait.mm +135 -0
- package/ios/Animations/Elements/ANNElementFinder.h +26 -0
- package/ios/Animations/Elements/ANNElementFinder.mm +37 -0
- package/ios/Animations/Elements/ANNElementTransition.h +30 -0
- package/ios/Animations/Elements/ANNElementTransition.mm +75 -0
- package/ios/Animations/Elements/ANNSharedElementFlight.h +42 -0
- package/ios/Animations/Elements/ANNSharedElementFlight.mm +340 -0
- package/ios/Animations/Elements/ANNZoomAnchor.h +33 -0
- package/ios/Animations/Elements/ANNZoomAnchor.mm +133 -0
- package/ios/Animations/Interpolators/ANNCurve.h +61 -0
- package/ios/Animations/Interpolators/ANNCurve.mm +301 -0
- package/ios/Animations/Interpolators/ANNInterpolate.h +69 -0
- package/ios/Animations/Interpolators/ANNTrack.h +52 -0
- package/ios/Animations/Interpolators/ANNTrack.mm +77 -0
- package/ios/Animations/Interpolators/ANNViewTracks.h +57 -0
- package/ios/Animations/Interpolators/ANNViewTracks.mm +261 -0
- package/ios/ApexNavigation-prefix.h +6 -0
- package/ios/CLAUDE.md +151 -0
- package/ios/CORE.md +177 -0
- package/ios/Contract/ANNCommandAnswer.h +38 -0
- package/ios/Contract/ANNCommandAnswer.mm +99 -0
- package/ios/Contract/ANNCommandRunner.h +42 -0
- package/ios/Contract/ANNCommandRunner.mm +89 -0
- package/ios/Contract/ANNErrorTexts.h +86 -0
- package/ios/Contract/ANNErrorTexts.mm +230 -0
- package/ios/Contract/ANNLayoutNode.h +64 -0
- package/ios/Contract/ANNLayoutNode.mm +153 -0
- package/ios/Contract/ANNLayoutReader.h +34 -0
- package/ios/Contract/ANNLayoutReader.mm +282 -0
- package/ios/Contract/ANNLayoutRoot.h +26 -0
- package/ios/Contract/ANNLayoutRoot.mm +21 -0
- package/ios/Contract/ANNLayoutTreeOptions.h +22 -0
- package/ios/Contract/ANNLayoutTreeOptions.mm +32 -0
- package/ios/Contract/ANNLayoutType.h +44 -0
- package/ios/Contract/ANNLayoutValidator.h +23 -0
- package/ios/Contract/ANNLayoutValidator.mm +28 -0
- package/ios/Core/ANNAppDelegate.mm +122 -0
- package/ios/Core/ANNAppDirection.h +43 -0
- package/ios/Core/ANNAppDirection.mm +194 -0
- package/ios/Core/ANNAppearanceDispatcher.h +117 -0
- package/ios/Core/ANNAppearanceDispatcher.mm +433 -0
- package/ios/Core/ANNAssert.h +7 -0
- package/ios/Core/ANNDeepLinkQueue.h +35 -0
- package/ios/Core/ANNDeepLinkQueue.mm +136 -0
- package/ios/Core/ANNErrorHandler.h +17 -0
- package/ios/Core/ANNErrorHandler.mm +14 -0
- package/ios/Core/ANNEventEmitter.h +174 -0
- package/ios/Core/ANNEventEmitter.mm +337 -0
- package/ios/Core/ANNHinge.h +26 -0
- package/ios/Core/ANNHinge.mm +116 -0
- package/ios/Core/ANNKeyCommands.h +12 -0
- package/ios/Core/ANNKeyCommands.mm +74 -0
- package/ios/Core/ANNLayoutInfo.h +18 -0
- package/ios/Core/ANNLayoutInfo.mm +13 -0
- package/ios/Core/ANNLayoutProtocol.h +155 -0
- package/ios/Core/ANNNavigationState.h +38 -0
- package/ios/Core/ANNNavigationState.mm +127 -0
- package/ios/Core/ANNNodeHelper.h +114 -0
- package/ios/Core/ANNNodeHelper.mm +260 -0
- package/ios/Core/ANNNodePresenter.h +86 -0
- package/ios/Core/ANNNodePresenter.mm +92 -0
- package/ios/Core/ANNNodeRegistry.h +30 -0
- package/ios/Core/ANNNodeRegistry.mm +48 -0
- package/ios/Core/ANNOptionsRepaint.h +19 -0
- package/ios/Core/ANNOptionsRepaint.mm +59 -0
- package/ios/Core/ANNParking.h +34 -0
- package/ios/Core/ANNParking.mm +117 -0
- package/ios/Core/ANNPendingLayers.h +31 -0
- package/ios/Core/ANNPendingLayers.mm +57 -0
- package/ios/Core/ANNReloadCoordinator.h +26 -0
- package/ios/Core/ANNReloadCoordinator.mm +211 -0
- package/ios/Core/ANNRenderWait.h +105 -0
- package/ios/Core/ANNRenderWait.mm +496 -0
- package/ios/Core/ANNSceneDelegate.mm +92 -0
- package/ios/Core/ANNScreenAppearance+Internal.h +29 -0
- package/ios/Core/ANNScreenAppearance.h +60 -0
- package/ios/Core/ANNScreenAppearance.mm +44 -0
- package/ios/Core/ANNShownScreens.h +27 -0
- package/ios/Core/ANNShownScreens.mm +16 -0
- package/ios/Core/ANNSystemUI.h +95 -0
- package/ios/Core/ANNSystemUI.mm +401 -0
- package/ios/Core/ANNSystemUIRules.h +35 -0
- package/ios/Core/ANNSystemUIRules.mm +139 -0
- package/ios/Core/ANNUtils.h +35 -0
- package/ios/Core/ANNUtils.mm +111 -0
- package/ios/Core/ApexNavigation+Internal.h +26 -0
- package/ios/Core/ApexNavigation.mm +177 -0
- package/ios/Core/UIViewController+LayoutProtocol.h +102 -0
- package/ios/Core/UIViewController+LayoutProtocol.mm +253 -0
- package/ios/Layouts/Arrangement/ANNArrangementScreenDelegate.h +18 -0
- package/ios/Layouts/Arrangement/ANNArrangementState.h +30 -0
- package/ios/Layouts/Arrangement/ANNArrangementState.mm +53 -0
- package/ios/Layouts/Arrangement/ANNArrangementViewController.h +38 -0
- package/ios/Layouts/Arrangement/ANNArrangementViewController.mm +573 -0
- package/ios/Layouts/External/ANNExternalViewController.h +28 -0
- package/ios/Layouts/External/ANNExternalViewController.mm +118 -0
- package/ios/Layouts/External/ANNNativeScreenCalls.h +27 -0
- package/ios/Layouts/External/ANNNativeScreenCalls.mm +77 -0
- package/ios/Layouts/Modal/ANNModal.h +121 -0
- package/ios/Layouts/Modal/ANNModal.mm +64 -0
- package/ios/Layouts/Modal/ANNModalCoordinator.h +99 -0
- package/ios/Layouts/Modal/ANNModalCoordinator.mm +1965 -0
- package/ios/Layouts/Modal/ANNModalHostViewComponentView.h +13 -0
- package/ios/Layouts/Modal/ANNModalHostViewComponentView.mm +24 -0
- package/ios/Layouts/Modal/ANNModalPresentation.h +73 -0
- package/ios/Layouts/Modal/ANNModalPresentation.mm +189 -0
- package/ios/Layouts/Modal/ANNModalSizePresenter.h +13 -0
- package/ios/Layouts/Modal/ANNModalSizePresenter.mm +65 -0
- package/ios/Layouts/Modal/ANNModalTransitions.h +29 -0
- package/ios/Layouts/Modal/ANNModalTransitions.mm +40 -0
- package/ios/Layouts/Modal/ANNPopoverPresenter.h +29 -0
- package/ios/Layouts/Modal/ANNPopoverPresenter.mm +158 -0
- package/ios/Layouts/Modal/ANNPresentationGate.h +52 -0
- package/ios/Layouts/Modal/ANNPresentationGate.mm +153 -0
- package/ios/Layouts/Modal/ANNSheetPresenter.h +31 -0
- package/ios/Layouts/Modal/ANNSheetPresenter.mm +247 -0
- package/ios/Layouts/Overlay/ANNOverlayCoordinator.h +66 -0
- package/ios/Layouts/Overlay/ANNOverlayCoordinator.mm +604 -0
- package/ios/Layouts/Overlay/ANNOverlayWindow.h +10 -0
- package/ios/Layouts/Overlay/ANNOverlayWindow.mm +71 -0
- package/ios/Layouts/Root/ANNLayoutFactory.h +31 -0
- package/ios/Layouts/Root/ANNLayoutFactory.mm +349 -0
- package/ios/Layouts/Root/ANNRootCoordinator.h +42 -0
- package/ios/Layouts/Root/ANNRootCoordinator.mm +847 -0
- package/ios/Layouts/Root/ANNSplashViewController.h +30 -0
- package/ios/Layouts/Root/ANNSplashViewController.mm +138 -0
- package/ios/Layouts/Screen/ANNComponentPresenter.h +32 -0
- package/ios/Layouts/Screen/ANNComponentPresenter.mm +136 -0
- package/ios/Layouts/Screen/ANNComponentViewController.h +100 -0
- package/ios/Layouts/Screen/ANNComponentViewController.mm +652 -0
- package/ios/Layouts/Screen/ANNNativeScreenContext+Internal.h +19 -0
- package/ios/Layouts/Screen/ANNNativeScreenContext.mm +84 -0
- package/ios/Layouts/Screen/ANNPreviewInteraction.h +38 -0
- package/ios/Layouts/Screen/ANNPreviewInteraction.mm +252 -0
- package/ios/Layouts/Screen/ANNScreenBars.h +29 -0
- package/ios/Layouts/Screen/ANNScreenBars.mm +47 -0
- package/ios/Layouts/Screen/ANNScreenInsets.h +30 -0
- package/ios/Layouts/Screen/ANNScreenInsets.mm +68 -0
- package/ios/Layouts/Screen/ANNScreenReadiness.h +92 -0
- package/ios/Layouts/Screen/ANNScreenReadiness.mm +186 -0
- package/ios/Layouts/Screen/ANNScreenRegions.h +33 -0
- package/ios/Layouts/Screen/ANNScreenRegions.mm +105 -0
- package/ios/Layouts/Screen/ANNScreenSafeArea.h +38 -0
- package/ios/Layouts/Screen/ANNScreenSafeArea.mm +58 -0
- package/ios/Layouts/SideMenu/ANNSideMenuChildViewController.h +41 -0
- package/ios/Layouts/SideMenu/ANNSideMenuChildViewController.mm +113 -0
- package/ios/Layouts/SideMenu/ANNSideMenuPresenter.h +28 -0
- package/ios/Layouts/SideMenu/ANNSideMenuPresenter.mm +260 -0
- package/ios/Layouts/SideMenu/ANNSideMenuTypes.h +19 -0
- package/ios/Layouts/SideMenu/ANNSideMenuViewController.h +46 -0
- package/ios/Layouts/SideMenu/ANNSideMenuViewController.mm +891 -0
- package/ios/Layouts/SplitView/ANNSplitViewCommands.h +39 -0
- package/ios/Layouts/SplitView/ANNSplitViewCommands.mm +612 -0
- package/ios/Layouts/SplitView/ANNSplitViewController.h +52 -0
- package/ios/Layouts/SplitView/ANNSplitViewController.mm +494 -0
- package/ios/Layouts/SplitView/ANNSplitViewPresenter.h +18 -0
- package/ios/Layouts/SplitView/ANNSplitViewPresenter.mm +181 -0
- package/ios/Layouts/SplitView/UISplitViewController+ANNOptions.h +32 -0
- package/ios/Layouts/SplitView/UISplitViewController+ANNOptions.mm +133 -0
- package/ios/Layouts/Stack/ANNPreviewPush.h +46 -0
- package/ios/Layouts/Stack/ANNPreviewPush.mm +298 -0
- package/ios/Layouts/Stack/ANNStackAnimatingDelegate.h +32 -0
- package/ios/Layouts/Stack/ANNStackAnimatingDelegate.mm +92 -0
- package/ios/Layouts/Stack/ANNStackCommands.h +51 -0
- package/ios/Layouts/Stack/ANNStackCommands.mm +403 -0
- package/ios/Layouts/Stack/ANNStackController.h +161 -0
- package/ios/Layouts/Stack/ANNStackController.mm +1597 -0
- package/ios/Layouts/Stack/ANNStackPresenter.h +44 -0
- package/ios/Layouts/Stack/ANNStackPresenter.mm +181 -0
- package/ios/Layouts/Stack/ANNStackQueue.h +194 -0
- package/ios/Layouts/Stack/ANNStackQueue.mm +1300 -0
- package/ios/Layouts/Stack/InteractivePopGestureDelegate.h +53 -0
- package/ios/Layouts/Stack/InteractivePopGestureDelegate.mm +228 -0
- package/ios/Layouts/Stack/UINavigationController+ANNCommands.h +19 -0
- package/ios/Layouts/Stack/UINavigationController+ANNCommands.mm +29 -0
- package/ios/Layouts/Tabs/ANNBottomTabCellView.h +33 -0
- package/ios/Layouts/Tabs/ANNBottomTabCellView.mm +100 -0
- package/ios/Layouts/Tabs/ANNBottomTabItemBuilder.h +49 -0
- package/ios/Layouts/Tabs/ANNBottomTabItemBuilder.mm +153 -0
- package/ios/Layouts/Tabs/ANNBottomTabsAccessoryView.h +17 -0
- package/ios/Layouts/Tabs/ANNBottomTabsAccessoryView.mm +56 -0
- package/ios/Layouts/Tabs/ANNBottomTabsController.h +121 -0
- package/ios/Layouts/Tabs/ANNBottomTabsController.mm +1404 -0
- package/ios/Layouts/Tabs/ANNBottomTabsCustomRow.h +47 -0
- package/ios/Layouts/Tabs/ANNBottomTabsCustomRow.mm +280 -0
- package/ios/Layouts/Tabs/ANNBottomTabsPresenter.h +81 -0
- package/ios/Layouts/Tabs/ANNBottomTabsPresenter.mm +1026 -0
- package/ios/Layouts/Tabs/ANNMoreNavigationDelegate.h +24 -0
- package/ios/Layouts/Tabs/ANNMoreNavigationDelegate.mm +58 -0
- package/ios/Layouts/Tabs/ANNScrollToTop.h +23 -0
- package/ios/Layouts/Tabs/ANNScrollToTop.mm +55 -0
- package/ios/Layouts/Tabs/ANNTabDotView.h +19 -0
- package/ios/Layouts/Tabs/ANNTabDotView.mm +46 -0
- package/ios/Layouts/Tabs/ANNTabLongPress.h +28 -0
- package/ios/Layouts/Tabs/ANNTabLongPress.mm +98 -0
- package/ios/Layouts/Tabs/ANNTabsDesign.h +26 -0
- package/ios/Layouts/Tabs/ANNTabsDesign.mm +34 -0
- package/ios/Layouts/Tabs/ANNTabsPreloadWindow.h +27 -0
- package/ios/Layouts/Tabs/ANNTabsPreloadWindow.mm +55 -0
- package/ios/Layouts/Tabs/UITabBar+utils.h +24 -0
- package/ios/Layouts/Tabs/UITabBar+utils.mm +103 -0
- package/ios/Options/ANNAnimationOptions.h +22 -0
- package/ios/Options/ANNAnimationOptions.mm +16 -0
- package/ios/Options/ANNAnimationPropertyOptions.h +17 -0
- package/ios/Options/ANNAnimationPropertyOptions.mm +15 -0
- package/ios/Options/ANNBottomTabDotIndicatorOptions.h +14 -0
- package/ios/Options/ANNBottomTabDotIndicatorOptions.mm +13 -0
- package/ios/Options/ANNBottomTabOptions.h +51 -0
- package/ios/Options/ANNBottomTabOptions.mm +47 -0
- package/ios/Options/ANNBottomTabsAccessoryOptions.h +19 -0
- package/ios/Options/ANNBottomTabsAccessoryOptions.mm +25 -0
- package/ios/Options/ANNBottomTabsAnimationOptions.h +12 -0
- package/ios/Options/ANNBottomTabsAnimationOptions.mm +11 -0
- package/ios/Options/ANNBottomTabsCustomRowOptions.h +19 -0
- package/ios/Options/ANNBottomTabsCustomRowOptions.mm +17 -0
- package/ios/Options/ANNBottomTabsOptions.h +51 -0
- package/ios/Options/ANNBottomTabsOptions.mm +48 -0
- package/ios/Options/ANNBottomTabsShadowOptions.h +14 -0
- package/ios/Options/ANNBottomTabsShadowOptions.mm +13 -0
- package/ios/Options/ANNButtonComponentOptions.h +13 -0
- package/ios/Options/ANNButtonComponentOptions.mm +12 -0
- package/ios/Options/ANNButtonOptions.h +56 -0
- package/ios/Options/ANNButtonOptions.mm +53 -0
- package/ios/Options/ANNButtonsParser.h +13 -0
- package/ios/Options/ANNButtonsParser.mm +18 -0
- package/ios/Options/ANNComponentOptions.h +14 -0
- package/ios/Options/ANNComponentOptions.mm +12 -0
- package/ios/Options/ANNDefaultOptions.h +18 -0
- package/ios/Options/ANNDefaultOptions.mm +22 -0
- package/ios/Options/ANNElementAnimationOptions.h +18 -0
- package/ios/Options/ANNElementAnimationOptions.mm +15 -0
- package/ios/Options/ANNElementTransitionOptions.h +26 -0
- package/ios/Options/ANNElementTransitionOptions.mm +28 -0
- package/ios/Options/ANNEnterExitBottomTabsAnimationOptions.h +14 -0
- package/ios/Options/ANNEnterExitBottomTabsAnimationOptions.mm +12 -0
- package/ios/Options/ANNEnterExitScreenAnimationOptions.h +14 -0
- package/ios/Options/ANNEnterExitScreenAnimationOptions.mm +12 -0
- package/ios/Options/ANNEnterExitTopBarAnimationOptions.h +14 -0
- package/ios/Options/ANNEnterExitTopBarAnimationOptions.mm +12 -0
- package/ios/Options/ANNFabOptions.h +26 -0
- package/ios/Options/ANNFabOptions.mm +23 -0
- package/ios/Options/ANNFontOptions.h +24 -0
- package/ios/Options/ANNFontOptions.mm +65 -0
- package/ios/Options/ANNHardwareBackButtonOptions.h +15 -0
- package/ios/Options/ANNHardwareBackButtonOptions.mm +13 -0
- package/ios/Options/ANNIconBackgroundOptions.h +16 -0
- package/ios/Options/ANNIconBackgroundOptions.mm +15 -0
- package/ios/Options/ANNIconInsetsOptions.h +16 -0
- package/ios/Options/ANNIconInsetsOptions.mm +14 -0
- package/ios/Options/ANNInterpolationOptions.h +22 -0
- package/ios/Options/ANNInterpolationOptions.mm +22 -0
- package/ios/Options/ANNLayoutOptions.h +26 -0
- package/ios/Options/ANNLayoutOptions.mm +25 -0
- package/ios/Options/ANNMenuOptions.h +37 -0
- package/ios/Options/ANNMenuOptions.mm +136 -0
- package/ios/Options/ANNModalAnimationOptions.h +17 -0
- package/ios/Options/ANNModalAnimationOptions.mm +15 -0
- package/ios/Options/ANNModalContentSizeOptions.h +14 -0
- package/ios/Options/ANNModalContentSizeOptions.mm +15 -0
- package/ios/Options/ANNModalOptions.h +19 -0
- package/ios/Options/ANNModalOptions.mm +15 -0
- package/ios/Options/ANNNavigationBarOptions.h +14 -0
- package/ios/Options/ANNNavigationBarOptions.mm +13 -0
- package/ios/Options/ANNNavigationOptions.h +60 -0
- package/ios/Options/ANNNavigationOptions.mm +54 -0
- package/ios/Options/ANNOptionField.h +91 -0
- package/ios/Options/ANNOptionField.mm +173 -0
- package/ios/Options/ANNOptions.h +62 -0
- package/ios/Options/ANNOptions.mm +329 -0
- package/ios/Options/ANNOptionsCache.h +22 -0
- package/ios/Options/ANNOptionsCache.mm +17 -0
- package/ios/Options/ANNOptionsReader.h +33 -0
- package/ios/Options/ANNOptionsReader.mm +63 -0
- package/ios/Options/ANNOverlayOptions.h +14 -0
- package/ios/Options/ANNOverlayOptions.mm +12 -0
- package/ios/Options/ANNPopoverOptions.h +17 -0
- package/ios/Options/ANNPopoverOptions.mm +31 -0
- package/ios/Options/ANNPreviewOptions.h +17 -0
- package/ios/Options/ANNPreviewOptions.mm +15 -0
- package/ios/Options/ANNScreenAnimationOptions.h +13 -0
- package/ios/Options/ANNScreenAnimationOptions.mm +12 -0
- package/ios/Options/ANNScrollEdgeEffectOptions.h +20 -0
- package/ios/Options/ANNScrollEdgeEffectOptions.mm +16 -0
- package/ios/Options/ANNScrollEdgeOptions.h +14 -0
- package/ios/Options/ANNScrollEdgeOptions.mm +12 -0
- package/ios/Options/ANNSearchBarOptions.h +49 -0
- package/ios/Options/ANNSearchBarOptions.mm +41 -0
- package/ios/Options/ANNSearchScopeOptions.h +15 -0
- package/ios/Options/ANNSearchScopeOptions.mm +13 -0
- package/ios/Options/ANNSearchSuggestionOptions.h +19 -0
- package/ios/Options/ANNSearchSuggestionOptions.mm +16 -0
- package/ios/Options/ANNSearchTokenOptions.h +18 -0
- package/ios/Options/ANNSearchTokenOptions.mm +15 -0
- package/ios/Options/ANNSetStackRootAnimationOptions.h +12 -0
- package/ios/Options/ANNSetStackRootAnimationOptions.mm +11 -0
- package/ios/Options/ANNSharedElementTransitionOptions.h +17 -0
- package/ios/Options/ANNSharedElementTransitionOptions.mm +15 -0
- package/ios/Options/ANNSheetOptions.h +25 -0
- package/ios/Options/ANNSheetOptions.mm +41 -0
- package/ios/Options/ANNSideMenuOptions.h +19 -0
- package/ios/Options/ANNSideMenuOptions.mm +16 -0
- package/ios/Options/ANNSideMenuSideOptions.h +23 -0
- package/ios/Options/ANNSideMenuSideOptions.mm +20 -0
- package/ios/Options/ANNSplitViewColumnOptions.h +14 -0
- package/ios/Options/ANNSplitViewColumnOptions.mm +13 -0
- package/ios/Options/ANNSplitViewInspectorOptions.h +13 -0
- package/ios/Options/ANNSplitViewInspectorOptions.mm +9 -0
- package/ios/Options/ANNSplitViewOptions.h +29 -0
- package/ios/Options/ANNSplitViewOptions.mm +26 -0
- package/ios/Options/ANNStackAnimationOptions.h +23 -0
- package/ios/Options/ANNStackAnimationOptions.mm +20 -0
- package/ios/Options/ANNStackPushAnimationOptions.h +13 -0
- package/ios/Options/ANNStackPushAnimationOptions.mm +11 -0
- package/ios/Options/ANNStatusBarOptions.h +20 -0
- package/ios/Options/ANNStatusBarOptions.mm +18 -0
- package/ios/Options/ANNToolbarOptions.h +14 -0
- package/ios/Options/ANNToolbarOptions.mm +27 -0
- package/ios/Options/ANNTopBarAnimationOptions.h +12 -0
- package/ios/Options/ANNTopBarAnimationOptions.mm +11 -0
- package/ios/Options/ANNTopBarBackButtonOptions.h +31 -0
- package/ios/Options/ANNTopBarBackButtonOptions.mm +35 -0
- package/ios/Options/ANNTopBarBackgroundComponentOptions.h +13 -0
- package/ios/Options/ANNTopBarBackgroundComponentOptions.mm +11 -0
- package/ios/Options/ANNTopBarBackgroundOptions.h +17 -0
- package/ios/Options/ANNTopBarBackgroundOptions.mm +15 -0
- package/ios/Options/ANNTopBarLargeTitleOptions.h +19 -0
- package/ios/Options/ANNTopBarLargeTitleOptions.mm +15 -0
- package/ios/Options/ANNTopBarOptions.h +62 -0
- package/ios/Options/ANNTopBarOptions.mm +49 -0
- package/ios/Options/ANNTopBarScrollEdgeAppearanceBackgroundOptions.h +14 -0
- package/ios/Options/ANNTopBarScrollEdgeAppearanceBackgroundOptions.mm +12 -0
- package/ios/Options/ANNTopBarScrollEdgeAppearanceOptions.h +19 -0
- package/ios/Options/ANNTopBarScrollEdgeAppearanceOptions.mm +16 -0
- package/ios/Options/ANNTopBarScrollEdgeAppearanceTitleOptions.h +16 -0
- package/ios/Options/ANNTopBarScrollEdgeAppearanceTitleOptions.mm +12 -0
- package/ios/Options/ANNTopBarSubtitleOptions.h +18 -0
- package/ios/Options/ANNTopBarSubtitleOptions.mm +14 -0
- package/ios/Options/ANNTopBarTitleComponentOptions.h +15 -0
- package/ios/Options/ANNTopBarTitleComponentOptions.mm +12 -0
- package/ios/Options/ANNTopBarTitleDocumentOptions.h +12 -0
- package/ios/Options/ANNTopBarTitleDocumentOptions.mm +11 -0
- package/ios/Options/ANNTopBarTitleOptions.h +29 -0
- package/ios/Options/ANNTopBarTitleOptions.mm +21 -0
- package/ios/Options/ANNViewAnimationOptions.h +26 -0
- package/ios/Options/ANNViewAnimationOptions.mm +58 -0
- package/ios/Options/ANNWindowOptions.h +12 -0
- package/ios/Options/ANNWindowOptions.mm +9 -0
- package/ios/Options/ANNZoomTransitionOptions.h +13 -0
- package/ios/Options/ANNZoomTransitionOptions.mm +12 -0
- package/ios/Options/Params/ANNIntegerParam.h +14 -0
- package/ios/Options/Params/ANNIntegerParam.mm +13 -0
- package/ios/Options/Params/ANNParam.h +28 -0
- package/ios/Options/Params/ANNParam.mm +29 -0
- package/ios/Options/Params/Bool.h +17 -0
- package/ios/Options/Params/Bool.mm +17 -0
- package/ios/Options/Params/BoolParser.h +12 -0
- package/ios/Options/Params/BoolParser.mm +10 -0
- package/ios/Options/Params/Color.h +43 -0
- package/ios/Options/Params/Color.mm +65 -0
- package/ios/Options/Params/ColorParser.h +14 -0
- package/ios/Options/Params/ColorParser.mm +95 -0
- package/ios/Options/Params/Double.h +14 -0
- package/ios/Options/Params/Double.mm +13 -0
- package/ios/Options/Params/DoubleParser.h +16 -0
- package/ios/Options/Params/DoubleParser.mm +16 -0
- package/ios/Options/Params/Image.h +15 -0
- package/ios/Options/Params/Image.mm +13 -0
- package/ios/Options/Params/ImageParser.h +16 -0
- package/ios/Options/Params/ImageParser.mm +103 -0
- package/ios/Options/Params/Number.h +14 -0
- package/ios/Options/Params/Number.mm +13 -0
- package/ios/Options/Params/NumberParser.h +13 -0
- package/ios/Options/Params/NumberParser.mm +10 -0
- package/ios/Options/Params/Param.h +16 -0
- package/ios/Options/Params/Param.mm +13 -0
- package/ios/Options/Params/Text.h +17 -0
- package/ios/Options/Params/Text.mm +17 -0
- package/ios/Options/Params/TextParser.h +17 -0
- package/ios/Options/Params/TextParser.mm +17 -0
- package/ios/Package.swift +58 -0
- package/ios/Public/ApexNavigation/ANNAppDelegate.h +66 -0
- package/ios/Public/ApexNavigation/ANNSceneDelegate.h +19 -0
- package/ios/Public/ApexNavigation/ApexNavigation.h +92 -0
- package/ios/Public/module.modulemap +8 -0
- package/ios/RECIPES.md +41 -0
- package/ios/React/ANNComponentType.h +22 -0
- package/ios/React/ANNComponentViewCreator.h +18 -0
- package/ios/React/ANNReactComponentRegistry.h +53 -0
- package/ios/React/ANNReactComponentRegistry.mm +153 -0
- package/ios/React/ANNReactView.h +104 -0
- package/ios/React/ANNReactView.mm +374 -0
- package/ios/React/ANNReactViewCreator.h +20 -0
- package/ios/React/ANNReactViewCreator.mm +42 -0
- package/ios/React/ANNSafeAreaViewComponentView.h +13 -0
- package/ios/React/ANNSafeAreaViewComponentView.mm +153 -0
- package/ios/React/ANNSurfaceHostingView.h +17 -0
- package/ios/React/ANNSurfaceHostingView.mm +68 -0
- package/ios/React/Slots/ANNSlotComponentView.h +10 -0
- package/ios/React/Slots/ANNSlotComponentView.mm +122 -0
- package/ios/React/Slots/ANNSlotContainers.h +34 -0
- package/ios/React/Slots/ANNSlotContainers.mm +39 -0
- package/ios/React/Slots/ANNSlotContentView.h +12 -0
- package/ios/React/Slots/ANNSlotContentView.mm +18 -0
- package/ios/React/Slots/ANNSlotHost.h +29 -0
- package/ios/React/Slots/ANNSlotHost.mm +59 -0
- package/ios/React/Slots/ANNSlotScreenView.h +38 -0
- package/ios/React/Slots/ANNSlotScreenView.mm +254 -0
- package/ios/TopBar/ANNBackButtonPresenter.h +35 -0
- package/ios/TopBar/ANNBackButtonPresenter.mm +187 -0
- package/ios/TopBar/ANNBarAppearance.h +53 -0
- package/ios/TopBar/ANNBarAppearance.mm +278 -0
- package/ios/TopBar/ANNBarBackgroundComponent.h +46 -0
- package/ios/TopBar/ANNBarBackgroundComponent.mm +163 -0
- package/ios/TopBar/ANNBarButtonComponentView.h +30 -0
- package/ios/TopBar/ANNBarButtonComponentView.mm +110 -0
- package/ios/TopBar/ANNBarButtons.h +65 -0
- package/ios/TopBar/ANNBarButtons.mm +1125 -0
- package/ios/TopBar/ANNBarComponentsWait.h +37 -0
- package/ios/TopBar/ANNBarComponentsWait.mm +116 -0
- package/ios/TopBar/ANNIconButtonImage.h +25 -0
- package/ios/TopBar/ANNIconButtonImage.mm +94 -0
- package/ios/TopBar/ANNLargeTitlePresenter.h +117 -0
- package/ios/TopBar/ANNLargeTitlePresenter.mm +402 -0
- package/ios/TopBar/ANNMainList.h +28 -0
- package/ios/TopBar/ANNMainList.mm +72 -0
- package/ios/TopBar/ANNScrollEdgeEffects.h +29 -0
- package/ios/TopBar/ANNScrollEdgeEffects.mm +122 -0
- package/ios/TopBar/ANNSearchPresenter.h +29 -0
- package/ios/TopBar/ANNSearchPresenter.mm +637 -0
- package/ios/TopBar/ANNSearchResultsViewController.h +16 -0
- package/ios/TopBar/ANNSearchResultsViewController.mm +56 -0
- package/ios/TopBar/ANNShowTextButton.h +22 -0
- package/ios/TopBar/ANNShowTextButton.mm +63 -0
- package/ios/TopBar/ANNTitleComponentView.h +37 -0
- package/ios/TopBar/ANNTitleComponentView.mm +86 -0
- package/ios/TopBar/ANNTitleGlassView.h +33 -0
- package/ios/TopBar/ANNTitleGlassView.mm +126 -0
- package/ios/TopBar/ANNTitleView.h +18 -0
- package/ios/TopBar/ANNTitleView.mm +63 -0
- package/ios/TopBar/ANNToolbarPresenter.h +26 -0
- package/ios/TopBar/ANNToolbarPresenter.mm +24 -0
- package/ios/TopBar/ANNTopBarPresenter.h +120 -0
- package/ios/TopBar/ANNTopBarPresenter.mm +1252 -0
- package/ios/TopBar/ANNUIBarButtonItem.h +16 -0
- package/ios/TopBar/ANNUIBarButtonItem.mm +5 -0
- package/ios/TurboModules/ANNTurboEventEmitter.h +31 -0
- package/ios/TurboModules/ANNTurboEventEmitter.mm +129 -0
- package/ios/TurboModules/ANNTurboModule.h +11 -0
- package/ios/TurboModules/ANNTurboModule.mm +626 -0
- package/ios/Utils/UIColor+ANNLuminance.h +13 -0
- package/ios/Utils/UIColor+ANNLuminance.mm +32 -0
- package/ios/Utils/UIView+Utils.h +12 -0
- package/ios/Utils/UIView+Utils.mm +21 -0
- package/ios/cpp/react/renderer/components/ApexNavigationSpec/ANNSafeAreaViewComponentDescriptor.h +19 -0
- package/ios/cpp/react/renderer/components/ApexNavigationSpec/ANNSafeAreaViewShadowNode.h +60 -0
- package/ios/cpp/react/renderer/components/ApexNavigationSpec/ANNSafeAreaViewState.h +33 -0
- package/ios/cpp/react/renderer/components/ApexNavigationSpec/ANNSlotComponentDescriptor.h +22 -0
- package/ios/cpp/react/renderer/components/ApexNavigationSpec/ANNSlotShadowNode.h +87 -0
- package/ios/cpp/react/renderer/components/ApexNavigationSpec/ANNSlotState.h +101 -0
- package/lib/module/ARCHITECTURE.md +289 -0
- package/lib/module/adapters/NativeANNTurboEventEmitter.js +12 -0
- package/lib/module/adapters/NativeANNTurboEventEmitter.js.map +1 -0
- package/lib/module/adapters/NativeANNTurboModule.js +13 -0
- package/lib/module/adapters/NativeANNTurboModule.js.map +1 -0
- package/lib/module/api/app/AppRegistry.js +52 -0
- package/lib/module/api/app/AppRegistry.js.map +1 -0
- package/lib/module/api/app/activeApp.js +12 -0
- package/lib/module/api/app/activeApp.js.map +1 -0
- package/lib/module/api/app/createNavigation.js +365 -0
- package/lib/module/api/app/createNavigation.js.map +1 -0
- package/lib/module/api/app/roots.js +20 -0
- package/lib/module/api/app/roots.js.map +1 -0
- package/lib/module/api/app/splash.js +124 -0
- package/lib/module/api/app/splash.js.map +1 -0
- package/lib/module/api/app/startFailure.js +38 -0
- package/lib/module/api/app/startFailure.js.map +1 -0
- package/lib/module/api/arrangement/arrangementState.js +86 -0
- package/lib/module/api/arrangement/arrangementState.js.map +1 -0
- package/lib/module/api/commands/commands.js +375 -0
- package/lib/module/api/commands/commands.js.map +1 -0
- package/lib/module/api/commands/errors.js +94 -0
- package/lib/module/api/commands/errors.js.map +1 -0
- package/lib/module/api/commands/presentation.js +4 -0
- package/lib/module/api/commands/presentation.js.map +1 -0
- package/lib/module/api/commands/sideMenus.js +134 -0
- package/lib/module/api/commands/sideMenus.js.map +1 -0
- package/lib/module/api/commands/transitions.js +245 -0
- package/lib/module/api/commands/transitions.js.map +1 -0
- package/lib/module/api/context/appContext.js +22 -0
- package/lib/module/api/context/appContext.js.map +1 -0
- package/lib/module/api/events/navigationEvents.js +69 -0
- package/lib/module/api/events/navigationEvents.js.map +1 -0
- package/lib/module/api/events/screenLifecycle.js +30 -0
- package/lib/module/api/events/screenLifecycle.js.map +1 -0
- package/lib/module/api/events/tabPresses.js +32 -0
- package/lib/module/api/events/tabPresses.js.map +1 -0
- package/lib/module/api/hinge/hinge.js +73 -0
- package/lib/module/api/hinge/hinge.js.map +1 -0
- package/lib/module/api/hooks/appHooks.js +26 -0
- package/lib/module/api/hooks/appHooks.js.map +1 -0
- package/lib/module/api/hooks/screenHooks.js +250 -0
- package/lib/module/api/hooks/screenHooks.js.map +1 -0
- package/lib/module/api/hooks/useArrangement.js +24 -0
- package/lib/module/api/hooks/useArrangement.js.map +1 -0
- package/lib/module/api/hooks/useHinge.js +29 -0
- package/lib/module/api/hooks/useHinge.js.map +1 -0
- package/lib/module/api/hooks/useNavigation.js +117 -0
- package/lib/module/api/hooks/useNavigation.js.map +1 -0
- package/lib/module/api/hooks/usePendingLink.js +12 -0
- package/lib/module/api/hooks/usePendingLink.js.map +1 -0
- package/lib/module/api/hooks/usePreview.js +97 -0
- package/lib/module/api/hooks/usePreview.js.map +1 -0
- package/lib/module/api/hooks/useReservedRegions.js +24 -0
- package/lib/module/api/hooks/useReservedRegions.js.map +1 -0
- package/lib/module/api/hooks/useSafeAreaInsets.js +25 -0
- package/lib/module/api/hooks/useSafeAreaInsets.js.map +1 -0
- package/lib/module/api/index.js +26 -0
- package/lib/module/api/index.js.map +1 -0
- package/lib/module/api/layout/Root.js +121 -0
- package/lib/module/api/layout/Root.js.map +1 -0
- package/lib/module/api/layout/Screen.js +52 -0
- package/lib/module/api/layout/Screen.js.map +1 -0
- package/lib/module/api/layout/SideMenu.js +85 -0
- package/lib/module/api/layout/SideMenu.js.map +1 -0
- package/lib/module/api/layout/SplitView.js +137 -0
- package/lib/module/api/layout/SplitView.js.map +1 -0
- package/lib/module/api/layout/Stack.js +36 -0
- package/lib/module/api/layout/Stack.js.map +1 -0
- package/lib/module/api/layout/Tabs.js +326 -0
- package/lib/module/api/layout/Tabs.js.map +1 -0
- package/lib/module/api/layout/element.js +100 -0
- package/lib/module/api/layout/element.js.map +1 -0
- package/lib/module/api/linking/linkPaths.js +132 -0
- package/lib/module/api/linking/linkPaths.js.map +1 -0
- package/lib/module/api/linking/linking.js +244 -0
- package/lib/module/api/linking/linking.js.map +1 -0
- package/lib/module/api/linking/pendingLinks.js +34 -0
- package/lib/module/api/linking/pendingLinks.js.map +1 -0
- package/lib/module/api/linking/types.js +4 -0
- package/lib/module/api/linking/types.js.map +1 -0
- package/lib/module/api/navigation.js +105 -0
- package/lib/module/api/navigation.js.map +1 -0
- package/lib/module/api/options/OptionsChain.js +158 -0
- package/lib/module/api/options/OptionsChain.js.map +1 -0
- package/lib/module/api/options/ScreenOptions.js +83 -0
- package/lib/module/api/options/ScreenOptions.js.map +1 -0
- package/lib/module/api/options/buttons.js +4 -0
- package/lib/module/api/options/buttons.js.map +1 -0
- package/lib/module/api/safeArea/ANNSafeAreaViewNativeComponent.ts +28 -0
- package/lib/module/api/safeArea/screenInsets.js +86 -0
- package/lib/module/api/safeArea/screenInsets.js.map +1 -0
- package/lib/module/api/safeArea/screenRegions.js +84 -0
- package/lib/module/api/safeArea/screenRegions.js.map +1 -0
- package/lib/module/api/screens/ScreenBoundary.js +44 -0
- package/lib/module/api/screens/ScreenBoundary.js.map +1 -0
- package/lib/module/api/screens/arrangement.js +63 -0
- package/lib/module/api/screens/arrangement.js.map +1 -0
- package/lib/module/api/screens/defineScreen.js +29 -0
- package/lib/module/api/screens/defineScreen.js.map +1 -0
- package/lib/module/api/screens/nativeScreenCalls.js +34 -0
- package/lib/module/api/screens/nativeScreenCalls.js.map +1 -0
- package/lib/module/api/screens/nativeScreens.js +43 -0
- package/lib/module/api/screens/nativeScreens.js.map +1 -0
- package/lib/module/api/screens/registerScreens.js +305 -0
- package/lib/module/api/screens/registerScreens.js.map +1 -0
- package/lib/module/api/slots/ANNSlotNativeComponent.ts +23 -0
- package/lib/module/api/slots/SlotHost.js +92 -0
- package/lib/module/api/slots/SlotHost.js.map +1 -0
- package/lib/module/api/state/navigationState.js +98 -0
- package/lib/module/api/state/navigationState.js.map +1 -0
- package/lib/module/api/testIDs.js +14 -0
- package/lib/module/api/testIDs.js.map +1 -0
- package/lib/module/api/theme/theme.js +180 -0
- package/lib/module/api/theme/theme.js.map +1 -0
- package/lib/module/api/types.js +4 -0
- package/lib/module/api/types.js.map +1 -0
- package/lib/module/engine/backListeners.js +39 -0
- package/lib/module/engine/backListeners.js.map +1 -0
- package/lib/module/engine/buttons.js +105 -0
- package/lib/module/engine/buttons.js.map +1 -0
- package/lib/module/engine/commands.js +388 -0
- package/lib/module/engine/commands.js.map +1 -0
- package/lib/module/engine/events.js +30 -0
- package/lib/module/engine/events.js.map +1 -0
- package/lib/module/engine/ids.js +10 -0
- package/lib/module/engine/ids.js.map +1 -0
- package/lib/module/engine/launchState.js +34 -0
- package/lib/module/engine/launchState.js.map +1 -0
- package/lib/module/engine/layout.js +202 -0
- package/lib/module/engine/layout.js.map +1 -0
- package/lib/module/engine/mergeOptions.js +23 -0
- package/lib/module/engine/mergeOptions.js.map +1 -0
- package/lib/module/engine/native.js +45 -0
- package/lib/module/engine/native.js.map +1 -0
- package/lib/module/engine/nativeScreens.js +265 -0
- package/lib/module/engine/nativeScreens.js.map +1 -0
- package/lib/module/engine/options.js +170 -0
- package/lib/module/engine/options.js.map +1 -0
- package/lib/module/engine/places.js +178 -0
- package/lib/module/engine/places.js.map +1 -0
- package/lib/module/engine/props.js +44 -0
- package/lib/module/engine/props.js.map +1 -0
- package/lib/module/engine/reactMeasures.js +23 -0
- package/lib/module/engine/reactMeasures.js.map +1 -0
- package/lib/module/engine/rememberedOptions.js +118 -0
- package/lib/module/engine/rememberedOptions.js.map +1 -0
- package/lib/module/engine/screens.js +194 -0
- package/lib/module/engine/screens.js.map +1 -0
- package/lib/module/engine/slots.js +200 -0
- package/lib/module/engine/slots.js.map +1 -0
- package/lib/module/engine/tabs.js +79 -0
- package/lib/module/engine/tabs.js.map +1 -0
- package/lib/module/index.js +5 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/interfaces/ComponentEvents.js +2 -0
- package/lib/module/interfaces/ComponentEvents.js.map +1 -0
- package/lib/module/interfaces/Events.js +2 -0
- package/lib/module/interfaces/Events.js.map +1 -0
- package/lib/module/interfaces/Layout.js +4 -0
- package/lib/module/interfaces/Layout.js.map +1 -0
- package/lib/module/interfaces/Options.js +4 -0
- package/lib/module/interfaces/Options.js.map +1 -0
- package/lib/module/interfaces/options/animations.js +2 -0
- package/lib/module/interfaces/options/animations.js.map +1 -0
- package/lib/module/interfaces/options/bottomTabs.js +4 -0
- package/lib/module/interfaces/options/bottomTabs.js.map +1 -0
- package/lib/module/interfaces/options/buttons.js +4 -0
- package/lib/module/interfaces/options/buttons.js.map +1 -0
- package/lib/module/interfaces/options/common.js +4 -0
- package/lib/module/interfaces/options/common.js.map +1 -0
- package/lib/module/interfaces/options/modals.js +2 -0
- package/lib/module/interfaces/options/modals.js.map +1 -0
- package/lib/module/interfaces/options/preview.js +2 -0
- package/lib/module/interfaces/options/preview.js.map +1 -0
- package/lib/module/interfaces/options/sideMenu.js +2 -0
- package/lib/module/interfaces/options/sideMenu.js.map +1 -0
- package/lib/module/interfaces/options/splitView.js +2 -0
- package/lib/module/interfaces/options/splitView.js.map +1 -0
- package/lib/module/interfaces/options/stack.js +4 -0
- package/lib/module/interfaces/options/stack.js.map +1 -0
- package/lib/module/interfaces/options/system.js +4 -0
- package/lib/module/interfaces/options/system.js.map +1 -0
- package/lib/module/interfaces/options/toolbar.js +4 -0
- package/lib/module/interfaces/options/toolbar.js.map +1 -0
- package/lib/module/interfaces/options/topBar.js +4 -0
- package/lib/module/interfaces/options/topBar.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/typescript/adapters/NativeANNTurboEventEmitter.d.ts +14 -0
- package/lib/typescript/adapters/NativeANNTurboEventEmitter.d.ts.map +1 -0
- package/lib/typescript/adapters/NativeANNTurboModule.d.ts +77 -0
- package/lib/typescript/adapters/NativeANNTurboModule.d.ts.map +1 -0
- package/lib/typescript/api/app/AppRegistry.d.ts +14 -0
- package/lib/typescript/api/app/AppRegistry.d.ts.map +1 -0
- package/lib/typescript/api/app/activeApp.d.ts +12 -0
- package/lib/typescript/api/app/activeApp.d.ts.map +1 -0
- package/lib/typescript/api/app/createNavigation.d.ts +182 -0
- package/lib/typescript/api/app/createNavigation.d.ts.map +1 -0
- package/lib/typescript/api/app/roots.d.ts +15 -0
- package/lib/typescript/api/app/roots.d.ts.map +1 -0
- package/lib/typescript/api/app/splash.d.ts +81 -0
- package/lib/typescript/api/app/splash.d.ts.map +1 -0
- package/lib/typescript/api/app/startFailure.d.ts +15 -0
- package/lib/typescript/api/app/startFailure.d.ts.map +1 -0
- package/lib/typescript/api/arrangement/arrangementState.d.ts +21 -0
- package/lib/typescript/api/arrangement/arrangementState.d.ts.map +1 -0
- package/lib/typescript/api/commands/commands.d.ts +57 -0
- package/lib/typescript/api/commands/commands.d.ts.map +1 -0
- package/lib/typescript/api/commands/errors.d.ts +24 -0
- package/lib/typescript/api/commands/errors.d.ts.map +1 -0
- package/lib/typescript/api/commands/presentation.d.ts +69 -0
- package/lib/typescript/api/commands/presentation.d.ts.map +1 -0
- package/lib/typescript/api/commands/sideMenus.d.ts +14 -0
- package/lib/typescript/api/commands/sideMenus.d.ts.map +1 -0
- package/lib/typescript/api/commands/transitions.d.ts +33 -0
- package/lib/typescript/api/commands/transitions.d.ts.map +1 -0
- package/lib/typescript/api/context/appContext.d.ts +4 -0
- package/lib/typescript/api/context/appContext.d.ts.map +1 -0
- package/lib/typescript/api/events/navigationEvents.d.ts +70 -0
- package/lib/typescript/api/events/navigationEvents.d.ts.map +1 -0
- package/lib/typescript/api/events/screenLifecycle.d.ts +5 -0
- package/lib/typescript/api/events/screenLifecycle.d.ts.map +1 -0
- package/lib/typescript/api/events/tabPresses.d.ts +5 -0
- package/lib/typescript/api/events/tabPresses.d.ts.map +1 -0
- package/lib/typescript/api/hinge/hinge.d.ts +21 -0
- package/lib/typescript/api/hinge/hinge.d.ts.map +1 -0
- package/lib/typescript/api/hooks/appHooks.d.ts +15 -0
- package/lib/typescript/api/hooks/appHooks.d.ts.map +1 -0
- package/lib/typescript/api/hooks/screenHooks.d.ts +74 -0
- package/lib/typescript/api/hooks/screenHooks.d.ts.map +1 -0
- package/lib/typescript/api/hooks/useArrangement.d.ts +13 -0
- package/lib/typescript/api/hooks/useArrangement.d.ts.map +1 -0
- package/lib/typescript/api/hooks/useHinge.d.ts +16 -0
- package/lib/typescript/api/hooks/useHinge.d.ts.map +1 -0
- package/lib/typescript/api/hooks/useNavigation.d.ts +108 -0
- package/lib/typescript/api/hooks/useNavigation.d.ts.map +1 -0
- package/lib/typescript/api/hooks/usePendingLink.d.ts +7 -0
- package/lib/typescript/api/hooks/usePendingLink.d.ts.map +1 -0
- package/lib/typescript/api/hooks/usePreview.d.ts +29 -0
- package/lib/typescript/api/hooks/usePreview.d.ts.map +1 -0
- package/lib/typescript/api/hooks/useReservedRegions.d.ts +13 -0
- package/lib/typescript/api/hooks/useReservedRegions.d.ts.map +1 -0
- package/lib/typescript/api/hooks/useSafeAreaInsets.d.ts +14 -0
- package/lib/typescript/api/hooks/useSafeAreaInsets.d.ts.map +1 -0
- package/lib/typescript/api/index.d.ts +60 -0
- package/lib/typescript/api/index.d.ts.map +1 -0
- package/lib/typescript/api/layout/Root.d.ts +47 -0
- package/lib/typescript/api/layout/Root.d.ts.map +1 -0
- package/lib/typescript/api/layout/Screen.d.ts +32 -0
- package/lib/typescript/api/layout/Screen.d.ts.map +1 -0
- package/lib/typescript/api/layout/SideMenu.d.ts +33 -0
- package/lib/typescript/api/layout/SideMenu.d.ts.map +1 -0
- package/lib/typescript/api/layout/SplitView.d.ts +48 -0
- package/lib/typescript/api/layout/SplitView.d.ts.map +1 -0
- package/lib/typescript/api/layout/Stack.d.ts +21 -0
- package/lib/typescript/api/layout/Stack.d.ts.map +1 -0
- package/lib/typescript/api/layout/Tabs.d.ts +120 -0
- package/lib/typescript/api/layout/Tabs.d.ts.map +1 -0
- package/lib/typescript/api/layout/element.d.ts +52 -0
- package/lib/typescript/api/layout/element.d.ts.map +1 -0
- package/lib/typescript/api/linking/linkPaths.d.ts +31 -0
- package/lib/typescript/api/linking/linkPaths.d.ts.map +1 -0
- package/lib/typescript/api/linking/linking.d.ts +37 -0
- package/lib/typescript/api/linking/linking.d.ts.map +1 -0
- package/lib/typescript/api/linking/pendingLinks.d.ts +8 -0
- package/lib/typescript/api/linking/pendingLinks.d.ts.map +1 -0
- package/lib/typescript/api/linking/types.d.ts +105 -0
- package/lib/typescript/api/linking/types.d.ts.map +1 -0
- package/lib/typescript/api/navigation.d.ts +115 -0
- package/lib/typescript/api/navigation.d.ts.map +1 -0
- package/lib/typescript/api/options/OptionsChain.d.ts +47 -0
- package/lib/typescript/api/options/OptionsChain.d.ts.map +1 -0
- package/lib/typescript/api/options/ScreenOptions.d.ts +32 -0
- package/lib/typescript/api/options/ScreenOptions.d.ts.map +1 -0
- package/lib/typescript/api/options/buttons.d.ts +35 -0
- package/lib/typescript/api/options/buttons.d.ts.map +1 -0
- package/lib/typescript/api/safeArea/ANNSafeAreaViewNativeComponent.d.ts +20 -0
- package/lib/typescript/api/safeArea/ANNSafeAreaViewNativeComponent.d.ts.map +1 -0
- package/lib/typescript/api/safeArea/screenInsets.d.ts +20 -0
- package/lib/typescript/api/safeArea/screenInsets.d.ts.map +1 -0
- package/lib/typescript/api/safeArea/screenRegions.d.ts +24 -0
- package/lib/typescript/api/safeArea/screenRegions.d.ts.map +1 -0
- package/lib/typescript/api/screens/ScreenBoundary.d.ts +34 -0
- package/lib/typescript/api/screens/ScreenBoundary.d.ts.map +1 -0
- package/lib/typescript/api/screens/arrangement.d.ts +70 -0
- package/lib/typescript/api/screens/arrangement.d.ts.map +1 -0
- package/lib/typescript/api/screens/defineScreen.d.ts +41 -0
- package/lib/typescript/api/screens/defineScreen.d.ts.map +1 -0
- package/lib/typescript/api/screens/nativeScreenCalls.d.ts +3 -0
- package/lib/typescript/api/screens/nativeScreenCalls.d.ts.map +1 -0
- package/lib/typescript/api/screens/nativeScreens.d.ts +47 -0
- package/lib/typescript/api/screens/nativeScreens.d.ts.map +1 -0
- package/lib/typescript/api/screens/registerScreens.d.ts +61 -0
- package/lib/typescript/api/screens/registerScreens.d.ts.map +1 -0
- package/lib/typescript/api/slots/ANNSlotNativeComponent.d.ts +15 -0
- package/lib/typescript/api/slots/ANNSlotNativeComponent.d.ts.map +1 -0
- package/lib/typescript/api/slots/SlotHost.d.ts +8 -0
- package/lib/typescript/api/slots/SlotHost.d.ts.map +1 -0
- package/lib/typescript/api/state/navigationState.d.ts +26 -0
- package/lib/typescript/api/state/navigationState.d.ts.map +1 -0
- package/lib/typescript/api/testIDs.d.ts +12 -0
- package/lib/typescript/api/testIDs.d.ts.map +1 -0
- package/lib/typescript/api/theme/theme.d.ts +70 -0
- package/lib/typescript/api/theme/theme.d.ts.map +1 -0
- package/lib/typescript/api/types.d.ts +64 -0
- package/lib/typescript/api/types.d.ts.map +1 -0
- package/lib/typescript/engine/backListeners.d.ts +8 -0
- package/lib/typescript/engine/backListeners.d.ts.map +1 -0
- package/lib/typescript/engine/buttons.d.ts +11 -0
- package/lib/typescript/engine/buttons.d.ts.map +1 -0
- package/lib/typescript/engine/commands.d.ts +38 -0
- package/lib/typescript/engine/commands.d.ts.map +1 -0
- package/lib/typescript/engine/events.d.ts +17 -0
- package/lib/typescript/engine/events.d.ts.map +1 -0
- package/lib/typescript/engine/ids.d.ts +3 -0
- package/lib/typescript/engine/ids.d.ts.map +1 -0
- package/lib/typescript/engine/launchState.d.ts +25 -0
- package/lib/typescript/engine/launchState.d.ts.map +1 -0
- package/lib/typescript/engine/layout.d.ts +32 -0
- package/lib/typescript/engine/layout.d.ts.map +1 -0
- package/lib/typescript/engine/mergeOptions.d.ts +6 -0
- package/lib/typescript/engine/mergeOptions.d.ts.map +1 -0
- package/lib/typescript/engine/native.d.ts +22 -0
- package/lib/typescript/engine/native.d.ts.map +1 -0
- package/lib/typescript/engine/nativeScreens.d.ts +49 -0
- package/lib/typescript/engine/nativeScreens.d.ts.map +1 -0
- package/lib/typescript/engine/options.d.ts +12 -0
- package/lib/typescript/engine/options.d.ts.map +1 -0
- package/lib/typescript/engine/places.d.ts +57 -0
- package/lib/typescript/engine/places.d.ts.map +1 -0
- package/lib/typescript/engine/props.d.ts +10 -0
- package/lib/typescript/engine/props.d.ts.map +1 -0
- package/lib/typescript/engine/reactMeasures.d.ts +3 -0
- package/lib/typescript/engine/reactMeasures.d.ts.map +1 -0
- package/lib/typescript/engine/rememberedOptions.d.ts +28 -0
- package/lib/typescript/engine/rememberedOptions.d.ts.map +1 -0
- package/lib/typescript/engine/screens.d.ts +90 -0
- package/lib/typescript/engine/screens.d.ts.map +1 -0
- package/lib/typescript/engine/slots.d.ts +71 -0
- package/lib/typescript/engine/slots.d.ts.map +1 -0
- package/lib/typescript/engine/tabs.d.ts +24 -0
- package/lib/typescript/engine/tabs.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +3 -0
- package/lib/typescript/index.d.ts.map +1 -0
- package/lib/typescript/interfaces/ComponentEvents.d.ts +189 -0
- package/lib/typescript/interfaces/ComponentEvents.d.ts.map +1 -0
- package/lib/typescript/interfaces/Events.d.ts +199 -0
- package/lib/typescript/interfaces/Events.d.ts.map +1 -0
- package/lib/typescript/interfaces/Layout.d.ts +150 -0
- package/lib/typescript/interfaces/Layout.d.ts.map +1 -0
- package/lib/typescript/interfaces/Options.d.ts +93 -0
- package/lib/typescript/interfaces/Options.d.ts.map +1 -0
- package/lib/typescript/interfaces/options/animations.d.ts +452 -0
- package/lib/typescript/interfaces/options/animations.d.ts.map +1 -0
- package/lib/typescript/interfaces/options/bottomTabs.d.ts +462 -0
- package/lib/typescript/interfaces/options/bottomTabs.d.ts.map +1 -0
- package/lib/typescript/interfaces/options/buttons.d.ts +331 -0
- package/lib/typescript/interfaces/options/buttons.d.ts.map +1 -0
- package/lib/typescript/interfaces/options/common.d.ts +51 -0
- package/lib/typescript/interfaces/options/common.d.ts.map +1 -0
- package/lib/typescript/interfaces/options/modals.d.ts +202 -0
- package/lib/typescript/interfaces/options/modals.d.ts.map +1 -0
- package/lib/typescript/interfaces/options/preview.d.ts +40 -0
- package/lib/typescript/interfaces/options/preview.d.ts.map +1 -0
- package/lib/typescript/interfaces/options/sideMenu.d.ts +130 -0
- package/lib/typescript/interfaces/options/sideMenu.d.ts.map +1 -0
- package/lib/typescript/interfaces/options/splitView.d.ts +118 -0
- package/lib/typescript/interfaces/options/splitView.d.ts.map +1 -0
- package/lib/typescript/interfaces/options/stack.d.ts +109 -0
- package/lib/typescript/interfaces/options/stack.d.ts.map +1 -0
- package/lib/typescript/interfaces/options/system.d.ts +238 -0
- package/lib/typescript/interfaces/options/system.d.ts.map +1 -0
- package/lib/typescript/interfaces/options/toolbar.d.ts +45 -0
- package/lib/typescript/interfaces/options/toolbar.d.ts.map +1 -0
- package/lib/typescript/interfaces/options/topBar.d.ts +804 -0
- package/lib/typescript/interfaces/options/topBar.d.ts.map +1 -0
- package/lib/typescript/package.json +1 -0
- package/package.json +166 -4
- package/react-native.config.js +22 -0
- package/src/ARCHITECTURE.md +289 -0
- package/src/adapters/NativeANNTurboEventEmitter.ts +15 -0
- package/src/adapters/NativeANNTurboModule.ts +100 -0
- package/src/api/app/AppRegistry.ts +57 -0
- package/src/api/app/activeApp.ts +20 -0
- package/src/api/app/createNavigation.ts +566 -0
- package/src/api/app/roots.ts +40 -0
- package/src/api/app/splash.ts +154 -0
- package/src/api/app/startFailure.tsx +39 -0
- package/src/api/arrangement/arrangementState.ts +98 -0
- package/src/api/commands/commands.ts +371 -0
- package/src/api/commands/errors.ts +99 -0
- package/src/api/commands/presentation.ts +78 -0
- package/src/api/commands/sideMenus.ts +122 -0
- package/src/api/commands/transitions.ts +133 -0
- package/src/api/context/appContext.ts +23 -0
- package/src/api/events/navigationEvents.ts +175 -0
- package/src/api/events/screenLifecycle.ts +27 -0
- package/src/api/events/tabPresses.ts +35 -0
- package/src/api/hinge/hinge.ts +84 -0
- package/src/api/hooks/appHooks.ts +37 -0
- package/src/api/hooks/screenHooks.ts +272 -0
- package/src/api/hooks/useArrangement.ts +26 -0
- package/src/api/hooks/useHinge.ts +26 -0
- package/src/api/hooks/useNavigation.ts +267 -0
- package/src/api/hooks/usePendingLink.ts +11 -0
- package/src/api/hooks/usePreview.ts +111 -0
- package/src/api/hooks/useReservedRegions.ts +26 -0
- package/src/api/hooks/useSafeAreaInsets.ts +23 -0
- package/src/api/index.ts +139 -0
- package/src/api/layout/Root.ts +113 -0
- package/src/api/layout/Screen.ts +55 -0
- package/src/api/layout/SideMenu.ts +87 -0
- package/src/api/layout/SplitView.ts +146 -0
- package/src/api/layout/Stack.ts +48 -0
- package/src/api/layout/Tabs.ts +339 -0
- package/src/api/layout/element.ts +114 -0
- package/src/api/linking/linkPaths.ts +159 -0
- package/src/api/linking/linking.ts +242 -0
- package/src/api/linking/pendingLinks.ts +37 -0
- package/src/api/linking/types.ts +130 -0
- package/src/api/navigation.ts +269 -0
- package/src/api/options/OptionsChain.ts +142 -0
- package/src/api/options/ScreenOptions.ts +81 -0
- package/src/api/options/buttons.ts +43 -0
- package/src/api/safeArea/ANNSafeAreaViewNativeComponent.ts +28 -0
- package/src/api/safeArea/screenInsets.ts +86 -0
- package/src/api/safeArea/screenRegions.ts +99 -0
- package/src/api/screens/ScreenBoundary.tsx +52 -0
- package/src/api/screens/arrangement.ts +106 -0
- package/src/api/screens/defineScreen.ts +57 -0
- package/src/api/screens/nativeScreenCalls.ts +59 -0
- package/src/api/screens/nativeScreens.ts +58 -0
- package/src/api/screens/registerScreens.tsx +364 -0
- package/src/api/slots/ANNSlotNativeComponent.ts +23 -0
- package/src/api/slots/SlotHost.tsx +64 -0
- package/src/api/state/navigationState.ts +95 -0
- package/src/api/testIDs.ts +11 -0
- package/src/api/theme/theme.ts +184 -0
- package/src/api/types.ts +95 -0
- package/src/engine/backListeners.ts +36 -0
- package/src/engine/buttons.ts +91 -0
- package/src/engine/commands.ts +469 -0
- package/src/engine/events.ts +24 -0
- package/src/engine/ids.ts +7 -0
- package/src/engine/launchState.ts +35 -0
- package/src/engine/layout.ts +247 -0
- package/src/engine/mergeOptions.ts +20 -0
- package/src/engine/native.ts +51 -0
- package/src/engine/nativeScreens.ts +263 -0
- package/src/engine/options.ts +165 -0
- package/src/engine/places.ts +205 -0
- package/src/engine/props.ts +45 -0
- package/src/engine/reactMeasures.ts +24 -0
- package/src/engine/rememberedOptions.ts +111 -0
- package/src/engine/screens.tsx +239 -0
- package/src/engine/slots.ts +191 -0
- package/src/engine/tabs.ts +95 -0
- package/src/index.ts +3 -0
- package/src/interfaces/ComponentEvents.ts +214 -0
- package/src/interfaces/Events.ts +227 -0
- package/src/interfaces/Layout.ts +161 -0
- package/src/interfaces/Options.ts +175 -0
- package/src/interfaces/options/animations.ts +480 -0
- package/src/interfaces/options/bottomTabs.ts +481 -0
- package/src/interfaces/options/buttons.ts +364 -0
- package/src/interfaces/options/common.ts +76 -0
- package/src/interfaces/options/modals.ts +217 -0
- package/src/interfaces/options/preview.ts +40 -0
- package/src/interfaces/options/sideMenu.ts +132 -0
- package/src/interfaces/options/splitView.ts +127 -0
- package/src/interfaces/options/stack.ts +110 -0
- package/src/interfaces/options/system.ts +252 -0
- package/src/interfaces/options/toolbar.ts +47 -0
- package/src/interfaces/options/topBar.ts +828 -0
|
@@ -0,0 +1,847 @@
|
|
|
1
|
+
#import "ANNRootCoordinator.h"
|
|
2
|
+
#import "ANNAnimationRules.h"
|
|
3
|
+
#import "ANNAppDirection.h"
|
|
4
|
+
#import "ANNAppearanceDispatcher.h"
|
|
5
|
+
#import "ANNAssert.h"
|
|
6
|
+
#import "ANNComponentViewController.h"
|
|
7
|
+
#import "ANNErrorTexts.h"
|
|
8
|
+
#import "ANNFrameDriver.h"
|
|
9
|
+
#import "ANNLayoutFactory.h"
|
|
10
|
+
#import "ANNLayoutTreeOptions.h"
|
|
11
|
+
#import "ANNLayoutValidator.h"
|
|
12
|
+
#import "ANNModalCoordinator.h"
|
|
13
|
+
#import "ANNNavigationState.h"
|
|
14
|
+
#import "ANNNodeRegistry.h"
|
|
15
|
+
#import "ANNOverlayCoordinator.h"
|
|
16
|
+
#import "ANNParking.h"
|
|
17
|
+
#import "ANNPendingLayers.h"
|
|
18
|
+
#import "ANNPresentationGate.h"
|
|
19
|
+
#import "ANNRenderWait.h"
|
|
20
|
+
#import "ANNSplashViewController.h"
|
|
21
|
+
#import "ANNSystemUI.h"
|
|
22
|
+
#import "ANNViewTracks.h"
|
|
23
|
+
#import "ApexNavigation+Internal.h"
|
|
24
|
+
#import "UIViewController+LayoutProtocol.h"
|
|
25
|
+
|
|
26
|
+
// How long a root waits for its screens to render when `animations.setRoot.enter.waitForRender` is not set: from the
|
|
27
|
+
// start of the wait, for all of them together.
|
|
28
|
+
static const NSTimeInterval ANNRootRenderLimit = 0.5;
|
|
29
|
+
|
|
30
|
+
// The default replacement of a root over another root: a snapshot of the window as it was dissolves over the new one.
|
|
31
|
+
static const NSTimeInterval ANNRootDissolveDuration = 0.3;
|
|
32
|
+
|
|
33
|
+
typedef NS_ENUM(NSInteger, ANNRootShowState) {
|
|
34
|
+
// The root is made and renders; it waits for its screens, then for its turn at the presentation gate.
|
|
35
|
+
ANNRootShowStateWaiting,
|
|
36
|
+
// The root is the window's root; the root it replaced still goes (the dissolve). A custom animation is in the
|
|
37
|
+
// layers' state from the replace on.
|
|
38
|
+
ANNRootShowStateTransition,
|
|
39
|
+
// The root is up; the modals, then the overlays of its layout show one by one before the answer. A newer `setRoot`
|
|
40
|
+
// then rejects this one: the one waiting now never shows, the rest are never made, those shown stay over this root,
|
|
41
|
+
// which stays the current one.
|
|
42
|
+
ANNRootShowStateLayers,
|
|
43
|
+
// Shown, superseded, failed, or taken by a reload: nothing more happens to it.
|
|
44
|
+
ANNRootShowStateEnded,
|
|
45
|
+
};
|
|
46
|
+
|
|
47
|
+
// One `setRoot` on its way: its root, its answer and how far it got.
|
|
48
|
+
@interface ANNRootShow : NSObject
|
|
49
|
+
@property(nonatomic, strong) UIViewController *root;
|
|
50
|
+
@property(nonatomic, copy) NSString *rootId;
|
|
51
|
+
@property(nonatomic, strong) ANNCommandAnswer *answer;
|
|
52
|
+
@property(nonatomic) ANNRootShowState state;
|
|
53
|
+
// The layout and the options of all its trees (step 2): its modals and overlays are made from them after the root.
|
|
54
|
+
@property(nonatomic, strong) ANNLayoutRoot *layout;
|
|
55
|
+
@property(nonatomic, copy) NSDictionary<NSString *, ANNNavigationOptions *> *optionsById;
|
|
56
|
+
// The modal or the overlay of the layout that shows now, and its place in the chain.
|
|
57
|
+
@property(nonatomic, strong, nullable) ANNModal *chainModal;
|
|
58
|
+
@property(nonatomic, strong, nullable) ANNOverlay *chainOverlay;
|
|
59
|
+
@property(nonatomic) NSUInteger chainIndex;
|
|
60
|
+
// The chain holds the coalesced state updates: one state goes, before the answer.
|
|
61
|
+
@property(nonatomic) BOOL holdsState;
|
|
62
|
+
// The render wait (`waitForRenderOf:`): the root's waited screens, and their bar components within the root's limit
|
|
63
|
+
// when `waitForRender` is unset, or with `true` as a phase after the content with its own 0.5 s.
|
|
64
|
+
@property(nonatomic, strong, nullable) ANNRenderWait *renderWait;
|
|
65
|
+
// Its replacement waits for its turn at the gate: a presentation running in the window ends first (patch 618).
|
|
66
|
+
@property(nonatomic, strong, nullable) ANNGateStep *gateStep;
|
|
67
|
+
// The root the transition replaces, with the library modals over it: they go at its end.
|
|
68
|
+
@property(nonatomic, copy) NSArray<UIViewController *> *replaced;
|
|
69
|
+
// The nodes whose appearance the transition reports itself (`driveAppearanceOf:`), while `driving`.
|
|
70
|
+
@property(nonatomic, copy) NSArray<UIViewController *> *driven;
|
|
71
|
+
@property(nonatomic) BOOL driving;
|
|
72
|
+
@property(nonatomic, strong, nullable) UIView *snapshot;
|
|
73
|
+
// The root is the window's root: the old root's modals went before it (`startTransitionOf:done:`).
|
|
74
|
+
@property(nonatomic) BOOL installed;
|
|
75
|
+
// The root's view waits in the window under the current root (`park:`).
|
|
76
|
+
@property(nonatomic, strong, readonly) ANNParking *parking;
|
|
77
|
+
// Its own animation: `enter` on the new root's view and `exit` on the snapshot under it, by one frame driver; the
|
|
78
|
+
// answer waits for its end and for the layout's modals and overlays.
|
|
79
|
+
@property(nonatomic) BOOL custom;
|
|
80
|
+
@property(nonatomic, strong, nullable) ANNFrameDriver *driver;
|
|
81
|
+
@property(nonatomic, copy, nullable) NSArray<ANNViewTracks *> *tracks;
|
|
82
|
+
@property(nonatomic) BOOL animating;
|
|
83
|
+
@property(nonatomic) BOOL layersShown;
|
|
84
|
+
@end
|
|
85
|
+
|
|
86
|
+
@implementation ANNRootShow
|
|
87
|
+
|
|
88
|
+
- (instancetype)init {
|
|
89
|
+
if (self = [super init]) {
|
|
90
|
+
_parking = [ANNParking new];
|
|
91
|
+
}
|
|
92
|
+
return self;
|
|
93
|
+
}
|
|
94
|
+
|
|
95
|
+
@end
|
|
96
|
+
|
|
97
|
+
// Main queue.
|
|
98
|
+
static ANNRootShow *ANNPendingShow;
|
|
99
|
+
// The show whose own animation runs on the main window's root now.
|
|
100
|
+
static __weak ANNRootShow *ANNAnimatingShow;
|
|
101
|
+
|
|
102
|
+
@implementation ANNRootCoordinator
|
|
103
|
+
|
|
104
|
+
#pragma mark - setRoot
|
|
105
|
+
|
|
106
|
+
+ (void)setRoot:(ANNLayoutRoot *)layout answer:(ANNCommandAnswer *)answer {
|
|
107
|
+
ANNAssertMainQueue();
|
|
108
|
+
UIWindow *window = ApexNavigation.mainWindow;
|
|
109
|
+
|
|
110
|
+
// Step 1, the direction of the app (`layout.direction` of the default options): React Native's at once, the scene's
|
|
111
|
+
// once the window has one.
|
|
112
|
+
[ANNAppDirection applyDefaultOptionsDirection];
|
|
113
|
+
|
|
114
|
+
// Step 2: every value of every tree, before any view.
|
|
115
|
+
NSString *rejection = nil;
|
|
116
|
+
NSDictionary<NSString *, ANNNavigationOptions *> *optionsById =
|
|
117
|
+
[ANNLayoutTreeOptions optionsOfTrees:layout.trees rejection:&rejection];
|
|
118
|
+
if (!optionsById) {
|
|
119
|
+
[answer reject:rejection];
|
|
120
|
+
return;
|
|
121
|
+
}
|
|
122
|
+
|
|
123
|
+
// Step 3: an id of the modals or overlays that names a node which shows and stays. The modals go with the old root
|
|
124
|
+
// (their ids count as shown, but they go); only the overlays stay, so a shown node is allowed when it goes with the
|
|
125
|
+
// old root, or when it is in the shown overlay a layout's overlay replaces (N5).
|
|
126
|
+
for (ANNLayoutNode *tree in [layout.modals arrayByAddingObjectsFromArray:layout.overlays]) {
|
|
127
|
+
BOOL replacesOverlay = [layout.overlays containsObject:tree];
|
|
128
|
+
NSString *treeId = tree.nodeId;
|
|
129
|
+
BOOL (^goesWithOldRoot)(ANNLayoutNode *) = ^BOOL(ANNLayoutNode *node) {
|
|
130
|
+
UIViewController *shown = [ANNNodeRegistry nodeForComponentId:node.nodeId];
|
|
131
|
+
NSString *overlayId = [ANNOverlayCoordinator overlayRootIdOf:shown];
|
|
132
|
+
return !overlayId || (replacesOverlay && [overlayId isEqualToString:treeId]);
|
|
133
|
+
};
|
|
134
|
+
NSString *shownId = [ANNLayoutValidator firstShownIdIn:tree allowed:goesWithOldRoot];
|
|
135
|
+
if (shownId) {
|
|
136
|
+
[answer reject:[ANNErrorTexts alreadyShown:shownId]];
|
|
137
|
+
return;
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
|
|
141
|
+
// Step 4: what the core makes, in every tree of the layout: a modal or an overlay of a type without a maker rejects
|
|
142
|
+
// the whole `setRoot`, as the root's type does. Every type has one now: the guard stays.
|
|
143
|
+
if (![ANNLayoutFactory canMakeTrees:layout.trees]) {
|
|
144
|
+
[answer reject:[ANNErrorTexts notDoneYet:@"setRoot"]];
|
|
145
|
+
return;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
// Step 5: last wins.
|
|
149
|
+
[self supersedePending];
|
|
150
|
+
|
|
151
|
+
// Step 6: the root renders at once, at the window's size, so its surfaces start with their size. A maker that fails
|
|
152
|
+
// (a native screen not created) restores the modals too.
|
|
153
|
+
UIViewController *root = nil;
|
|
154
|
+
@try {
|
|
155
|
+
root = [ANNLayoutFactory nodeFromLayout:layout.root options:optionsById];
|
|
156
|
+
[root render];
|
|
157
|
+
root.view.frame = window.bounds;
|
|
158
|
+
[root.view setNeedsLayout];
|
|
159
|
+
[root.view layoutIfNeeded];
|
|
160
|
+
} @catch (NSException *exception) {
|
|
161
|
+
[root destroy];
|
|
162
|
+
// A superseded `setRoot` handed the old root's modals to this one: nothing takes them now.
|
|
163
|
+
[ANNModalCoordinator restoreTakenForNewRoot];
|
|
164
|
+
@throw;
|
|
165
|
+
}
|
|
166
|
+
ANNRootShow *show = [ANNRootShow new];
|
|
167
|
+
show.root = root;
|
|
168
|
+
show.rootId = layout.root.nodeId;
|
|
169
|
+
show.answer = answer;
|
|
170
|
+
show.layout = layout;
|
|
171
|
+
show.optionsById = optionsById;
|
|
172
|
+
show.state = ANNRootShowStateWaiting;
|
|
173
|
+
ANNPendingShow = show;
|
|
174
|
+
// Accepted (`setRoot` step 3): the old root's modals go with it; commands by their ids find nothing.
|
|
175
|
+
[ANNModalCoordinator takeForNewRoot];
|
|
176
|
+
[self park:show];
|
|
177
|
+
|
|
178
|
+
// Step 7. The show is pending and parked already: a failure at the start of its wait goes through its guard.
|
|
179
|
+
[self protect:show
|
|
180
|
+
step:^{
|
|
181
|
+
[ANNRootCoordinator waitForRenderOf:show];
|
|
182
|
+
}];
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
#pragma mark - The protection of the steps that come later
|
|
186
|
+
|
|
187
|
+
// The steps that run after the command's body (a ready callback, the limit, the turn at the gate, the end of the
|
|
188
|
+
// dissolve, the chain of the layout's modals) are outside the runner's protection: a failure there rejects the
|
|
189
|
+
// `setRoot` with the runner's text, and leaves neither a pending show nor a driven node behind. A root that never
|
|
190
|
+
// became the window's root is destroyed, as a failed modal's or overlay's.
|
|
191
|
+
+ (void)protect:(ANNRootShow *)show step:(dispatch_block_t)step {
|
|
192
|
+
@try {
|
|
193
|
+
step();
|
|
194
|
+
} @catch (NSException *exception) {
|
|
195
|
+
BOOL neverInstalled =
|
|
196
|
+
show.state == ANNRootShowStateWaiting ||
|
|
197
|
+
(show.state == ANNRootShowStateTransition && !show.installed &&
|
|
198
|
+
ApexNavigation.mainWindow.rootViewController != show.root);
|
|
199
|
+
if (ANNPendingShow == show) {
|
|
200
|
+
ANNPendingShow = nil;
|
|
201
|
+
}
|
|
202
|
+
if (show.state == ANNRootShowStateWaiting) {
|
|
203
|
+
[self stopWaitingOf:show];
|
|
204
|
+
// The `setRoot` ends without replacing the root.
|
|
205
|
+
[ANNModalCoordinator restoreTakenForNewRoot];
|
|
206
|
+
}
|
|
207
|
+
[self stopLayersOf:show];
|
|
208
|
+
[self unpark:show];
|
|
209
|
+
if (neverInstalled) {
|
|
210
|
+
if (show.state == ANNRootShowStateTransition) {
|
|
211
|
+
// The old root's modals were taken out of their records at the replacement: they go, as when a
|
|
212
|
+
// newer `setRoot` supersedes this one there; the old root stays the window's root.
|
|
213
|
+
NSMutableArray<UIViewController *> *modals = [show.replaced mutableCopy];
|
|
214
|
+
[modals removeObjectIdenticalTo:ApexNavigation.mainWindow.rootViewController];
|
|
215
|
+
[self destroyLayers:modals];
|
|
216
|
+
}
|
|
217
|
+
[show.root destroy];
|
|
218
|
+
}
|
|
219
|
+
show.state = ANNRootShowStateEnded;
|
|
220
|
+
[self stopAnimationOf:show];
|
|
221
|
+
[show.snapshot.layer removeAllAnimations];
|
|
222
|
+
[show.snapshot removeFromSuperview];
|
|
223
|
+
show.snapshot = nil;
|
|
224
|
+
[self stopDriving:show];
|
|
225
|
+
NSString *what = [NSString stringWithFormat:@"show the root '%@'", show.rootId];
|
|
226
|
+
NSString *reason = exception.reason.length > 0 ? exception.reason : exception.name;
|
|
227
|
+
[show.answer reject:[ANNErrorTexts couldNot:what reason:reason]];
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
|
|
231
|
+
+ (void)stopDriving:(ANNRootShow *)show {
|
|
232
|
+
if (show.driving) {
|
|
233
|
+
show.driving = NO;
|
|
234
|
+
[ANNAppearanceDispatcher stopDrivingAppearanceOf:show.driven];
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
|
|
238
|
+
#pragma mark - Where the root waits
|
|
239
|
+
|
|
240
|
+
// The screens of a waiting root render only once their safe area views are laid out in a window: the root's view waits
|
|
241
|
+
// in the window, at its size, under the current root's view (`ANNParking`). The command drives its appearance
|
|
242
|
+
// meanwhile. From here until it shows or goes, the root is a layer that waits to show (`ANNPendingLayers`): a stack in
|
|
243
|
+
// it counts as off screen, and a stack command in it tells the wait. Nothing waits longer than before: the wait is the
|
|
244
|
+
// command's own.
|
|
245
|
+
+ (void)park:(ANNRootShow *)show {
|
|
246
|
+
__weak ANNRootShow *weakShow = show;
|
|
247
|
+
[ANNPendingLayers add:show.root
|
|
248
|
+
onShownScreensChanged:^{
|
|
249
|
+
[ANNRootCoordinator shownScreensChangedOf:weakShow];
|
|
250
|
+
}];
|
|
251
|
+
UIWindow *window = ApexNavigation.mainWindow;
|
|
252
|
+
if (!window) {
|
|
253
|
+
return;
|
|
254
|
+
}
|
|
255
|
+
[show.parking park:show.root inView:window];
|
|
256
|
+
}
|
|
257
|
+
|
|
258
|
+
// The root's view leaves the window as it was: before the root becomes the window's root, and on every path that ends
|
|
259
|
+
// a waiting root (superseded, destroyed, a reload, a failure). The root becomes the window's root in the same turn, so
|
|
260
|
+
// UIKit's departure ends here (`ANNParking unpark:endingDeparture:`): a stack UIKit took for disappeared would give the
|
|
261
|
+
// screens it pushes neither their appearance nor their safe area (their content under the bar).
|
|
262
|
+
+ (void)unpark:(ANNRootShow *)show {
|
|
263
|
+
[ANNPendingLayers remove:show.root];
|
|
264
|
+
[show.parking unpark:show.root endingDeparture:YES];
|
|
265
|
+
}
|
|
266
|
+
|
|
267
|
+
#pragma mark - The wait
|
|
268
|
+
|
|
269
|
+
// `waitForRender: false` waits for nothing; `true` waits for every screen the root waits for as long as it takes, then
|
|
270
|
+
// for their bar components at most 0.5 s; unset, for the screens and their bar components together at most
|
|
271
|
+
// `ANNRootRenderLimit` from the start, then the screens still waited count as rendered (`markReady`). A screen whose
|
|
272
|
+
// content is ready already counts at once. The rule for content of unknown readiness is off for a root.
|
|
273
|
+
+ (void)waitForRenderOf:(ANNRootShow *)show {
|
|
274
|
+
ANNNavigationOptions *resolved = [show.root resolveOptionsWithDefault];
|
|
275
|
+
Bool *waitForRender = resolved.animations.setRoot.enter.waitForRender;
|
|
276
|
+
if (waitForRender.hasValue && !waitForRender.get) {
|
|
277
|
+
[self renderWaitEnded:show];
|
|
278
|
+
return;
|
|
279
|
+
}
|
|
280
|
+
__weak ANNRootShow *weakShow = show;
|
|
281
|
+
BOOL contentFirst = waitForRender.hasValue;
|
|
282
|
+
// Within the root's limit the bar components have no limits of their own; their phase has its own 0.5 s.
|
|
283
|
+
ANNBarWaitLimits withContent = {0, 0};
|
|
284
|
+
ANNBarWaitLimits ownPhase = {ANNRootRenderLimit, ANNRootRenderLimit};
|
|
285
|
+
ANNRenderWait *wait = [[ANNRenderWait alloc]
|
|
286
|
+
initWithContent:ANNRenderWaitContentEachScreen
|
|
287
|
+
node:nil
|
|
288
|
+
screens:^NSArray<UIViewController *> * {
|
|
289
|
+
return weakShow.root.waitedComponentViewControllers ?: @[];
|
|
290
|
+
}
|
|
291
|
+
limit:contentFirst ? 0 : ANNRootRenderLimit
|
|
292
|
+
bar:contentFirst ? ANNRenderWaitBarAfterContent : ANNRenderWaitBarWithContent
|
|
293
|
+
barLimits:contentFirst ? ownPhase : withContent];
|
|
294
|
+
// A screen the user won't see at once (an unselected tab's) never holds the root longer than the limit, also with
|
|
295
|
+
// `waitForRender: true`.
|
|
296
|
+
wait.mountLimit = ANNRootRenderLimit;
|
|
297
|
+
wait.protect = ^(dispatch_block_t step) {
|
|
298
|
+
[ANNRootCoordinator protect:weakShow step:step];
|
|
299
|
+
};
|
|
300
|
+
wait.ended = ^{
|
|
301
|
+
ANNRootShow *rendered = weakShow;
|
|
302
|
+
if (rendered) {
|
|
303
|
+
[ANNRootCoordinator renderWaitEnded:rendered];
|
|
304
|
+
}
|
|
305
|
+
};
|
|
306
|
+
show.renderWait = wait;
|
|
307
|
+
[wait start];
|
|
308
|
+
}
|
|
309
|
+
|
|
310
|
+
// A stack command inside the waiting root changed its top: the screen the wait held may be gone (destroyed, its
|
|
311
|
+
// callback never comes), and the new top is what the root will show. The wait takes the root's waited screens again
|
|
312
|
+
// with the same limit; in its bar phase it waits for the new top's bar components, with their own limit again.
|
|
313
|
+
+ (void)shownScreensChangedOf:(ANNRootShow *)show {
|
|
314
|
+
ANNAssertMainQueue();
|
|
315
|
+
if (!show || show != ANNPendingShow || show.state != ANNRootShowStateWaiting ||
|
|
316
|
+
!show.renderWait.isWaiting) {
|
|
317
|
+
return;
|
|
318
|
+
}
|
|
319
|
+
[self protect:show
|
|
320
|
+
step:^{
|
|
321
|
+
[show.renderWait retakeScreens:!show.root.nodeHelper.destroyed];
|
|
322
|
+
}];
|
|
323
|
+
}
|
|
324
|
+
|
|
325
|
+
// The wait ends: its callbacks, its limit and its turn at the gate do nothing from now on.
|
|
326
|
+
+ (void)stopWaitingOf:(ANNRootShow *)show {
|
|
327
|
+
[show.renderWait cancel];
|
|
328
|
+
if (show.gateStep) {
|
|
329
|
+
[ANNPresentationGate drop:show.gateStep];
|
|
330
|
+
show.gateStep = nil;
|
|
331
|
+
}
|
|
332
|
+
}
|
|
333
|
+
|
|
334
|
+
// The root rendered (or its limit passed). It goes up only for the JavaScript that sent it: a wait that ends after a
|
|
335
|
+
// reload leaves the root to the reset. Then it waits for its turn at the presentation gate: a presentation or a
|
|
336
|
+
// dismissal running in the window ends first, as do the modals' steps asked before it (UIKit would end them on the root
|
|
337
|
+
// that goes). No timed wait.
|
|
338
|
+
+ (void)renderWaitEnded:(ANNRootShow *)show {
|
|
339
|
+
if (show != ANNPendingShow || show.state != ANNRootShowStateWaiting || !show.answer.isCurrent) {
|
|
340
|
+
return;
|
|
341
|
+
}
|
|
342
|
+
if (show.root.nodeHelper.destroyed) {
|
|
343
|
+
ANNPendingShow = nil;
|
|
344
|
+
show.state = ANNRootShowStateEnded;
|
|
345
|
+
[self unpark:show];
|
|
346
|
+
// The old root's modals are what they were.
|
|
347
|
+
[ANNModalCoordinator restoreTakenForNewRoot];
|
|
348
|
+
[show.answer reject:[ANNErrorTexts rootDestroyed:show.rootId]];
|
|
349
|
+
return;
|
|
350
|
+
}
|
|
351
|
+
if (show.gateStep) {
|
|
352
|
+
return;
|
|
353
|
+
}
|
|
354
|
+
__weak ANNRootShow *weakShow = show;
|
|
355
|
+
ANNGateStep *step = [[ANNGateStep alloc] initWithRun:^(dispatch_block_t done) {
|
|
356
|
+
ANNRootShow *waiting = weakShow;
|
|
357
|
+
if (!waiting || waiting != ANNPendingShow || waiting.state != ANNRootShowStateWaiting ||
|
|
358
|
+
!waiting.answer.isCurrent) {
|
|
359
|
+
done();
|
|
360
|
+
return;
|
|
361
|
+
}
|
|
362
|
+
waiting.gateStep = nil;
|
|
363
|
+
[ANNRootCoordinator protect:waiting
|
|
364
|
+
step:^{
|
|
365
|
+
[ANNRootCoordinator startTransitionOf:waiting done:done];
|
|
366
|
+
}];
|
|
367
|
+
// A step that failed leaves the gate free (`done` runs once).
|
|
368
|
+
if (waiting.state != ANNRootShowStateTransition) {
|
|
369
|
+
done();
|
|
370
|
+
}
|
|
371
|
+
}];
|
|
372
|
+
show.gateStep = step;
|
|
373
|
+
[ANNPresentationGate enqueue:step];
|
|
374
|
+
}
|
|
375
|
+
|
|
376
|
+
+ (id<UIViewControllerTransitionCoordinator>)runningPresentationTransitionOver:
|
|
377
|
+
(UIViewController *)root {
|
|
378
|
+
for (UIViewController *presented = root.presentedViewController; presented;
|
|
379
|
+
presented = presented.presentedViewController) {
|
|
380
|
+
if (presented.isBeingPresented || presented.isBeingDismissed) {
|
|
381
|
+
id<UIViewControllerTransitionCoordinator> coordinator = presented.transitionCoordinator;
|
|
382
|
+
if (coordinator) {
|
|
383
|
+
return coordinator;
|
|
384
|
+
}
|
|
385
|
+
}
|
|
386
|
+
}
|
|
387
|
+
return nil;
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
#pragma mark - The transition
|
|
391
|
+
|
|
392
|
+
// The old root and the modals over it go in the root's transition (the list of modals is reset here, over the splash
|
|
393
|
+
// too). UIKit doesn't close the modals of a root it no longer shows: they are dismissed without animation now, under
|
|
394
|
+
// the window's snapshot, before the new root is the window's. The gate is free once the new root is in place.
|
|
395
|
+
+ (void)startTransitionOf:(ANNRootShow *)show done:(dispatch_block_t)done {
|
|
396
|
+
UIWindow *window = ApexNavigation.mainWindow;
|
|
397
|
+
UIViewController *old = window.rootViewController;
|
|
398
|
+
BOOL overSplash = [self isSplash:old];
|
|
399
|
+
NSMutableArray<UIViewController *> *replaced = [NSMutableArray new];
|
|
400
|
+
if (!overSplash && old.isLayoutNode) {
|
|
401
|
+
[replaced addObject:old];
|
|
402
|
+
}
|
|
403
|
+
[replaced addObjectsFromArray:[ANNModalCoordinator takeAtReplacement]];
|
|
404
|
+
show.replaced = replaced;
|
|
405
|
+
show.driven = [show.replaced arrayByAddingObject:show.root];
|
|
406
|
+
|
|
407
|
+
ANNEnterExitScreenAnimationOptions *animation =
|
|
408
|
+
[show.root resolveOptionsWithDefault].animations.setRoot;
|
|
409
|
+
BOOL enterDisabled = [ANNAnimationRules sideIsDisabled:animation.enter];
|
|
410
|
+
// Its own `enter` / `exit` plays over the snapshot of the window, also over the splash (a side with `enabled:
|
|
411
|
+
// false` doesn't play). In a window nobody sees (hidden, no scene yet, or in the background) the root replaces at
|
|
412
|
+
// once, as it does over the splash without its own (patch 616).
|
|
413
|
+
BOOL custom = [ANNAnimationRules rootPlays:animation];
|
|
414
|
+
UIWindowScene *scene = window.windowScene;
|
|
415
|
+
BOOL seen = !window.hidden && scene != nil &&
|
|
416
|
+
scene.activationState != UISceneActivationStateBackground;
|
|
417
|
+
BOOL dissolves = !overSplash && !enterDisabled && !custom && seen;
|
|
418
|
+
show.custom = custom && seen;
|
|
419
|
+
UIView *snapshot =
|
|
420
|
+
dissolves || show.custom ? [window snapshotViewAfterScreenUpdates:NO] : nil;
|
|
421
|
+
|
|
422
|
+
show.state = ANNRootShowStateTransition;
|
|
423
|
+
// It shows from here: a stack in it counts as on screen.
|
|
424
|
+
[ANNPendingLayers remove:show.root];
|
|
425
|
+
// The old root's screens let go of the keyboard as their transition starts, before their destroy
|
|
426
|
+
// (`blurOnUnmount`): it doesn't hang over the transition.
|
|
427
|
+
for (UIViewController *layer in show.replaced) {
|
|
428
|
+
[ANNComponentViewController nodeWillLeave:layer];
|
|
429
|
+
}
|
|
430
|
+
// UIKit calls the appearance of the old and the new root while the root is replaced, or on the next turn: the
|
|
431
|
+
// command reports them in its order instead.
|
|
432
|
+
show.driving = YES;
|
|
433
|
+
[ANNAppearanceDispatcher driveAppearanceOf:show.driven];
|
|
434
|
+
[ANNAppearanceDispatcher beginTransitionShowing:@[ show.root ]];
|
|
435
|
+
if (snapshot) {
|
|
436
|
+
// The snapshot takes the touches while it fades: a tap on the old screen doesn't reach the new one.
|
|
437
|
+
snapshot.frame = window.bounds;
|
|
438
|
+
snapshot.userInteractionEnabled = YES;
|
|
439
|
+
[window addSubview:snapshot];
|
|
440
|
+
show.snapshot = snapshot;
|
|
441
|
+
}
|
|
442
|
+
__weak ANNRootShow *weakShow = show;
|
|
443
|
+
void (^replace)(void) = ^{
|
|
444
|
+
ANNRootShow *replacing = weakShow;
|
|
445
|
+
if (replacing && replacing.state == ANNRootShowStateTransition) {
|
|
446
|
+
[ANNRootCoordinator protect:replacing
|
|
447
|
+
step:^{
|
|
448
|
+
[ANNRootCoordinator replaceRootOf:replacing];
|
|
449
|
+
}];
|
|
450
|
+
}
|
|
451
|
+
done();
|
|
452
|
+
};
|
|
453
|
+
if (old.presentedViewController) {
|
|
454
|
+
[old dismissViewControllerAnimated:NO
|
|
455
|
+
completion:^{
|
|
456
|
+
replace();
|
|
457
|
+
}];
|
|
458
|
+
} else {
|
|
459
|
+
replace();
|
|
460
|
+
}
|
|
461
|
+
}
|
|
462
|
+
|
|
463
|
+
// The new root becomes the window's root; the snapshot of the old one dissolves over it, or it shows at once.
|
|
464
|
+
+ (void)replaceRootOf:(ANNRootShow *)show {
|
|
465
|
+
UIWindow *window = ApexNavigation.mainWindow;
|
|
466
|
+
UIView *snapshot = show.snapshot;
|
|
467
|
+
[self unpark:show];
|
|
468
|
+
window.rootViewController = show.root;
|
|
469
|
+
show.installed = YES;
|
|
470
|
+
// The new root's system UI; with its own animation the orientation waits for the end.
|
|
471
|
+
[ANNSystemUI setNeedsUpdate];
|
|
472
|
+
if (show.custom) {
|
|
473
|
+
if (show.answer.isCurrent) {
|
|
474
|
+
[self startAnimationOf:show];
|
|
475
|
+
return;
|
|
476
|
+
}
|
|
477
|
+
// The JavaScript went meanwhile: nothing plays, the reset takes what is left.
|
|
478
|
+
[snapshot removeFromSuperview];
|
|
479
|
+
show.snapshot = nil;
|
|
480
|
+
[self endTransitionOf:show];
|
|
481
|
+
return;
|
|
482
|
+
}
|
|
483
|
+
if (!snapshot) {
|
|
484
|
+
[self endTransitionOf:show];
|
|
485
|
+
return;
|
|
486
|
+
}
|
|
487
|
+
[window bringSubviewToFront:snapshot];
|
|
488
|
+
__weak ANNRootShow *weakShow = show;
|
|
489
|
+
[UIView animateWithDuration:ANNRootDissolveDuration
|
|
490
|
+
delay:0
|
|
491
|
+
options:UIViewAnimationOptionCurveEaseInOut
|
|
492
|
+
animations:^{
|
|
493
|
+
snapshot.alpha = 0;
|
|
494
|
+
}
|
|
495
|
+
completion:^(BOOL finished) {
|
|
496
|
+
ANNRootShow *dissolved = weakShow;
|
|
497
|
+
if (!dissolved) {
|
|
498
|
+
return;
|
|
499
|
+
}
|
|
500
|
+
[ANNRootCoordinator protect:dissolved
|
|
501
|
+
step:^{
|
|
502
|
+
[ANNRootCoordinator endTransitionOf:dissolved];
|
|
503
|
+
}];
|
|
504
|
+
}];
|
|
505
|
+
}
|
|
506
|
+
|
|
507
|
+
#pragma mark - Its own animation
|
|
508
|
+
|
|
509
|
+
// The new root is the window's root at once with the snapshot of the old window under it; `enter` moves the new root's
|
|
510
|
+
// view, `exit` the snapshot. The old root goes and the new one appears now (their `DidDisappear` and `DidAppear` before
|
|
511
|
+
// the layout's modals), and the modals and overlays of the layout show now, during the animation; the state and the
|
|
512
|
+
// answer wait until both the animation and the layers ended.
|
|
513
|
+
+ (void)startAnimationOf:(ANNRootShow *)show {
|
|
514
|
+
UIWindow *window = ApexNavigation.mainWindow;
|
|
515
|
+
UIView *snapshot = show.snapshot;
|
|
516
|
+
UIView *rootView = show.root.view;
|
|
517
|
+
if (snapshot && rootView.superview == window) {
|
|
518
|
+
[window insertSubview:snapshot belowSubview:rootView];
|
|
519
|
+
} else if (snapshot) {
|
|
520
|
+
[window insertSubview:snapshot atIndex:0];
|
|
521
|
+
}
|
|
522
|
+
ANNEnterExitScreenAnimationOptions *animation =
|
|
523
|
+
[show.root resolveOptionsWithDefault].animations.setRoot;
|
|
524
|
+
NSMutableArray<ANNViewTracks *> *tracks = [NSMutableArray new];
|
|
525
|
+
ANNViewAnimationOptions *enter = [ANNAnimationRules playingSide:animation.enter];
|
|
526
|
+
ANNViewAnimationOptions *exit = [ANNAnimationRules playingSide:animation.exit];
|
|
527
|
+
if (enter && rootView) {
|
|
528
|
+
[tracks addObject:[[ANNViewTracks alloc] initWithView:rootView
|
|
529
|
+
side:enter
|
|
530
|
+
alphaBefore:rootView.alpha]];
|
|
531
|
+
}
|
|
532
|
+
if (exit && snapshot) {
|
|
533
|
+
[tracks addObject:[[ANNViewTracks alloc] initWithView:snapshot
|
|
534
|
+
side:exit
|
|
535
|
+
alphaBefore:snapshot.alpha]];
|
|
536
|
+
}
|
|
537
|
+
NSTimeInterval length =
|
|
538
|
+
MAX([ANNAnimationRules lengthOfSide:enter], [ANNAnimationRules lengthOfSide:exit]);
|
|
539
|
+
show.tracks = tracks;
|
|
540
|
+
show.animating = YES;
|
|
541
|
+
ANNAnimatingShow = show;
|
|
542
|
+
show.driver = [[ANNFrameDriver alloc] initWithClients:tracks length:length];
|
|
543
|
+
// The layers' state from here on: the chain may start and a newer `setRoot` stops it.
|
|
544
|
+
show.state = ANNRootShowStateLayers;
|
|
545
|
+
[self holdStateFor:show];
|
|
546
|
+
@try {
|
|
547
|
+
[self destroyLayers:show.replaced];
|
|
548
|
+
[ANNAppearanceDispatcher endSwitchHiding:@[] showing:@[ show.root ] events:nil];
|
|
549
|
+
} @finally {
|
|
550
|
+
[self stopDriving:show];
|
|
551
|
+
}
|
|
552
|
+
// The old root is let go now, with its stopped surfaces: held through the animation, they would be restarted by
|
|
553
|
+
// React Native at a reload and released while they run.
|
|
554
|
+
show.replaced = @[];
|
|
555
|
+
show.driven = @[ show.root ];
|
|
556
|
+
__weak ANNRootShow *weakShow = show;
|
|
557
|
+
[show.driver startWithDone:^{
|
|
558
|
+
ANNRootShow *animated = weakShow;
|
|
559
|
+
if (animated) {
|
|
560
|
+
[ANNRootCoordinator protect:animated
|
|
561
|
+
step:^{
|
|
562
|
+
[ANNRootCoordinator animationEndedOf:animated];
|
|
563
|
+
}];
|
|
564
|
+
}
|
|
565
|
+
}];
|
|
566
|
+
[self showLayerOf:show index:0];
|
|
567
|
+
}
|
|
568
|
+
|
|
569
|
+
+ (void)animationEndedOf:(ANNRootShow *)show {
|
|
570
|
+
if (!show.animating) {
|
|
571
|
+
return;
|
|
572
|
+
}
|
|
573
|
+
[self stopAnimationOf:show];
|
|
574
|
+
[self finishLayersOf:show];
|
|
575
|
+
}
|
|
576
|
+
|
|
577
|
+
// The animation stops at its end state (its end, a newer `setRoot`, a reload, a failure): the views get back what they
|
|
578
|
+
// had and the snapshot goes.
|
|
579
|
+
+ (void)stopAnimationOf:(ANNRootShow *)show {
|
|
580
|
+
if (!show.animating) {
|
|
581
|
+
return;
|
|
582
|
+
}
|
|
583
|
+
show.animating = NO;
|
|
584
|
+
[show.driver cancel];
|
|
585
|
+
show.driver = nil;
|
|
586
|
+
for (ANNViewTracks *tracks in show.tracks) {
|
|
587
|
+
[tracks restore];
|
|
588
|
+
}
|
|
589
|
+
show.tracks = nil;
|
|
590
|
+
// UIKit works out the safe area of the window's root view from where the view is drawn: moved away from the top
|
|
591
|
+
// edge by `enter` (from the bottom, scaled down) it has no top inset, and putting the transform back doesn't make
|
|
592
|
+
// UIKit work it out again. A layout now gives the root, its bars and its screens the window's safe area back.
|
|
593
|
+
UIView *rootView = show.root.viewIfLoaded;
|
|
594
|
+
[rootView setNeedsLayout];
|
|
595
|
+
[rootView layoutIfNeeded];
|
|
596
|
+
[show.snapshot removeFromSuperview];
|
|
597
|
+
show.snapshot = nil;
|
|
598
|
+
if (ANNAnimatingShow == show) {
|
|
599
|
+
ANNAnimatingShow = nil;
|
|
600
|
+
}
|
|
601
|
+
// The orientation the owner held during the animation is asked now (`layout.orientation`: after the transition).
|
|
602
|
+
[ANNSystemUI setNeedsUpdateOfGroups:ANNSystemUIGroupOrientation];
|
|
603
|
+
}
|
|
604
|
+
|
|
605
|
+
+ (BOOL)rootAnimationRuns {
|
|
606
|
+
ANNRootShow *show = ANNAnimatingShow;
|
|
607
|
+
return show != nil && show.animating;
|
|
608
|
+
}
|
|
609
|
+
|
|
610
|
+
// The end of the transition: every screen of the old root and of the library modals over it that showed sends
|
|
611
|
+
// `ComponentDidDisappear`, then each layer is destroyed (it leaves the registry, its content stops,
|
|
612
|
+
// `NativeScreenReleased` / `SlotDestroyed`; no `ModalDismissed`), then `ComponentDidAppear` of the new root, the state,
|
|
613
|
+
// the promise with the root's id, `CommandCompleted`. A layout with modals or overlays shows them first: the state and
|
|
614
|
+
// the answer come once all of them showed.
|
|
615
|
+
//
|
|
616
|
+
// A dissolve that ends after the JavaScript went (a reload asked for, its bundle not loaded yet) destroys nothing: the
|
|
617
|
+
// show stays pending, and the reset takes the replaced root into its hold, so React Native's restart of their surfaces
|
|
618
|
+
// is never cut.
|
|
619
|
+
+ (void)endTransitionOf:(ANNRootShow *)show {
|
|
620
|
+
if (show.state != ANNRootShowStateTransition) {
|
|
621
|
+
return;
|
|
622
|
+
}
|
|
623
|
+
[show.snapshot removeFromSuperview];
|
|
624
|
+
show.snapshot = nil;
|
|
625
|
+
if (!show.answer.isCurrent) {
|
|
626
|
+
return;
|
|
627
|
+
}
|
|
628
|
+
BOOL layers = show.layout.modals.count > 0 || show.layout.overlays.count > 0;
|
|
629
|
+
show.state = layers ? ANNRootShowStateLayers : ANNRootShowStateEnded;
|
|
630
|
+
if (layers) {
|
|
631
|
+
[self holdStateFor:show];
|
|
632
|
+
}
|
|
633
|
+
if (!layers && ANNPendingShow == show) {
|
|
634
|
+
ANNPendingShow = nil;
|
|
635
|
+
}
|
|
636
|
+
@try {
|
|
637
|
+
[self destroyLayers:show.replaced];
|
|
638
|
+
if (layers) {
|
|
639
|
+
[ANNAppearanceDispatcher endSwitchHiding:@[] showing:@[ show.root ] events:nil];
|
|
640
|
+
} else {
|
|
641
|
+
[ANNAppearanceDispatcher endTransitionHiding:@[]
|
|
642
|
+
showing:@[ show.root ]
|
|
643
|
+
events:nil
|
|
644
|
+
answer:show.answer
|
|
645
|
+
value:show.rootId];
|
|
646
|
+
}
|
|
647
|
+
} @finally {
|
|
648
|
+
[self stopDriving:show];
|
|
649
|
+
}
|
|
650
|
+
// As in `startAnimationOf:`: the old root is let go now, not once the layers showed.
|
|
651
|
+
show.replaced = @[];
|
|
652
|
+
show.driven = @[ show.root ];
|
|
653
|
+
if (layers) {
|
|
654
|
+
// After the dissolve, so that they don't come over the snapshot.
|
|
655
|
+
[self showLayerOf:show index:0];
|
|
656
|
+
}
|
|
657
|
+
}
|
|
658
|
+
|
|
659
|
+
+ (void)holdStateFor:(ANNRootShow *)show {
|
|
660
|
+
if (!show.holdsState) {
|
|
661
|
+
show.holdsState = YES;
|
|
662
|
+
[ANNNavigationState holdUpdates];
|
|
663
|
+
}
|
|
664
|
+
}
|
|
665
|
+
|
|
666
|
+
+ (void)releaseStateOf:(ANNRootShow *)show {
|
|
667
|
+
if (show.holdsState) {
|
|
668
|
+
show.holdsState = NO;
|
|
669
|
+
[ANNNavigationState releaseUpdates];
|
|
670
|
+
}
|
|
671
|
+
}
|
|
672
|
+
|
|
673
|
+
// Every `DidDisappear` of the layers before any of them is destroyed (the events of the content that stops come after
|
|
674
|
+
// all of them).
|
|
675
|
+
+ (void)destroyLayers:(NSArray<UIViewController *> *)layers {
|
|
676
|
+
for (UIViewController *layer in layers) {
|
|
677
|
+
[ANNAppearanceDispatcher nodeDidDisappear:layer];
|
|
678
|
+
}
|
|
679
|
+
for (UIViewController *layer in layers) {
|
|
680
|
+
[layer destroy];
|
|
681
|
+
}
|
|
682
|
+
}
|
|
683
|
+
|
|
684
|
+
#pragma mark - The modals and overlays of the layout
|
|
685
|
+
|
|
686
|
+
// One by one, bottom up: each modal is made now, waits and presents through the gate, without animation but the last,
|
|
687
|
+
// which has its `animations.showModal`; then each overlay. A failure of one is logged and skipped.
|
|
688
|
+
+ (void)showLayerOf:(ANNRootShow *)show index:(NSUInteger)index {
|
|
689
|
+
if (show != ANNPendingShow || show.state != ANNRootShowStateLayers || !show.answer.isCurrent) {
|
|
690
|
+
return;
|
|
691
|
+
}
|
|
692
|
+
show.chainIndex = index;
|
|
693
|
+
show.chainModal = nil;
|
|
694
|
+
show.chainOverlay = nil;
|
|
695
|
+
NSArray<ANNLayoutNode *> *modals = show.layout.modals;
|
|
696
|
+
NSArray<ANNLayoutNode *> *overlays = show.layout.overlays;
|
|
697
|
+
__weak ANNRootShow *weakShow = show;
|
|
698
|
+
void (^next)(BOOL) = ^(BOOL shown) {
|
|
699
|
+
ANNRootShow *showing = weakShow;
|
|
700
|
+
if (showing && showing.chainIndex == index) {
|
|
701
|
+
[ANNRootCoordinator protect:showing
|
|
702
|
+
step:^{
|
|
703
|
+
[ANNRootCoordinator showLayerOf:showing index:index + 1];
|
|
704
|
+
}];
|
|
705
|
+
}
|
|
706
|
+
};
|
|
707
|
+
if (index < modals.count) {
|
|
708
|
+
BOOL last = index + 1 == modals.count;
|
|
709
|
+
ANNModal *modal = [ANNModalCoordinator showChainModal:modals[index]
|
|
710
|
+
options:show.optionsById
|
|
711
|
+
animated:last
|
|
712
|
+
ended:next];
|
|
713
|
+
if (show.chainIndex == index) {
|
|
714
|
+
show.chainModal = modal;
|
|
715
|
+
}
|
|
716
|
+
return;
|
|
717
|
+
}
|
|
718
|
+
NSUInteger overlayIndex = index - modals.count;
|
|
719
|
+
if (overlayIndex < overlays.count) {
|
|
720
|
+
ANNOverlay *overlay = [ANNOverlayCoordinator showChainOverlay:overlays[overlayIndex]
|
|
721
|
+
options:show.optionsById
|
|
722
|
+
ended:next];
|
|
723
|
+
if (show.chainIndex == index) {
|
|
724
|
+
show.chainOverlay = overlay;
|
|
725
|
+
}
|
|
726
|
+
return;
|
|
727
|
+
}
|
|
728
|
+
show.layersShown = YES;
|
|
729
|
+
[self finishLayersOf:show];
|
|
730
|
+
}
|
|
731
|
+
|
|
732
|
+
// The state and the answer once the layers showed and, with its own animation, the animation ended.
|
|
733
|
+
+ (void)finishLayersOf:(ANNRootShow *)show {
|
|
734
|
+
if (show != ANNPendingShow || show.state != ANNRootShowStateLayers || !show.layersShown ||
|
|
735
|
+
show.animating) {
|
|
736
|
+
return;
|
|
737
|
+
}
|
|
738
|
+
show.state = ANNRootShowStateEnded;
|
|
739
|
+
ANNPendingShow = nil;
|
|
740
|
+
[self releaseStateOf:show];
|
|
741
|
+
[show.answer resolve:show.rootId];
|
|
742
|
+
}
|
|
743
|
+
|
|
744
|
+
// The chain stops: the modal or the overlay waiting now never shows, the rest are never made.
|
|
745
|
+
+ (void)stopLayersOf:(ANNRootShow *)show {
|
|
746
|
+
ANNModal *modal = show.chainModal;
|
|
747
|
+
ANNOverlay *overlay = show.chainOverlay;
|
|
748
|
+
show.chainIndex = NSNotFound;
|
|
749
|
+
show.chainModal = nil;
|
|
750
|
+
show.chainOverlay = nil;
|
|
751
|
+
[self releaseStateOf:show];
|
|
752
|
+
if (modal) {
|
|
753
|
+
[ANNModalCoordinator cancelChainModal:modal];
|
|
754
|
+
}
|
|
755
|
+
if (overlay) {
|
|
756
|
+
[ANNOverlayCoordinator cancelChainOverlay:overlay];
|
|
757
|
+
}
|
|
758
|
+
}
|
|
759
|
+
|
|
760
|
+
#pragma mark - Last wins
|
|
761
|
+
|
|
762
|
+
// A pending root that waits is destroyed now: it never appeared, so nothing is sent for it; the old root's modals it
|
|
763
|
+
// took stay taken, by the newer `setRoot`. A pending root in its transition ends it at once, without its `DidAppear`
|
|
764
|
+
// and its answer: the root it replaced goes now, and it stays as the current root until the new one replaces it (its
|
|
765
|
+
// screens whose `WillAppear` went get their `DidDisappear` then). A pending root that shows the modals and overlays of
|
|
766
|
+
// its layout stays with those shown; the one waiting is cancelled, the rest are never made.
|
|
767
|
+
+ (void)supersedePending {
|
|
768
|
+
ANNRootShow *pending = ANNPendingShow;
|
|
769
|
+
if (!pending) {
|
|
770
|
+
return;
|
|
771
|
+
}
|
|
772
|
+
ANNPendingShow = nil;
|
|
773
|
+
ANNRootShowState state = pending.state;
|
|
774
|
+
pending.state = ANNRootShowStateEnded;
|
|
775
|
+
if (state == ANNRootShowStateWaiting) {
|
|
776
|
+
[self stopWaitingOf:pending];
|
|
777
|
+
[self unpark:pending];
|
|
778
|
+
[pending.root destroy];
|
|
779
|
+
} else if (state == ANNRootShowStateTransition) {
|
|
780
|
+
[pending.snapshot.layer removeAllAnimations];
|
|
781
|
+
[pending.snapshot removeFromSuperview];
|
|
782
|
+
pending.snapshot = nil;
|
|
783
|
+
@try {
|
|
784
|
+
if (pending.installed) {
|
|
785
|
+
[self destroyLayers:pending.replaced];
|
|
786
|
+
} else {
|
|
787
|
+
// Superseded while the old root's modals went, before it became the window's root: it never shows,
|
|
788
|
+
// and the old root stays the window's root (the newer `setRoot` replaces it); its modals go.
|
|
789
|
+
UIViewController *current = ApexNavigation.mainWindow.rootViewController;
|
|
790
|
+
NSMutableArray<UIViewController *> *modals = [pending.replaced mutableCopy];
|
|
791
|
+
[modals removeObjectIdenticalTo:current];
|
|
792
|
+
[self destroyLayers:modals];
|
|
793
|
+
[self unpark:pending];
|
|
794
|
+
[pending.root destroy];
|
|
795
|
+
}
|
|
796
|
+
} @finally {
|
|
797
|
+
[self stopDriving:pending];
|
|
798
|
+
}
|
|
799
|
+
} else if (state == ANNRootShowStateLayers) {
|
|
800
|
+
// Its own animation ends at its end state; the layers shown stay.
|
|
801
|
+
[self stopAnimationOf:pending];
|
|
802
|
+
[self stopLayersOf:pending];
|
|
803
|
+
}
|
|
804
|
+
[pending.answer reject:[ANNErrorTexts setRootReplaced:pending.rootId]];
|
|
805
|
+
}
|
|
806
|
+
|
|
807
|
+
#pragma mark - The splash, the reload
|
|
808
|
+
|
|
809
|
+
+ (BOOL)isSplash:(UIViewController *)viewController {
|
|
810
|
+
return !viewController || [viewController isKindOfClass:ANNSplashViewController.class];
|
|
811
|
+
}
|
|
812
|
+
|
|
813
|
+
+ (NSArray<UIViewController *> *)takeNodesForReload {
|
|
814
|
+
ANNAssertMainQueue();
|
|
815
|
+
ANNRootShow *pending = ANNPendingShow;
|
|
816
|
+
ANNPendingShow = nil;
|
|
817
|
+
if (!pending) {
|
|
818
|
+
return @[];
|
|
819
|
+
}
|
|
820
|
+
ANNRootShowState state = pending.state;
|
|
821
|
+
pending.state = ANNRootShowStateEnded;
|
|
822
|
+
if (state == ANNRootShowStateWaiting) {
|
|
823
|
+
[self stopWaitingOf:pending];
|
|
824
|
+
[self unpark:pending];
|
|
825
|
+
return @[ pending.root ];
|
|
826
|
+
}
|
|
827
|
+
if (state == ANNRootShowStateTransition) {
|
|
828
|
+
[pending.snapshot.layer removeAllAnimations];
|
|
829
|
+
[pending.snapshot removeFromSuperview];
|
|
830
|
+
pending.snapshot = nil;
|
|
831
|
+
[self stopDriving:pending];
|
|
832
|
+
if (!pending.installed) {
|
|
833
|
+
[self unpark:pending];
|
|
834
|
+
return [pending.replaced arrayByAddingObject:pending.root];
|
|
835
|
+
}
|
|
836
|
+
return pending.replaced;
|
|
837
|
+
}
|
|
838
|
+
// The modals and overlays of its chain go with the coordinators' own lists (N4: no answer).
|
|
839
|
+
[self stopAnimationOf:pending];
|
|
840
|
+
pending.chainIndex = NSNotFound;
|
|
841
|
+
pending.chainModal = nil;
|
|
842
|
+
pending.chainOverlay = nil;
|
|
843
|
+
[self releaseStateOf:pending];
|
|
844
|
+
return @[];
|
|
845
|
+
}
|
|
846
|
+
|
|
847
|
+
@end
|