@symbiote-native/navigation 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +21 -0
- package/build/angular/drawer/index.d.ts +76 -0
- package/build/angular/drawer/index.js +508 -0
- package/build/angular/drawer-screen.directive.d.ts +14 -0
- package/build/angular/drawer-screen.directive.js +87 -0
- package/build/angular/index.d.ts +23 -0
- package/build/angular/index.js +22 -0
- package/build/angular/injectors/index.d.ts +13 -0
- package/build/angular/injectors/index.js +8 -0
- package/build/angular/injectors/inject-drawer-navigation.d.ts +4 -0
- package/build/angular/injectors/inject-drawer-navigation.js +12 -0
- package/build/angular/injectors/inject-focus-effect.d.ts +2 -0
- package/build/angular/injectors/inject-focus-effect.js +29 -0
- package/build/angular/injectors/inject-is-focused.d.ts +2 -0
- package/build/angular/injectors/inject-is-focused.js +20 -0
- package/build/angular/injectors/inject-navigation-state.d.ts +3 -0
- package/build/angular/injectors/inject-navigation-state.js +35 -0
- package/build/angular/injectors/inject-navigation.d.ts +7 -0
- package/build/angular/injectors/inject-navigation.js +16 -0
- package/build/angular/injectors/inject-route.d.ts +3 -0
- package/build/angular/injectors/inject-route.js +20 -0
- package/build/angular/injectors/inject-stack-navigation.d.ts +4 -0
- package/build/angular/injectors/inject-stack-navigation.js +15 -0
- package/build/angular/injectors/inject-tab-navigation.d.ts +4 -0
- package/build/angular/injectors/inject-tab-navigation.js +11 -0
- package/build/angular/linking.d.ts +3 -0
- package/build/angular/linking.js +43 -0
- package/build/angular/navigation-context.service.d.ts +13 -0
- package/build/angular/navigation-context.service.js +105 -0
- package/build/angular/navigation-scope.directive.d.ts +10 -0
- package/build/angular/navigation-scope.directive.js +90 -0
- package/build/angular/screen.directive.d.ts +22 -0
- package/build/angular/screen.directive.js +90 -0
- package/build/angular/search-bar-ref.directive.d.ts +10 -0
- package/build/angular/search-bar-ref.directive.js +88 -0
- package/build/angular/stack/index.d.ts +55 -0
- package/build/angular/stack/index.js +386 -0
- package/build/angular/tab-screen.directive.d.ts +14 -0
- package/build/angular/tab-screen.directive.js +87 -0
- package/build/angular/tabs/index.d.ts +42 -0
- package/build/angular/tabs/index.js +263 -0
- package/build/core/constants.d.ts +27 -0
- package/build/core/constants.js +61 -0
- package/build/core/drawer-options/index.d.ts +64 -0
- package/build/core/drawer-options/index.js +200 -0
- package/build/core/drawer-router-state/index.d.ts +21 -0
- package/build/core/drawer-router-state/index.js +40 -0
- package/build/core/guards.d.ts +2 -0
- package/build/core/guards.js +22 -0
- package/build/core/header-bar-buttons.d.ts +9 -0
- package/build/core/header-bar-buttons.js +163 -0
- package/build/core/index.d.ts +29 -0
- package/build/core/index.js +32 -0
- package/build/core/linking-config/index.d.ts +13 -0
- package/build/core/linking-config/index.js +171 -0
- package/build/core/navigation-events/index.d.ts +16 -0
- package/build/core/navigation-events/index.js +57 -0
- package/build/core/navigator-handles/index.d.ts +30 -0
- package/build/core/navigator-handles/index.js +15 -0
- package/build/core/navigator-props.d.ts +216 -0
- package/build/core/navigator-props.js +7 -0
- package/build/core/navigator-state/index.d.ts +36 -0
- package/build/core/navigator-state/index.js +81 -0
- package/build/core/render-drawer.d.ts +13 -0
- package/build/core/render-drawer.js +88 -0
- package/build/core/render-stack.d.ts +35 -0
- package/build/core/render-stack.js +294 -0
- package/build/core/render-tabs.d.ts +20 -0
- package/build/core/render-tabs.js +97 -0
- package/build/core/screen-options.d.ts +4 -0
- package/build/core/screen-options.js +133 -0
- package/build/core/search-bar-commands.d.ts +10 -0
- package/build/core/search-bar-commands.js +42 -0
- package/build/core/state-persistence/index.d.ts +3 -0
- package/build/core/state-persistence/index.js +23 -0
- package/build/core/tab-options.d.ts +13 -0
- package/build/core/tab-options.js +10 -0
- package/build/core/tab-router-state/index.d.ts +19 -0
- package/build/core/tab-router-state/index.js +51 -0
- package/build/react/collect-registry.d.ts +4 -0
- package/build/react/collect-registry.js +15 -0
- package/build/react/drawer/index.d.ts +29 -0
- package/build/react/drawer/index.js +277 -0
- package/build/react/drawer-screen.d.ts +14 -0
- package/build/react/drawer-screen.js +8 -0
- package/build/react/hooks/index.d.ts +12 -0
- package/build/react/hooks/index.js +8 -0
- package/build/react/hooks/use-drawer-navigation.d.ts +4 -0
- package/build/react/hooks/use-drawer-navigation.js +12 -0
- package/build/react/hooks/use-focus-effect.d.ts +2 -0
- package/build/react/hooks/use-focus-effect.js +29 -0
- package/build/react/hooks/use-is-focused.d.ts +1 -0
- package/build/react/hooks/use-is-focused.js +22 -0
- package/build/react/hooks/use-navigation-state/index.d.ts +2 -0
- package/build/react/hooks/use-navigation-state/index.js +39 -0
- package/build/react/hooks/use-navigation.d.ts +7 -0
- package/build/react/hooks/use-navigation.js +16 -0
- package/build/react/hooks/use-route.d.ts +2 -0
- package/build/react/hooks/use-route.js +8 -0
- package/build/react/hooks/use-stack-navigation.d.ts +4 -0
- package/build/react/hooks/use-stack-navigation.js +14 -0
- package/build/react/hooks/use-tab-navigation.d.ts +4 -0
- package/build/react/hooks/use-tab-navigation.js +12 -0
- package/build/react/index.d.ts +24 -0
- package/build/react/index.js +21 -0
- package/build/react/linking.d.ts +3 -0
- package/build/react/linking.js +47 -0
- package/build/react/navigation-context.d.ts +10 -0
- package/build/react/navigation-context.js +22 -0
- package/build/react/screen.d.ts +22 -0
- package/build/react/screen.js +7 -0
- package/build/react/stack/index.d.ts +13 -0
- package/build/react/stack/index.js +202 -0
- package/build/react/tab-screen.d.ts +15 -0
- package/build/react/tab-screen.js +8 -0
- package/build/react/tabs/index.d.ts +12 -0
- package/build/react/tabs/index.js +116 -0
- package/build/register.d.ts +7 -0
- package/build/register.js +58 -0
- package/build/vue/composables/index.d.ts +12 -0
- package/build/vue/composables/index.js +8 -0
- package/build/vue/composables/use-drawer-navigation.d.ts +5 -0
- package/build/vue/composables/use-drawer-navigation.js +15 -0
- package/build/vue/composables/use-focus-effect.d.ts +1 -0
- package/build/vue/composables/use-focus-effect.js +31 -0
- package/build/vue/composables/use-is-focused.d.ts +2 -0
- package/build/vue/composables/use-is-focused.js +28 -0
- package/build/vue/composables/use-navigation-state.d.ts +3 -0
- package/build/vue/composables/use-navigation-state.js +29 -0
- package/build/vue/composables/use-navigation.d.ts +8 -0
- package/build/vue/composables/use-navigation.js +13 -0
- package/build/vue/composables/use-route.d.ts +3 -0
- package/build/vue/composables/use-route.js +9 -0
- package/build/vue/composables/use-stack-navigation.d.ts +5 -0
- package/build/vue/composables/use-stack-navigation.js +18 -0
- package/build/vue/composables/use-tab-navigation.d.ts +5 -0
- package/build/vue/composables/use-tab-navigation.js +15 -0
- package/build/vue/drawer/index.d.ts +19 -0
- package/build/vue/drawer/index.js +390 -0
- package/build/vue/drawer-screen.d.ts +14 -0
- package/build/vue/drawer-screen.js +12 -0
- package/build/vue/index.d.ts +21 -0
- package/build/vue/index.js +19 -0
- package/build/vue/linking.d.ts +3 -0
- package/build/vue/linking.js +57 -0
- package/build/vue/navigation-context.d.ts +16 -0
- package/build/vue/navigation-context.js +65 -0
- package/build/vue/screen.d.ts +21 -0
- package/build/vue/screen.js +12 -0
- package/build/vue/stack/index.d.ts +9 -0
- package/build/vue/stack/index.js +279 -0
- package/build/vue/tab-screen.d.ts +14 -0
- package/build/vue/tab-screen.js +11 -0
- package/build/vue/tabs/index.d.ts +10 -0
- package/build/vue/tabs/index.js +209 -0
- package/build-ngc/angular/drawer/index.d.ts +79 -0
- package/build-ngc/angular/drawer/index.js +479 -0
- package/build-ngc/angular/drawer/index.js.map +1 -0
- package/build-ngc/angular/drawer-screen.directive.d.ts +17 -0
- package/build-ngc/angular/drawer-screen.directive.js +32 -0
- package/build-ngc/angular/drawer-screen.directive.js.map +1 -0
- package/build-ngc/angular/drawer.d.ts +79 -0
- package/build-ngc/angular/drawer.js +475 -0
- package/build-ngc/angular/drawer.js.map +1 -0
- package/build-ngc/angular/index.d.ts +23 -0
- package/build-ngc/angular/index.js +23 -0
- package/build-ngc/angular/index.js.map +1 -0
- package/build-ngc/angular/injectors/index.d.ts +13 -0
- package/build-ngc/angular/injectors/index.js +9 -0
- package/build-ngc/angular/injectors/index.js.map +1 -0
- package/build-ngc/angular/injectors/inject-drawer-navigation.d.ts +4 -0
- package/build-ngc/angular/injectors/inject-drawer-navigation.js +13 -0
- package/build-ngc/angular/injectors/inject-drawer-navigation.js.map +1 -0
- package/build-ngc/angular/injectors/inject-focus-effect.d.ts +2 -0
- package/build-ngc/angular/injectors/inject-focus-effect.js +30 -0
- package/build-ngc/angular/injectors/inject-focus-effect.js.map +1 -0
- package/build-ngc/angular/injectors/inject-is-focused.d.ts +2 -0
- package/build-ngc/angular/injectors/inject-is-focused.js +22 -0
- package/build-ngc/angular/injectors/inject-is-focused.js.map +1 -0
- package/build-ngc/angular/injectors/inject-navigation-state.d.ts +3 -0
- package/build-ngc/angular/injectors/inject-navigation-state.js +37 -0
- package/build-ngc/angular/injectors/inject-navigation-state.js.map +1 -0
- package/build-ngc/angular/injectors/inject-navigation.d.ts +7 -0
- package/build-ngc/angular/injectors/inject-navigation.js +17 -0
- package/build-ngc/angular/injectors/inject-navigation.js.map +1 -0
- package/build-ngc/angular/injectors/inject-route.d.ts +3 -0
- package/build-ngc/angular/injectors/inject-route.js +21 -0
- package/build-ngc/angular/injectors/inject-route.js.map +1 -0
- package/build-ngc/angular/injectors/inject-stack-navigation.d.ts +4 -0
- package/build-ngc/angular/injectors/inject-stack-navigation.js +16 -0
- package/build-ngc/angular/injectors/inject-stack-navigation.js.map +1 -0
- package/build-ngc/angular/injectors/inject-tab-navigation.d.ts +4 -0
- package/build-ngc/angular/injectors/inject-tab-navigation.js +12 -0
- package/build-ngc/angular/injectors/inject-tab-navigation.js.map +1 -0
- package/build-ngc/angular/linking.d.ts +3 -0
- package/build-ngc/angular/linking.js +44 -0
- package/build-ngc/angular/linking.js.map +1 -0
- package/build-ngc/angular/navigation-context.service.d.ts +16 -0
- package/build-ngc/angular/navigation-context.service.js +63 -0
- package/build-ngc/angular/navigation-context.service.js.map +1 -0
- package/build-ngc/angular/navigation-scope.directive.d.ts +13 -0
- package/build-ngc/angular/navigation-scope.directive.js +42 -0
- package/build-ngc/angular/navigation-scope.directive.js.map +1 -0
- package/build-ngc/angular/screen.directive.d.ts +25 -0
- package/build-ngc/angular/screen.directive.js +35 -0
- package/build-ngc/angular/screen.directive.js.map +1 -0
- package/build-ngc/angular/search-bar-ref.directive.d.ts +13 -0
- package/build-ngc/angular/search-bar-ref.directive.js +44 -0
- package/build-ngc/angular/search-bar-ref.directive.js.map +1 -0
- package/build-ngc/angular/stack/index.d.ts +58 -0
- package/build-ngc/angular/stack/index.js +406 -0
- package/build-ngc/angular/stack/index.js.map +1 -0
- package/build-ngc/angular/stack.d.ts +58 -0
- package/build-ngc/angular/stack.js +402 -0
- package/build-ngc/angular/stack.js.map +1 -0
- package/build-ngc/angular/tab-screen.directive.d.ts +17 -0
- package/build-ngc/angular/tab-screen.directive.js +32 -0
- package/build-ngc/angular/tab-screen.directive.js.map +1 -0
- package/build-ngc/angular/tabs/index.d.ts +45 -0
- package/build-ngc/angular/tabs/index.js +231 -0
- package/build-ngc/angular/tabs/index.js.map +1 -0
- package/build-ngc/angular/tabs.d.ts +45 -0
- package/build-ngc/angular/tabs.js +231 -0
- package/build-ngc/angular/tabs.js.map +1 -0
- package/build-ngc/core/constants.d.ts +27 -0
- package/build-ngc/core/constants.js +62 -0
- package/build-ngc/core/constants.js.map +1 -0
- package/build-ngc/core/drawer-options/index.d.ts +64 -0
- package/build-ngc/core/drawer-options/index.js +201 -0
- package/build-ngc/core/drawer-options/index.js.map +1 -0
- package/build-ngc/core/drawer-options.d.ts +64 -0
- package/build-ngc/core/drawer-options.js +201 -0
- package/build-ngc/core/drawer-options.js.map +1 -0
- package/build-ngc/core/drawer-router-state/index.d.ts +21 -0
- package/build-ngc/core/drawer-router-state/index.js +41 -0
- package/build-ngc/core/drawer-router-state/index.js.map +1 -0
- package/build-ngc/core/drawer-router-state.d.ts +21 -0
- package/build-ngc/core/drawer-router-state.js +41 -0
- package/build-ngc/core/drawer-router-state.js.map +1 -0
- package/build-ngc/core/guards.d.ts +2 -0
- package/build-ngc/core/guards.js +23 -0
- package/build-ngc/core/guards.js.map +1 -0
- package/build-ngc/core/header-bar-buttons.d.ts +9 -0
- package/build-ngc/core/header-bar-buttons.js +164 -0
- package/build-ngc/core/header-bar-buttons.js.map +1 -0
- package/build-ngc/core/href.d.ts +16 -0
- package/build-ngc/core/href.js +55 -0
- package/build-ngc/core/href.js.map +1 -0
- package/build-ngc/core/index.d.ts +29 -0
- package/build-ngc/core/index.js +33 -0
- package/build-ngc/core/index.js.map +1 -0
- package/build-ngc/core/linking-config/index.d.ts +13 -0
- package/build-ngc/core/linking-config/index.js +172 -0
- package/build-ngc/core/linking-config/index.js.map +1 -0
- package/build-ngc/core/linking-config.d.ts +13 -0
- package/build-ngc/core/linking-config.js +172 -0
- package/build-ngc/core/linking-config.js.map +1 -0
- package/build-ngc/core/navigation-events/index.d.ts +16 -0
- package/build-ngc/core/navigation-events/index.js +58 -0
- package/build-ngc/core/navigation-events/index.js.map +1 -0
- package/build-ngc/core/navigation-events.d.ts +16 -0
- package/build-ngc/core/navigation-events.js +58 -0
- package/build-ngc/core/navigation-events.js.map +1 -0
- package/build-ngc/core/navigator-handles/index.d.ts +30 -0
- package/build-ngc/core/navigator-handles/index.js +16 -0
- package/build-ngc/core/navigator-handles/index.js.map +1 -0
- package/build-ngc/core/navigator-handles.d.ts +30 -0
- package/build-ngc/core/navigator-handles.js +16 -0
- package/build-ngc/core/navigator-handles.js.map +1 -0
- package/build-ngc/core/navigator-props.d.ts +216 -0
- package/build-ngc/core/navigator-props.js +8 -0
- package/build-ngc/core/navigator-props.js.map +1 -0
- package/build-ngc/core/navigator-state/index.d.ts +36 -0
- package/build-ngc/core/navigator-state/index.js +82 -0
- package/build-ngc/core/navigator-state/index.js.map +1 -0
- package/build-ngc/core/navigator-state.d.ts +36 -0
- package/build-ngc/core/navigator-state.js +82 -0
- package/build-ngc/core/navigator-state.js.map +1 -0
- package/build-ngc/core/render-drawer.d.ts +13 -0
- package/build-ngc/core/render-drawer.js +89 -0
- package/build-ngc/core/render-drawer.js.map +1 -0
- package/build-ngc/core/render-stack.d.ts +35 -0
- package/build-ngc/core/render-stack.js +295 -0
- package/build-ngc/core/render-stack.js.map +1 -0
- package/build-ngc/core/render-tabs.d.ts +20 -0
- package/build-ngc/core/render-tabs.js +98 -0
- package/build-ngc/core/render-tabs.js.map +1 -0
- package/build-ngc/core/screen-options.d.ts +4 -0
- package/build-ngc/core/screen-options.js +134 -0
- package/build-ngc/core/screen-options.js.map +1 -0
- package/build-ngc/core/search-bar-commands.d.ts +10 -0
- package/build-ngc/core/search-bar-commands.js +43 -0
- package/build-ngc/core/search-bar-commands.js.map +1 -0
- package/build-ngc/core/search-params.d.ts +9 -0
- package/build-ngc/core/search-params.js +60 -0
- package/build-ngc/core/search-params.js.map +1 -0
- package/build-ngc/core/state-persistence/index.d.ts +3 -0
- package/build-ngc/core/state-persistence/index.js +24 -0
- package/build-ngc/core/state-persistence/index.js.map +1 -0
- package/build-ngc/core/state-persistence.d.ts +3 -0
- package/build-ngc/core/state-persistence.js +24 -0
- package/build-ngc/core/state-persistence.js.map +1 -0
- package/build-ngc/core/tab-options.d.ts +13 -0
- package/build-ngc/core/tab-options.js +11 -0
- package/build-ngc/core/tab-options.js.map +1 -0
- package/build-ngc/core/tab-router-state/index.d.ts +19 -0
- package/build-ngc/core/tab-router-state/index.js +52 -0
- package/build-ngc/core/tab-router-state/index.js.map +1 -0
- package/build-ngc/core/tab-router-state.d.ts +19 -0
- package/build-ngc/core/tab-router-state.js +52 -0
- package/build-ngc/core/tab-router-state.js.map +1 -0
- package/build-ngc/register.d.ts +7 -0
- package/build-ngc/register.js +59 -0
- package/build-ngc/register.js.map +1 -0
- package/codegen-specs/FullWindowOverlayNativeComponent.ts +13 -0
- package/codegen-specs/ModalScreenNativeComponent.ts +129 -0
- package/codegen-specs/NativeScreensModule.ts +8 -0
- package/codegen-specs/NativeScreensModule.web.ts +1 -0
- package/codegen-specs/ScreenContainerNativeComponent.ts +8 -0
- package/codegen-specs/ScreenContentWrapperNativeComponent.ts +9 -0
- package/codegen-specs/ScreenFooterNativeComponent.ts +6 -0
- package/codegen-specs/ScreenNativeComponent.ts +133 -0
- package/codegen-specs/ScreenNavigationContainerNativeComponent.ts +11 -0
- package/codegen-specs/ScreenStackHeaderConfigNativeComponent.ts +99 -0
- package/codegen-specs/ScreenStackHeaderSubviewNativeComponent.ts +25 -0
- package/codegen-specs/ScreenStackNativeComponent.ts +17 -0
- package/codegen-specs/SearchBarNativeComponent.ts +101 -0
- package/codegen-specs/codegenUtils.ts +6 -0
- package/codegen-specs/gamma/ScrollViewMarkerNativeComponent.ts +15 -0
- package/codegen-specs/gamma/modals/form-sheet/FormSheetContentWrapperNativeComponent.ts +10 -0
- package/codegen-specs/gamma/modals/form-sheet/FormSheetHostNativeComponent.ts +47 -0
- package/codegen-specs/gamma/split/SplitHostNativeComponent.ts +124 -0
- package/codegen-specs/gamma/split/SplitScreenNativeComponent.ts +24 -0
- package/codegen-specs/gamma/stack/StackHeaderConfigAndroidNativeComponent.ts +144 -0
- package/codegen-specs/gamma/stack/StackHeaderConfigIOSNativeComponent.ts +34 -0
- package/codegen-specs/gamma/stack/StackHeaderItemIOSNativeComponent.ts +47 -0
- package/codegen-specs/gamma/stack/StackHeaderItemSpacerIOSNativeComponent.ts +20 -0
- package/codegen-specs/gamma/stack/StackHeaderSubviewAndroidNativeComponent.ts +27 -0
- package/codegen-specs/gamma/stack/StackHostNativeComponent.ts +8 -0
- package/codegen-specs/gamma/stack/StackScreenNativeComponent.ts +42 -0
- package/codegen-specs/safe-area/SafeAreaViewNativeComponent.ts +24 -0
- package/codegen-specs/tabs/TabsBottomAccessoryContentNativeComponent.ts +15 -0
- package/codegen-specs/tabs/TabsBottomAccessoryNativeComponent.ts +19 -0
- package/codegen-specs/tabs/TabsHostAndroidNativeComponent.ts +69 -0
- package/codegen-specs/tabs/TabsHostIOSNativeComponent.ts +92 -0
- package/codegen-specs/tabs/TabsScreenAndroidNativeComponent.ts +112 -0
- package/codegen-specs/tabs/TabsScreenIOSNativeComponent.ts +171 -0
- package/package.json +201 -0
- package/react-native.config.cjs +58 -0
- package/src/angular/drawer/drawer.test.ts +299 -0
- package/src/angular/drawer/index.ts +546 -0
- package/src/angular/drawer-screen.directive.ts +28 -0
- package/src/angular/index.ts +63 -0
- package/src/angular/injectors/index.ts +13 -0
- package/src/angular/injectors/inject-drawer-navigation.ts +21 -0
- package/src/angular/injectors/inject-focus-effect.ts +37 -0
- package/src/angular/injectors/inject-is-focused.ts +28 -0
- package/src/angular/injectors/inject-navigation-state.ts +46 -0
- package/src/angular/injectors/inject-navigation.ts +26 -0
- package/src/angular/injectors/inject-route.ts +25 -0
- package/src/angular/injectors/inject-stack-navigation.ts +24 -0
- package/src/angular/injectors/inject-tab-navigation.ts +20 -0
- package/src/angular/injectors/injectors.test.ts +247 -0
- package/src/angular/injectors/use-typed-navigation.test.ts +229 -0
- package/src/angular/linking.ts +55 -0
- package/src/angular/navigation-context.service.ts +68 -0
- package/src/angular/navigation-scope.directive.ts +31 -0
- package/src/angular/nested-navigation.test.ts +189 -0
- package/src/angular/screen.directive.ts +48 -0
- package/src/angular/search-bar-ref.directive.ts +38 -0
- package/src/angular/stack/index.ts +401 -0
- package/src/angular/stack/stack.test.ts +419 -0
- package/src/angular/tab-screen.directive.ts +26 -0
- package/src/angular/tabs/index.ts +254 -0
- package/src/angular/tabs/tabs.test.ts +249 -0
- package/src/core/constants.ts +68 -0
- package/src/core/drawer-options/drawer-options.test.ts +415 -0
- package/src/core/drawer-options/index.ts +331 -0
- package/src/core/drawer-router-state/drawer-router-state.test.ts +116 -0
- package/src/core/drawer-router-state/index.ts +71 -0
- package/src/core/guards.ts +23 -0
- package/src/core/header-bar-buttons.ts +212 -0
- package/src/core/index.ts +170 -0
- package/src/core/linking-config/index.ts +209 -0
- package/src/core/linking-config/linking-config.test.ts +109 -0
- package/src/core/navigation-events/index.ts +94 -0
- package/src/core/navigation-events/navigation-events.test.ts +56 -0
- package/src/core/navigator-handles/index.ts +63 -0
- package/src/core/navigator-handles/navigator-handles.test.ts +46 -0
- package/src/core/navigator-props.ts +323 -0
- package/src/core/navigator-state/index.ts +112 -0
- package/src/core/navigator-state/navigator-state.test.ts +80 -0
- package/src/core/render-drawer.ts +123 -0
- package/src/core/render-stack.ts +414 -0
- package/src/core/render-tabs.ts +138 -0
- package/src/core/screen-options.ts +181 -0
- package/src/core/search-bar-commands.ts +57 -0
- package/src/core/state-persistence/index.ts +30 -0
- package/src/core/state-persistence/state-persistence.test.ts +42 -0
- package/src/core/tab-options.ts +25 -0
- package/src/core/tab-router-state/index.ts +75 -0
- package/src/core/tab-router-state/tab-router-state.test.ts +34 -0
- package/src/globals.d.ts +4 -0
- package/src/react/collect-registry.ts +19 -0
- package/src/react/drawer/drawer.test.tsx +472 -0
- package/src/react/drawer/index.ts +451 -0
- package/src/react/drawer-screen.ts +29 -0
- package/src/react/hooks/hooks.test.tsx +199 -0
- package/src/react/hooks/index.ts +12 -0
- package/src/react/hooks/use-drawer-navigation.ts +21 -0
- package/src/react/hooks/use-focus-effect.ts +36 -0
- package/src/react/hooks/use-is-focused.ts +26 -0
- package/src/react/hooks/use-navigation-state/index.ts +47 -0
- package/src/react/hooks/use-navigation-state/use-navigation-state.test.ts +85 -0
- package/src/react/hooks/use-navigation.ts +36 -0
- package/src/react/hooks/use-route.ts +11 -0
- package/src/react/hooks/use-stack-navigation.ts +23 -0
- package/src/react/hooks/use-tab-navigation.ts +21 -0
- package/src/react/hooks/use-typed-navigation.test.tsx +187 -0
- package/src/react/index.ts +52 -0
- package/src/react/linking.ts +59 -0
- package/src/react/navigation-context.ts +40 -0
- package/src/react/nested-navigation.test.tsx +145 -0
- package/src/react/screen.ts +44 -0
- package/src/react/stack/index.ts +323 -0
- package/src/react/stack/stack.test.tsx +514 -0
- package/src/react/tab-screen.ts +30 -0
- package/src/react/tabs/index.ts +204 -0
- package/src/react/tabs/tabs.test.tsx +256 -0
- package/src/register.ts +59 -0
- package/src/vue/composables/composables.test.ts +221 -0
- package/src/vue/composables/index.ts +12 -0
- package/src/vue/composables/use-drawer-navigation.ts +25 -0
- package/src/vue/composables/use-focus-effect.ts +37 -0
- package/src/vue/composables/use-is-focused.ts +34 -0
- package/src/vue/composables/use-navigation-state.ts +38 -0
- package/src/vue/composables/use-navigation.ts +30 -0
- package/src/vue/composables/use-route.ts +13 -0
- package/src/vue/composables/use-stack-navigation.ts +28 -0
- package/src/vue/composables/use-tab-navigation.ts +25 -0
- package/src/vue/composables/use-typed-navigation.test.ts +205 -0
- package/src/vue/drawer/drawer.test.ts +451 -0
- package/src/vue/drawer/index.ts +550 -0
- package/src/vue/drawer-screen.ts +32 -0
- package/src/vue/index.ts +70 -0
- package/src/vue/linking.ts +69 -0
- package/src/vue/navigation-context.ts +87 -0
- package/src/vue/nested-navigation.test.ts +155 -0
- package/src/vue/screen.ts +52 -0
- package/src/vue/stack/index.ts +376 -0
- package/src/vue/stack/stack.test.ts +501 -0
- package/src/vue/tab-screen.ts +29 -0
- package/src/vue/tabs/index.ts +302 -0
- package/src/vue/tabs/tabs.test.ts +278 -0
- package/symbiote-navigation.podspec +84 -0
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
// Co-located Angular-driven test for the @symbiote-native/navigation Angular Tab navigator.
|
|
2
|
+
// Proves: registry building from @ContentChildren, tab switching via jumpTo, focus/blur
|
|
3
|
+
// synthesis, tab bar item painting (label/icon/badge/tint), and press wiring. Tab is imported from
|
|
4
|
+
// its own module (NOT the package barrel) so the ../register side-effect never loads headless -
|
|
5
|
+
// Tab needs no react-native-screens ViewConfig at all (pure-JS UI).
|
|
6
|
+
|
|
7
|
+
import '@angular/compiler';
|
|
8
|
+
import { Component, CUSTOM_ELEMENTS_SCHEMA, ViewChild, type Signal } from '@angular/core';
|
|
9
|
+
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
|
10
|
+
import { mount, unmount, registerComposedComponent } from '@symbiote-native/angular';
|
|
11
|
+
import { installFabric, type IFakeNode } from '@symbiote-native/test-utils';
|
|
12
|
+
import { Tab } from './index';
|
|
13
|
+
import type { ITabNavigatorHandle } from './index';
|
|
14
|
+
import { TabScreenDirective } from '../tab-screen.directive';
|
|
15
|
+
import { injectIsFocused } from '../injectors/inject-is-focused';
|
|
16
|
+
|
|
17
|
+
const ROOT_TAG = 5121;
|
|
18
|
+
const tick = (): Promise<void> => new Promise(resolve => setTimeout(resolve, 0));
|
|
19
|
+
|
|
20
|
+
const fabric = installFabric();
|
|
21
|
+
// On a real Metro build, adapters/angular's babel-register-composed.cjs auto-registers `Tab`
|
|
22
|
+
// as an anchor host by scanning the AOT-compiled @Component's selector - vitest never runs that
|
|
23
|
+
// pipeline, so this test drives the same self-registration entry point by hand (mirrors
|
|
24
|
+
// renderer.test.ts's 'RefApiDemo' convention). Without it, `<Tab>` falls through to a raw
|
|
25
|
+
// Fabric createNode('Tab') call instead of a non-painting anchor.
|
|
26
|
+
registerComposedComponent('Tab');
|
|
27
|
+
|
|
28
|
+
beforeEach(() => {
|
|
29
|
+
fabric.reset();
|
|
30
|
+
capturedFeedInstance = undefined;
|
|
31
|
+
capturedProfileInstance = undefined;
|
|
32
|
+
});
|
|
33
|
+
afterEach(() => unmount(ROOT_TAG));
|
|
34
|
+
|
|
35
|
+
function findInTree(
|
|
36
|
+
predicate: (node: IFakeNode) => boolean,
|
|
37
|
+
nodes = fabric.committed,
|
|
38
|
+
): IFakeNode | undefined {
|
|
39
|
+
for (const node of nodes) {
|
|
40
|
+
if (predicate(node)) return node;
|
|
41
|
+
const found = findInTree(predicate, node.children);
|
|
42
|
+
if (found) return found;
|
|
43
|
+
}
|
|
44
|
+
return undefined;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
let capturedFeedInstance: FeedScreenComponent | undefined;
|
|
48
|
+
let capturedProfileInstance: ProfileScreenComponent | undefined;
|
|
49
|
+
|
|
50
|
+
@Component({
|
|
51
|
+
selector: 'feed-screen',
|
|
52
|
+
standalone: true,
|
|
53
|
+
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
54
|
+
template: `<symbiote-text>feed</symbiote-text>`,
|
|
55
|
+
})
|
|
56
|
+
class FeedScreenComponent {
|
|
57
|
+
// Real screens (e.g. .examples/angular's TabHomeScreen) call injectIsFocused() - see the
|
|
58
|
+
// regression test below for why this matters.
|
|
59
|
+
readonly isFocused: Signal<boolean> = injectIsFocused();
|
|
60
|
+
|
|
61
|
+
constructor() {
|
|
62
|
+
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
63
|
+
capturedFeedInstance = this;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
|
|
67
|
+
@Component({
|
|
68
|
+
selector: 'profile-screen',
|
|
69
|
+
standalone: true,
|
|
70
|
+
schemas: [CUSTOM_ELEMENTS_SCHEMA],
|
|
71
|
+
template: `<symbiote-text>profile</symbiote-text>`,
|
|
72
|
+
})
|
|
73
|
+
class ProfileScreenComponent {
|
|
74
|
+
readonly isFocused: Signal<boolean> = injectIsFocused();
|
|
75
|
+
|
|
76
|
+
constructor() {
|
|
77
|
+
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
78
|
+
capturedProfileInstance = this;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
|
|
82
|
+
let capturedHost: TabTestHost | undefined;
|
|
83
|
+
|
|
84
|
+
@Component({
|
|
85
|
+
selector: 'tab-test-host',
|
|
86
|
+
standalone: true,
|
|
87
|
+
imports: [Tab, TabScreenDirective],
|
|
88
|
+
template: `
|
|
89
|
+
<Tab #nav initialRouteName="Feed">
|
|
90
|
+
<ng-template
|
|
91
|
+
symbioteTabScreen
|
|
92
|
+
name="Feed"
|
|
93
|
+
[component]="feedComponent"
|
|
94
|
+
[options]="feedOptions"
|
|
95
|
+
></ng-template>
|
|
96
|
+
<ng-template
|
|
97
|
+
symbioteTabScreen
|
|
98
|
+
name="Profile"
|
|
99
|
+
[component]="profileComponent"
|
|
100
|
+
[options]="profileOptions"
|
|
101
|
+
></ng-template>
|
|
102
|
+
</Tab>
|
|
103
|
+
`,
|
|
104
|
+
})
|
|
105
|
+
class TabTestHost {
|
|
106
|
+
@ViewChild('nav') nav!: Tab;
|
|
107
|
+
|
|
108
|
+
feedComponent = FeedScreenComponent;
|
|
109
|
+
profileComponent = ProfileScreenComponent;
|
|
110
|
+
feedOptions: Record<string, unknown> = { title: 'Feed', tabBarBadge: 3 };
|
|
111
|
+
profileOptions: Record<string, unknown> = { tabBarLabel: 'Me' };
|
|
112
|
+
|
|
113
|
+
constructor() {
|
|
114
|
+
// eslint-disable-next-line @typescript-eslint/no-this-alias
|
|
115
|
+
capturedHost = this;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
async function mountTab(): Promise<ITabNavigatorHandle> {
|
|
120
|
+
capturedHost = undefined;
|
|
121
|
+
mount(ROOT_TAG, TabTestHost);
|
|
122
|
+
await tick();
|
|
123
|
+
const host = capturedHost;
|
|
124
|
+
if (!host) throw new Error('TabTestHost never mounted');
|
|
125
|
+
return host.nav;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
function tabItemNodes(): IFakeNode[] {
|
|
129
|
+
const found: IFakeNode[] = [];
|
|
130
|
+
const collect = (nodes: readonly IFakeNode[]): void => {
|
|
131
|
+
for (const node of nodes) {
|
|
132
|
+
if (node.props.accessibilityRole === 'tab') found.push(node);
|
|
133
|
+
collect(node.children);
|
|
134
|
+
}
|
|
135
|
+
};
|
|
136
|
+
collect(fabric.committed);
|
|
137
|
+
return found;
|
|
138
|
+
}
|
|
139
|
+
|
|
140
|
+
describe('Angular Tab navigator', () => {
|
|
141
|
+
it("mounts only the initial route's content and marks it focused in the tab bar", async () => {
|
|
142
|
+
await mountTab();
|
|
143
|
+
expect(findInTree(n => n.viewName === 'RCTRawText' && n.props.text === 'feed')).toBeDefined();
|
|
144
|
+
expect(
|
|
145
|
+
findInTree(n => n.viewName === 'RCTRawText' && n.props.text === 'profile'),
|
|
146
|
+
).toBeUndefined();
|
|
147
|
+
const items = tabItemNodes();
|
|
148
|
+
expect(items).toHaveLength(2);
|
|
149
|
+
expect(items[0].props.accessibilityState).toEqual({ selected: true });
|
|
150
|
+
expect(items[1].props.accessibilityState).toEqual({ selected: false });
|
|
151
|
+
});
|
|
152
|
+
|
|
153
|
+
it('jumpTo() switches the mounted content and the focused tab bar item', async () => {
|
|
154
|
+
const handle = await mountTab();
|
|
155
|
+
handle.jumpTo('Profile');
|
|
156
|
+
await tick();
|
|
157
|
+
expect(
|
|
158
|
+
findInTree(n => n.viewName === 'RCTRawText' && n.props.text === 'profile'),
|
|
159
|
+
).toBeDefined();
|
|
160
|
+
expect(findInTree(n => n.viewName === 'RCTRawText' && n.props.text === 'feed')).toBeUndefined();
|
|
161
|
+
const items = tabItemNodes();
|
|
162
|
+
expect(items[0].props.accessibilityState).toEqual({ selected: false });
|
|
163
|
+
expect(items[1].props.accessibilityState).toEqual({ selected: true });
|
|
164
|
+
});
|
|
165
|
+
|
|
166
|
+
it('resolves tabBarLabel/title fallback and paints a badge', async () => {
|
|
167
|
+
await mountTab();
|
|
168
|
+
const items = tabItemNodes();
|
|
169
|
+
// Feed: no tabBarLabel, falls back to title 'Feed'; badge '3' painted as a child text.
|
|
170
|
+
expect(findInTree(n => n.viewName === 'RCTRawText' && n.props.text === 'Feed')).toBeDefined();
|
|
171
|
+
expect(findInTree(n => n.viewName === 'RCTRawText' && n.props.text === '3')).toBeDefined();
|
|
172
|
+
// Profile: explicit tabBarLabel 'Me' wins over the route name.
|
|
173
|
+
expect(findInTree(n => n.viewName === 'RCTRawText' && n.props.text === 'Me')).toBeDefined();
|
|
174
|
+
expect(items).toHaveLength(2);
|
|
175
|
+
});
|
|
176
|
+
|
|
177
|
+
it('tapping a tab bar item calls jumpTo via the wired onPress passthrough', async () => {
|
|
178
|
+
// onPress is synthesized by the engine from a touchStart/touchEnd pair on the node (no direct
|
|
179
|
+
// native 'press' event - see render-tabs.ts's own comment on ITabBarItemView.passthrough).
|
|
180
|
+
await mountTab();
|
|
181
|
+
const items = tabItemNodes();
|
|
182
|
+
const profileItem = items[1];
|
|
183
|
+
const nativeEvent = {
|
|
184
|
+
target: profileItem.tag,
|
|
185
|
+
identifier: 1,
|
|
186
|
+
pageX: 0,
|
|
187
|
+
pageY: 0,
|
|
188
|
+
locationX: 0,
|
|
189
|
+
locationY: 0,
|
|
190
|
+
timestamp: Date.now(),
|
|
191
|
+
};
|
|
192
|
+
fabric.fireEvent(profileItem.instanceHandle, 'topTouchStart', nativeEvent);
|
|
193
|
+
fabric.fireEvent(profileItem.instanceHandle, 'topTouchEnd', nativeEvent);
|
|
194
|
+
await tick();
|
|
195
|
+
expect(
|
|
196
|
+
findInTree(n => n.viewName === 'RCTRawText' && n.props.text === 'profile'),
|
|
197
|
+
).toBeDefined();
|
|
198
|
+
});
|
|
199
|
+
|
|
200
|
+
// Regression test: focusedRouteEmitter() runs as a TEMPLATE EXPRESSION
|
|
201
|
+
// ([emitter]="focusedRouteEmitter()"), evaluated inside Angular's reactive-read tracking
|
|
202
|
+
// context for the current CD pass. It synchronously calls emitter.emit(FOCUS/BLUR), which
|
|
203
|
+
// fan-out-calls every listener on that route's emitter synchronously too - including
|
|
204
|
+
// injectIsFocused()'s `isFocused.set(...)`, since every real screen (TabHomeScreen,
|
|
205
|
+
// TabSearchScreen, TabProfileScreen in .examples/angular) calls injectIsFocused(). Angular
|
|
206
|
+
// throws NG600 ("signal write during a template execution") the instant that set() runs
|
|
207
|
+
// inside a tracked read - not gated behind ngDevMode, so this reproduces in every build,
|
|
208
|
+
// not just dev. jumpTo() is exactly what a tab-bar tap fires (see the test above), so this
|
|
209
|
+
// threw on literally every tab switch. drawer.ts's focusedRouteEmitter() has the identical
|
|
210
|
+
// shape and its own regression test in drawer.test.ts.
|
|
211
|
+
it('switching tabs does not throw when the newly-focused screen calls injectIsFocused()', async () => {
|
|
212
|
+
const handle = await mountTab();
|
|
213
|
+
const errorSpy = vi.spyOn(console, 'error').mockImplementation(() => {});
|
|
214
|
+
try {
|
|
215
|
+
handle.jumpTo('Profile');
|
|
216
|
+
await tick();
|
|
217
|
+
handle.jumpTo('Feed');
|
|
218
|
+
await tick();
|
|
219
|
+
} finally {
|
|
220
|
+
expect(errorSpy).not.toHaveBeenCalled();
|
|
221
|
+
errorSpy.mockRestore();
|
|
222
|
+
}
|
|
223
|
+
});
|
|
224
|
+
|
|
225
|
+
// injectIsFocused() reads context.emitter at CALL time (during the screen's own constructor),
|
|
226
|
+
// which runs as part of *ngComponentOutlet creating the screen - nested INSIDE the same
|
|
227
|
+
// <ng-container [emitter]="focusedRouteEmitter()"> whose input evaluation is what actually
|
|
228
|
+
// fires the FOCUS emit. If Angular evaluates the ng-container's OWN inputs (calling
|
|
229
|
+
// focusedRouteEmitter(), firing FOCUS) before creating/refreshing the nested ngComponentOutlet
|
|
230
|
+
// child (running the screen's constructor, registering the injectIsFocused() listener), the
|
|
231
|
+
// FOCUS event fires to zero listeners and is lost forever - isFocused stays false permanently,
|
|
232
|
+
// exactly as reported ("focused: false", never changes, even after switching tabs back to it).
|
|
233
|
+
it('the initially-focused screen actually observes isFocused() becoming true', async () => {
|
|
234
|
+
await mountTab();
|
|
235
|
+
await tick();
|
|
236
|
+
expect(capturedFeedInstance).toBeDefined();
|
|
237
|
+
expect(capturedFeedInstance?.isFocused()).toBe(true);
|
|
238
|
+
});
|
|
239
|
+
|
|
240
|
+
it('switching tabs toggles isFocused() true/false on the exiting/entering screens', async () => {
|
|
241
|
+
const handle = await mountTab();
|
|
242
|
+
await tick();
|
|
243
|
+
handle.jumpTo('Profile');
|
|
244
|
+
await tick();
|
|
245
|
+
expect(capturedFeedInstance?.isFocused()).toBe(false);
|
|
246
|
+
expect(capturedProfileInstance).toBeDefined();
|
|
247
|
+
expect(capturedProfileInstance?.isFocused()).toBe(true);
|
|
248
|
+
});
|
|
249
|
+
});
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
// Framework-agnostic constants for the react-native-screens native stack primitives. symbiote
|
|
2
|
+
// ships zero ViewConfig metadata for these views at runtime - the engine derives events and
|
|
3
|
+
// color processors from react-native-screens' own codegen ViewConfig - this file only names the
|
|
4
|
+
// Fabric view names and event prop keys every adapter binds against, plus the RNS activityState
|
|
5
|
+
// convention (mirrors @react-navigation/native-stack's internal screen focus signaling).
|
|
6
|
+
|
|
7
|
+
// The Fabric view names react-native-screens' codegen components register. descriptorFor passes
|
|
8
|
+
// any non-`symbiote-` string through as a raw Fabric name, so the render fns emit these directly.
|
|
9
|
+
export const RNS_SCREEN_VIEW_NAME = 'RNSScreen';
|
|
10
|
+
// The modal-presentation twin of RNSScreen - see resolveScreenViewName's comment in
|
|
11
|
+
// render-stack.ts for why a formSheet/modal screen MUST use this different Fabric name.
|
|
12
|
+
export const RNS_MODAL_SCREEN_VIEW_NAME = 'RNSModalScreen';
|
|
13
|
+
export const RNS_SCREEN_STACK_VIEW_NAME = 'RNSScreenStack';
|
|
14
|
+
export const RNS_SCREEN_STACK_HEADER_CONFIG_VIEW_NAME = 'RNSScreenStackHeaderConfig';
|
|
15
|
+
// The header-subview leaf react-native-screens itself uses to host arbitrary framework children
|
|
16
|
+
// (left/right/back/title/center/searchBar) inside the header. Registered here for ground-truth
|
|
17
|
+
// parity, but unconsumed by any fold in v1 scope: renderHeaderConfig's Descriptor never takes
|
|
18
|
+
// framework children (see render-stack.ts), so mounting a subview child is left to the adapter.
|
|
19
|
+
export const RNS_SCREEN_STACK_HEADER_SUBVIEW_VIEW_NAME = 'RNSScreenStackHeaderSubview';
|
|
20
|
+
export const RNS_SEARCH_BAR_VIEW_NAME = 'RNSSearchBar';
|
|
21
|
+
// react-native-screens' own JS layer (ScreenStackItem -> DebugContainer -> ScreenContentWrapper)
|
|
22
|
+
// ALWAYS wraps a screen's content in this native view, `collapsable: false` so Fabric can never
|
|
23
|
+
// flatten it away. RNSScreen.mm's `registerContentWrapper:contentHeightErrata:` is a no-op for
|
|
24
|
+
// `push` (early-returns NO), but for `formSheet` it's how the native side ever learns the
|
|
25
|
+
// content's real size - RNSScreenContentWrapper's `willMoveToWindow` walks up to the ancestor
|
|
26
|
+
// RNSScreen and registers itself, and its `receivedReactFrame:` delegate callback is what feeds
|
|
27
|
+
// the sheet's own height/detent machinery. Skipping this wrapper is harmless for `push` (why it
|
|
28
|
+
// went unnoticed) but leaves a formSheet screen's native side with nothing to attach to at all.
|
|
29
|
+
export const RNS_SCREEN_CONTENT_WRAPPER_VIEW_NAME = 'RNSScreenContentWrapper';
|
|
30
|
+
|
|
31
|
+
// RNSScreen event prop keys (all DirectEventHandler in the codegen spec).
|
|
32
|
+
export const SCREEN_ON_APPEAR = 'onAppear';
|
|
33
|
+
export const SCREEN_ON_DISAPPEAR = 'onDisappear';
|
|
34
|
+
export const SCREEN_ON_WILL_APPEAR = 'onWillAppear';
|
|
35
|
+
export const SCREEN_ON_WILL_DISAPPEAR = 'onWillDisappear';
|
|
36
|
+
export const SCREEN_ON_DISMISSED = 'onDismissed';
|
|
37
|
+
export const SCREEN_ON_HEADER_BACK_BUTTON_CLICKED = 'onHeaderBackButtonClicked';
|
|
38
|
+
|
|
39
|
+
// RNSScreenStack event prop key.
|
|
40
|
+
export const STACK_ON_FINISH_TRANSITIONING = 'onFinishTransitioning';
|
|
41
|
+
|
|
42
|
+
// RNSScreenStackHeaderConfig event prop keys (both DirectEventHandler in the codegen spec): a
|
|
43
|
+
// plain bar-button-item press, and a press on a (possibly nested) menu action of a 'menu'-type
|
|
44
|
+
// bar-button item.
|
|
45
|
+
export const HEADER_ON_PRESS_BAR_BUTTON_ITEM = 'onPressHeaderBarButtonItem';
|
|
46
|
+
export const HEADER_ON_PRESS_BAR_BUTTON_MENU_ITEM = 'onPressHeaderBarButtonMenuItem';
|
|
47
|
+
|
|
48
|
+
// RNSSearchBar event prop keys (all DirectEventHandler in the codegen spec). onClose/onOpen are
|
|
49
|
+
// Android-only per the codegen spec's own comment.
|
|
50
|
+
export const SEARCH_BAR_ON_FOCUS = 'onSearchFocus';
|
|
51
|
+
export const SEARCH_BAR_ON_BLUR = 'onSearchBlur';
|
|
52
|
+
export const SEARCH_BAR_ON_SEARCH_BUTTON_PRESS = 'onSearchButtonPress';
|
|
53
|
+
export const SEARCH_BAR_ON_CANCEL_BUTTON_PRESS = 'onCancelButtonPress';
|
|
54
|
+
export const SEARCH_BAR_ON_CHANGE_TEXT = 'onChangeText';
|
|
55
|
+
export const SEARCH_BAR_ON_CLOSE = 'onClose';
|
|
56
|
+
export const SEARCH_BAR_ON_OPEN = 'onOpen';
|
|
57
|
+
|
|
58
|
+
// activityState RNS reads to decide which screen is attached to the native hierarchy. Per
|
|
59
|
+
// react-native-screens' native RNSScreen.mm (maybeAssertActivityStateProgressionOldValue), an
|
|
60
|
+
// already-mounted NativeStack screen's activityState can never DECREASE via a plain prop update -
|
|
61
|
+
// only 0 (detached) and 2 (attached + focused) are used; there is no "1 = transitioning" value in
|
|
62
|
+
// @react-navigation/native-stack's actual algorithm (NativeStackView.native.tsx computes
|
|
63
|
+
// `activityState={isInactive ? 0 : 2}`, never 1). See computeActivityState for the full rationale.
|
|
64
|
+
export const SCREEN_ACTIVITY_STATE_FOCUSED = 2;
|
|
65
|
+
export const SCREEN_ACTIVITY_STATE_INACTIVE = 0;
|
|
66
|
+
|
|
67
|
+
export const STACK_DEFAULT_ANIMATION = 'default';
|
|
68
|
+
export const STACK_DEFAULT_PRESENTATION = 'push';
|