@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
|
@@ -1,12 +1,41 @@
|
|
|
1
1
|
#import "ANNDeepLinkQueue.h"
|
|
2
2
|
#import "ANNAssert.h"
|
|
3
|
+
#import "ANNEventEmitter.h"
|
|
4
|
+
#import "ApexNavigation+Internal.h"
|
|
3
5
|
#import <React/RCTLinkingManager.h>
|
|
4
6
|
#import <React/RCTRootView.h>
|
|
5
7
|
#import <UIKit/UIKit.h>
|
|
6
8
|
|
|
9
|
+
// A link on its way to `Linking`, with the scene's own context or user activity it came in when it came from a scene.
|
|
10
|
+
@interface ANNDeepLink : NSObject
|
|
11
|
+
@property(nonatomic, readonly) NSURL *url;
|
|
12
|
+
@property(nonatomic, readonly, nullable) UIOpenURLContext *context;
|
|
13
|
+
@property(nonatomic, readonly, nullable) NSUserActivity *activity;
|
|
14
|
+
@property(nonatomic, readonly, weak, nullable) UIScene *scene;
|
|
15
|
+
@end
|
|
16
|
+
|
|
17
|
+
@implementation ANNDeepLink
|
|
18
|
+
|
|
19
|
+
- (instancetype)initWithURL:(NSURL *)url
|
|
20
|
+
context:(UIOpenURLContext *)context
|
|
21
|
+
activity:(NSUserActivity *)activity
|
|
22
|
+
scene:(UIScene *)scene {
|
|
23
|
+
if (self = [super init]) {
|
|
24
|
+
_url = url;
|
|
25
|
+
_context = context;
|
|
26
|
+
_activity = activity;
|
|
27
|
+
_scene = scene;
|
|
28
|
+
}
|
|
29
|
+
return self;
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
@end
|
|
33
|
+
|
|
7
34
|
// Main queue only.
|
|
8
35
|
static BOOL ANNDeepLinkQueueStarted = NO;
|
|
9
|
-
static NSMutableArray<
|
|
36
|
+
static NSMutableArray<ANNDeepLink *> *ANNPendingDeepLinks;
|
|
37
|
+
// The scene's link the scene delegate is handing to the app delegate: the app delegate dispatches its URL.
|
|
38
|
+
static ANNDeepLink *ANNForwardedSceneLink;
|
|
10
39
|
// React content appeared: `RCTLinkingManager` exists and JS listens to `url` events.
|
|
11
40
|
static BOOL ANNReactContentAppeared = NO;
|
|
12
41
|
// Every URL that launched the app was dispatched.
|
|
@@ -20,7 +49,7 @@ static ANNLaunchLinkCompletion ANNWaitingLaunchLinkCompletion;
|
|
|
20
49
|
|
|
21
50
|
+ (void)initialize {
|
|
22
51
|
if (self == ANNDeepLinkQueue.class) {
|
|
23
|
-
|
|
52
|
+
ANNPendingDeepLinks = [NSMutableArray new];
|
|
24
53
|
}
|
|
25
54
|
}
|
|
26
55
|
|
|
@@ -42,15 +71,51 @@ static ANNLaunchLinkCompletion ANNWaitingLaunchLinkCompletion;
|
|
|
42
71
|
selector:@selector(applicationDidBecomeActive:)
|
|
43
72
|
name:UIApplicationDidBecomeActiveNotification
|
|
44
73
|
object:nil];
|
|
74
|
+
// Started once the app is active (an app that starts React Native later, on demand), the queue missed the scene's
|
|
75
|
+
// connection and the notification: the links that launched the app went elsewhere, and none waits for them.
|
|
76
|
+
if (UIApplication.sharedApplication.applicationState == UIApplicationStateActive) {
|
|
77
|
+
[self launchLinksKnown];
|
|
78
|
+
}
|
|
45
79
|
}
|
|
46
80
|
|
|
47
81
|
+ (void)dispatchURL:(NSURL *)url {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
82
|
+
// The URL of the scene's link keeps its context; one the app delegate changed is a URL of its own.
|
|
83
|
+
ANNDeepLink *link = [ANNForwardedSceneLink.url isEqual:url]
|
|
84
|
+
? ANNForwardedSceneLink
|
|
85
|
+
: [[ANNDeepLink alloc] initWithURL:url context:nil activity:nil scene:nil];
|
|
86
|
+
[self dispatchLink:link];
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
+ (void)forwardURLContext:(UIOpenURLContext *)context
|
|
90
|
+
ofScene:(UIScene *)scene
|
|
91
|
+
through:(NS_NOESCAPE dispatch_block_t)forward {
|
|
92
|
+
[self forwardLink:[[ANNDeepLink alloc] initWithURL:context.URL context:context activity:nil scene:scene]
|
|
93
|
+
through:forward];
|
|
94
|
+
}
|
|
95
|
+
|
|
96
|
+
+ (void)forwardUserActivity:(NSUserActivity *)activity
|
|
97
|
+
ofScene:(UIScene *)scene
|
|
98
|
+
through:(NS_NOESCAPE dispatch_block_t)forward {
|
|
99
|
+
if (activity.webpageURL == nil) {
|
|
100
|
+
forward();
|
|
51
101
|
return;
|
|
52
102
|
}
|
|
53
|
-
[
|
|
103
|
+
[self forwardLink:[[ANNDeepLink alloc] initWithURL:activity.webpageURL context:nil activity:activity scene:scene]
|
|
104
|
+
through:forward];
|
|
105
|
+
}
|
|
106
|
+
|
|
107
|
+
+ (void)dispatchURLContext:(UIOpenURLContext *)context ofScene:(UIScene *)scene {
|
|
108
|
+
[self dispatchLink:[[ANNDeepLink alloc] initWithURL:context.URL context:context activity:nil scene:scene]];
|
|
109
|
+
}
|
|
110
|
+
|
|
111
|
+
+ (void)dispatchUserActivity:(NSUserActivity *)activity ofScene:(UIScene *)scene {
|
|
112
|
+
if (activity.webpageURL == nil) {
|
|
113
|
+
return;
|
|
114
|
+
}
|
|
115
|
+
[self dispatchLink:[[ANNDeepLink alloc] initWithURL:activity.webpageURL
|
|
116
|
+
context:nil
|
|
117
|
+
activity:activity
|
|
118
|
+
scene:scene]];
|
|
54
119
|
}
|
|
55
120
|
|
|
56
121
|
+ (void)windowSceneDidConnect {
|
|
@@ -98,10 +163,10 @@ static ANNLaunchLinkCompletion ANNWaitingLaunchLinkCompletion;
|
|
|
98
163
|
if (ANNWaitingLaunchLinkCompletion != nil) {
|
|
99
164
|
return;
|
|
100
165
|
}
|
|
101
|
-
NSArray<
|
|
102
|
-
[
|
|
103
|
-
for (
|
|
104
|
-
[self
|
|
166
|
+
NSArray<ANNDeepLink *> *links = [ANNPendingDeepLinks copy];
|
|
167
|
+
[ANNPendingDeepLinks removeAllObjects];
|
|
168
|
+
for (ANNDeepLink *link in links) {
|
|
169
|
+
[self openLink:link];
|
|
105
170
|
}
|
|
106
171
|
}
|
|
107
172
|
|
|
@@ -124,13 +189,55 @@ static ANNLaunchLinkCompletion ANNWaitingLaunchLinkCompletion;
|
|
|
124
189
|
// One link opens the app. The links queued before it are dropped: opened after it, they would take the app elsewhere.
|
|
125
190
|
+ (void)giveLaunchLink:(ANNLaunchLinkCompletion)completion {
|
|
126
191
|
ANNLaunchLinkTaken = YES;
|
|
127
|
-
NSURL *url =
|
|
128
|
-
[
|
|
192
|
+
NSURL *url = ANNPendingDeepLinks.lastObject.url;
|
|
193
|
+
[ANNPendingDeepLinks removeAllObjects];
|
|
129
194
|
completion(url);
|
|
130
195
|
}
|
|
131
196
|
|
|
132
|
-
+ (void)
|
|
133
|
-
|
|
197
|
+
+ (void)dispatchLink:(ANNDeepLink *)link {
|
|
198
|
+
ANNAssertMainQueue();
|
|
199
|
+
if (ANNReactContentAppeared && ANNWaitingLaunchLinkCompletion == nil) {
|
|
200
|
+
[self openLink:link];
|
|
201
|
+
return;
|
|
202
|
+
}
|
|
203
|
+
[ANNPendingDeepLinks addObject:link];
|
|
204
|
+
}
|
|
205
|
+
|
|
206
|
+
+ (void)forwardLink:(ANNDeepLink *)link through:(NS_NOESCAPE dispatch_block_t)forward {
|
|
207
|
+
ANNAssertMainQueue();
|
|
208
|
+
ANNDeepLink *outer = ANNForwardedSceneLink;
|
|
209
|
+
ANNForwardedSceneLink = link;
|
|
210
|
+
forward();
|
|
211
|
+
ANNForwardedSceneLink = outer;
|
|
212
|
+
}
|
|
213
|
+
|
|
214
|
+
// React Native 0.88 and newer take a scene's links through its scene methods: in an app whose Info.plist names a scene
|
|
215
|
+
// delegate, its app delegate methods take none. The earlier versions have only the app delegate methods.
|
|
216
|
+
+ (void)openLink:(ANNDeepLink *)link {
|
|
217
|
+
UIScene *scene = link.scene;
|
|
218
|
+
if (scene != nil && link.context != nil) {
|
|
219
|
+
SEL openContexts = NSSelectorFromString(@"scene:openURLContexts:");
|
|
220
|
+
if ([RCTLinkingManager respondsToSelector:openContexts]) {
|
|
221
|
+
IMP implementation = [RCTLinkingManager methodForSelector:openContexts];
|
|
222
|
+
((void (*)(id, SEL, UIScene *, NSSet<UIOpenURLContext *> *))implementation)(
|
|
223
|
+
RCTLinkingManager.class, openContexts, scene, [NSSet setWithObject:link.context]);
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
if (scene != nil && link.activity != nil) {
|
|
228
|
+
SEL continueActivity = NSSelectorFromString(@"scene:continueUserActivity:");
|
|
229
|
+
if ([RCTLinkingManager respondsToSelector:continueActivity]) {
|
|
230
|
+
IMP implementation = [RCTLinkingManager methodForSelector:continueActivity];
|
|
231
|
+
((void (*)(id, SEL, UIScene *, NSUserActivity *))implementation)(
|
|
232
|
+
RCTLinkingManager.class, continueActivity, scene, link.activity);
|
|
233
|
+
return;
|
|
234
|
+
}
|
|
235
|
+
}
|
|
236
|
+
// A link of the app's own (`dispatchDeepLinkURL`) has no scene: on React Native 0.88 and newer, with a scene
|
|
237
|
+
// delegate in Info.plist, `Linking` doesn't take it from here. JavaScript hands it to `Linking` itself.
|
|
238
|
+
if (![RCTLinkingManager application:UIApplication.sharedApplication openURL:link.url options:@{}]) {
|
|
239
|
+
[ApexNavigation.eventEmitter sendDeepLinkDispatched:link.url];
|
|
240
|
+
}
|
|
134
241
|
}
|
|
135
242
|
|
|
136
243
|
@end
|
|
@@ -3,13 +3,18 @@
|
|
|
3
3
|
NS_ASSUME_NONNULL_BEGIN
|
|
4
4
|
|
|
5
5
|
/// How a failed command tells JavaScript: a rejection carries only a sentence, never a code of its own, and a command
|
|
6
|
-
/// without a promise writes the sentence to the log. The sentences are those of `ANNErrorTexts`.
|
|
6
|
+
/// without a promise writes the sentence to the log. The sentences are those of `ANNErrorTexts`. The one place that
|
|
7
|
+
/// calls a command's promise blocks: a block that is nil (a caller that passed none) is never called.
|
|
7
8
|
@interface ANNErrorHandler : NSObject
|
|
8
9
|
|
|
9
|
-
/// Rejects a command's promise with the sentence alone: React Native puts its own default code on it.
|
|
10
|
-
|
|
10
|
+
/// Rejects a command's promise with the sentence alone: React Native puts its own default code on it. Without a
|
|
11
|
+
/// reject block the sentence goes to the log as `logFailureOf:text:` writes it.
|
|
12
|
+
+ (void)reject:(nullable RCTPromiseRejectBlock)reject of:(NSString *)method text:(NSString *)text;
|
|
11
13
|
|
|
12
|
-
///
|
|
14
|
+
/// Resolves a command's promise with `value`. Without a resolve block one line goes to the log instead.
|
|
15
|
+
+ (void)resolve:(nullable RCTPromiseResolveBlock)resolve of:(NSString *)method value:(nullable id)value;
|
|
16
|
+
|
|
17
|
+
/// The log line of a command without a promise: `[ApexNavigation] <method>: <text>`, a warning (`RCTLogWarn`).
|
|
13
18
|
+ (void)logFailureOf:(NSString *)method text:(NSString *)text;
|
|
14
19
|
|
|
15
20
|
@end
|
|
@@ -1,14 +1,32 @@
|
|
|
1
1
|
#import "ANNErrorHandler.h"
|
|
2
|
+
#import "ANNErrorTexts.h"
|
|
2
3
|
#import <React/RCTLog.h>
|
|
3
4
|
|
|
4
5
|
@implementation ANNErrorHandler
|
|
5
6
|
|
|
6
|
-
|
|
7
|
+
// Calling a nil block ends the app (`EXC_BAD_ACCESS` at 0x10, its invoke field): JavaScript always passes both blocks,
|
|
8
|
+
// so a nil one comes from a caller in native code, and the answer goes to the log.
|
|
9
|
+
+ (void)reject:(RCTPromiseRejectBlock)reject of:(NSString *)method text:(NSString *)text {
|
|
10
|
+
if (!reject) {
|
|
11
|
+
[self logFailureOf:method text:text];
|
|
12
|
+
return;
|
|
13
|
+
}
|
|
7
14
|
reject(nil, text, nil);
|
|
8
15
|
}
|
|
9
16
|
|
|
17
|
+
+ (void)resolve:(RCTPromiseResolveBlock)resolve of:(NSString *)method value:(id)value {
|
|
18
|
+
if (!resolve) {
|
|
19
|
+
[self logFailureOf:method
|
|
20
|
+
text:[ANNErrorTexts couldNot:@"resolve its promise" reason:@"the command came without one"]];
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
resolve(value);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
// A warning, not an error: a failed command without a promise (a `mergeOptions` the screen can't take) is the app's
|
|
27
|
+
// to notice, not a red box over it; Android logs it the same way, without a dialog.
|
|
10
28
|
+ (void)logFailureOf:(NSString *)method text:(NSString *)text {
|
|
11
|
-
|
|
29
|
+
RCTLogWarn(@"[ApexNavigation] %@: %@", method, text);
|
|
12
30
|
}
|
|
13
31
|
|
|
14
32
|
@end
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
// Made by scripts/contract.mjs from the event types of src/interfaces/: change them and run the script again.
|
|
2
|
+
|
|
3
|
+
#import <Foundation/Foundation.h>
|
|
4
|
+
|
|
5
|
+
NS_ASSUME_NONNULL_BEGIN
|
|
6
|
+
|
|
7
|
+
/// The names of the events `ANN.<Name>` (`event`) and the keys of their payloads, as the types of `src/interfaces/`
|
|
8
|
+
/// give them; what each field means is its JSDoc there. The object types a field holds have keys of their own. The
|
|
9
|
+
/// senders take every name and key from here: `ANNEventContract.CommandCompleted.commandId`.
|
|
10
|
+
FOUNDATION_EXPORT const struct ANNEventContractTable {
|
|
11
|
+
/// `ANN.AppLaunched`.
|
|
12
|
+
struct {
|
|
13
|
+
__unsafe_unretained NSString *event;
|
|
14
|
+
} AppLaunched;
|
|
15
|
+
/// `ANN.ArrangementChanged`.
|
|
16
|
+
struct {
|
|
17
|
+
__unsafe_unretained NSString *event;
|
|
18
|
+
__unsafe_unretained NSString *componentId;
|
|
19
|
+
__unsafe_unretained NSString *placement;
|
|
20
|
+
__unsafe_unretained NSString *layout;
|
|
21
|
+
__unsafe_unretained NSString *front;
|
|
22
|
+
__unsafe_unretained NSString *hidden;
|
|
23
|
+
} ArrangementChanged;
|
|
24
|
+
/// `ANN.BottomAccessoryPlacementChanged` (iOS).
|
|
25
|
+
struct {
|
|
26
|
+
__unsafe_unretained NSString *event;
|
|
27
|
+
__unsafe_unretained NSString *componentId;
|
|
28
|
+
__unsafe_unretained NSString *placement;
|
|
29
|
+
} BottomAccessoryPlacementChanged;
|
|
30
|
+
/// `ANN.BottomTabLongPressed`.
|
|
31
|
+
struct {
|
|
32
|
+
__unsafe_unretained NSString *event;
|
|
33
|
+
__unsafe_unretained NSString *selectedTabIndex;
|
|
34
|
+
__unsafe_unretained NSString *bottomTabsId;
|
|
35
|
+
} BottomTabLongPressed;
|
|
36
|
+
/// `ANN.BottomTabPressed`.
|
|
37
|
+
struct {
|
|
38
|
+
__unsafe_unretained NSString *event;
|
|
39
|
+
__unsafe_unretained NSString *tabIndex;
|
|
40
|
+
__unsafe_unretained NSString *bottomTabsId;
|
|
41
|
+
/// Optional.
|
|
42
|
+
__unsafe_unretained NSString *screenId;
|
|
43
|
+
__unsafe_unretained NSString *wasSelected;
|
|
44
|
+
} BottomTabPressed;
|
|
45
|
+
/// `ANN.BottomTabSelected`.
|
|
46
|
+
struct {
|
|
47
|
+
__unsafe_unretained NSString *event;
|
|
48
|
+
__unsafe_unretained NSString *selectedTabIndex;
|
|
49
|
+
__unsafe_unretained NSString *unselectedTabIndex;
|
|
50
|
+
__unsafe_unretained NSString *bottomTabsId;
|
|
51
|
+
} BottomTabSelected;
|
|
52
|
+
/// `ANN.CommandCompleted`.
|
|
53
|
+
struct {
|
|
54
|
+
__unsafe_unretained NSString *event;
|
|
55
|
+
__unsafe_unretained NSString *commandName;
|
|
56
|
+
__unsafe_unretained NSString *commandId;
|
|
57
|
+
__unsafe_unretained NSString *completionTime;
|
|
58
|
+
} CommandCompleted;
|
|
59
|
+
/// `ANN.ComponentDidAppear`.
|
|
60
|
+
struct {
|
|
61
|
+
__unsafe_unretained NSString *event;
|
|
62
|
+
__unsafe_unretained NSString *componentId;
|
|
63
|
+
__unsafe_unretained NSString *componentName;
|
|
64
|
+
__unsafe_unretained NSString *componentType;
|
|
65
|
+
} ComponentDidAppear;
|
|
66
|
+
/// `ANN.ComponentDidDisappear`.
|
|
67
|
+
struct {
|
|
68
|
+
__unsafe_unretained NSString *event;
|
|
69
|
+
__unsafe_unretained NSString *componentId;
|
|
70
|
+
__unsafe_unretained NSString *componentName;
|
|
71
|
+
__unsafe_unretained NSString *componentType;
|
|
72
|
+
} ComponentDidDisappear;
|
|
73
|
+
/// `ANN.ComponentWillAppear`.
|
|
74
|
+
struct {
|
|
75
|
+
__unsafe_unretained NSString *event;
|
|
76
|
+
__unsafe_unretained NSString *componentId;
|
|
77
|
+
__unsafe_unretained NSString *componentName;
|
|
78
|
+
__unsafe_unretained NSString *componentType;
|
|
79
|
+
} ComponentWillAppear;
|
|
80
|
+
/// `ANN.DeepLinkDispatched` (iOS).
|
|
81
|
+
struct {
|
|
82
|
+
__unsafe_unretained NSString *event;
|
|
83
|
+
__unsafe_unretained NSString *url;
|
|
84
|
+
} DeepLinkDispatched;
|
|
85
|
+
/// `ANN.HingeChanged`.
|
|
86
|
+
struct {
|
|
87
|
+
__unsafe_unretained NSString *event;
|
|
88
|
+
/// Optional.
|
|
89
|
+
__unsafe_unretained NSString *state;
|
|
90
|
+
/// Optional.
|
|
91
|
+
__unsafe_unretained NSString *angle;
|
|
92
|
+
} HingeChanged;
|
|
93
|
+
/// `ANN.KeyCommandPressed` (iOS).
|
|
94
|
+
struct {
|
|
95
|
+
__unsafe_unretained NSString *event;
|
|
96
|
+
__unsafe_unretained NSString *componentId;
|
|
97
|
+
__unsafe_unretained NSString *keyCommandId;
|
|
98
|
+
} KeyCommandPressed;
|
|
99
|
+
/// `ANN.ModalAttemptedToDismiss`.
|
|
100
|
+
struct {
|
|
101
|
+
__unsafe_unretained NSString *event;
|
|
102
|
+
__unsafe_unretained NSString *componentId;
|
|
103
|
+
} ModalAttemptedToDismiss;
|
|
104
|
+
/// `ANN.ModalDismissed`.
|
|
105
|
+
struct {
|
|
106
|
+
__unsafe_unretained NSString *event;
|
|
107
|
+
__unsafe_unretained NSString *componentId;
|
|
108
|
+
__unsafe_unretained NSString *componentName;
|
|
109
|
+
__unsafe_unretained NSString *modalsDismissed;
|
|
110
|
+
} ModalDismissed;
|
|
111
|
+
/// `ANN.NativeScreenCall`.
|
|
112
|
+
struct {
|
|
113
|
+
__unsafe_unretained NSString *event;
|
|
114
|
+
__unsafe_unretained NSString *componentId;
|
|
115
|
+
__unsafe_unretained NSString *callId;
|
|
116
|
+
__unsafe_unretained NSString *kind;
|
|
117
|
+
__unsafe_unretained NSString *name;
|
|
118
|
+
__unsafe_unretained NSString *args;
|
|
119
|
+
} NativeScreenCall;
|
|
120
|
+
/// `ANN.NativeScreenReleased`.
|
|
121
|
+
struct {
|
|
122
|
+
__unsafe_unretained NSString *event;
|
|
123
|
+
__unsafe_unretained NSString *componentId;
|
|
124
|
+
} NativeScreenReleased;
|
|
125
|
+
/// `ANN.NavigationButtonPressed`.
|
|
126
|
+
struct {
|
|
127
|
+
__unsafe_unretained NSString *event;
|
|
128
|
+
__unsafe_unretained NSString *componentId;
|
|
129
|
+
__unsafe_unretained NSString *buttonId;
|
|
130
|
+
/// Optional, iOS only.
|
|
131
|
+
__unsafe_unretained NSString *selected;
|
|
132
|
+
} NavigationButtonPressed;
|
|
133
|
+
/// `ANN.NavigationStateChanged`.
|
|
134
|
+
struct {
|
|
135
|
+
__unsafe_unretained NSString *event;
|
|
136
|
+
__unsafe_unretained NSString *screen;
|
|
137
|
+
__unsafe_unretained NSString *tab;
|
|
138
|
+
} NavigationStateChanged;
|
|
139
|
+
/// The object of `ANN.NavigationStateChanged.screen`.
|
|
140
|
+
struct {
|
|
141
|
+
__unsafe_unretained NSString *id;
|
|
142
|
+
__unsafe_unretained NSString *name;
|
|
143
|
+
} NavigationStateChangedScreen;
|
|
144
|
+
/// `ANN.PreviewCompleted` (iOS).
|
|
145
|
+
struct {
|
|
146
|
+
__unsafe_unretained NSString *event;
|
|
147
|
+
__unsafe_unretained NSString *componentId;
|
|
148
|
+
__unsafe_unretained NSString *previewComponentId;
|
|
149
|
+
} PreviewCompleted;
|
|
150
|
+
/// `ANN.ScreenInsetsChanged`.
|
|
151
|
+
struct {
|
|
152
|
+
__unsafe_unretained NSString *event;
|
|
153
|
+
__unsafe_unretained NSString *componentId;
|
|
154
|
+
__unsafe_unretained NSString *top;
|
|
155
|
+
__unsafe_unretained NSString *right;
|
|
156
|
+
__unsafe_unretained NSString *bottom;
|
|
157
|
+
__unsafe_unretained NSString *left;
|
|
158
|
+
} ScreenInsetsChanged;
|
|
159
|
+
/// `ANN.ScreenPopped`.
|
|
160
|
+
struct {
|
|
161
|
+
__unsafe_unretained NSString *event;
|
|
162
|
+
__unsafe_unretained NSString *componentId;
|
|
163
|
+
} ScreenPopped;
|
|
164
|
+
/// The object of `ANN.ScreenRegionsChanged.division`.
|
|
165
|
+
struct {
|
|
166
|
+
__unsafe_unretained NSString *x;
|
|
167
|
+
__unsafe_unretained NSString *y;
|
|
168
|
+
__unsafe_unretained NSString *width;
|
|
169
|
+
__unsafe_unretained NSString *height;
|
|
170
|
+
} ScreenRegionRect;
|
|
171
|
+
/// `ANN.ScreenRegionsChanged`.
|
|
172
|
+
struct {
|
|
173
|
+
__unsafe_unretained NSString *event;
|
|
174
|
+
__unsafe_unretained NSString *componentId;
|
|
175
|
+
__unsafe_unretained NSString *division;
|
|
176
|
+
__unsafe_unretained NSString *occlusion;
|
|
177
|
+
} ScreenRegionsChanged;
|
|
178
|
+
/// `ANN.SearchBarCancelPressed`.
|
|
179
|
+
struct {
|
|
180
|
+
__unsafe_unretained NSString *event;
|
|
181
|
+
__unsafe_unretained NSString *componentId;
|
|
182
|
+
} SearchBarCancelPressed;
|
|
183
|
+
/// `ANN.SearchBarSubmitted`.
|
|
184
|
+
struct {
|
|
185
|
+
__unsafe_unretained NSString *event;
|
|
186
|
+
__unsafe_unretained NSString *componentId;
|
|
187
|
+
__unsafe_unretained NSString *text;
|
|
188
|
+
/// Optional.
|
|
189
|
+
__unsafe_unretained NSString *scope;
|
|
190
|
+
/// Optional, iOS only.
|
|
191
|
+
__unsafe_unretained NSString *tokens;
|
|
192
|
+
} SearchBarSubmitted;
|
|
193
|
+
/// `ANN.SearchBarUpdated`.
|
|
194
|
+
struct {
|
|
195
|
+
__unsafe_unretained NSString *event;
|
|
196
|
+
__unsafe_unretained NSString *componentId;
|
|
197
|
+
__unsafe_unretained NSString *text;
|
|
198
|
+
__unsafe_unretained NSString *isFocused;
|
|
199
|
+
/// Optional.
|
|
200
|
+
__unsafe_unretained NSString *scope;
|
|
201
|
+
/// Optional, iOS only.
|
|
202
|
+
__unsafe_unretained NSString *tokens;
|
|
203
|
+
} SearchBarUpdated;
|
|
204
|
+
/// `ANN.SearchSuggestionPicked`.
|
|
205
|
+
struct {
|
|
206
|
+
__unsafe_unretained NSString *event;
|
|
207
|
+
__unsafe_unretained NSString *componentId;
|
|
208
|
+
__unsafe_unretained NSString *suggestionId;
|
|
209
|
+
} SearchSuggestionPicked;
|
|
210
|
+
/// `ANN.SheetDetentChanged`.
|
|
211
|
+
struct {
|
|
212
|
+
__unsafe_unretained NSString *event;
|
|
213
|
+
__unsafe_unretained NSString *componentId;
|
|
214
|
+
__unsafe_unretained NSString *detent;
|
|
215
|
+
} SheetDetentChanged;
|
|
216
|
+
/// `ANN.SlotDestroyed`.
|
|
217
|
+
struct {
|
|
218
|
+
__unsafe_unretained NSString *event;
|
|
219
|
+
__unsafe_unretained NSString *componentId;
|
|
220
|
+
} SlotDestroyed;
|
|
221
|
+
/// `ANN.SplitViewColumnsStacked`.
|
|
222
|
+
struct {
|
|
223
|
+
__unsafe_unretained NSString *event;
|
|
224
|
+
__unsafe_unretained NSString *componentId;
|
|
225
|
+
__unsafe_unretained NSString *stacked;
|
|
226
|
+
} SplitViewColumnsStacked;
|
|
227
|
+
/// `ANN.SplitViewDisplayModeChanged` (iOS).
|
|
228
|
+
struct {
|
|
229
|
+
__unsafe_unretained NSString *event;
|
|
230
|
+
__unsafe_unretained NSString *componentId;
|
|
231
|
+
__unsafe_unretained NSString *displayMode;
|
|
232
|
+
/// Optional.
|
|
233
|
+
__unsafe_unretained NSString *inspectorVisible;
|
|
234
|
+
} SplitViewDisplayModeChanged;
|
|
235
|
+
/// `ANN.TitleRenamed` (iOS).
|
|
236
|
+
struct {
|
|
237
|
+
__unsafe_unretained NSString *event;
|
|
238
|
+
__unsafe_unretained NSString *componentId;
|
|
239
|
+
__unsafe_unretained NSString *text;
|
|
240
|
+
} TitleRenamed;
|
|
241
|
+
} ANNEventContract;
|
|
242
|
+
|
|
243
|
+
/// The name of every event, `ANN.<Name>`.
|
|
244
|
+
FOUNDATION_EXPORT NSArray<NSString *> *ANNEventContractNames(void);
|
|
245
|
+
|
|
246
|
+
NS_ASSUME_NONNULL_END
|