@apexnative/navigation 1.0.0-alpha.0 → 1.0.0-alpha.10
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 +2 -1
- package/CHANGELOG.md +128 -0
- package/README.md +147 -51
- package/android/CLAUDE.md +78 -25
- package/android/CORE.md +49 -25
- package/android/RECIPES.md +13 -6
- package/android/consumer-rules.pro +6 -0
- package/android/src/main/java/dev/apexnative/navigation/NavigationActivity.kt +85 -10
- package/android/src/main/java/dev/apexnative/navigation/NavigationApplication.kt +34 -13
- package/android/src/main/java/dev/apexnative/navigation/layout/LayoutChecks.kt +5 -1
- package/android/src/main/java/dev/apexnative/navigation/layout/LayoutNode.kt +6 -2
- package/android/src/main/java/dev/apexnative/navigation/nativescreen/NativeScreenContext.kt +2 -2
- package/android/src/main/java/dev/apexnative/navigation/options/AnimationsOptions.kt +2 -2
- package/android/src/main/java/dev/apexnative/navigation/options/BottomTabOptions.kt +1 -1
- package/android/src/main/java/dev/apexnative/navigation/options/BottomTabsOptions.kt +13 -8
- package/android/src/main/java/dev/apexnative/navigation/options/ButtonMenuOptions.kt +2 -2
- package/android/src/main/java/dev/apexnative/navigation/options/ButtonOptions.kt +3 -3
- package/android/src/main/java/dev/apexnative/navigation/options/HardwareBackButtonOptions.kt +9 -1
- package/android/src/main/java/dev/apexnative/navigation/options/LargeTitleOptions.kt +1 -1
- package/android/src/main/java/dev/apexnative/navigation/options/LayoutAnimation.kt +1 -1
- package/android/src/main/java/dev/apexnative/navigation/options/OptionKey.kt +18 -0
- package/android/src/main/java/dev/apexnative/navigation/options/OptionPaths.kt +91 -0
- package/android/src/main/java/dev/apexnative/navigation/options/OptionsCache.kt +8 -4
- package/android/src/main/java/dev/apexnative/navigation/options/SheetOptions.kt +7 -4
- package/android/src/main/java/dev/apexnative/navigation/options/SideMenuOptions.kt +6 -1
- package/android/src/main/java/dev/apexnative/navigation/options/StackAnimationOptions.kt +40 -2
- package/android/src/main/java/dev/apexnative/navigation/options/StatusBarOptions.kt +7 -3
- package/android/src/main/java/dev/apexnative/navigation/options/TitleOptions.kt +2 -2
- package/android/src/main/java/dev/apexnative/navigation/options/TopBarAppearanceOptions.kt +1 -1
- package/android/src/main/java/dev/apexnative/navigation/options/TopBarOptions.kt +16 -7
- package/android/src/main/java/dev/apexnative/navigation/options/UserChoices.kt +159 -0
- package/android/src/main/java/dev/apexnative/navigation/react/CommandAnswer.kt +29 -36
- package/android/src/main/java/dev/apexnative/navigation/react/CommandContract.kt +59 -0
- package/android/src/main/java/dev/apexnative/navigation/react/ContentHeights.kt +95 -0
- package/android/src/main/java/dev/apexnative/navigation/react/ContentMounts.kt +66 -0
- package/android/src/main/java/dev/apexnative/navigation/react/ErrorTexts.kt +75 -60
- package/android/src/main/java/dev/apexnative/navigation/react/Hinge.kt +35 -23
- package/android/src/main/java/dev/apexnative/navigation/react/NavigationTurboModule.kt +12 -7
- package/android/src/main/java/dev/apexnative/navigation/react/OptionsCommands.kt +42 -4
- package/android/src/main/java/dev/apexnative/navigation/react/PendingCalls.kt +48 -0
- package/android/src/main/java/dev/apexnative/navigation/react/ReactView.kt +54 -20
- package/android/src/main/java/dev/apexnative/navigation/react/ReloadCoordinator.kt +7 -6
- package/android/src/main/java/dev/apexnative/navigation/react/ScreenEnvironment.kt +177 -0
- package/android/src/main/java/dev/apexnative/navigation/react/ScreenRegions.kt +19 -50
- package/android/src/main/java/dev/apexnative/navigation/react/ScrollEvents.kt +49 -128
- package/android/src/main/java/dev/apexnative/navigation/react/events/AppearanceDispatcher.kt +50 -81
- package/android/src/main/java/dev/apexnative/navigation/react/events/EventContract.kt +226 -0
- package/android/src/main/java/dev/apexnative/navigation/react/events/EventEmitter.kt +135 -94
- package/android/src/main/java/dev/apexnative/navigation/react/events/NavigationState.kt +154 -0
- package/android/src/main/java/dev/apexnative/navigation/react/events/ScreenAppearance.kt +0 -6
- package/android/src/main/java/dev/apexnative/navigation/safearea/SafeAreaView.kt +12 -10
- package/android/src/main/java/dev/apexnative/navigation/slots/SlotContainers.kt +10 -7
- package/android/src/main/java/dev/apexnative/navigation/slots/SlotScreenView.kt +39 -19
- package/android/src/main/java/dev/apexnative/navigation/slots/SlotView.kt +16 -4
- package/android/src/main/java/dev/apexnative/navigation/slots/SlotViews.kt +40 -0
- package/android/src/main/java/dev/apexnative/navigation/utils/ImageKey.kt +66 -0
- package/android/src/main/java/dev/apexnative/navigation/utils/ImageLoader.kt +7 -89
- package/android/src/main/java/dev/apexnative/navigation/utils/ImageRequests.kt +76 -0
- package/android/src/main/java/dev/apexnative/navigation/utils/MaterialTheme.kt +5 -6
- package/android/src/main/java/dev/apexnative/navigation/utils/OptionImages.kt +262 -0
- package/android/src/main/java/dev/apexnative/navigation/utils/SystemAnimations.kt +36 -0
- package/android/src/main/java/dev/apexnative/navigation/utils/UiUtils.kt +3 -3
- package/android/src/main/java/dev/apexnative/navigation/utils/ViewController.kt +3 -1
- package/android/src/main/java/dev/apexnative/navigation/utils/ViewExtensions.kt +0 -13
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/arrangement/ArrangementController.kt +10 -7
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/arrangement/SecondaryScreenPresenter.kt +13 -5
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/AppliedTabCalls.kt +49 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/BottomTabsCollapseBehavior.kt +5 -3
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/BottomTabsController.kt +108 -34
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/BottomTabsPresenter.kt +25 -24
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/CustomTabRowGeometry.kt +22 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/TabItems.kt +3 -3
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/TabsRoom.kt +0 -5
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/component/ComponentPresenter.kt +28 -7
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/component/ComponentViewController.kt +12 -9
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/component/ContentReadiness.kt +2 -2
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/component/RenderWait.kt +27 -7
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/component/ScreenFrame.kt +1 -1
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/component/ScreenReadiness.kt +103 -56
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/component/ScreenSafeArea.kt +29 -11
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/externalcomponent/ExternalComponentViewController.kt +2 -6
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/modal/ModalAnimations.kt +22 -24
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/modal/ModalCoordinator.kt +109 -21
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/modal/ModalRecord.kt +21 -6
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/modal/ModalSheet.kt +476 -73
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/modal/ModalViews.kt +57 -25
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/modal/SheetBack.kt +42 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/modal/SheetStops.kt +83 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/navigator/BackCallbackCheck.kt +50 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/navigator/BackCallbackState.kt +49 -14
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/navigator/Navigator.kt +71 -12
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/navigator/RootCoordinator.kt +37 -11
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/overlay/OverlayCoordinator.kt +10 -8
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/parent/Capabilities.kt +11 -4
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/parent/ContainerBackground.kt +3 -3
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/parent/ParentController.kt +6 -6
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/sidemenu/SideMenuController.kt +42 -9
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/sidemenu/SideMenuMotion.kt +19 -8
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/sidemenu/SideMenuPresenter.kt +16 -7
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/sidemenu/SideMenuRules.kt +43 -4
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/splitview/SplitPanes.kt +23 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/splitview/SplitViewController.kt +77 -17
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/BackPreview.kt +315 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/PreparedFrame.kt +3 -3
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/StackCommands.kt +30 -20
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/StackController.kt +216 -18
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/StackDisplay.kt +26 -1
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/StackQueue.kt +149 -41
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/StackTransitions.kt +26 -8
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/StackViews.kt +115 -6
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/fab/FabMotion.kt +142 -0
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/fab/FabPresenter.kt +222 -48
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/search/ScreenSearch.kt +3 -5
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/search/StackSearchPresenter.kt +30 -34
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/topbar/BarComponents.kt +5 -51
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/topbar/BarRowTransition.kt +3 -2
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/topbar/ButtonPlaces.kt +11 -5
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/topbar/MenuChecks.kt +13 -56
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/topbar/TopBarPresenter.kt +219 -54
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/stack/topbar/TopBarVisibility.kt +9 -2
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/viewcontroller/ScrollEventListener.kt +6 -9
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/viewcontroller/ViewController.kt +75 -21
- package/android/src/main/java/dev/apexnative/navigation/views/animations/AnimationLayer.kt +73 -0
- package/android/src/main/java/dev/apexnative/navigation/views/animations/Curves.kt +29 -11
- package/android/src/main/java/dev/apexnative/navigation/views/animations/ValueInterpolation.kt +14 -0
- package/android/src/main/java/dev/apexnative/navigation/views/bottomtabs/BottomTabs.kt +9 -7
- package/android/src/main/java/dev/apexnative/navigation/views/bottomtabs/BottomTabsLayout.kt +61 -2
- package/android/src/main/java/dev/apexnative/navigation/views/bottomtabs/CustomBottomTabItemView.kt +0 -5
- package/android/src/main/java/dev/apexnative/navigation/views/bottomtabs/CustomTabRow.kt +72 -10
- package/android/src/main/java/dev/apexnative/navigation/views/element/ElementStep.kt +31 -0
- package/android/src/main/java/dev/apexnative/navigation/views/element/ElementTransitions.kt +143 -135
- package/android/src/main/java/dev/apexnative/navigation/views/element/TargetsWait.kt +13 -5
- package/android/src/main/java/dev/apexnative/navigation/views/element/TransitionLayer.kt +37 -112
- package/android/src/main/java/dev/apexnative/navigation/views/element/TransitionTargets.kt +9 -6
- package/android/src/main/java/dev/apexnative/navigation/views/element/TransitionViews.kt +100 -0
- package/android/src/main/java/dev/apexnative/navigation/views/element/animators/ElementPictures.kt +112 -4
- package/android/src/main/java/dev/apexnative/navigation/views/element/animators/FlightGeometry.kt +346 -36
- package/android/src/main/java/dev/apexnative/navigation/views/element/animators/ImageMorph.kt +199 -0
- package/android/src/main/java/dev/apexnative/navigation/views/element/animators/SharedAnimatorFactory.kt +56 -41
- package/android/src/main/java/dev/apexnative/navigation/views/element/animators/TextMorph.kt +176 -0
- package/android/src/main/java/dev/apexnative/navigation/views/element/animators/ViewMorph.kt +108 -0
- package/android/src/main/java/dev/apexnative/navigation/views/sidemenu/SideMenuView.kt +12 -3
- package/android/src/main/java/dev/apexnative/navigation/views/stack/ScreenEdge.kt +45 -0
- package/android/src/main/java/dev/apexnative/navigation/views/stack/StackLayout.kt +140 -1
- package/android/src/main/java/dev/apexnative/navigation/views/stack/fab/Fab.kt +14 -10
- package/android/src/main/java/dev/apexnative/navigation/views/stack/fab/FabCopy.kt +85 -0
- package/android/src/main/java/dev/apexnative/navigation/views/stack/fab/FabMenu.kt +13 -0
- package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/TitleBar.kt +5 -17
- package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/TopBar.kt +73 -34
- package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/titlebar/BarButtonComponentCell.kt +6 -6
- package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/titlebar/BarButtonView.kt +113 -0
- package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/titlebar/BarMenu.kt +219 -0
- package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/titlebar/ButtonBar.kt +125 -178
- package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/titlebar/ButtonMenus.kt +34 -64
- package/android/src/main/java/dev/apexnative/navigation/views/stack/topbar/titlebar/ButtonRow.kt +216 -0
- package/android/src/main/jni/ANNContentHeights.cpp +82 -0
- package/android/src/main/res/drawable/apex_navigation_ic_arrow_right.xml +14 -0
- package/android/src/main/res/layout/apex_navigation_menu_header.xml +19 -0
- package/android/src/main/res/layout/apex_navigation_menu_item.xml +68 -0
- package/android/src/main/res/values/styles.xml +1 -1
- package/android/src/main/res/values-night/styles.xml +1 -1
- package/cli/app.js +1 -1
- package/cli/doctor/checks/app.js +77 -14
- package/cli/doctor/checks/splash.js +4 -22
- package/cli/migrate/native.js +18 -0
- package/cli/project.js +10 -2
- package/cli/setup/index.js +18 -0
- package/cli/setup/source.js +2 -1
- package/cli/setup/steps/appDelegate.js +66 -11
- package/cli/setup/steps/mainApplication.js +134 -19
- package/cli/setup/steps/metro.js +46 -0
- package/cli/setup/steps/sceneDelegate.js +108 -0
- package/cli/splash/index.js +3 -1
- package/cli/upgrade/changelog.js +2 -2
- package/docs-md/architecture/native-screens.md +4 -0
- package/docs-md/architecture/theme-and-context.md +131 -12
- package/docs-md/architecture/transitions.md +58 -12
- package/docs-md/containers/modals.md +8 -4
- package/docs-md/containers/overlays.md +3 -1
- package/docs-md/containers/side-menu.md +19 -2
- package/docs-md/containers/tabs.md +5 -1
- package/docs-md/flows/bottom-sheets.md +4 -2
- package/docs-md/flows/forms-in-a-modal.md +1 -1
- package/docs-md/fundamentals/screens-and-props.md +9 -1
- package/docs-md/fundamentals/starting-the-app.md +1 -1
- package/docs-md/guides/cli.md +4 -3
- package/docs-md/guides/deep-links.md +15 -33
- package/docs-md/help/glossary.md +4 -4
- package/docs-md/help/troubleshooting.md +44 -6
- package/docs-md/index.json +57 -1
- package/docs-md/migration/from-expo-router.md +1 -1
- package/docs-md/migration/from-react-native-navigation.md +9 -3
- package/docs-md/migration/from-react-navigation.md +2 -2
- package/docs-md/screen-ui/back-and-gestures.md +46 -2
- package/docs-md/screen-ui/bar-buttons.md +5 -5
- package/docs-md/screen-ui/search.md +1 -1
- package/docs-md/screen-ui/system-ui.md +17 -12
- package/docs-md/screen-ui/toolbar-and-fab.md +4 -2
- package/docs-md/screen-ui/top-bar.md +8 -4
- package/docs-md/start/installation.md +21 -3
- package/ios/Animations/ANNFrameDriver.h +55 -15
- package/ios/Animations/ANNFrameDriver.mm +216 -60
- package/ios/Animations/ANNTransitionAnimator.h +26 -5
- package/ios/Animations/ANNTransitionAnimator.mm +61 -13
- package/ios/Animations/ANNTransitionPlan.h +2 -2
- package/ios/Animations/ANNTransitionPlan.mm +10 -0
- package/ios/Animations/ANNTransitionWait.mm +6 -7
- package/ios/Animations/Elements/ANNElementFinder.h +57 -0
- package/ios/Animations/Elements/ANNElementFinder.mm +174 -2
- package/ios/Animations/Elements/ANNElementTransition.h +10 -8
- package/ios/Animations/Elements/ANNElementTransition.mm +19 -21
- package/ios/Animations/Elements/ANNSharedElementFlight.h +16 -11
- package/ios/Animations/Elements/ANNSharedElementFlight.mm +308 -69
- package/ios/Animations/Interpolators/ANNInterpolate.h +2 -30
- package/ios/Animations/Interpolators/ANNTransformParts.h +48 -0
- package/ios/Animations/Interpolators/ANNTransformParts.mm +507 -0
- package/ios/Animations/Interpolators/ANNViewTracks.h +9 -6
- package/ios/Animations/Interpolators/ANNViewTracks.mm +100 -30
- package/ios/CLAUDE.md +60 -24
- package/ios/CORE.md +44 -34
- package/ios/Contract/ANNCommandAnswer.h +13 -5
- package/ios/Contract/ANNCommandAnswer.mm +40 -32
- package/ios/Contract/ANNCommandContract.h +15 -0
- package/ios/Contract/ANNCommandContract.mm +78 -0
- package/ios/Contract/ANNCommandRunner.h +10 -9
- package/ios/Contract/ANNCommandRunner.mm +22 -28
- package/ios/Contract/ANNErrorTexts.h +6 -2
- package/ios/Contract/ANNErrorTexts.mm +18 -10
- package/ios/Contract/ANNLayoutNode.h +3 -3
- package/ios/Contract/ANNLayoutReader.h +3 -3
- package/ios/Core/ANNAppDelegate.mm +0 -2
- package/ios/Core/ANNAppearanceDispatcher.h +5 -4
- package/ios/Core/ANNAppearanceDispatcher.mm +12 -1
- package/ios/Core/ANNDeepLinkQueue.h +22 -2
- package/ios/Core/ANNDeepLinkQueue.mm +121 -14
- package/ios/Core/ANNErrorHandler.h +9 -4
- package/ios/Core/ANNErrorHandler.mm +20 -2
- package/ios/Core/ANNEventContract.h +246 -0
- package/ios/Core/ANNEventContract.mm +225 -0
- package/ios/Core/ANNEventEmitter.h +6 -2
- package/ios/Core/ANNEventEmitter.mm +117 -80
- package/ios/Core/ANNHinge.h +6 -0
- package/ios/Core/ANNHinge.mm +15 -4
- package/ios/Core/ANNJavaScriptCalls.h +33 -0
- package/ios/Core/ANNJavaScriptCalls.mm +52 -0
- package/ios/Core/ANNLayoutProtocol.h +5 -5
- package/ios/Core/ANNNavigationState.h +7 -5
- package/ios/Core/ANNNavigationState.mm +8 -7
- package/ios/Core/ANNNodeHelper.h +32 -12
- package/ios/Core/ANNNodeHelper.mm +100 -3
- package/ios/Core/ANNParking.h +5 -4
- package/ios/Core/ANNReloadCoordinator.mm +5 -12
- package/ios/Core/ANNRenderWait.h +20 -6
- package/ios/Core/ANNRenderWait.mm +143 -56
- package/ios/Core/ANNSceneDelegate.mm +25 -15
- package/ios/Core/ANNSystemUI.h +3 -2
- package/ios/Core/ANNSystemUI.mm +7 -0
- package/ios/Core/ANNUtils.h +7 -0
- package/ios/Core/ANNUtils.mm +10 -0
- package/ios/Core/ApexNavigation+Internal.h +1 -1
- package/ios/Core/ApexNavigation.mm +7 -6
- package/ios/Core/UIViewController+LayoutProtocol.h +9 -2
- package/ios/Core/UIViewController+LayoutProtocol.mm +8 -0
- package/ios/Layouts/Arrangement/ANNArrangementState.h +2 -17
- package/ios/Layouts/Arrangement/ANNArrangementState.mm +0 -38
- package/ios/Layouts/Arrangement/ANNArrangementViewController.mm +10 -8
- package/ios/Layouts/Modal/ANNModalCoordinator.h +1 -1
- package/ios/Layouts/Modal/ANNModalCoordinator.mm +57 -16
- package/ios/Layouts/Modal/ANNModalPresentation.h +8 -5
- package/ios/Layouts/Modal/ANNModalPresentation.mm +12 -12
- package/ios/Layouts/Modal/ANNSheetPresenter.mm +83 -1
- package/ios/Layouts/Overlay/ANNOverlayCoordinator.mm +2 -8
- package/ios/Layouts/Root/ANNRootCoordinator.mm +58 -19
- package/ios/Layouts/Root/ANNSplashViewController.h +5 -3
- package/ios/Layouts/Root/ANNSplashViewController.mm +147 -0
- package/ios/Layouts/Screen/ANNComponentPresenter.h +11 -3
- package/ios/Layouts/Screen/ANNComponentPresenter.mm +34 -6
- package/ios/Layouts/Screen/ANNComponentViewController.h +15 -13
- package/ios/Layouts/Screen/ANNComponentViewController.mm +130 -75
- package/ios/Layouts/Screen/ANNNativeScreenContext.mm +7 -5
- package/ios/Layouts/Screen/ANNPreviewInteraction.h +7 -4
- package/ios/Layouts/Screen/ANNPreviewInteraction.mm +72 -10
- package/ios/Layouts/Screen/ANNScreenEnvironment.h +63 -0
- package/ios/Layouts/Screen/ANNScreenEnvironment.mm +181 -0
- package/ios/Layouts/Screen/ANNScreenPlace.h +53 -0
- package/ios/Layouts/Screen/ANNScreenPlace.mm +205 -0
- package/ios/Layouts/Screen/ANNScreenRegions.h +3 -18
- package/ios/Layouts/Screen/ANNScreenRegions.mm +9 -44
- package/ios/Layouts/Screen/ANNScreenSafeArea.h +4 -9
- package/ios/Layouts/Screen/ANNScreenSafeArea.mm +14 -16
- package/ios/Layouts/Screen/ANNScreenSettling.h +32 -0
- package/ios/Layouts/Screen/ANNScreenSettling.mm +137 -0
- package/ios/Layouts/SideMenu/ANNSideMenuTypes.h +8 -0
- package/ios/Layouts/SideMenu/ANNSideMenuViewController.mm +83 -14
- package/ios/Layouts/SplitView/ANNSplitViewCommands.h +3 -2
- package/ios/Layouts/SplitView/ANNSplitViewCommands.mm +105 -39
- package/ios/Layouts/SplitView/ANNSplitViewController.mm +7 -8
- package/ios/Layouts/Stack/ANNPreviewPush.h +7 -6
- package/ios/Layouts/Stack/ANNPreviewPush.mm +142 -27
- package/ios/Layouts/Stack/ANNStackAnimatingDelegate.h +11 -2
- package/ios/Layouts/Stack/ANNStackAnimatingDelegate.mm +14 -7
- package/ios/Layouts/Stack/ANNStackCommands.mm +1 -0
- package/ios/Layouts/Stack/ANNStackController.h +8 -0
- package/ios/Layouts/Stack/ANNStackController.mm +184 -16
- package/ios/Layouts/Stack/ANNStackQueue.h +5 -2
- package/ios/Layouts/Stack/ANNStackQueue.mm +56 -43
- package/ios/Layouts/Stack/ANNSwipePopInteraction.h +26 -0
- package/ios/Layouts/Stack/ANNSwipePopInteraction.mm +185 -0
- package/ios/Layouts/Stack/InteractivePopGestureDelegate.mm +28 -4
- package/ios/Layouts/Stack/UINavigationController+ANNCommands.h +4 -2
- package/ios/Layouts/Stack/UINavigationController+ANNCommands.mm +2 -3
- package/ios/Layouts/Tabs/ANNBottomTabItemBuilder.h +4 -0
- package/ios/Layouts/Tabs/ANNBottomTabItemBuilder.mm +11 -0
- package/ios/Layouts/Tabs/ANNBottomTabsAccessoryView.h +12 -1
- package/ios/Layouts/Tabs/ANNBottomTabsAccessoryView.mm +23 -0
- package/ios/Layouts/Tabs/ANNBottomTabsController.h +3 -0
- package/ios/Layouts/Tabs/ANNBottomTabsController.mm +237 -57
- package/ios/Layouts/Tabs/ANNBottomTabsCustomRow.mm +8 -3
- package/ios/Layouts/Tabs/ANNBottomTabsPresenter.h +6 -2
- package/ios/Layouts/Tabs/ANNBottomTabsPresenter.mm +232 -43
- package/ios/Layouts/Tabs/ANNTabsDesign.h +6 -5
- package/ios/Layouts/Tabs/ANNTabsDesign.mm +9 -1
- package/ios/Layouts/Tabs/UITabBar+utils.h +5 -5
- package/ios/Layouts/Tabs/UITabBar+utils.mm +32 -13
- package/ios/Options/ANNAnimationOptions.h +2 -1
- package/ios/Options/ANNAnimationOptions.mm +1 -1
- package/ios/Options/ANNBottomTabsOptions.h +2 -0
- package/ios/Options/ANNBottomTabsOptions.mm +1 -0
- package/ios/Options/ANNOptions.h +25 -0
- package/ios/Options/ANNOptions.mm +157 -1
- package/ios/Options/ANNOptionsCache.h +7 -6
- package/ios/Options/ANNOptionsReader.mm +108 -0
- package/ios/Options/ANNSearchBarOptions.h +4 -3
- package/ios/Options/ANNSheetOptions.h +4 -1
- package/ios/Options/ANNSideMenuOptions.h +2 -0
- package/ios/Options/ANNSideMenuOptions.mm +2 -0
- package/ios/Options/ANNStackPopAnimationOptions.h +13 -0
- package/ios/Options/ANNStackPopAnimationOptions.mm +11 -0
- package/ios/Options/ANNUserChoice.h +57 -0
- package/ios/Options/ANNUserChoice.mm +44 -0
- package/ios/Options/Params/ANNImageSource.h +61 -0
- package/ios/Options/Params/ANNImageSource.mm +101 -0
- package/ios/Options/Params/ANNOptionImages.h +37 -0
- package/ios/Options/Params/ANNOptionImages.mm +284 -0
- package/ios/Options/Params/ANNParam.h +15 -0
- package/ios/Options/Params/ANNParam.mm +61 -0
- package/ios/Options/Params/Color.h +3 -0
- package/ios/Options/Params/Color.mm +21 -0
- package/ios/Options/Params/ColorParser.h +4 -3
- package/ios/Options/Params/ColorParser.mm +22 -4
- package/ios/Options/Params/Image.h +15 -2
- package/ios/Options/Params/Image.mm +35 -2
- package/ios/Options/Params/ImageParser.h +5 -5
- package/ios/Options/Params/ImageParser.mm +28 -46
- package/ios/Public/ApexNavigation/ANNSceneDelegate.h +3 -0
- package/ios/Public/ApexNavigation/ApexNavigation.h +1 -1
- package/ios/RECIPES.md +13 -6
- package/ios/React/ANNReactView.mm +6 -25
- package/ios/React/ANNSafeAreaViewComponentView.mm +28 -17
- package/ios/React/ANNSurfaceHostingView.h +14 -0
- package/ios/React/ANNSurfaceHostingView.mm +144 -1
- package/ios/React/Slots/ANNSlotComponentView.mm +24 -17
- package/ios/React/Slots/ANNSlotContainers.h +14 -6
- package/ios/React/Slots/ANNSlotContainers.mm +75 -2
- package/ios/React/Slots/ANNSlotHost.mm +1 -3
- package/ios/React/Slots/ANNSlotScreenView.mm +8 -2
- package/ios/TopBar/ANNBackButtonPresenter.mm +6 -5
- package/ios/TopBar/ANNBarAppearance.h +2 -1
- package/ios/TopBar/ANNBarAppearance.mm +111 -30
- package/ios/TopBar/ANNBarBackgroundComponent.mm +16 -0
- package/ios/TopBar/ANNBarButtonComponentView.h +4 -4
- package/ios/TopBar/ANNBarButtonComponentView.mm +1 -1
- package/ios/TopBar/ANNBarButtons.h +14 -8
- package/ios/TopBar/ANNBarButtons.mm +397 -80
- package/ios/TopBar/ANNIconButtonImage.h +1 -0
- package/ios/TopBar/ANNIconButtonImage.mm +34 -1
- package/ios/TopBar/ANNLargeTitlePresenter.h +13 -0
- package/ios/TopBar/ANNLargeTitlePresenter.mm +50 -7
- package/ios/TopBar/ANNMainList.h +3 -0
- package/ios/TopBar/ANNMainList.mm +4 -0
- package/ios/TopBar/ANNScrollEdgeEffects.h +22 -6
- package/ios/TopBar/ANNScrollEdgeEffects.mm +123 -16
- package/ios/TopBar/ANNSearchPresenter.mm +172 -21
- package/ios/TopBar/ANNSearchResultsViewController.mm +29 -6
- package/ios/TopBar/ANNTopBarPresenter.h +8 -2
- package/ios/TopBar/ANNTopBarPresenter.mm +155 -33
- package/ios/TurboModules/ANNTurboEventEmitter.mm +4 -35
- package/ios/TurboModules/ANNTurboModule.mm +104 -33
- package/ios/cpp/react/renderer/components/ApexNavigationSpec/ANNSlotState.cpp +20 -0
- package/ios/cpp/react/renderer/components/ApexNavigationSpec/ANNSlotState.h +5 -14
- package/lib/module/ARCHITECTURE.md +40 -27
- package/lib/module/adapters/NativeANNTurboModule.js.map +1 -1
- package/lib/module/api/app/AppRegistry.js +14 -2
- package/lib/module/api/app/AppRegistry.js.map +1 -1
- package/lib/module/api/app/createNavigation.js +190 -66
- package/lib/module/api/app/createNavigation.js.map +1 -1
- package/lib/module/api/commands/commands.js +54 -6
- package/lib/module/api/commands/commands.js.map +1 -1
- package/lib/module/api/events/navigationEvents.js +6 -2
- package/lib/module/api/events/navigationEvents.js.map +1 -1
- package/lib/module/api/hooks/useNavigation.js +8 -3
- package/lib/module/api/hooks/useNavigation.js.map +1 -1
- package/lib/module/api/hooks/useSafeAreaInsets.js +4 -3
- package/lib/module/api/hooks/useSafeAreaInsets.js.map +1 -1
- package/lib/module/api/linking/dispatchedLinks.js +23 -0
- package/lib/module/api/linking/dispatchedLinks.js.map +1 -0
- package/lib/module/api/linking/linking.js +11 -0
- package/lib/module/api/linking/linking.js.map +1 -1
- package/lib/module/api/navigation.js.map +1 -1
- package/lib/module/api/options/OptionsChain.js +2 -2
- package/lib/module/api/screens/defineScreen.js +45 -3
- package/lib/module/api/screens/defineScreen.js.map +1 -1
- package/lib/module/api/screens/nativeScreens.js +31 -6
- package/lib/module/api/screens/nativeScreens.js.map +1 -1
- package/lib/module/api/screens/registerScreens.js +193 -35
- package/lib/module/api/screens/registerScreens.js.map +1 -1
- package/lib/module/api/theme/theme.js +5 -0
- package/lib/module/api/theme/theme.js.map +1 -1
- package/lib/module/engine/commands.js +51 -9
- package/lib/module/engine/commands.js.map +1 -1
- package/lib/module/engine/layout.js +20 -11
- package/lib/module/engine/layout.js.map +1 -1
- package/lib/module/engine/nativeScreens.js +9 -0
- package/lib/module/engine/nativeScreens.js.map +1 -1
- package/lib/module/engine/options.js +49 -15
- package/lib/module/engine/options.js.map +1 -1
- package/lib/module/engine/optionsChange.js +102 -0
- package/lib/module/engine/optionsChange.js.map +1 -0
- package/lib/module/engine/places.js +52 -7
- package/lib/module/engine/places.js.map +1 -1
- package/lib/module/engine/props.js +30 -1
- package/lib/module/engine/props.js.map +1 -1
- package/lib/module/engine/refresh.js +85 -0
- package/lib/module/engine/refresh.js.map +1 -0
- package/lib/module/engine/rememberedOptions.js +61 -1
- package/lib/module/engine/rememberedOptions.js.map +1 -1
- package/lib/module/engine/screens.js +77 -16
- package/lib/module/engine/screens.js.map +1 -1
- package/lib/module/interfaces/contract/commands.json +101 -0
- package/lib/module/interfaces/contract/errors.json +275 -0
- package/lib/typescript/adapters/NativeANNTurboModule.d.ts +12 -2
- package/lib/typescript/adapters/NativeANNTurboModule.d.ts.map +1 -1
- package/lib/typescript/api/app/AppRegistry.d.ts.map +1 -1
- package/lib/typescript/api/app/createNavigation.d.ts +8 -3
- package/lib/typescript/api/app/createNavigation.d.ts.map +1 -1
- package/lib/typescript/api/commands/commands.d.ts.map +1 -1
- package/lib/typescript/api/commands/presentation.d.ts +4 -3
- package/lib/typescript/api/commands/presentation.d.ts.map +1 -1
- package/lib/typescript/api/events/navigationEvents.d.ts +3 -3
- package/lib/typescript/api/events/navigationEvents.d.ts.map +1 -1
- package/lib/typescript/api/hooks/useNavigation.d.ts +1 -1
- package/lib/typescript/api/hooks/useNavigation.d.ts.map +1 -1
- package/lib/typescript/api/hooks/useSafeAreaInsets.d.ts +4 -3
- package/lib/typescript/api/hooks/useSafeAreaInsets.d.ts.map +1 -1
- package/lib/typescript/api/index.d.ts +1 -1
- package/lib/typescript/api/index.d.ts.map +1 -1
- package/lib/typescript/api/linking/dispatchedLinks.d.ts +7 -0
- package/lib/typescript/api/linking/dispatchedLinks.d.ts.map +1 -0
- package/lib/typescript/api/linking/linking.d.ts +8 -0
- package/lib/typescript/api/linking/linking.d.ts.map +1 -1
- package/lib/typescript/api/navigation.d.ts +4 -1
- package/lib/typescript/api/navigation.d.ts.map +1 -1
- package/lib/typescript/api/options/OptionsChain.d.ts +2 -2
- package/lib/typescript/api/screens/defineScreen.d.ts +23 -4
- package/lib/typescript/api/screens/defineScreen.d.ts.map +1 -1
- package/lib/typescript/api/screens/nativeScreens.d.ts +8 -1
- package/lib/typescript/api/screens/nativeScreens.d.ts.map +1 -1
- package/lib/typescript/api/screens/registerScreens.d.ts.map +1 -1
- package/lib/typescript/api/theme/theme.d.ts +2 -0
- package/lib/typescript/api/theme/theme.d.ts.map +1 -1
- package/lib/typescript/engine/commands.d.ts +5 -0
- package/lib/typescript/engine/commands.d.ts.map +1 -1
- package/lib/typescript/engine/layout.d.ts.map +1 -1
- package/lib/typescript/engine/nativeScreens.d.ts +5 -0
- package/lib/typescript/engine/nativeScreens.d.ts.map +1 -1
- package/lib/typescript/engine/options.d.ts +5 -2
- package/lib/typescript/engine/options.d.ts.map +1 -1
- package/lib/typescript/engine/optionsChange.d.ts +28 -0
- package/lib/typescript/engine/optionsChange.d.ts.map +1 -0
- package/lib/typescript/engine/places.d.ts +7 -2
- package/lib/typescript/engine/places.d.ts.map +1 -1
- package/lib/typescript/engine/props.d.ts +8 -1
- package/lib/typescript/engine/props.d.ts.map +1 -1
- package/lib/typescript/engine/refresh.d.ts +35 -0
- package/lib/typescript/engine/refresh.d.ts.map +1 -0
- package/lib/typescript/engine/rememberedOptions.d.ts +13 -0
- package/lib/typescript/engine/rememberedOptions.d.ts.map +1 -1
- package/lib/typescript/engine/screens.d.ts +27 -6
- package/lib/typescript/engine/screens.d.ts.map +1 -1
- package/lib/typescript/interfaces/ComponentEvents.d.ts +4 -4
- package/lib/typescript/interfaces/ComponentEvents.d.ts.map +1 -1
- package/lib/typescript/interfaces/Events.d.ts +28 -10
- package/lib/typescript/interfaces/Events.d.ts.map +1 -1
- package/lib/typescript/interfaces/Options.d.ts +1 -1
- package/lib/typescript/interfaces/Options.d.ts.map +1 -1
- package/lib/typescript/interfaces/options/animations.d.ts +80 -22
- package/lib/typescript/interfaces/options/animations.d.ts.map +1 -1
- package/lib/typescript/interfaces/options/bottomTabs.d.ts +21 -7
- package/lib/typescript/interfaces/options/bottomTabs.d.ts.map +1 -1
- package/lib/typescript/interfaces/options/buttons.d.ts +23 -15
- package/lib/typescript/interfaces/options/buttons.d.ts.map +1 -1
- package/lib/typescript/interfaces/options/modals.d.ts +34 -26
- package/lib/typescript/interfaces/options/modals.d.ts.map +1 -1
- package/lib/typescript/interfaces/options/sideMenu.d.ts +23 -6
- package/lib/typescript/interfaces/options/sideMenu.d.ts.map +1 -1
- package/lib/typescript/interfaces/options/stack.d.ts +17 -3
- package/lib/typescript/interfaces/options/stack.d.ts.map +1 -1
- package/lib/typescript/interfaces/options/system.d.ts +18 -11
- package/lib/typescript/interfaces/options/system.d.ts.map +1 -1
- package/lib/typescript/interfaces/options/toolbar.d.ts +2 -2
- package/lib/typescript/interfaces/options/topBar.d.ts +68 -38
- package/lib/typescript/interfaces/options/topBar.d.ts.map +1 -1
- package/metro/acceptPlugin.js +57 -0
- package/metro/babelTransformer.js +45 -0
- package/metro/index.js +36 -0
- package/package.json +4 -25
- package/src/ARCHITECTURE.md +40 -27
- package/src/adapters/NativeANNTurboModule.ts +12 -2
- package/src/api/app/AppRegistry.ts +16 -2
- package/src/api/app/createNavigation.ts +203 -69
- package/src/api/commands/commands.ts +48 -7
- package/src/api/commands/presentation.ts +4 -3
- package/src/api/events/navigationEvents.ts +10 -4
- package/src/api/hooks/useNavigation.ts +9 -4
- package/src/api/hooks/useSafeAreaInsets.ts +4 -3
- package/src/api/index.ts +1 -0
- package/src/api/linking/dispatchedLinks.ts +18 -0
- package/src/api/linking/linking.ts +22 -1
- package/src/api/navigation.ts +4 -1
- package/src/api/options/OptionsChain.ts +2 -2
- package/src/api/screens/defineScreen.ts +49 -5
- package/src/api/screens/nativeScreens.ts +40 -4
- package/src/api/screens/registerScreens.tsx +185 -42
- package/src/api/theme/theme.ts +5 -0
- package/src/engine/commands.ts +70 -13
- package/src/engine/layout.ts +27 -11
- package/src/engine/nativeScreens.ts +10 -1
- package/src/engine/options.ts +45 -19
- package/src/engine/optionsChange.ts +107 -0
- package/src/engine/places.ts +65 -7
- package/src/engine/props.ts +30 -1
- package/src/engine/refresh.ts +97 -0
- package/src/engine/rememberedOptions.ts +74 -1
- package/src/engine/screens.tsx +76 -21
- package/src/interfaces/ComponentEvents.ts +4 -4
- package/src/interfaces/Events.ts +29 -10
- package/src/interfaces/Options.ts +1 -0
- package/src/interfaces/contract/commands.json +101 -0
- package/src/interfaces/contract/errors.json +275 -0
- package/src/interfaces/options/animations.ts +81 -22
- package/src/interfaces/options/bottomTabs.ts +21 -7
- package/src/interfaces/options/buttons.ts +23 -15
- package/src/interfaces/options/modals.ts +34 -26
- package/src/interfaces/options/sideMenu.ts +24 -6
- package/src/interfaces/options/stack.ts +17 -3
- package/src/interfaces/options/system.ts +18 -11
- package/src/interfaces/options/toolbar.ts +2 -2
- package/src/interfaces/options/topBar.ts +68 -38
- package/android/src/main/java/dev/apexnative/navigation/react/ArrangementStates.kt +0 -41
- package/android/src/main/java/dev/apexnative/navigation/react/ScreenInsets.kt +0 -69
- package/android/src/main/java/dev/apexnative/navigation/react/events/NavigationStateReporter.kt +0 -62
- package/android/src/main/java/dev/apexnative/navigation/react/events/StateHold.kt +0 -62
- package/android/src/main/java/dev/apexnative/navigation/viewcontrollers/bottomtabs/CustomTabRowPlacer.kt +0 -223
- package/android/src/main/java/dev/apexnative/navigation/views/element/ElementStub.kt +0 -31
- package/android/src/main/java/dev/apexnative/navigation/views/element/animators/ImageMatrixAnimator.kt +0 -138
- package/android/src/main/java/dev/apexnative/navigation/views/element/animators/PlainViewAnimator.kt +0 -88
- package/android/src/main/java/dev/apexnative/navigation/views/element/animators/PropertyAnimatorCreator.kt +0 -33
- package/android/src/main/java/dev/apexnative/navigation/views/element/animators/ReactImageAnimator.kt +0 -66
- package/android/src/main/java/dev/apexnative/navigation/views/element/animators/TextChangeAnimator.kt +0 -179
- package/android/src/main/java/dev/apexnative/navigation/views/element/animators/ViewChangeAnimator.kt +0 -139
- package/ios/Layouts/Screen/ANNScreenInsets.h +0 -30
- package/ios/Layouts/Screen/ANNScreenInsets.mm +0 -68
- package/ios/Layouts/Tabs/ANNTabsPreloadWindow.h +0 -27
- package/ios/Layouts/Tabs/ANNTabsPreloadWindow.mm +0 -55
|
@@ -2,17 +2,21 @@
|
|
|
2
2
|
#import "ANNBackButtonPresenter.h"
|
|
3
3
|
#import "ANNBarAppearance.h"
|
|
4
4
|
#import "ANNComponentPresenter.h"
|
|
5
|
+
#import "ANNComponentViewController.h"
|
|
5
6
|
#import "ANNExternalViewController.h"
|
|
6
7
|
#import "ANNLargeTitlePresenter.h"
|
|
7
8
|
#import "ANNMainList.h"
|
|
8
9
|
#import "ANNScreenBars.h"
|
|
9
10
|
#import "ANNScrollEdgeEffects.h"
|
|
10
11
|
#import "ANNSearchPresenter.h"
|
|
12
|
+
#import "ANNSlotScreenView.h"
|
|
11
13
|
#import "ANNStackController.h"
|
|
14
|
+
#import "ANNTabsDesign.h"
|
|
12
15
|
#import "ANNTitleComponentView.h"
|
|
13
16
|
#import "ANNTitleGlassView.h"
|
|
14
17
|
#import "ANNTitleView.h"
|
|
15
18
|
#import "ANNToolbarPresenter.h"
|
|
19
|
+
#import "ANNUserChoice.h"
|
|
16
20
|
#import "UIViewController+LayoutProtocol.h"
|
|
17
21
|
|
|
18
22
|
// The key of the bar's handler on the screen's content mounts.
|
|
@@ -32,11 +36,27 @@ typedef NS_ENUM(NSInteger, ANNBarPhase) {
|
|
|
32
36
|
ANNBarPhaseDidAppear,
|
|
33
37
|
};
|
|
34
38
|
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
39
|
+
// The glass design of iOS 26, not its compatibility mode: the large title in the list, the title's capsule, the
|
|
40
|
+
// system subtitle and the pin of the title's color are its own (`ANNTabsDesign`).
|
|
41
|
+
static BOOL ANNIsGlass(void) {
|
|
42
|
+
return ANNTabsDesign.isGlass;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// The same look: the item's appearance is the one set last, or one equal to it.
|
|
46
|
+
static BOOL ANNSameAppearance(UINavigationBarAppearance *a, UINavigationBarAppearance *b) {
|
|
47
|
+
return a == b || [a isEqual:b];
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
// The traits a look's colors and fonts resolve with: the style, the contrast, the elevation (the 1×1 background is
|
|
51
|
+
// drawn with them) and the text size.
|
|
52
|
+
static NSArray *ANNLookTraitsOf(UITraitCollection *traits) {
|
|
53
|
+
if (!traits) {
|
|
54
|
+
return @[];
|
|
38
55
|
}
|
|
39
|
-
return
|
|
56
|
+
return @[
|
|
57
|
+
@(traits.userInterfaceStyle), @(traits.accessibilityContrast), @(traits.userInterfaceLevel),
|
|
58
|
+
traits.preferredContentSizeCategory ?: @""
|
|
59
|
+
];
|
|
40
60
|
}
|
|
41
61
|
|
|
42
62
|
static BOOL ANNHasComponentName(ANNComponentOptions *component) {
|
|
@@ -59,6 +79,30 @@ static NSArray<UIMenuElement *> *ANNRenameElementsOf(NSArray<UIMenuElement *> *e
|
|
|
59
79
|
return kept;
|
|
60
80
|
}
|
|
61
81
|
|
|
82
|
+
static NSString *const ANNRenameChoiceKey = @"topBar.title.text";
|
|
83
|
+
|
|
84
|
+
// The title the user gave: it stays over the app's `title.text` until a merge gives another text than the app had
|
|
85
|
+
// there (the own options', else the title the screen resolved to before the merge, as the other choices); a re-render
|
|
86
|
+
// that sends the old title again keeps it.
|
|
87
|
+
static ANNUserChoice *ANNRenameChoice(NSString *title) {
|
|
88
|
+
return [ANNUserChoice choiceWithValue:title
|
|
89
|
+
apply:^(ANNNavigationOptions *options, id value) {
|
|
90
|
+
options.topBar.title.text = [Text withValue:value];
|
|
91
|
+
}
|
|
92
|
+
merged:^id(id value, ANNNavigationOptions *merge, ANNNavigationOptions *own,
|
|
93
|
+
ANNNavigationOptions *before, ANNNavigationOptions *after) {
|
|
94
|
+
Text *text = merge.topBar.title.text;
|
|
95
|
+
if (!text.hasValue) {
|
|
96
|
+
return value;
|
|
97
|
+
}
|
|
98
|
+
Text *ownText = own.topBar.title.text;
|
|
99
|
+
Text *was = ownText.hasValue ? ownText : before.topBar.title.text;
|
|
100
|
+
NSString *merged = [text withDefault:nil];
|
|
101
|
+
NSString *had = [was withDefault:nil];
|
|
102
|
+
return merged == had || [merged isEqualToString:had] ? value : nil;
|
|
103
|
+
}];
|
|
104
|
+
}
|
|
105
|
+
|
|
62
106
|
@interface ANNTopBarPresenter () <UINavigationItemRenameDelegate>
|
|
63
107
|
@end
|
|
64
108
|
|
|
@@ -84,6 +128,10 @@ static NSArray<UIMenuElement *> *ANNRenameElementsOf(NSArray<UIMenuElement *> *e
|
|
|
84
128
|
NSUInteger _pinToken;
|
|
85
129
|
// A pop's band under the title keeps the bar's look as it is (the screen leaves for one without a band of its own).
|
|
86
130
|
BOOL _bandKeepsLook;
|
|
131
|
+
// What the last look was filled from, and the two appearances the item held right after it.
|
|
132
|
+
NSArray *_lookInputs;
|
|
133
|
+
UINavigationBarAppearance *_lookStandard;
|
|
134
|
+
UINavigationBarAppearance *_lookEdge;
|
|
87
135
|
}
|
|
88
136
|
|
|
89
137
|
- (instancetype)initWithScreen:(UIViewController *)screen {
|
|
@@ -151,13 +199,13 @@ static NSArray<UIMenuElement *> *ANNRenameElementsOf(NSArray<UIMenuElement *> *e
|
|
|
151
199
|
BOOL collapses = [ANNLargeTitlePresenter collapsesIntoList:options];
|
|
152
200
|
BOOL inlineInRow = [self inlineInRow:options];
|
|
153
201
|
BOOL ownEdge = [options.topBar.scrollEdgeAppearance.active withDefault:NO];
|
|
154
|
-
context.transparentEdge =
|
|
202
|
+
context.transparentEdge = ANNIsGlass() && collapses && !inlineInRow && !ownEdge;
|
|
155
203
|
// While a pop draws the band behind the title in the title's own place, the bar's edge stays clear: UIKit grows
|
|
156
204
|
// the bar's background with an interactive pop, over the screen's top where the title is.
|
|
157
205
|
if ([_largeTitle drawsTitleBand] && !_bandKeepsLook && !ownEdge) {
|
|
158
206
|
context.transparentEdge = YES;
|
|
159
207
|
}
|
|
160
|
-
context.largeTitleNeedsBackground =
|
|
208
|
+
context.largeTitleNeedsBackground = ANNIsGlass() && canShow && !collapses && !inlineInRow;
|
|
161
209
|
return context;
|
|
162
210
|
}
|
|
163
211
|
|
|
@@ -341,26 +389,64 @@ static NSArray<UIMenuElement *> *ANNRenameElementsOf(NSArray<UIMenuElement *> *e
|
|
|
341
389
|
|
|
342
390
|
#pragma mark - The look
|
|
343
391
|
|
|
392
|
+
// Several callers ask for the look along one appearance (the screen's, a merge, the band and the pin of iOS 26): it
|
|
393
|
+
// is filled only when what the fill reads changed or the item holds another look, and set only when it differs from
|
|
394
|
+
// the item's. A look set again makes UIKit lay the bar out anew, and on iOS 26 copy it into the stack's bar.
|
|
344
395
|
- (void)applyLook:(ANNNavigationOptions *)options {
|
|
345
396
|
UIViewController *screen = _screen;
|
|
346
397
|
UINavigationItem *item = screen.navigationItem;
|
|
398
|
+
UITraitCollection *traits =
|
|
399
|
+
screen.viewIfLoaded.window.traitCollection ?: screen.traitCollection;
|
|
400
|
+
ANNBarAppearanceContext context = [self appearanceContextOf:options];
|
|
401
|
+
UITraitCollection *pinned = ANNIsGlass() ? _pinnedTraits : nil;
|
|
402
|
+
NSArray *inputs = [self lookInputsOf:options context:context traits:traits pinned:pinned];
|
|
403
|
+
if (_lookInputs && ANNOptionValuesSame(_lookInputs, inputs) &&
|
|
404
|
+
ANNSameAppearance(item.standardAppearance, _lookStandard) &&
|
|
405
|
+
ANNSameAppearance(item.scrollEdgeAppearance, _lookEdge)) {
|
|
406
|
+
return;
|
|
407
|
+
}
|
|
347
408
|
// The screen's own looks, filled whole and set again (the item copies them).
|
|
348
409
|
UINavigationBarAppearance *standard =
|
|
349
410
|
[item.standardAppearance copy] ?: [UINavigationBarAppearance new];
|
|
350
411
|
UINavigationBarAppearance *edge =
|
|
351
412
|
[item.scrollEdgeAppearance copy] ?: [UINavigationBarAppearance new];
|
|
352
|
-
UITraitCollection *traits =
|
|
353
|
-
screen.viewIfLoaded.window.traitCollection ?: screen.traitCollection;
|
|
354
413
|
[ANNBarAppearance fillStandard:standard
|
|
355
414
|
scrollEdge:edge
|
|
356
415
|
withOptions:options
|
|
357
|
-
context:
|
|
416
|
+
context:context
|
|
358
417
|
traits:traits];
|
|
359
|
-
if (
|
|
360
|
-
[self pinTitleColorsOf:standard edge:edge options:options traits:
|
|
418
|
+
if (pinned) {
|
|
419
|
+
[self pinTitleColorsOf:standard edge:edge options:options traits:pinned];
|
|
420
|
+
}
|
|
421
|
+
if (!ANNSameAppearance(item.standardAppearance, standard)) {
|
|
422
|
+
item.standardAppearance = standard;
|
|
361
423
|
}
|
|
362
|
-
item.
|
|
363
|
-
|
|
424
|
+
if (!ANNSameAppearance(item.scrollEdgeAppearance, edge)) {
|
|
425
|
+
item.scrollEdgeAppearance = edge;
|
|
426
|
+
}
|
|
427
|
+
_lookInputs = inputs;
|
|
428
|
+
_lookStandard = item.standardAppearance;
|
|
429
|
+
_lookEdge = item.scrollEdgeAppearance;
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
// What `fillStandard:scrollEdge:withOptions:context:traits:` and the pin read: the bar's options by value, the
|
|
433
|
+
// image the back button's icon loads (a file written again at its path is another image), the context, the traits.
|
|
434
|
+
- (NSArray *)lookInputsOf:(ANNNavigationOptions *)options
|
|
435
|
+
context:(ANNBarAppearanceContext)context
|
|
436
|
+
traits:(UITraitCollection *)traits
|
|
437
|
+
pinned:(nullable UITraitCollection *)pinned {
|
|
438
|
+
ANNTopBarOptions *topBar = options.topBar;
|
|
439
|
+
Image *backIcon = topBar.backButton.icon;
|
|
440
|
+
ANNImageSource *source = backIcon.source;
|
|
441
|
+
BOOL loads = backIcon.hasValue && !(source && source.kind == ANNImageSourceKindSymbol);
|
|
442
|
+
id backImage = loads ? [backIcon withDefault:nil] : nil;
|
|
443
|
+
return @[
|
|
444
|
+
topBar.background, topBar.scrollEdgeAppearance, topBar.noBorder, topBar.borderColor,
|
|
445
|
+
topBar.title.font, topBar.title.color, topBar.largeTitle.font, topBar.largeTitle.color,
|
|
446
|
+
topBar.backButton, backImage ?: NSNull.null, @(context.transparentEdge),
|
|
447
|
+
@(context.largeTitleNeedsBackground), ANNLookTraitsOf(traits),
|
|
448
|
+
pinned ? ANNLookTraitsOf(pinned) : NSNull.null
|
|
449
|
+
];
|
|
364
450
|
}
|
|
365
451
|
|
|
366
452
|
// The title colors resolved for `traits`: fixed colors that don't follow the glass's style.
|
|
@@ -388,7 +474,7 @@ static NSArray<UIMenuElement *> *ANNRenameElementsOf(NSArray<UIMenuElement *> *e
|
|
|
388
474
|
- (void)pinTitleColorAlong:(id<UIViewControllerTransitionCoordinator>)coordinator
|
|
389
475
|
traits:(UITraitCollection *)traits {
|
|
390
476
|
UIViewController *screen = _screen;
|
|
391
|
-
if (!screen || !
|
|
477
|
+
if (!screen || !ANNIsGlass()) {
|
|
392
478
|
return;
|
|
393
479
|
}
|
|
394
480
|
NSUInteger token = ++_pinToken;
|
|
@@ -435,7 +521,7 @@ static NSArray<UIMenuElement *> *ANNRenameElementsOf(NSArray<UIMenuElement *> *e
|
|
|
435
521
|
NSString *glass = [title.glass withDefault:nil];
|
|
436
522
|
BOOL glassShows = NO;
|
|
437
523
|
if (@available(iOS 26.0, *)) {
|
|
438
|
-
glassShows = [ANNTitleGlassView isGlass:glass];
|
|
524
|
+
glassShows = ANNIsGlass() && [ANNTitleGlassView isGlass:glass];
|
|
439
525
|
}
|
|
440
526
|
[self applySubtitle:options glass:glassShows];
|
|
441
527
|
|
|
@@ -471,7 +557,7 @@ static NSArray<UIMenuElement *> *ANNRenameElementsOf(NSArray<UIMenuElement *> *e
|
|
|
471
557
|
}
|
|
472
558
|
} else if (_titleComponent) {
|
|
473
559
|
titleView = _titleComponent;
|
|
474
|
-
} else if (!
|
|
560
|
+
} else if (!ANNIsGlass() && subtitle.length > 0 && !ANNLargeTitleCanShow(options)) {
|
|
475
561
|
// Before iOS 26 a subtitle is a two-label title, without a large title that can show.
|
|
476
562
|
titleView = [[ANNTitleView alloc] initWithOptions:options];
|
|
477
563
|
}
|
|
@@ -495,8 +581,11 @@ static NSArray<UIMenuElement *> *ANNRenameElementsOf(NSArray<UIMenuElement *> *e
|
|
|
495
581
|
// The layers of the title: the screen's own text hides a component of its stack or of the defaults; a component in the
|
|
496
582
|
// screen's own options shows over its own text.
|
|
497
583
|
- (BOOL)ownTextHidesComponent {
|
|
498
|
-
|
|
499
|
-
|
|
584
|
+
UIViewController *screen = _screen;
|
|
585
|
+
ANNTopBarTitleOptions *own = screen.options.topBar.title;
|
|
586
|
+
BOOL ownText = (own.text.hasValue && !own.text.isNull) ||
|
|
587
|
+
[screen userChoiceForKey:ANNRenameChoiceKey] != nil;
|
|
588
|
+
return ownText && !ANNHasComponentName(own.component);
|
|
500
589
|
}
|
|
501
590
|
|
|
502
591
|
// iOS 26: the system subtitle under the title and under the large title, with only the attributes given (a color, or
|
|
@@ -509,7 +598,8 @@ static NSArray<UIMenuElement *> *ANNRenameElementsOf(NSArray<UIMenuElement *> *e
|
|
|
509
598
|
if (_native && !subtitle.text.hasValue) {
|
|
510
599
|
return;
|
|
511
600
|
}
|
|
512
|
-
|
|
601
|
+
// The compatibility mode draws no system subtitle: a two-label title shows it, as before iOS 26.
|
|
602
|
+
if (text.length == 0 || !ANNIsGlass()) {
|
|
513
603
|
item.attributedSubtitle = nil;
|
|
514
604
|
item.largeAttributedSubtitle = nil;
|
|
515
605
|
return;
|
|
@@ -561,7 +651,7 @@ static NSArray<UIMenuElement *> *ANNRenameElementsOf(NSArray<UIMenuElement *> *e
|
|
|
561
651
|
return NO;
|
|
562
652
|
}
|
|
563
653
|
CGFloat height = ANNTitleRowHeight;
|
|
564
|
-
if (!
|
|
654
|
+
if (!ANNIsGlass()) {
|
|
565
655
|
if (_screen.traitCollection.userInterfaceIdiom == UIUserInterfaceIdiomPad) {
|
|
566
656
|
height = ANNTitleRowHeightPad;
|
|
567
657
|
}
|
|
@@ -644,11 +734,12 @@ static NSArray<UIMenuElement *> *ANNRenameElementsOf(NSArray<UIMenuElement *> *e
|
|
|
644
734
|
__weak ANNBarButtons *buttons = _buttons;
|
|
645
735
|
UIMenu *menu = [title.menu menuWithPickHandler:^(NSString *itemId) {
|
|
646
736
|
[buttons menuItemPicked:itemId
|
|
647
|
-
|
|
648
|
-
|
|
737
|
+
choiceKey:@"topBar.title.menu"
|
|
738
|
+
menuOf:^ANNMenuOptions *(ANNNavigationOptions *options) {
|
|
739
|
+
return options.topBar.title.menu;
|
|
649
740
|
}
|
|
650
|
-
setMenu:^(ANNNavigationOptions *
|
|
651
|
-
|
|
741
|
+
setMenu:^(ANNNavigationOptions *options, ANNMenuOptions *copy) {
|
|
742
|
+
options.topBar.title.menu = copy;
|
|
652
743
|
}];
|
|
653
744
|
}];
|
|
654
745
|
menuTitle = menu.title;
|
|
@@ -659,8 +750,8 @@ static NSArray<UIMenuElement *> *ANNRenameElementsOf(NSArray<UIMenuElement *> *e
|
|
|
659
750
|
|
|
660
751
|
#pragma mark - UINavigationItemRenameDelegate
|
|
661
752
|
|
|
662
|
-
// Empty or blank: the old title back, no event; the same: nothing; new: the screen's
|
|
663
|
-
// again, then `ANN.TitleRenamed`.
|
|
753
|
+
// Empty or blank: the old title back, no event; the same: nothing; new: `title.text` in the screen's user layer, the
|
|
754
|
+
// title drawn again, then `ANN.TitleRenamed`.
|
|
664
755
|
- (void)navigationItem:(UINavigationItem *)navigationItem
|
|
665
756
|
didEndRenamingWithTitle:(NSString *)title {
|
|
666
757
|
UIViewController *screen = _screen;
|
|
@@ -677,9 +768,7 @@ static NSArray<UIMenuElement *> *ANNRenameElementsOf(NSArray<UIMenuElement *> *e
|
|
|
677
768
|
if ([title isEqualToString:old]) {
|
|
678
769
|
return;
|
|
679
770
|
}
|
|
680
|
-
[screen
|
|
681
|
-
own.topBar.title.text = [Text withValue:title];
|
|
682
|
-
}];
|
|
771
|
+
[screen setUserChoice:ANNRenameChoice(title) forKey:ANNRenameChoiceKey];
|
|
683
772
|
ANNNavigationOptions *options = [screen resolveOptionsWithDefault];
|
|
684
773
|
[self applyTitle:options textWins:NO];
|
|
685
774
|
NSString *componentId = screen.layoutInfo.componentId;
|
|
@@ -1001,8 +1090,10 @@ static NSArray<UIMenuElement *> *ANNRenameElementsOf(NSArray<UIMenuElement *> *e
|
|
|
1001
1090
|
ANNNavigationOptions *options = [screen resolveOptionsWithDefault];
|
|
1002
1091
|
[_largeTitle screenDidDisappear:options list:[self followedList]];
|
|
1003
1092
|
}
|
|
1004
|
-
// The lists the screen set leave with it
|
|
1005
|
-
|
|
1093
|
+
// The lists the screen set leave with it (the edge effects stay known for its next appearance); its color and its
|
|
1094
|
+
// React background leave the main list.
|
|
1095
|
+
[_edgeEffects screenDidDisappear];
|
|
1096
|
+
[self releaseListsKeepingEdgeEffects:YES];
|
|
1006
1097
|
_bandKeepsLook = NO;
|
|
1007
1098
|
// A swipe back given up: the screen keeps the bar's own look for its next appearance.
|
|
1008
1099
|
if (band && screen) {
|
|
@@ -1011,7 +1102,13 @@ static NSArray<UIMenuElement *> *ANNRenameElementsOf(NSArray<UIMenuElement *> *e
|
|
|
1011
1102
|
}
|
|
1012
1103
|
|
|
1013
1104
|
- (void)releaseLists {
|
|
1014
|
-
[
|
|
1105
|
+
[self releaseListsKeepingEdgeEffects:NO];
|
|
1106
|
+
}
|
|
1107
|
+
|
|
1108
|
+
- (void)releaseListsKeepingEdgeEffects:(BOOL)keepEdgeEffects {
|
|
1109
|
+
if (!keepEdgeEffects) {
|
|
1110
|
+
[_edgeEffects reset];
|
|
1111
|
+
}
|
|
1015
1112
|
[_largeTitle removeListFill];
|
|
1016
1113
|
[_largeTitle removeTitlePlaceFill];
|
|
1017
1114
|
[_largeTitle removeTitleHost];
|
|
@@ -1056,6 +1153,10 @@ static NSArray<UIMenuElement *> *ANNRenameElementsOf(NSArray<UIMenuElement *> *e
|
|
|
1056
1153
|
[weakSelf contentDidMount];
|
|
1057
1154
|
}
|
|
1058
1155
|
forKey:ANNTopBarMountKey];
|
|
1156
|
+
// The edge effect walks the screen again only after a mount. A native screen's views are the app's, never told; a
|
|
1157
|
+
// screen of one tree (`appProvider`) hears the mounts only in the window, so it walks at each appearance.
|
|
1158
|
+
[self edgeEffects].mountsReported =
|
|
1159
|
+
!_native && ![content isKindOfClass:ANNSlotScreenView.class];
|
|
1059
1160
|
}
|
|
1060
1161
|
|
|
1061
1162
|
// The list the bar follows at the top edge under a large title that folds into it: the main list of a React screen;
|
|
@@ -1101,6 +1202,27 @@ static NSArray<UIMenuElement *> *ANNRenameElementsOf(NSArray<UIMenuElement *> *e
|
|
|
1101
1202
|
options:[screen resolveOptionsWithDefault]];
|
|
1102
1203
|
}
|
|
1103
1204
|
|
|
1205
|
+
// The top of the safe area the screen takes on the stack is that of its place while it waited parked: UIKit lays it out
|
|
1206
|
+
// only inside the push.
|
|
1207
|
+
- (void)arrivesByPushOn:(UINavigationController *)navigation {
|
|
1208
|
+
UIViewController *screen = _screen;
|
|
1209
|
+
if (_native || ![screen isKindOfClass:ANNComponentViewController.class]) {
|
|
1210
|
+
return;
|
|
1211
|
+
}
|
|
1212
|
+
ANNComponentViewController *component = (ANNComponentViewController *)screen;
|
|
1213
|
+
ANNScreenPlace * (^placeWhileParked)(void) = component.placeWhileParked;
|
|
1214
|
+
ANNScreenPlace *place = placeWhileParked ? placeWhileParked() : nil;
|
|
1215
|
+
if (!place || !component.reactView.isReady) {
|
|
1216
|
+
return;
|
|
1217
|
+
}
|
|
1218
|
+
ANNNavigationOptions *options = [screen resolveOptionsWithDefault];
|
|
1219
|
+
[_largeTitle screenInPush:options
|
|
1220
|
+
list:[self followedList]
|
|
1221
|
+
inlineInRow:[self inlineInRow:options]
|
|
1222
|
+
top:place.safeArea.top
|
|
1223
|
+
stackTop:navigation.view.safeAreaInsets.top];
|
|
1224
|
+
}
|
|
1225
|
+
|
|
1104
1226
|
// A native screen's views are the app's: the core lays nothing into them. The band behind the title is filled where
|
|
1105
1227
|
// the title is, and the look follows it, before UIKit lays the screen out for the transition.
|
|
1106
1228
|
- (BOOL)revealedByPop {
|
|
@@ -1175,7 +1297,7 @@ static NSArray<UIMenuElement *> *ANNRenameElementsOf(NSArray<UIMenuElement *> *e
|
|
|
1175
1297
|
return;
|
|
1176
1298
|
}
|
|
1177
1299
|
ANNNavigationOptions *options = [screen resolveOptionsWithDefault];
|
|
1178
|
-
BOOL eligible =
|
|
1300
|
+
BOOL eligible = ANNIsGlass() && [self isShownTop] && screen.viewIfLoaded.window != nil &&
|
|
1179
1301
|
[background isShownInBar:bar] &&
|
|
1180
1302
|
[ANNLargeTitlePresenter collapsesIntoList:options] &&
|
|
1181
1303
|
![self inlineInRow:options];
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
#import "ANNTurboEventEmitter.h"
|
|
2
2
|
#import "ANNAssert.h"
|
|
3
|
+
#import "ANNEventContract.h"
|
|
3
4
|
#import "ANNEventEmitter.h"
|
|
4
5
|
#import "ANNReloadCoordinator.h"
|
|
5
6
|
#import <React/RCTUtils.h>
|
|
@@ -40,41 +41,9 @@ RCT_EXPORT_MODULE(ANNTurboEventEmitter)
|
|
|
40
41
|
return self;
|
|
41
42
|
}
|
|
42
43
|
|
|
43
|
-
// Every event of the navigation and of the modules.
|
|
44
|
+
// Every event of the navigation and of the modules, as the types of `src/interfaces/` name them.
|
|
44
45
|
- (NSArray<NSString *> *)supportedEvents {
|
|
45
|
-
return
|
|
46
|
-
@"ANN.AppLaunched",
|
|
47
|
-
@"ANN.ArrangementChanged",
|
|
48
|
-
@"ANN.BottomAccessoryPlacementChanged",
|
|
49
|
-
@"ANN.BottomTabLongPressed",
|
|
50
|
-
@"ANN.BottomTabPressed",
|
|
51
|
-
@"ANN.BottomTabSelected",
|
|
52
|
-
@"ANN.CommandCompleted",
|
|
53
|
-
@"ANN.ComponentDidAppear",
|
|
54
|
-
@"ANN.ComponentDidDisappear",
|
|
55
|
-
@"ANN.ComponentWillAppear",
|
|
56
|
-
@"ANN.HingeChanged",
|
|
57
|
-
@"ANN.KeyCommandPressed",
|
|
58
|
-
@"ANN.ModalAttemptedToDismiss",
|
|
59
|
-
@"ANN.ModalDismissed",
|
|
60
|
-
@"ANN.NativeScreenCall",
|
|
61
|
-
@"ANN.NativeScreenReleased",
|
|
62
|
-
@"ANN.NavigationButtonPressed",
|
|
63
|
-
@"ANN.NavigationStateChanged",
|
|
64
|
-
@"ANN.PreviewCompleted",
|
|
65
|
-
@"ANN.ScreenInsetsChanged",
|
|
66
|
-
@"ANN.ScreenPopped",
|
|
67
|
-
@"ANN.ScreenRegionsChanged",
|
|
68
|
-
@"ANN.SearchBarCancelPressed",
|
|
69
|
-
@"ANN.SearchBarSubmitted",
|
|
70
|
-
@"ANN.SearchBarUpdated",
|
|
71
|
-
@"ANN.SearchSuggestionPicked",
|
|
72
|
-
@"ANN.SheetDetentChanged",
|
|
73
|
-
@"ANN.SlotDestroyed",
|
|
74
|
-
@"ANN.SplitViewColumnsStacked",
|
|
75
|
-
@"ANN.SplitViewDisplayModeChanged",
|
|
76
|
-
@"ANN.TitleRenamed",
|
|
77
|
-
];
|
|
46
|
+
return ANNEventContractNames();
|
|
78
47
|
}
|
|
79
48
|
|
|
80
49
|
#pragma mark - Listeners
|
|
@@ -99,7 +68,7 @@ RCT_EXPORT_MODULE(ANNTurboEventEmitter)
|
|
|
99
68
|
|
|
100
69
|
- (void)addListener:(NSString *)eventName {
|
|
101
70
|
[super addListener:eventName];
|
|
102
|
-
if ([eventName isEqualToString
|
|
71
|
+
if ([eventName isEqualToString:ANNEventContract.AppLaunched.event] && !_listensToAppLaunched) {
|
|
103
72
|
_listensToAppLaunched = YES;
|
|
104
73
|
[ANNEventEmitter eventEmitterListensToAppLaunched:self];
|
|
105
74
|
}
|