react-native-screen-transitions 1.1.0 → 2.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/README.md +273 -269
- package/lib/commonjs/__tests__ /geometry.test.js +178 -0
- package/lib/commonjs/__tests__ /geometry.test.js.map +1 -0
- package/lib/commonjs/components/bounds-activator.js +33 -0
- package/lib/commonjs/components/bounds-activator.js.map +1 -0
- package/lib/commonjs/components/controllers/screen-lifecycle.js +66 -0
- package/lib/commonjs/components/controllers/screen-lifecycle.js.map +1 -0
- package/lib/commonjs/components/create-transition-aware-component.js +96 -0
- package/lib/commonjs/components/create-transition-aware-component.js.map +1 -0
- package/lib/commonjs/components/root-transition-aware.js +56 -0
- package/lib/commonjs/components/root-transition-aware.js.map +1 -0
- package/lib/commonjs/configs/index.js +12 -0
- package/lib/commonjs/configs/index.js.map +1 -0
- package/lib/commonjs/configs/presets.js +206 -0
- package/lib/commonjs/configs/presets.js.map +1 -0
- package/lib/commonjs/configs/specs.js +14 -0
- package/lib/commonjs/configs/specs.js.map +1 -0
- package/lib/commonjs/hooks/animation/use-associated-style.js +36 -0
- package/lib/commonjs/hooks/animation/use-associated-style.js.map +1 -0
- package/lib/commonjs/hooks/animation/use-screen-animation.js +120 -0
- package/lib/commonjs/hooks/animation/use-screen-animation.js.map +1 -0
- package/lib/commonjs/hooks/bounds/use-bound-measurer.js +52 -0
- package/lib/commonjs/hooks/bounds/use-bound-measurer.js.map +1 -0
- package/lib/commonjs/hooks/gestures/use-build-gestures.js +239 -0
- package/lib/commonjs/hooks/gestures/use-build-gestures.js.map +1 -0
- package/lib/commonjs/hooks/gestures/use-scroll-progress.js +57 -0
- package/lib/commonjs/hooks/gestures/use-scroll-progress.js.map +1 -0
- package/lib/commonjs/hooks/use-stable-callback.js +17 -0
- package/lib/commonjs/hooks/use-stable-callback.js.map +1 -0
- package/lib/commonjs/index.js +37 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/integrations/native-stack/navigators/createNativeStackNavigator.js +68 -0
- package/lib/commonjs/integrations/native-stack/navigators/createNativeStackNavigator.js.map +1 -0
- package/lib/commonjs/integrations/native-stack/utils/debounce.js +16 -0
- package/lib/commonjs/integrations/native-stack/utils/debounce.js.map +1 -0
- package/lib/commonjs/integrations/native-stack/utils/getModalRoutesKeys.js +17 -0
- package/lib/commonjs/integrations/native-stack/utils/getModalRoutesKeys.js.map +1 -0
- package/lib/commonjs/integrations/native-stack/utils/useAnimatedHeaderHeight.js +18 -0
- package/lib/commonjs/integrations/native-stack/utils/useAnimatedHeaderHeight.js.map +1 -0
- package/lib/commonjs/integrations/native-stack/utils/useDismissedRouteError.js +22 -0
- package/lib/commonjs/integrations/native-stack/utils/useDismissedRouteError.js.map +1 -0
- package/lib/commonjs/integrations/native-stack/utils/useInvalidPreventRemoveError.js +25 -0
- package/lib/commonjs/integrations/native-stack/utils/useInvalidPreventRemoveError.js.map +1 -0
- package/lib/commonjs/integrations/native-stack/views/FontProcessor.js +10 -0
- package/lib/commonjs/integrations/native-stack/views/FontProcessor.js.map +1 -0
- package/lib/commonjs/integrations/native-stack/views/FontProcessor.native.js +18 -0
- package/lib/commonjs/integrations/native-stack/views/FontProcessor.native.js.map +1 -0
- package/lib/commonjs/integrations/native-stack/views/FooterComponent.js +17 -0
- package/lib/commonjs/integrations/native-stack/views/FooterComponent.js.map +1 -0
- package/lib/commonjs/integrations/native-stack/views/NativeStackView.js +138 -0
- package/lib/commonjs/integrations/native-stack/views/NativeStackView.js.map +1 -0
- package/lib/commonjs/integrations/native-stack/views/NativeStackView.native.js +497 -0
- package/lib/commonjs/integrations/native-stack/views/NativeStackView.native.js.map +1 -0
- package/lib/commonjs/integrations/native-stack/views/useHeaderConfigProps.js +203 -0
- package/lib/commonjs/integrations/native-stack/views/useHeaderConfigProps.js.map +1 -0
- package/lib/commonjs/package.json +1 -0
- package/lib/commonjs/providers/gestures.js +64 -0
- package/lib/commonjs/providers/gestures.js.map +1 -0
- package/lib/commonjs/providers/keys.js +35 -0
- package/lib/commonjs/providers/keys.js.map +1 -0
- package/lib/commonjs/stores/animations.js +39 -0
- package/lib/commonjs/stores/animations.js.map +1 -0
- package/lib/commonjs/stores/bounds.js +64 -0
- package/lib/commonjs/stores/bounds.js.map +1 -0
- package/lib/commonjs/stores/gestures.js +38 -0
- package/lib/commonjs/stores/gestures.js.map +1 -0
- package/lib/commonjs/stores/navigator-dismiss-state.js +23 -0
- package/lib/commonjs/stores/navigator-dismiss-state.js.map +1 -0
- package/lib/commonjs/stores/utils/reset-stores-for-screen.js +20 -0
- package/lib/commonjs/stores/utils/reset-stores-for-screen.js.map +1 -0
- package/lib/commonjs/types/animation.js +6 -0
- package/lib/commonjs/types/animation.js.map +1 -0
- package/lib/commonjs/types/bounds.js +6 -0
- package/lib/commonjs/types/bounds.js.map +1 -0
- package/lib/commonjs/types/core.js +6 -0
- package/lib/commonjs/types/core.js.map +1 -0
- package/lib/commonjs/types/gesture.js +2 -0
- package/lib/commonjs/types/gesture.js.map +1 -0
- package/lib/commonjs/types/navigator.js +6 -0
- package/lib/commonjs/types/navigator.js.map +1 -0
- package/lib/commonjs/types/utils.js +2 -0
- package/lib/commonjs/types/utils.js.map +1 -0
- package/lib/commonjs/utils/animation/animate.js +18 -0
- package/lib/commonjs/utils/animation/animate.js.map +1 -0
- package/lib/commonjs/utils/animation/run-transition.js +48 -0
- package/lib/commonjs/utils/animation/run-transition.js.map +1 -0
- package/lib/commonjs/utils/bounds/_types/builder.js +6 -0
- package/lib/commonjs/utils/bounds/_types/builder.js.map +1 -0
- package/lib/commonjs/utils/bounds/_types/geometry.js +2 -0
- package/lib/commonjs/utils/bounds/_types/geometry.js.map +1 -0
- package/lib/commonjs/utils/bounds/_types/get-bounds.js +6 -0
- package/lib/commonjs/utils/bounds/_types/get-bounds.js.map +1 -0
- package/lib/commonjs/utils/bounds/build-bound-styles.js +145 -0
- package/lib/commonjs/utils/bounds/build-bound-styles.js.map +1 -0
- package/lib/commonjs/utils/bounds/constants.js +31 -0
- package/lib/commonjs/utils/bounds/constants.js.map +1 -0
- package/lib/commonjs/utils/bounds/flatten-styles.js +27 -0
- package/lib/commonjs/utils/bounds/flatten-styles.js.map +1 -0
- package/lib/commonjs/utils/bounds/geometry.js +94 -0
- package/lib/commonjs/utils/bounds/geometry.js.map +1 -0
- package/lib/commonjs/utils/bounds/get-bounds.js +51 -0
- package/lib/commonjs/utils/bounds/get-bounds.js.map +1 -0
- package/lib/commonjs/utils/bounds/index.js +38 -0
- package/lib/commonjs/utils/bounds/index.js.map +1 -0
- package/lib/commonjs/utils/bounds/style-composers.js +199 -0
- package/lib/commonjs/utils/bounds/style-composers.js.map +1 -0
- package/lib/commonjs/utils/gesture/apply-gesture-activation-criteria.js +81 -0
- package/lib/commonjs/utils/gesture/apply-gesture-activation-criteria.js.map +1 -0
- package/lib/commonjs/utils/gesture/map-gesture-to-progress.js +17 -0
- package/lib/commonjs/utils/gesture/map-gesture-to-progress.js.map +1 -0
- package/lib/commonjs/utils/gesture/normalize-gesture-translation.js +21 -0
- package/lib/commonjs/utils/gesture/normalize-gesture-translation.js.map +1 -0
- package/lib/commonjs/utils/index.js +17 -0
- package/lib/commonjs/utils/index.js.map +1 -0
- package/lib/module/__tests__ /geometry.test.js +178 -0
- package/lib/module/__tests__ /geometry.test.js.map +1 -0
- package/lib/module/components/bounds-activator.js +28 -0
- package/lib/module/components/bounds-activator.js.map +1 -0
- package/lib/module/components/controllers/screen-lifecycle.js +60 -0
- package/lib/module/components/controllers/screen-lifecycle.js.map +1 -0
- package/lib/module/components/create-transition-aware-component.js +91 -0
- package/lib/module/components/create-transition-aware-component.js.map +1 -0
- package/lib/module/components/root-transition-aware.js +51 -0
- package/lib/module/components/root-transition-aware.js.map +1 -0
- package/lib/module/configs/index.js +5 -0
- package/lib/module/configs/index.js.map +1 -0
- package/lib/module/configs/presets.js +197 -0
- package/lib/module/configs/presets.js.map +1 -0
- package/lib/module/configs/specs.js +10 -0
- package/lib/module/configs/specs.js.map +1 -0
- package/lib/module/hooks/animation/use-associated-style.js +32 -0
- package/lib/module/hooks/animation/use-associated-style.js.map +1 -0
- package/lib/module/hooks/animation/use-screen-animation.js +115 -0
- package/lib/module/hooks/animation/use-screen-animation.js.map +1 -0
- package/lib/module/hooks/bounds/use-bound-measurer.js +47 -0
- package/lib/module/hooks/bounds/use-bound-measurer.js.map +1 -0
- package/lib/module/hooks/gestures/use-build-gestures.js +234 -0
- package/lib/module/hooks/gestures/use-build-gestures.js.map +1 -0
- package/lib/module/hooks/gestures/use-scroll-progress.js +52 -0
- package/lib/module/hooks/gestures/use-scroll-progress.js.map +1 -0
- package/lib/module/hooks/use-stable-callback.js +13 -0
- package/lib/module/hooks/use-stable-callback.js.map +1 -0
- package/lib/module/index.js +21 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/integrations/native-stack/navigators/createNativeStackNavigator.js +63 -0
- package/lib/module/integrations/native-stack/navigators/createNativeStackNavigator.js.map +1 -0
- package/lib/module/integrations/native-stack/utils/debounce.js +12 -0
- package/lib/module/integrations/native-stack/utils/debounce.js.map +1 -0
- package/lib/module/integrations/native-stack/utils/getModalRoutesKeys.js +12 -0
- package/lib/module/integrations/native-stack/utils/getModalRoutesKeys.js.map +1 -0
- package/lib/module/integrations/native-stack/utils/useAnimatedHeaderHeight.js +12 -0
- package/lib/module/integrations/native-stack/utils/useAnimatedHeaderHeight.js.map +1 -0
- package/lib/module/integrations/native-stack/utils/useDismissedRouteError.js +17 -0
- package/lib/module/integrations/native-stack/utils/useDismissedRouteError.js.map +1 -0
- package/lib/module/integrations/native-stack/utils/useInvalidPreventRemoveError.js +20 -0
- package/lib/module/integrations/native-stack/utils/useInvalidPreventRemoveError.js.map +1 -0
- package/lib/module/integrations/native-stack/views/FontProcessor.js +6 -0
- package/lib/module/integrations/native-stack/views/FontProcessor.js.map +1 -0
- package/lib/module/integrations/native-stack/views/FontProcessor.native.js +12 -0
- package/lib/module/integrations/native-stack/views/FontProcessor.native.js.map +1 -0
- package/lib/module/integrations/native-stack/views/FooterComponent.js +13 -0
- package/lib/module/integrations/native-stack/views/FooterComponent.js.map +1 -0
- package/lib/module/integrations/native-stack/views/NativeStackView.js +133 -0
- package/lib/module/integrations/native-stack/views/NativeStackView.js.map +1 -0
- package/lib/module/integrations/native-stack/views/NativeStackView.native.js +492 -0
- package/lib/module/integrations/native-stack/views/NativeStackView.native.js.map +1 -0
- package/lib/module/integrations/native-stack/views/useHeaderConfigProps.js +199 -0
- package/lib/module/integrations/native-stack/views/useHeaderConfigProps.js.map +1 -0
- package/lib/module/providers/gestures.js +58 -0
- package/lib/module/providers/gestures.js.map +1 -0
- package/lib/module/providers/keys.js +29 -0
- package/lib/module/providers/keys.js.map +1 -0
- package/lib/module/stores/animations.js +33 -0
- package/lib/module/stores/animations.js.map +1 -0
- package/lib/module/stores/bounds.js +60 -0
- package/lib/module/stores/bounds.js.map +1 -0
- package/lib/module/stores/gestures.js +34 -0
- package/lib/module/stores/gestures.js.map +1 -0
- package/lib/module/stores/navigator-dismiss-state.js +19 -0
- package/lib/module/stores/navigator-dismiss-state.js.map +1 -0
- package/lib/module/stores/utils/reset-stores-for-screen.js +16 -0
- package/lib/module/stores/utils/reset-stores-for-screen.js.map +1 -0
- package/lib/module/types/animation.js +4 -0
- package/lib/module/types/animation.js.map +1 -0
- package/lib/module/types/bounds.js +4 -0
- package/lib/module/types/bounds.js.map +1 -0
- package/lib/module/types/core.js +4 -0
- package/lib/module/types/core.js.map +1 -0
- package/lib/module/types/gesture.js +2 -0
- package/lib/module/types/gesture.js.map +1 -0
- package/lib/module/types/navigator.js +4 -0
- package/lib/module/types/navigator.js.map +1 -0
- package/lib/module/types/utils.js +2 -0
- package/lib/module/types/utils.js.map +1 -0
- package/lib/module/utils/animation/animate.js +13 -0
- package/lib/module/utils/animation/animate.js.map +1 -0
- package/lib/module/utils/animation/run-transition.js +43 -0
- package/lib/module/utils/animation/run-transition.js.map +1 -0
- package/lib/module/utils/bounds/_types/builder.js +4 -0
- package/lib/module/utils/bounds/_types/builder.js.map +1 -0
- package/lib/module/utils/bounds/_types/geometry.js +2 -0
- package/lib/module/utils/bounds/_types/geometry.js.map +1 -0
- package/lib/module/utils/bounds/_types/get-bounds.js +4 -0
- package/lib/module/utils/bounds/_types/get-bounds.js.map +1 -0
- package/lib/module/utils/bounds/build-bound-styles.js +141 -0
- package/lib/module/utils/bounds/build-bound-styles.js.map +1 -0
- package/lib/module/utils/bounds/constants.js +26 -0
- package/lib/module/utils/bounds/constants.js.map +1 -0
- package/lib/module/utils/bounds/flatten-styles.js +23 -0
- package/lib/module/utils/bounds/flatten-styles.js.map +1 -0
- package/lib/module/utils/bounds/geometry.js +89 -0
- package/lib/module/utils/bounds/geometry.js.map +1 -0
- package/lib/module/utils/bounds/get-bounds.js +46 -0
- package/lib/module/utils/bounds/get-bounds.js.map +1 -0
- package/lib/module/utils/bounds/index.js +33 -0
- package/lib/module/utils/bounds/index.js.map +1 -0
- package/lib/module/utils/bounds/style-composers.js +191 -0
- package/lib/module/utils/bounds/style-composers.js.map +1 -0
- package/lib/module/utils/gesture/apply-gesture-activation-criteria.js +76 -0
- package/lib/module/utils/gesture/apply-gesture-activation-criteria.js.map +1 -0
- package/lib/module/utils/gesture/map-gesture-to-progress.js +12 -0
- package/lib/module/utils/gesture/map-gesture-to-progress.js.map +1 -0
- package/lib/module/utils/gesture/normalize-gesture-translation.js +16 -0
- package/lib/module/utils/gesture/normalize-gesture-translation.js.map +1 -0
- package/lib/module/utils/index.js +4 -0
- package/lib/module/utils/index.js.map +1 -0
- package/lib/typescript/components/bounds-activator.d.ts +8 -0
- package/lib/typescript/components/bounds-activator.d.ts.map +1 -0
- package/lib/typescript/components/controllers/screen-lifecycle.d.ts +6 -0
- package/lib/typescript/components/controllers/screen-lifecycle.d.ts.map +1 -0
- package/lib/typescript/components/create-transition-aware-component.d.ts +9 -0
- package/lib/typescript/components/create-transition-aware-component.d.ts.map +1 -0
- package/lib/typescript/components/root-transition-aware.d.ts +6 -0
- package/lib/typescript/components/root-transition-aware.d.ts.map +1 -0
- package/lib/typescript/configs/index.d.ts +3 -0
- package/lib/typescript/configs/index.d.ts.map +1 -0
- package/lib/typescript/configs/presets.d.ts +9 -0
- package/lib/typescript/configs/presets.d.ts.map +1 -0
- package/lib/typescript/configs/specs.d.ts +3 -0
- package/lib/typescript/configs/specs.d.ts.map +1 -0
- package/lib/typescript/hooks/animation/use-associated-style.d.ts +11 -0
- package/lib/typescript/hooks/animation/use-associated-style.d.ts.map +1 -0
- package/lib/typescript/hooks/animation/use-screen-animation.d.ts +7 -0
- package/lib/typescript/hooks/animation/use-screen-animation.d.ts.map +1 -0
- package/lib/typescript/hooks/bounds/use-bound-measurer.d.ts +18 -0
- package/lib/typescript/hooks/bounds/use-bound-measurer.d.ts.map +1 -0
- package/lib/typescript/hooks/gestures/use-build-gestures.d.ts +11 -0
- package/lib/typescript/hooks/gestures/use-build-gestures.d.ts.map +1 -0
- package/lib/typescript/hooks/gestures/use-scroll-progress.d.ts +14 -0
- package/lib/typescript/hooks/gestures/use-scroll-progress.d.ts.map +1 -0
- package/lib/typescript/hooks/use-stable-callback.d.ts +2 -0
- package/lib/typescript/hooks/use-stable-callback.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +1275 -0
- package/lib/typescript/index.d.ts.map +1 -0
- package/lib/typescript/integrations/native-stack/navigators/createNativeStackNavigator.d.ts +16 -0
- package/lib/typescript/integrations/native-stack/navigators/createNativeStackNavigator.d.ts.map +1 -0
- package/lib/typescript/integrations/native-stack/utils/debounce.d.ts +2 -0
- package/lib/typescript/integrations/native-stack/utils/debounce.d.ts.map +1 -0
- package/lib/typescript/integrations/native-stack/utils/getModalRoutesKeys.d.ts +4 -0
- package/lib/typescript/integrations/native-stack/utils/getModalRoutesKeys.d.ts.map +1 -0
- package/lib/typescript/integrations/native-stack/utils/useAnimatedHeaderHeight.d.ts +5 -0
- package/lib/typescript/integrations/native-stack/utils/useAnimatedHeaderHeight.d.ts.map +1 -0
- package/lib/typescript/integrations/native-stack/utils/useDismissedRouteError.d.ts +6 -0
- package/lib/typescript/integrations/native-stack/utils/useDismissedRouteError.d.ts.map +1 -0
- package/lib/typescript/integrations/native-stack/utils/useInvalidPreventRemoveError.d.ts +3 -0
- package/lib/typescript/integrations/native-stack/utils/useInvalidPreventRemoveError.d.ts.map +1 -0
- package/lib/typescript/integrations/native-stack/views/FontProcessor.d.ts +2 -0
- package/lib/typescript/integrations/native-stack/views/FontProcessor.d.ts.map +1 -0
- package/lib/typescript/integrations/native-stack/views/FontProcessor.native.d.ts +2 -0
- package/lib/typescript/integrations/native-stack/views/FontProcessor.native.d.ts.map +1 -0
- package/lib/typescript/integrations/native-stack/views/FooterComponent.d.ts +7 -0
- package/lib/typescript/integrations/native-stack/views/FooterComponent.d.ts.map +1 -0
- package/lib/typescript/integrations/native-stack/views/NativeStackView.d.ts +11 -0
- package/lib/typescript/integrations/native-stack/views/NativeStackView.d.ts.map +1 -0
- package/lib/typescript/integrations/native-stack/views/NativeStackView.native.d.ts +11 -0
- package/lib/typescript/integrations/native-stack/views/NativeStackView.native.d.ts.map +1 -0
- package/lib/typescript/integrations/native-stack/views/useHeaderConfigProps.d.ts +44 -0
- package/lib/typescript/integrations/native-stack/views/useHeaderConfigProps.d.ts.map +1 -0
- package/lib/typescript/providers/gestures.d.ts +22 -0
- package/lib/typescript/providers/gestures.d.ts.map +1 -0
- package/lib/typescript/providers/keys.d.ts +16 -0
- package/lib/typescript/providers/keys.d.ts.map +1 -0
- package/lib/typescript/stores/animations.d.ts +17 -0
- package/lib/typescript/stores/animations.d.ts.map +1 -0
- package/lib/typescript/stores/bounds.d.ts +21 -0
- package/lib/typescript/stores/bounds.d.ts.map +1 -0
- package/lib/typescript/stores/gestures.d.ts +21 -0
- package/lib/typescript/stores/gestures.d.ts.map +1 -0
- package/lib/typescript/stores/navigator-dismiss-state.d.ts +7 -0
- package/lib/typescript/stores/navigator-dismiss-state.d.ts.map +1 -0
- package/lib/typescript/stores/utils/reset-stores-for-screen.d.ts +6 -0
- package/lib/typescript/stores/utils/reset-stores-for-screen.d.ts.map +1 -0
- package/lib/typescript/types/animation.d.ts +65 -0
- package/lib/typescript/types/animation.d.ts.map +1 -0
- package/lib/typescript/types/bounds.d.ts +73 -0
- package/lib/typescript/types/bounds.d.ts.map +1 -0
- package/lib/typescript/types/core.d.ts +47 -0
- package/lib/typescript/types/core.d.ts.map +1 -0
- package/lib/typescript/types/gesture.d.ts +28 -0
- package/lib/typescript/types/gesture.d.ts.map +1 -0
- package/lib/typescript/types/navigator.d.ts +683 -0
- package/lib/typescript/types/navigator.d.ts.map +1 -0
- package/lib/typescript/types/utils.d.ts +5 -0
- package/lib/typescript/types/utils.d.ts.map +1 -0
- package/lib/typescript/utils/animation/animate.d.ts +4 -0
- package/lib/typescript/utils/animation/animate.d.ts.map +1 -0
- package/lib/typescript/utils/animation/run-transition.d.ts +11 -0
- package/lib/typescript/utils/animation/run-transition.d.ts.map +1 -0
- package/lib/typescript/utils/bounds/_types/builder.d.ts +36 -0
- package/lib/typescript/utils/bounds/_types/builder.d.ts.map +1 -0
- package/lib/typescript/utils/bounds/_types/geometry.d.ts +16 -0
- package/lib/typescript/utils/bounds/_types/geometry.d.ts.map +1 -0
- package/lib/typescript/utils/bounds/_types/get-bounds.d.ts +10 -0
- package/lib/typescript/utils/bounds/_types/get-bounds.d.ts.map +1 -0
- package/lib/typescript/utils/bounds/build-bound-styles.d.ts +4 -0
- package/lib/typescript/utils/bounds/build-bound-styles.d.ts.map +1 -0
- package/lib/typescript/utils/bounds/constants.d.ts +7 -0
- package/lib/typescript/utils/bounds/constants.d.ts.map +1 -0
- package/lib/typescript/utils/bounds/flatten-styles.d.ts +2 -0
- package/lib/typescript/utils/bounds/flatten-styles.d.ts.map +1 -0
- package/lib/typescript/utils/bounds/geometry.d.ts +24 -0
- package/lib/typescript/utils/bounds/geometry.d.ts.map +1 -0
- package/lib/typescript/utils/bounds/get-bounds.d.ts +4 -0
- package/lib/typescript/utils/bounds/get-bounds.d.ts.map +1 -0
- package/lib/typescript/utils/bounds/index.d.ts +15 -0
- package/lib/typescript/utils/bounds/index.d.ts.map +1 -0
- package/lib/typescript/utils/bounds/style-composers.d.ts +40 -0
- package/lib/typescript/utils/bounds/style-composers.d.ts.map +1 -0
- package/lib/typescript/utils/gesture/apply-gesture-activation-criteria.d.ts +17 -0
- package/lib/typescript/utils/gesture/apply-gesture-activation-criteria.d.ts.map +1 -0
- package/lib/typescript/utils/gesture/map-gesture-to-progress.d.ts +5 -0
- package/lib/typescript/utils/gesture/map-gesture-to-progress.d.ts.map +1 -0
- package/lib/typescript/utils/gesture/normalize-gesture-translation.d.ts +6 -0
- package/lib/typescript/utils/gesture/normalize-gesture-translation.d.ts.map +1 -0
- package/lib/typescript/utils/index.d.ts +2 -0
- package/lib/typescript/utils/index.d.ts.map +1 -0
- package/package.json +33 -16
- package/dist/index.d.mts +0 -1473
- package/dist/index.d.ts +0 -1473
- package/dist/index.js +0 -1169
- package/dist/index.js.map +0 -1
- package/dist/index.mjs +0 -1159
- package/dist/index.mjs.map +0 -1
package/dist/index.mjs.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/components/create-transition-aware-component.tsx","../src/components/transition-gesture-handler-provider.tsx","../src/contexts/gesture.ts","../src/hooks/use-build-gestures.tsx","../src/configs/specs.ts","../src/animation-engine.ts","../src/store/utils/create-vanilla-store.ts","../src/store/utils/handle-screen-dismiss.tsx","../src/store/utils/remove-screen.tsx","../src/store/utils/should-skip-prevent-default.tsx","../src/store/utils/update-screen.tsx","../src/store/index.ts","../src/utils/animate.ts","../src/utils/create-config.ts","../src/utils/default-screen-options.ts","../src/utils/noop-interpolator.ts","../src/utils/gesture/apply-gesture-activation-criteria.ts","../src/utils/gesture/map-gesture-to-progress.ts","../src/hooks/use-key.tsx","../src/hooks/use-screen-animation.tsx","../src/hooks/use-skip-first-frame.tsx","../src/components/create-transition-aware-scrollable.tsx","../src/hooks/use-scroll-progress.tsx","../src/configs/presets.ts"],"sourcesContent":["import { FlatList, Pressable, ScrollView, View } from \"react-native\";\nimport { createTransitionAwareComponent } from \"./components/create-transition-aware-component\";\nimport { createTransitionAwareScrollable } from \"./components/create-transition-aware-scrollable\";\nimport { presets, specs } from \"./configs\";\nimport { useScreenAnimation } from \"./hooks/use-screen-animation\";\nimport { createConfig, createScreenConfig } from \"./utils/create-config\";\nimport { defaultScreenOptions } from \"./utils/default-screen-options\";\n\nexport default {\n\tView: createTransitionAwareComponent(View),\n\tPressable: createTransitionAwareComponent(Pressable),\n\tScrollView: createTransitionAwareScrollable(ScrollView),\n\tFlatList: createTransitionAwareScrollable(FlatList),\n\tcreateConfig,\n\tcreateScreenConfig,\n\tdefaultScreenOptions,\n\tpresets,\n\tspecs,\n\t/**\n\t * Create a transition aware component\n\t */\n\tcreateTransitionAwareComponent,\n\t/**\n\t * Create a transition aware scrollable component\n\t */\n\tcreateTransitionAwareScrollable,\n};\n\nexport { useScreenAnimation };\n","import type React from \"react\";\nimport { type ComponentType, forwardRef, memo } from \"react\";\nimport { StyleSheet } from \"react-native\";\nimport Animated, {\n type AnimatedProps,\n useAnimatedStyle,\n} from \"react-native-reanimated\";\nimport { TransitionGestureHandlerProvider } from \"@/components/transition-gesture-handler-provider\";\nimport { _useScreenAnimation } from \"../hooks/use-screen-animation\";\nimport { useSkipFirstFrame } from \"../hooks/use-skip-first-frame\";\nimport type { Any } from \"../types\";\n\nexport function createTransitionAwareComponent<P extends object>(\n\tWrapped: ComponentType<P>,\n) {\n\tconst AnimatedComponent = Animated.createAnimatedComponent(Wrapped);\n\n\ttype Props = AnimatedProps<P>;\n\n\tconst Inner = forwardRef<React.ComponentRef<typeof AnimatedComponent>, Props>(\n\t\t(props, ref) => {\n\t\t\tconst { children, style, ...rest } = props as Any;\n\n\t\t\tconst { screenStyleInterpolator, ...screenInterpolationProps } =\n\t\t\t\t_useScreenAnimation();\n\n\t\t\tconst screenContainerStyle = useAnimatedStyle(() => {\n\t\t\t\t\"worklet\";\n\t\t\t\treturn (\n\t\t\t\t\tscreenStyleInterpolator(screenInterpolationProps).contentStyle || {}\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tconst overlayStyle = useAnimatedStyle(() => {\n\t\t\t\t\"worklet\";\n\t\t\t\treturn (\n\t\t\t\t\tscreenStyleInterpolator(screenInterpolationProps).overlayStyle || {}\n\t\t\t\t);\n\t\t\t});\n\n\t\t\tconst { style: flickerFixStyle } = useSkipFirstFrame();\n\n\t\t\treturn (\n\t\t\t\t<TransitionGestureHandlerProvider>\n\t\t\t\t\t<Animated.View style={[{ flex: 1 }, flickerFixStyle]}>\n\t\t\t\t\t\t<Animated.View\n\t\t\t\t\t\t\tstyle={[StyleSheet.absoluteFillObject, overlayStyle]}\n\t\t\t\t\t\t\tpointerEvents=\"none\"\n\t\t\t\t\t\t/>\n\t\t\t\t\t\t<AnimatedComponent\n\t\t\t\t\t\t\t{...rest}\n\t\t\t\t\t\t\tref={ref}\n\t\t\t\t\t\t\tstyle={[\n\t\t\t\t\t\t\t\t{ flex: 1, position: \"relative\" },\n\t\t\t\t\t\t\t\tscreenContainerStyle,\n\t\t\t\t\t\t\t\tstyle,\n\t\t\t\t\t\t\t]}\n\t\t\t\t\t\t>\n\t\t\t\t\t\t\t{children}\n\t\t\t\t\t\t</AnimatedComponent>\n\t\t\t\t\t</Animated.View>\n\t\t\t\t</TransitionGestureHandlerProvider>\n\t\t\t);\n\t\t},\n\t);\n\n\tInner.displayName = `Transition(${Wrapped.displayName || Wrapped.name || \"Component\"})`;\n\n\treturn memo(Inner) as React.MemoExoticComponent<\n\t\tReact.ForwardRefExoticComponent<\n\t\t\tAnimatedProps<P> & React.RefAttributes<React.ComponentRef<typeof Wrapped>>\n\t\t>\n\t>;\n}\n","import { useMemo } from \"react\";\nimport { GestureDetector } from \"react-native-gesture-handler\";\nimport { useSharedValue } from \"react-native-reanimated\";\nimport {\n\tGestureContext,\n\ttype GestureContextType,\n\ttype ScrollProgress,\n} from \"../contexts/gesture\";\nimport { useBuildGestures } from \"../hooks/use-build-gestures\";\n\ntype TransitionGestureHandlerProviderProps = {\n\tchildren: React.ReactNode;\n};\n\nexport const TransitionGestureHandlerProvider = ({\n\tchildren,\n}: TransitionGestureHandlerProviderProps) => {\n\tconst scrollProgress = useSharedValue<ScrollProgress>({\n\t\tx: 0,\n\t\ty: 0,\n\t\tcontentHeight: 0,\n\t\tcontentWidth: 0,\n\t\tlayoutHeight: 0,\n\t\tlayoutWidth: 0,\n\t});\n\tconst { panGesture, nativeGesture } = useBuildGestures({\n\t\tscrollProgress,\n\t});\n\tconst value = useMemo(() => {\n\t\treturn {\n\t\t\tpanGesture,\n\t\t\tscrollProgress,\n\t\t\tnativeGesture,\n\t\t};\n\t}, [panGesture, scrollProgress, nativeGesture]) satisfies GestureContextType;\n\n\treturn (\n\t\t<GestureContext.Provider value={value}>\n\t\t\t<GestureDetector gesture={panGesture}>{children}</GestureDetector>\n\t\t</GestureContext.Provider>\n\t);\n};\n","import { createContext, useContext } from \"react\";\nimport { Gesture, type GestureType } from \"react-native-gesture-handler\";\nimport { type SharedValue, useSharedValue } from \"react-native-reanimated\";\n\nexport type ScrollProgress = {\n\tx: number;\n\ty: number;\n\tcontentHeight: number;\n\tcontentWidth: number;\n\tlayoutHeight: number;\n\tlayoutWidth: number;\n};\n\nexport interface GestureContextType {\n\tpanGesture: GestureType;\n\tnativeGesture: GestureType;\n\tscrollProgress: SharedValue<ScrollProgress>;\n\tisPlaceholder?: boolean;\n}\n\nexport const GestureContext = createContext<GestureContextType | undefined>(\n\tundefined,\n);\n\nexport const useGestureContext = () => {\n\tconst context = useContext(GestureContext);\n\tconst scrollProgressFallback = useSharedValue<ScrollProgress>({\n\t\tx: 0,\n\t\ty: 0,\n\t\tcontentHeight: 0,\n\t\tcontentWidth: 0,\n\t\tlayoutHeight: 0,\n\t\tlayoutWidth: 0,\n\t});\n\n\tif (!context) {\n\t\treturn {\n\t\t\tpanGesture: Gesture.Pan(),\n\t\t\tnativeGesture: Gesture.Native(),\n\t\t\tscrollProgress: scrollProgressFallback,\n\t\t\tisPlaceholder: true,\n\t\t};\n\t}\n\n\treturn context;\n};\n","import { useNavigation } from \"@react-navigation/native\";\nimport { useCallback, useMemo } from \"react\";\nimport { useWindowDimensions } from \"react-native\";\nimport {\n\tGesture,\n\ttype GestureStateChangeEvent,\n\ttype GestureTouchEvent,\n\ttype GestureUpdateEvent,\n\ttype PanGestureHandlerEventPayload,\n} from \"react-native-gesture-handler\";\nimport type { GestureStateManagerType } from \"react-native-gesture-handler/lib/typescript/handlers/gestures/gestureStateManager\";\nimport {\n\tinterpolate,\n\trunOnJS,\n\ttype SharedValue,\n\tuseSharedValue,\n} from \"react-native-reanimated\";\nimport { DefaultSpec } from \"@/configs/specs\";\nimport type { ScrollProgress } from \"@/contexts/gesture\";\nimport { animationValues } from \"../animation-engine\";\nimport { ScreenStore } from \"../store\";\nimport { animate } from \"../utils\";\nimport { applyGestureActivationCriteria } from \"../utils/gesture/apply-gesture-activation-criteria\";\nimport { mapGestureToProgress } from \"../utils/gesture/map-gesture-to-progress\";\nimport { useKey } from \"./use-key\";\n\nconst GESTURE_VELOCITY_IMPACT = 0.3;\nconst DEFAULT_GESTURE_RESPONSE_DISTANCE = 50;\nconst DEFAULT_GESTURE_DIRECTION = \"horizontal\";\nconst DEFAULT_GESTURE_ENABLED = false;\n\ninterface BuildGesturesHookProps {\n\tscrollProgress: SharedValue<ScrollProgress>;\n}\n\nexport const useBuildGestures = ({\n\tscrollProgress,\n}: BuildGesturesHookProps) => {\n\tconst key = useKey();\n\tconst dimensions = useWindowDimensions();\n\tconst navigation = useNavigation();\n\tconst currentScreen = ScreenStore.use(\n\t\tuseCallback((state) => state.screens[key], [key]),\n\t);\n\tconst handleDismiss = useCallback(\n\t\t(screenBeingDismissed: string) => {\n\t\t\tScreenStore.handleScreenDismiss(screenBeingDismissed, navigation);\n\t\t},\n\t\t[navigation],\n\t);\n\tconst initialTouch = useSharedValue({\n\t\tx: 0,\n\t\ty: 0,\n\t});\n\n\tconst translateX = animationValues.gestureX[key];\n\tconst translateY = animationValues.gestureY[key];\n\tconst normalizedGestureX = animationValues.normalizedGestureX[key];\n\tconst normalizedGestureY = animationValues.normalizedGestureY[key];\n\tconst isDragging = animationValues.gestureDragging[key];\n\tconst isDismissing = animationValues.isDismissing[key];\n\tconst progress = animationValues.screenProgress[key] || 0;\n\n\tconst {\n\t\tgestureDirection = DEFAULT_GESTURE_DIRECTION,\n\t\tgestureEnabled = DEFAULT_GESTURE_ENABLED,\n\t\ttransitionSpec = {\n\t\t\topen: DefaultSpec,\n\t\t\tclose: DefaultSpec,\n\t\t},\n\t\tgestureVelocityImpact = GESTURE_VELOCITY_IMPACT,\n\t\tgestureResponseDistance = DEFAULT_GESTURE_RESPONSE_DISTANCE,\n\t} = currentScreen ?? {};\n\n\tconst directions = Array.isArray(gestureDirection)\n\t\t? gestureDirection\n\t\t: [gestureDirection];\n\n\tconst nativeGesture = Gesture.Native();\n\n\tconst onTouchesDown = useCallback(\n\t\t(e: GestureTouchEvent) => {\n\t\t\t\"worklet\";\n\t\t\tconst firstTouch = e.changedTouches[0];\n\t\t\tinitialTouch.value = { x: firstTouch.x, y: firstTouch.y };\n\t\t},\n\t\t[initialTouch],\n\t);\n\n\tconst onTouchesMove = useCallback(\n\t\t(e: GestureTouchEvent, manager: GestureStateManagerType) => {\n\t\t\t\"worklet\";\n\n\t\t\tconst touch = e.changedTouches[0];\n\t\t\tconst deltaX = touch.x - initialTouch.value.x;\n\t\t\tconst deltaY = touch.y - initialTouch.value.y;\n\n\t\t\tconst isVerticalSwipe = Math.abs(deltaY) > Math.abs(deltaX);\n\t\t\tconst isHorizontalSwipe = Math.abs(deltaX) > Math.abs(deltaY);\n\n\t\t\tconst isSwipingDown = isVerticalSwipe && deltaY > 0;\n\t\t\tconst isSwipingUp = isVerticalSwipe && deltaY < 0;\n\t\t\tconst isSwipingRight = isHorizontalSwipe && deltaX > 0;\n\t\t\tconst isSwipingLeft = isHorizontalSwipe && deltaX < 0;\n\n\t\t\tconst minMovement = 5;\n\t\t\tconst hasEnoughMovement =\n\t\t\t\tMath.abs(deltaX) > minMovement || Math.abs(deltaY) > minMovement;\n\n\t\t\tif (!hasEnoughMovement) return;\n\n\t\t\tif (isDragging.value) {\n\t\t\t\tmanager.activate();\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tlet shouldActivate = false;\n\n\t\t\tfor (const direction of directions) {\n\t\t\t\tswitch (direction) {\n\t\t\t\t\tcase \"vertical\":\n\t\t\t\t\t\tif (isSwipingDown) {\n\t\t\t\t\t\t\tshouldActivate = scrollProgress.value.y <= 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"vertical-inverted\":\n\t\t\t\t\t\tif (isSwipingUp) {\n\t\t\t\t\t\t\tconst maxScrollableY =\n\t\t\t\t\t\t\t\tscrollProgress.value.contentHeight -\n\t\t\t\t\t\t\t\tscrollProgress.value.layoutHeight;\n\n\t\t\t\t\t\t\tshouldActivate = scrollProgress.value.y >= maxScrollableY;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"horizontal\":\n\t\t\t\t\t\tif (isSwipingRight) {\n\t\t\t\t\t\t\tshouldActivate = scrollProgress.value.x <= 0;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"horizontal-inverted\":\n\t\t\t\t\t\tif (isSwipingLeft) {\n\t\t\t\t\t\t\tconst maxProgress =\n\t\t\t\t\t\t\t\tscrollProgress.value.contentWidth -\n\t\t\t\t\t\t\t\tscrollProgress.value.layoutWidth;\n\n\t\t\t\t\t\t\tshouldActivate = scrollProgress.value.x >= maxProgress;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\n\t\t\t\t\tcase \"bidirectional\":\n\t\t\t\t\t\tif (isSwipingDown) {\n\t\t\t\t\t\t\tshouldActivate = scrollProgress.value.y <= 0;\n\t\t\t\t\t\t} else if (isSwipingUp) {\n\t\t\t\t\t\t\tshouldActivate = scrollProgress.value.y <= 0;\n\t\t\t\t\t\t} else if (isSwipingRight || isSwipingLeft) {\n\t\t\t\t\t\t\tshouldActivate = true;\n\t\t\t\t\t\t}\n\t\t\t\t\t\tbreak;\n\t\t\t\t}\n\n\t\t\t\tif (shouldActivate) break;\n\t\t\t}\n\n\t\t\tif ((shouldActivate || isDragging.value) && !isDismissing.value) {\n\t\t\t\tmanager.activate();\n\t\t\t} else {\n\t\t\t\tmanager.fail();\n\t\t\t}\n\t\t},\n\t\t[initialTouch, directions, scrollProgress, isDragging, isDismissing],\n\t);\n\n\tconst onStart = useCallback(() => {\n\t\t\"worklet\";\n\t\tisDragging.value = 1;\n\t\tisDismissing.value = 0;\n\t}, [isDragging, isDismissing]);\n\n\tconst onUpdate = useCallback(\n\t\t(event: GestureUpdateEvent<PanGestureHandlerEventPayload>) => {\n\t\t\t\"worklet\";\n\n\t\t\tlet gestureProgress = 0;\n\n\t\t\ttranslateX.value = event.translationX;\n\t\t\ttranslateY.value = event.translationY;\n\t\t\tnormalizedGestureX.value = interpolate(\n\t\t\t\tevent.translationX,\n\t\t\t\t[-dimensions.width, dimensions.width],\n\t\t\t\t[-1, 1],\n\t\t\t\t\"clamp\",\n\t\t\t);\n\t\t\tnormalizedGestureY.value = interpolate(\n\t\t\t\tevent.translationY,\n\t\t\t\t[-dimensions.height, dimensions.height],\n\t\t\t\t[-1, 1],\n\t\t\t\t\"clamp\",\n\t\t\t);\n\n\t\t\tif (directions.includes(\"bidirectional\")) {\n\t\t\t\tconst distance = Math.sqrt(\n\t\t\t\t\tevent.translationX ** 2 + event.translationY ** 2,\n\t\t\t\t);\n\t\t\t\tgestureProgress = mapGestureToProgress(distance, dimensions.width);\n\t\t\t} else {\n\t\t\t\tlet maxProgress = 0;\n\n\t\t\t\tconst allowedDown = directions.includes(\"vertical\");\n\t\t\t\tconst allowedUp = directions.includes(\"vertical-inverted\");\n\t\t\t\tconst allowedRight = directions.includes(\"horizontal\");\n\t\t\t\tconst allowedLeft = directions.includes(\"horizontal-inverted\");\n\n\t\t\t\tif (allowedRight && event.translationX > 0) {\n\t\t\t\t\tconst currentProgress = mapGestureToProgress(\n\t\t\t\t\t\tevent.translationX,\n\t\t\t\t\t\tdimensions.width,\n\t\t\t\t\t);\n\t\t\t\t\tmaxProgress = Math.max(maxProgress, currentProgress);\n\t\t\t\t}\n\n\t\t\t\tif (allowedLeft && event.translationX < 0) {\n\t\t\t\t\tconst currentProgress = mapGestureToProgress(\n\t\t\t\t\t\t-event.translationX,\n\t\t\t\t\t\tdimensions.width,\n\t\t\t\t\t);\n\t\t\t\t\tmaxProgress = Math.max(maxProgress, currentProgress);\n\t\t\t\t}\n\n\t\t\t\tif (allowedDown && event.translationY > 0) {\n\t\t\t\t\tconst currentProgress = mapGestureToProgress(\n\t\t\t\t\t\tevent.translationY,\n\t\t\t\t\t\tdimensions.height,\n\t\t\t\t\t);\n\t\t\t\t\tmaxProgress = Math.max(maxProgress, currentProgress);\n\t\t\t\t}\n\n\t\t\t\tif (allowedUp && event.translationY < 0) {\n\t\t\t\t\tconst currentProgress = mapGestureToProgress(\n\t\t\t\t\t\t-event.translationY,\n\t\t\t\t\t\tdimensions.height,\n\t\t\t\t\t);\n\t\t\t\t\tmaxProgress = Math.max(maxProgress, currentProgress);\n\t\t\t\t}\n\n\t\t\t\tgestureProgress = maxProgress;\n\t\t\t}\n\n\t\t\tprogress.value = 1 - gestureProgress;\n\t\t},\n\t\t[\n\t\t\tdimensions,\n\t\t\tdirections,\n\t\t\ttranslateX,\n\t\t\ttranslateY,\n\t\t\tnormalizedGestureX,\n\t\t\tnormalizedGestureY,\n\t\t\tprogress,\n\t\t],\n\t);\n\n\tconst onEnd = useCallback(\n\t\t(event: GestureStateChangeEvent<PanGestureHandlerEventPayload>) => {\n\t\t\t\"worklet\";\n\n\t\t\tconst { translationX, translationY, velocityX, velocityY } = event;\n\n\t\t\tconst dismissThreshold = 0.5;\n\n\t\t\tif (directions.includes(\"bidirectional\")) {\n\t\t\t\tconst finalX = Math.abs(\n\t\t\t\t\ttranslationX + velocityX * gestureVelocityImpact,\n\t\t\t\t);\n\t\t\t\tconst finalY = Math.abs(\n\t\t\t\t\ttranslationY + velocityY * gestureVelocityImpact,\n\t\t\t\t);\n\t\t\t\tconst finalDistance = Math.sqrt(finalX ** 2 + finalY ** 2);\n\t\t\t\tisDismissing.value = Number(\n\t\t\t\t\tfinalDistance > dimensions.width * dismissThreshold,\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tconst allowedDown = directions.includes(\"vertical\");\n\t\t\t\tconst allowedUp = directions.includes(\"vertical-inverted\");\n\t\t\t\tconst allowedRight = directions.includes(\"horizontal\");\n\t\t\t\tconst allowedLeft = directions.includes(\"horizontal-inverted\");\n\n\t\t\t\tif (\n\t\t\t\t\tallowedRight &&\n\t\t\t\t\ttranslationX + velocityX * gestureVelocityImpact >\n\t\t\t\t\t\tdimensions.width * dismissThreshold\n\t\t\t\t) {\n\t\t\t\t\tisDismissing.value = 1;\n\t\t\t\t} else if (\n\t\t\t\t\tallowedLeft &&\n\t\t\t\t\t-translationX - velocityX * gestureVelocityImpact >\n\t\t\t\t\t\tdimensions.width * dismissThreshold\n\t\t\t\t) {\n\t\t\t\t\tisDismissing.value = 1;\n\t\t\t\t} else if (\n\t\t\t\t\tallowedDown &&\n\t\t\t\t\ttranslationY + velocityY * gestureVelocityImpact >\n\t\t\t\t\t\tdimensions.height * dismissThreshold\n\t\t\t\t) {\n\t\t\t\t\tisDismissing.value = 1;\n\t\t\t\t} else if (\n\t\t\t\t\tallowedUp &&\n\t\t\t\t\t-translationY - velocityY * gestureVelocityImpact >\n\t\t\t\t\t\tdimensions.height * dismissThreshold\n\t\t\t\t) {\n\t\t\t\t\tisDismissing.value = 1;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tconst finalProgress = isDismissing.value ? 0 : 1;\n\t\t\tconst spec = isDismissing.value\n\t\t\t\t? transitionSpec?.close\n\t\t\t\t: transitionSpec?.open;\n\n\t\t\tconst onFinish = isDismissing.value\n\t\t\t\t? (isFinished?: boolean) => {\n\t\t\t\t\t\t\"worklet\";\n\t\t\t\t\t\tif (isFinished) runOnJS(handleDismiss)(currentScreen?.id);\n\t\t\t\t\t}\n\t\t\t\t: undefined;\n\n\t\t\tprogress.value = animate(finalProgress, spec, onFinish);\n\t\t\ttranslateX.value = animate(0, spec);\n\t\t\ttranslateY.value = animate(0, spec);\n\t\t\tnormalizedGestureX.value = animate(0, spec);\n\t\t\tnormalizedGestureY.value = animate(0, spec);\n\t\t\tisDragging.value = 0;\n\t\t},\n\t\t[\n\t\t\tdimensions,\n\t\t\tdirections,\n\t\t\ttranslateX,\n\t\t\ttranslateY,\n\t\t\tnormalizedGestureX,\n\t\t\tnormalizedGestureY,\n\t\t\tprogress,\n\t\t\thandleDismiss,\n\t\t\tcurrentScreen?.id,\n\t\t\ttransitionSpec?.close,\n\t\t\ttransitionSpec?.open,\n\t\t\tgestureVelocityImpact,\n\t\t\tisDragging,\n\t\t\tisDismissing,\n\t\t],\n\t);\n\n\tconst panGesture = useMemo(\n\t\t() =>\n\t\t\tGesture.Pan()\n\t\t\t\t.enabled(gestureEnabled)\n\t\t\t\t.manualActivation(true)\n\t\t\t\t.onTouchesDown(onTouchesDown)\n\t\t\t\t.onTouchesMove(onTouchesMove)\n\t\t\t\t.onStart(onStart)\n\t\t\t\t.onUpdate(onUpdate)\n\t\t\t\t.onEnd(onEnd)\n\t\t\t\t.blocksExternalGesture(nativeGesture),\n\t\t[\n\t\t\tgestureEnabled,\n\t\t\tnativeGesture,\n\t\t\tonTouchesDown,\n\t\t\tonTouchesMove,\n\t\t\tonStart,\n\t\t\tonUpdate,\n\t\t\tonEnd,\n\t\t],\n\t);\n\n\tapplyGestureActivationCriteria({\n\t\tgestureDirection,\n\t\tgestureResponseDistance,\n\t\tpanGesture,\n\t});\n\n\treturn { panGesture, nativeGesture };\n};\n","import type { WithSpringConfig } from \"react-native-reanimated\";\n\nexport const DefaultSpec: WithSpringConfig = {\n\tstiffness: 1000,\n\tdamping: 500,\n\tmass: 3,\n\tovershootClamping: true,\n\trestSpeedThreshold: 0.01,\n};\n","import {\n\tcancelAnimation,\n\tmakeMutable,\n\trunOnJS,\n\ttype SharedValue,\n} from \"react-native-reanimated\";\n\nimport { ScreenStore } from \"./store/index\";\nimport type { ScreenState } from \"./types\";\nimport { animate } from \"./utils/animate\";\n\ntype ScreenKey = string;\n\nexport const animationValues: Record<\n\tstring,\n\tRecord<ScreenKey, SharedValue<number>>\n> = {\n\tscreenProgress: {},\n\tgestureX: {},\n\tgestureY: {},\n\tnormalizedGestureX: {},\n\tnormalizedGestureY: {},\n\tgestureDragging: {},\n\tisDismissing: {},\n};\n\nconst triggerAnimation = (screen: ScreenState) => {\n\t\"worklet\";\n\tconst { id, closing, status, transitionSpec, onAnimationFinish } = screen;\n\n\tconst progressValue = animationValues.screenProgress[id];\n\n\tif (!progressValue && __DEV__) {\n\t\tconsole.warn(`Animation values not found for screen: ${id}`);\n\t\treturn;\n\t}\n\n\tconst animationConfig = closing\n\t\t? transitionSpec?.close\n\t\t: transitionSpec?.open;\n\n\tconst targetValue = status || 0;\n\n\tprogressValue.value = animate(targetValue, animationConfig, (finished) => {\n\t\t\"worklet\";\n\t\tif (finished && onAnimationFinish) {\n\t\t\trunOnJS(onAnimationFinish)(true);\n\t\t}\n\t});\n};\n\nScreenStore.use.subscribeWithSelector(\n\t(state) => state.screens,\n\t(currScreens, prevScreens) => {\n\t\tconst currKeys = Object.keys(currScreens);\n\t\tconst prevKeys = Object.keys(prevScreens);\n\n\t\tconst incomingKeys = currKeys.filter((k) => !prevKeys.includes(k));\n\t\tconst removedKeys = prevKeys.filter((k) => !currKeys.includes(k));\n\t\tconst changedKeys = currKeys.filter(\n\t\t\t(k) => currScreens[k] !== prevScreens[k],\n\t\t);\n\n\t\tconst animatableValues = Object.values(animationValues);\n\n\t\tfor (const incomingKey of incomingKeys) {\n\t\t\tfor (const value of animatableValues) {\n\t\t\t\tvalue[incomingKey] = makeMutable(0);\n\t\t\t}\n\t\t}\n\n\t\t/**\n\t\t * Remove mutable values for removed screens\n\t\t * @see {@link https://docs.swmansion.com/react-native-reanimated/docs/advanced/makeMutable/}\n\t\t */\n\t\tfor (const removedKey of removedKeys) {\n\t\t\tfor (const value of animatableValues) {\n\t\t\t\tcancelAnimation(value[removedKey]);\n\t\t\t\tdelete value[removedKey];\n\t\t\t}\n\t\t}\n\n\t\tfor (const changedKey of changedKeys) {\n\t\t\tconst currentScreen = currScreens[changedKey];\n\t\t\tif (currentScreen) {\n\t\t\t\ttriggerAnimation(currentScreen);\n\t\t\t}\n\t\t}\n\t},\n);\n","import { type Draft, produce } from \"immer\";\nimport { useSyncExternalStore } from \"react\";\n\ntype Listener = () => void;\ntype StateUpdater<T> = (draft: Draft<T>) => void;\n\ntype StoreListener<_, TSelectorOutput> = (\n\tselectedState: TSelectorOutput,\n\tpreviousSelectedState: TSelectorOutput,\n) => void;\n\nexport interface StoreApi<T> {\n\tsetState: (updater: StateUpdater<T>) => void;\n\tgetState: () => T;\n\tsubscribe: (listener: Listener) => () => void;\n\tsubscribeWithSelector: <TSelectorOutput>(\n\t\tselector: (state: T) => TSelectorOutput,\n\t\tlistener: StoreListener<T, TSelectorOutput>,\n\t) => () => void;\n}\n\nexport function createVanillaStore<TState>(initialState: TState) {\n\tlet state: TState = initialState;\n\tconst listeners = new Set<Listener>();\n\n\tconst getState = (): TState => state;\n\n\tconst setState = (updater: StateUpdater<TState>) => {\n\t\tconst nextState = produce(state, updater);\n\n\t\tif (nextState !== state) {\n\t\t\tstate = nextState;\n\t\t\tlisteners.forEach((listener) => listener());\n\t\t}\n\t};\n\n\tconst subscribe = (listener: Listener): (() => void) => {\n\t\tlisteners.add(listener);\n\t\treturn () => listeners.delete(listener);\n\t};\n\n\tconst subscribeWithSelector = <TSelectorOutput>(\n\t\tselector: (state: TState) => TSelectorOutput,\n\t\tlistener: StoreListener<TState, TSelectorOutput>,\n\t) => {\n\t\tlet previousSelectedState = selector(state);\n\n\t\tconst internalListener = () => {\n\t\t\tconst currentSelectedState = selector(getState());\n\n\t\t\tif (!Object.is(previousSelectedState, currentSelectedState)) {\n\t\t\t\tlistener(currentSelectedState, previousSelectedState);\n\t\t\t\tpreviousSelectedState = currentSelectedState;\n\t\t\t}\n\t\t};\n\n\t\tconst unsubscribe = subscribe(internalListener);\n\n\t\tlistener(previousSelectedState, previousSelectedState);\n\n\t\treturn unsubscribe;\n\t};\n\n\tfunction useStore<TSelectorOutput>(\n\t\tselector: (state: TState) => TSelectorOutput,\n\t): TSelectorOutput {\n\t\treturn useSyncExternalStore(subscribe, () => selector(getState()));\n\t}\n\n\tObject.assign(useStore, {\n\t\tsetState,\n\t\tgetState,\n\t\tsubscribe,\n\t\tsubscribeWithSelector,\n\t});\n\n\treturn useStore as typeof useStore & StoreApi<TState>;\n}\n","import { StackActions } from \"@react-navigation/native\";\nimport type { UseNavigation } from \"../../types\";\nimport { ScreenStore } from \"..\";\n\nexport const handleScreenDismiss = (\n\tscreenBeingDismissed: string,\n\tnavigation: UseNavigation,\n) => {\n\tconst { screens } = ScreenStore.use.getState();\n\tconst dismissedScreen = screens[screenBeingDismissed];\n\n\tif (!dismissedScreen) {\n\t\tnavigation.goBack();\n\t\treturn;\n\t}\n\n\tconst childScreens = Object.values(screens).filter(\n\t\t(screen) => screen.parentNavigatorKey === dismissedScreen.navigatorKey,\n\t);\n\n\tif (childScreens.length > 0) {\n\t\tScreenStore.updateScreen(dismissedScreen.id, {\n\t\t\tclosing: true,\n\t\t});\n\n\t\tnavigation.dispatch(StackActions.pop(childScreens.length));\n\t} else {\n\t\tnavigation.goBack();\n\t}\n};\n","import { ScreenStore } from \"..\";\n\nexport const removeScreen = (key: string | undefined) => {\n\tif (!key) return;\n\tScreenStore.use.setState(({ screens, screenKeys }) => {\n\t\tdelete screens[key];\n\n\t\tconst indexToRemove = screenKeys.indexOf(key);\n\t\tif (indexToRemove > -1) {\n\t\t\tscreenKeys.splice(indexToRemove, 1);\n\t\t}\n\t});\n};\n","import type { Any } from \"../../types\";\nimport { ScreenStore } from \"..\";\n\nexport const shouldSkipPreventDefault = (\n\tkey: string | undefined,\n\tnavigatorState: Any,\n) => {\n\tif (!key) return false;\n\n\tconst { screens } = ScreenStore.use.getState();\n\tconst currentScreen = screens[key];\n\n\t// We don't want to block the navigation event when the parent navigator holds the screen transition ( prevents delay in the back event )\n\tconst isLastScreenInStack =\n\t\tnavigatorState.routes.length === 1 && navigatorState.routes[0].key === key;\n\n\t// Child screens should be instantly dismissed when the parent navigator is closing. This prevents transparent modals from lingering. (Only happens when using deeply nested screen transitions)\n\tconst isParentNavigatorExiting = Boolean(\n\t\tcurrentScreen?.parentNavigatorKey &&\n\t\t\tObject.values(screens).some(\n\t\t\t\t(screen) =>\n\t\t\t\t\tscreen.navigatorKey === currentScreen.parentNavigatorKey &&\n\t\t\t\t\tscreen.closing,\n\t\t\t),\n\t);\n\n\treturn isLastScreenInStack || isParentNavigatorExiting;\n};\n","import type { Any } from \"../../types\";\nimport { ScreenStore } from \"..\";\n\nexport const updateScreen = (key: string | undefined, value: Any) => {\n\tif (!key) return;\n\n\tScreenStore.use.setState(({ screenKeys, screens }) => {\n\t\tconst currentScreen = screens[key];\n\n\t\tif (currentScreen) {\n\t\t\tscreens[key] = {\n\t\t\t\t...currentScreen,\n\t\t\t\t...value,\n\t\t\t};\n\t\t} else {\n\t\t\tconst { name = \"\", status = 0, closing = false, ...rest } = value;\n\n\t\t\tconst newIndex = screenKeys.length;\n\n\t\t\tscreens[key] = {\n\t\t\t\tid: key,\n\t\t\t\tindex: newIndex,\n\t\t\t\tname,\n\t\t\t\tstatus,\n\t\t\t\tclosing,\n\t\t\t\t...rest,\n\t\t\t};\n\n\t\t\tscreenKeys.push(key);\n\t\t}\n\t});\n};\n","import type { ScreenStateStore } from \"../types\";\nimport {\n\tcreateVanillaStore,\n\thandleScreenDismiss,\n\tremoveScreen,\n\tshouldSkipPreventDefault,\n\tupdateScreen,\n} from \"./utils\";\n\nconst useScreenStore = createVanillaStore<ScreenStateStore>({\n\tscreens: {},\n\tscreenKeys: [],\n});\n\nexport const ScreenStore = {\n\tuse: useScreenStore,\n\tupdateScreen,\n\tremoveScreen,\n\thandleScreenDismiss,\n\tshouldSkipPreventDefault,\n};\n","import {\n\ttype WithSpringConfig,\n\ttype WithTimingConfig,\n\twithSpring,\n\twithTiming,\n} from \"react-native-reanimated\";\nimport type {\n\tAnimatableValue,\n\tAnimationCallback,\n} from \"react-native-reanimated/lib/typescript/commonTypes\";\n\nexport const animate = <T extends AnimatableValue>(\n\ttoValue: T,\n\tconfig?: WithSpringConfig | WithTimingConfig,\n\tcallback?: AnimationCallback,\n) => {\n\t\"worklet\";\n\tconst isSpring =\n\t\ttypeof config === \"object\" &&\n\t\t!(\"duration\" in config) &&\n\t\t!(\"easing\" in config);\n\n\tif (!isSpring) {\n\t\treturn withTiming(toValue, config, callback);\n\t}\n\n\treturn withSpring(toValue, config, callback);\n};\n","import type { ParamListBase, RouteProp } from \"@react-navigation/native\";\nimport { ScreenStore } from \"../store\";\nimport type {\n\tAny,\n\tBeforeRemoveEvent,\n\tFocusEvent,\n\tTransitionConfig,\n\tTransitionListeners,\n} from \"../types\";\n\nexport interface TransitionEventHandlersProps extends TransitionConfig {\n\tnavigation: Any;\n\troute: RouteProp<ParamListBase, string>;\n}\n\nexport const createConfig = ({\n\tnavigation: reactNavigation,\n\troute,\n\t...config\n}: TransitionEventHandlersProps): TransitionListeners => {\n\treturn {\n\t\tfocus: (e: FocusEvent) => {\n\t\t\tconst parentNavigatorKey = reactNavigation.getParent()?.getState?.()?.key;\n\t\t\tconst navigatorKey = reactNavigation.getState().key;\n\n\t\t\tScreenStore.updateScreen(e.target, {\n\t\t\t\tid: e.target,\n\t\t\t\tname: route.name,\n\t\t\t\tstatus: 1,\n\t\t\t\tclosing: false,\n\t\t\t\tnavigatorKey,\n\t\t\t\tparentNavigatorKey,\n\t\t\t\t...config,\n\t\t\t});\n\t\t},\n\t\tbeforeRemove: (e: BeforeRemoveEvent) => {\n\t\t\tconst shouldSkipPreventDefault = ScreenStore.shouldSkipPreventDefault(\n\t\t\t\te.target,\n\t\t\t\treactNavigation.getState(),\n\t\t\t);\n\n\t\t\tif (shouldSkipPreventDefault) {\n\t\t\t\tScreenStore.removeScreen(e.target);\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\te.preventDefault();\n\t\t\tconst handleFinish = (finished?: boolean) => {\n\t\t\t\tif (!finished) return;\n\t\t\t\tif (reactNavigation.canGoBack()) {\n\t\t\t\t\treactNavigation.dispatch(e.data?.action);\n\t\t\t\t\tScreenStore.removeScreen(e.target);\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tScreenStore.updateScreen(e.target, {\n\t\t\t\tstatus: 0,\n\t\t\t\tclosing: true,\n\t\t\t\tonAnimationFinish: handleFinish,\n\t\t\t});\n\t\t},\n\t} as TransitionListeners;\n};\n\n/**\n * Create a config for a screen\n *\n * @param config - The config for the screen\n * @returns The config for the screen\n */\nexport const createScreenConfig = (\n\tconfig?: Omit<TransitionEventHandlersProps, \"navigation\" | \"route\">,\n) => {\n\treturn {\n\t\tlisteners: (l: Any) => createConfig({ ...l, ...(config || {}) }),\n\t};\n};\n","/**\n * Helper function to return the default screen options in order for the screen animations to work properly.\n */\nexport const defaultScreenOptions = () =>\n\t({\n\t\tpresentation: \"containedTransparentModal\",\n\t\theaderShown: false,\n\t\tanimation: \"none\",\n\t}) as const;\n","import type { TransitionInterpolatedStyle } from \"../types\";\n\nexport const noopinterpolator = (): TransitionInterpolatedStyle => {\n\t\"worklet\";\n\treturn {\n\t\tcontentStyle: {},\n\t\toverlayStyle: {},\n\t};\n};\n","import type { PanGesture } from \"react-native-gesture-handler\";\nimport type { TransitionConfig } from \"../../types\";\n\ninterface GestureActivationOptions {\n\tgestureDirection:\n\t\t| TransitionConfig[\"gestureDirection\"]\n\t\t| Array<TransitionConfig[\"gestureDirection\"]>;\n\tgestureResponseDistance: number;\n\tpanGesture: PanGesture;\n}\n\n/**\n * rngh requires this type instead a number[]. We're returning a num[] which is still correct, this is just to remove the type error.\n */\ntype OffsetErrorTypeBugFix = [start: number, end: number];\n\nexport const applyGestureActivationCriteria = ({\n\tgestureDirection,\n\tgestureResponseDistance,\n\tpanGesture,\n}: GestureActivationOptions) => {\n\tconst directions = Array.isArray(gestureDirection)\n\t\t? gestureDirection\n\t\t: [gestureDirection];\n\n\tif (directions.includes(\"bidirectional\")) {\n\t\treturn {\n\t\t\tactiveOffsetX: [\n\t\t\t\t-gestureResponseDistance,\n\t\t\t\tgestureResponseDistance,\n\t\t\t] as OffsetErrorTypeBugFix,\n\t\t\tactiveOffsetY: [\n\t\t\t\t-gestureResponseDistance,\n\t\t\t\tgestureResponseDistance,\n\t\t\t] as OffsetErrorTypeBugFix,\n\t\t};\n\t}\n\n\tconst allowedDown = directions.includes(\"vertical\");\n\tconst allowedUp = directions.includes(\"vertical-inverted\");\n\tconst allowedRight = directions.includes(\"horizontal\");\n\tconst allowedLeft = directions.includes(\"horizontal-inverted\");\n\n\tconst toleranceX = 15;\n\tconst toleranceY = 20;\n\tconst dist = gestureResponseDistance;\n\n\tconst result: {\n\t\tactiveOffsetX?: number | [number, number];\n\t\tfailOffsetX?: number | OffsetErrorTypeBugFix;\n\t\tactiveOffsetY?: number | [number, number];\n\t\tfailOffsetY?: number | OffsetErrorTypeBugFix;\n\t} = {};\n\n\tconst hasHorizontal = allowedLeft || allowedRight;\n\tif (hasHorizontal) {\n\t\tif (allowedLeft && allowedRight) {\n\t\t\tresult.activeOffsetX = [-dist, dist];\n\t\t} else if (allowedLeft) {\n\t\t\tresult.activeOffsetX = -dist;\n\t\t} else if (allowedRight) {\n\t\t\tresult.activeOffsetX = dist;\n\t\t}\n\n\t\tif (allowedRight && !allowedLeft) {\n\t\t\tresult.failOffsetX = -dist;\n\t\t} else if (allowedLeft && !allowedRight) {\n\t\t\tresult.failOffsetX = dist;\n\t\t}\n\t} else {\n\t\tresult.failOffsetX = [-toleranceX, toleranceX] as OffsetErrorTypeBugFix;\n\t}\n\n\tconst hasVertical = allowedUp || allowedDown;\n\tif (hasVertical) {\n\t\tif (allowedUp && allowedDown) {\n\t\t\tresult.activeOffsetY = [-dist, dist];\n\t\t} else if (allowedUp) {\n\t\t\tresult.activeOffsetY = -dist;\n\t\t} else if (allowedDown) {\n\t\t\tresult.activeOffsetY = dist;\n\t\t}\n\n\t\tif (allowedDown && !allowedUp) {\n\t\t\tresult.failOffsetY = -dist;\n\t\t} else if (allowedUp && !allowedDown) {\n\t\t\tresult.failOffsetY = dist;\n\t\t}\n\t} else {\n\t\tresult.failOffsetY = [-toleranceY, toleranceY] as OffsetErrorTypeBugFix;\n\t}\n\n\tif (result?.activeOffsetX) {\n\t\tpanGesture.activeOffsetX(result.activeOffsetX);\n\t}\n\tif (result?.activeOffsetY) {\n\t\tpanGesture.activeOffsetY(result.activeOffsetY);\n\t}\n\tif (result?.failOffsetX) {\n\t\tpanGesture.failOffsetX(result.failOffsetX);\n\t}\n\tif (result?.failOffsetY) {\n\t\tpanGesture.failOffsetY(result.failOffsetY);\n\t}\n\n\tpanGesture.enableTrackpadTwoFingerGesture(true);\n\n\treturn panGesture;\n};\n","/**\n * Utility function to map raw gesture translation to a progress value.\n */\nexport const mapGestureToProgress = (\n\ttranslation: number,\n\tdimension: number,\n) => {\n\t\"worklet\";\n\tconst rawProgress = translation / dimension;\n\treturn Math.max(0, Math.min(1, rawProgress));\n};\n","import { useRoute } from \"@react-navigation/native\";\n\nexport const useKey = () => useRoute().key;\n","import { useCallback, useMemo } from \"react\";\nimport { useWindowDimensions } from \"react-native\";\nimport { useSharedValue } from \"react-native-reanimated\";\nimport { useSafeAreaInsets } from \"react-native-safe-area-context\";\nimport { animationValues } from \"../animation-engine\";\nimport { ScreenStore } from \"../store\";\nimport type {\n\tScreenInterpolationProps,\n\tScreenStyleInterpolator,\n} from \"../types\";\nimport { noopinterpolator } from \"../utils/noop-interpolator\";\nimport { useKey } from \"./use-key\";\n\ninterface InternalScreenInterpolationProps extends ScreenInterpolationProps {\n\tscreenStyleInterpolator: ScreenStyleInterpolator;\n}\n\nconst useAnimationBuilder = () => {\n\tconst key = useKey();\n\tconst dimensions = useWindowDimensions();\n\tconst insets = useSafeAreaInsets();\n\n\tconst progressFallback = useSharedValue(0);\n\tconst gestureDraggingFallback = useSharedValue(0);\n\tconst gestureXFallback = useSharedValue(0);\n\tconst gestureYFallback = useSharedValue(0);\n\tconst normalizedGestureXFallback = useSharedValue(0);\n\tconst normalizedGestureYFallback = useSharedValue(0);\n\tconst isDismissingFallback = useSharedValue(0);\n\n\tconst currentScreen = ScreenStore.use(\n\t\tuseCallback((state) => state.screens[key], [key]),\n\t);\n\n\tconst actualNextScreen = ScreenStore.use(\n\t\tuseCallback(\n\t\t\t(state) => {\n\t\t\t\tconst current = state.screens[key];\n\t\t\t\tif (!current) return undefined;\n\n\t\t\t\tconst nextKey = state.screenKeys[current.index + 1];\n\t\t\t\tconst nextScreen = nextKey ? state.screens[nextKey] : undefined;\n\n\t\t\t\tconst shouldUseNext =\n\t\t\t\t\tnextScreen?.navigatorKey === current?.navigatorKey;\n\t\t\t\treturn shouldUseNext ? nextScreen : undefined;\n\t\t\t},\n\t\t\t[key],\n\t\t),\n\t);\n\n\tconst getAnimationValuesForScreen = useCallback(\n\t\t(screenId: string) => ({\n\t\t\tprogress: animationValues.screenProgress[screenId] || progressFallback,\n\t\t\tgesture: {\n\t\t\t\tisDragging:\n\t\t\t\t\tanimationValues.gestureDragging[screenId] || gestureDraggingFallback,\n\t\t\t\tx: animationValues.gestureX[screenId] || gestureXFallback,\n\t\t\t\ty: animationValues.gestureY[screenId] || gestureYFallback,\n\t\t\t\tnormalizedX:\n\t\t\t\t\tanimationValues.normalizedGestureX[screenId] ||\n\t\t\t\t\tnormalizedGestureXFallback,\n\t\t\t\tnormalizedY:\n\t\t\t\t\tanimationValues.normalizedGestureY[screenId] ||\n\t\t\t\t\tnormalizedGestureYFallback,\n\t\t\t\tisDismissing:\n\t\t\t\t\tanimationValues.isDismissing[screenId] || isDismissingFallback,\n\t\t\t},\n\t\t}),\n\t\t[\n\t\t\tprogressFallback,\n\t\t\tgestureDraggingFallback,\n\t\t\tgestureXFallback,\n\t\t\tgestureYFallback,\n\t\t\tnormalizedGestureXFallback,\n\t\t\tnormalizedGestureYFallback,\n\t\t\tisDismissingFallback,\n\t\t],\n\t);\n\n\treturn useMemo(() => {\n\t\treturn {\n\t\t\tcurrent: getAnimationValuesForScreen(key),\n\t\t\tnext: actualNextScreen\n\t\t\t\t? getAnimationValuesForScreen(actualNextScreen.id)\n\t\t\t\t: undefined,\n\t\t\tlayouts: { screen: dimensions },\n\t\t\tinsets,\n\t\t\tclosing: currentScreen?.closing || false,\n\t\t\tscreenStyleInterpolator:\n\t\t\t\tactualNextScreen?.screenStyleInterpolator ||\n\t\t\t\tcurrentScreen?.screenStyleInterpolator ||\n\t\t\t\tnoopinterpolator,\n\t\t};\n\t}, [\n\t\tkey,\n\t\tcurrentScreen,\n\t\tactualNextScreen,\n\t\tdimensions,\n\t\tinsets,\n\t\tgetAnimationValuesForScreen,\n\t]);\n};\n\nconst _useScreenAnimation = (): InternalScreenInterpolationProps => {\n\treturn useAnimationBuilder();\n};\n\nconst useScreenAnimation = (): ScreenInterpolationProps => {\n\tconst { screenStyleInterpolator: _, ...animationProps } =\n\t\tuseAnimationBuilder();\n\n\treturn animationProps;\n};\n\nexport { _useScreenAnimation, useScreenAnimation };\n","import { useEffect } from \"react\";\nimport { useAnimatedStyle, useSharedValue } from \"react-native-reanimated\";\n\n/**\n * This hook helps mitigate a race condition between the JS and UI thread where styles are not applied immediately.\n * By skipping one frame before rendering, it ensures styles are properly applied, removing a flicker effect.\n *\n * Related issue: https://github.com/software-mansion/react-native-reanimated/issues/4446\n */\nexport const useSkipFirstFrame = () => {\n\tconst opacity = useSharedValue(0);\n\tconst style = useAnimatedStyle(() => {\n\t\t\"worklet\";\n\t\treturn {\n\t\t\topacity: opacity.value,\n\t\t};\n\t});\n\n\tuseEffect(() => {\n\t\trequestAnimationFrame(() => {\n\t\t\topacity.value = 1;\n\t\t});\n\t}, [opacity]);\n\n\treturn { style };\n};\n","import { type ComponentType, forwardRef, memo } from \"react\";\nimport { View } from \"react-native\";\nimport { GestureDetector } from \"react-native-gesture-handler\";\nimport Animated, { type AnimatedProps } from \"react-native-reanimated\";\nimport { useGestureContext } from \"@/contexts/gesture\";\nimport { useScrollProgress } from \"@/hooks/use-scroll-progress\";\nimport type { Any } from \"@/types\";\nimport { createTransitionAwareComponent } from \"../utils\";\n\nexport function createTransitionAwareScrollable<P extends object>(\n\tScrollableComponent: ComponentType<P>,\n) {\n\tconst WithTransitionAwareness = createTransitionAwareComponent(View);\n\tconst AnimatedScrollableComponent =\n\t\tAnimated.createAnimatedComponent(ScrollableComponent);\n\n\ttype Props = AnimatedProps<P>;\n\n\tconst WithScrollAwareness = forwardRef<\n\t\tReact.ComponentRef<typeof ScrollableComponent>,\n\t\tProps\n\t>((props: Any, ref) => {\n\t\tconst { nativeGesture } = useGestureContext();\n\n\t\tconst { scrollHandler, onContentSizeChange } = useScrollProgress({\n\t\t\tonScroll: props.onScroll,\n\t\t\tonContentSizeChange: props.onContentSizeChange,\n\t\t});\n\n\t\treturn (\n\t\t\t<GestureDetector gesture={nativeGesture}>\n\t\t\t\t<AnimatedScrollableComponent\n\t\t\t\t\t{...(props as Any)}\n\t\t\t\t\tref={ref}\n\t\t\t\t\tonScroll={scrollHandler}\n\t\t\t\t\tonContentSizeChange={onContentSizeChange}\n\t\t\t\t\tscrollEventThrottle={props.scrollEventThrottle || 16}\n\t\t\t\t/>\n\t\t\t</GestureDetector>\n\t\t);\n\t});\n\n\tconst Wrapped = forwardRef<\n\t\tReact.ComponentRef<typeof ScrollableComponent>,\n\t\tProps\n\t>((props: Any, ref) => {\n\t\tconst { isPlaceholder } = useGestureContext();\n\n\t\tif (isPlaceholder) {\n\t\t\treturn (\n\t\t\t\t<WithTransitionAwareness>\n\t\t\t\t\t<WithScrollAwareness {...props} ref={ref} />\n\t\t\t\t</WithTransitionAwareness>\n\t\t\t);\n\t\t}\n\n\t\treturn <WithScrollAwareness {...props} ref={ref} />;\n\t});\n\n\tWithScrollAwareness.displayName = `Transition(${ScrollableComponent.displayName || ScrollableComponent.name || \"Component\"})`;\n\n\treturn memo(Wrapped) as React.MemoExoticComponent<\n\t\tReact.ForwardRefExoticComponent<\n\t\t\tAnimatedProps<P> &\n\t\t\t\tReact.RefAttributes<React.ComponentRef<typeof ScrollableComponent>>\n\t\t>\n\t>;\n}\n","import { useCallback } from \"react\";\nimport type { NativeScrollEvent, NativeSyntheticEvent } from \"react-native\";\nimport { useAnimatedScrollHandler } from \"react-native-reanimated\";\nimport { useGestureContext } from \"@/contexts/gesture\";\n\ninterface ScrollProgressHookProps {\n\tonScroll?: (event: NativeSyntheticEvent<NativeScrollEvent>) => void;\n\tonContentSizeChange?: (width: number, height: number) => void;\n}\n\nexport const useScrollProgress = (props: ScrollProgressHookProps) => {\n\tconst { scrollProgress } = useGestureContext();\n\tconst scrollHandler = useAnimatedScrollHandler({\n\t\tonScroll: (event) => {\n\t\t\tscrollProgress.modify((value) => {\n\t\t\t\t\"worklet\";\n\t\t\t\treturn {\n\t\t\t\t\t...value,\n\t\t\t\t\tx: event.contentOffset.x,\n\t\t\t\t\ty: event.contentOffset.y,\n\t\t\t\t\tlayoutHeight: event.layoutMeasurement.height,\n\t\t\t\t\tlayoutWidth: event.layoutMeasurement.width,\n\t\t\t\t\tcontentHeight: event.contentSize.height,\n\t\t\t\t\tcontentWidth: event.contentSize.width,\n\t\t\t\t};\n\t\t\t});\n\t\t},\n\t});\n\n\tconst onContentSizeChange = useCallback(\n\t\t(width: number, height: number) => {\n\t\t\tprops.onContentSizeChange?.(width, height);\n\n\t\t\tscrollProgress.modify((value) => {\n\t\t\t\t\"worklet\";\n\t\t\t\treturn {\n\t\t\t\t\t...value,\n\t\t\t\t\tcontentWidth: width,\n\t\t\t\t\tcontentHeight: height,\n\t\t\t\t};\n\t\t\t});\n\t\t},\n\t\t[scrollProgress, props.onContentSizeChange],\n\t);\n\n\treturn {\n\t\tscrollHandler,\n\t\tonContentSizeChange,\n\t};\n};\n","import {\n\tExtrapolation,\n\tinterpolate,\n\tinterpolateColor,\n} from \"react-native-reanimated\";\nimport type { TransitionConfig } from \"../types\";\nimport { DefaultSpec } from \"./specs\";\n\nexport const SlideFromTop = (\n\tconfig: Partial<TransitionConfig> = {},\n): TransitionConfig => {\n\treturn {\n\t\tgestureEnabled: true,\n\t\tgestureDirection: \"vertical-inverted\",\n\t\tscreenStyleInterpolator: ({\n\t\t\tcurrent,\n\t\t\tnext,\n\t\t\tlayouts: {\n\t\t\t\tscreen: { height },\n\t\t\t},\n\t\t}) => {\n\t\t\t\"worklet\";\n\n\t\t\tconst progress = current.progress.value + (next?.progress.value ?? 0);\n\n\t\t\tconst y = interpolate(progress, [0, 1, 2], [-height, 0, height]);\n\n\t\t\treturn {\n\t\t\t\tcontentStyle: {\n\t\t\t\t\ttransform: [{ translateY: y }],\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\t\ttransitionSpec: {\n\t\t\topen: DefaultSpec,\n\t\t\tclose: DefaultSpec,\n\t\t},\n\t\t...config,\n\t};\n};\n\nexport const ZoomIn = (\n\tconfig: Partial<TransitionConfig> = {},\n): TransitionConfig => {\n\treturn {\n\t\tgestureEnabled: false,\n\t\tscreenStyleInterpolator: ({ current, next }) => {\n\t\t\t\"worklet\";\n\n\t\t\tconst progress = current.progress.value + (next?.progress.value ?? 0);\n\n\t\t\tconst scale = interpolate(\n\t\t\t\tprogress,\n\t\t\t\t[0, 1, 2],\n\t\t\t\t[0.5, 1, 0.5],\n\t\t\t\tExtrapolation.CLAMP,\n\t\t\t);\n\n\t\t\tconst opacity = interpolate(\n\t\t\t\tprogress,\n\t\t\t\t[0, 1, 2],\n\t\t\t\t[0, 1, 0],\n\t\t\t\tExtrapolation.CLAMP,\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\tcontentStyle: {\n\t\t\t\t\ttransform: [{ scale }],\n\t\t\t\t\topacity,\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\t\ttransitionSpec: {\n\t\t\topen: DefaultSpec,\n\t\t\tclose: DefaultSpec,\n\t\t},\n\t\t...config,\n\t};\n};\n\nexport const SlideFromBottom = (\n\tconfig: Partial<TransitionConfig> = {},\n): TransitionConfig => {\n\treturn {\n\t\tgestureEnabled: true,\n\t\tgestureDirection: \"vertical\",\n\t\tscreenStyleInterpolator: ({\n\t\t\tcurrent,\n\t\t\tnext,\n\t\t\tlayouts: {\n\t\t\t\tscreen: { height },\n\t\t\t},\n\t\t}) => {\n\t\t\t\"worklet\";\n\n\t\t\tconst progress = current.progress.value + (next?.progress.value ?? 0);\n\n\t\t\tconst y = interpolate(progress, [0, 1, 2], [height, 0, -height]);\n\n\t\t\treturn {\n\t\t\t\tcontentStyle: {\n\t\t\t\t\ttransform: [{ translateY: y }],\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\t\ttransitionSpec: {\n\t\t\topen: DefaultSpec,\n\t\t\tclose: DefaultSpec,\n\t\t},\n\t\t...config,\n\t};\n};\n\nexport const DraggableCard = (\n\tconfig: Partial<TransitionConfig> = {},\n): TransitionConfig => {\n\treturn {\n\t\tgestureEnabled: true,\n\t\tgestureDirection: [\"horizontal\", \"vertical\"],\n\t\tscreenStyleInterpolator: ({ current, next, layouts: { screen } }) => {\n\t\t\t\"worklet\";\n\n\t\t\tconst progress = current.progress.value + (next?.progress.value ?? 0);\n\n\t\t\t/** Combined */\n\t\t\tconst scale = interpolate(progress, [0, 1, 2], [0, 1, 0.75]);\n\n\t\t\t/** Vertical */\n\t\t\tconst translateY = interpolate(\n\t\t\t\tcurrent.gesture.normalizedY.value,\n\t\t\t\t[-1, 1],\n\t\t\t\t[-screen.height * 0.5, screen.height * 0.5],\n\t\t\t\t\"clamp\",\n\t\t\t);\n\n\t\t\t/** Horizontal */\n\t\t\tconst translateX = interpolate(\n\t\t\t\tcurrent.gesture.normalizedX.value,\n\t\t\t\t[-1, 1],\n\t\t\t\t[-screen.width * 0.5, screen.width * 0.5],\n\t\t\t\t\"clamp\",\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\tcontentStyle: {\n\t\t\t\t\ttransform: [{ scale }, { translateY: translateY }, { translateX }],\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\t\ttransitionSpec: {\n\t\t\topen: DefaultSpec,\n\t\t\tclose: DefaultSpec,\n\t\t},\n\t\t...config,\n\t};\n};\n\nexport const ElasticCard = (\n\tconfig: Partial<TransitionConfig> & {\n\t\telasticFactor?: number;\n\t} = { elasticFactor: 0.5 },\n): TransitionConfig => {\n\treturn {\n\t\tgestureEnabled: true,\n\t\tgestureDirection: \"bidirectional\",\n\t\tscreenStyleInterpolator: ({ current, next, layouts: { screen } }) => {\n\t\t\t\"worklet\";\n\n\t\t\t/**\n\t\t\t * Applies to both screens ( previous and incoming)\n\t\t\t */\n\t\t\tconst progress = current.progress.value + (next?.progress.value ?? 0);\n\t\t\tconst scale = interpolate(progress, [0, 1, 2], [0, 1, 0.8]);\n\n\t\t\t/**\n\t\t\t * Applies to current screen\n\t\t\t */\n\t\t\tconst maxElasticityX = screen.width * (config.elasticFactor ?? 0.5);\n\t\t\tconst maxElasticityY = screen.height * (config.elasticFactor ?? 0.5);\n\t\t\tconst translateX = interpolate(\n\t\t\t\tcurrent.gesture.normalizedX.value,\n\t\t\t\t[-1, 0, 1],\n\t\t\t\t[-maxElasticityX, 0, maxElasticityX],\n\t\t\t\t\"clamp\",\n\t\t\t);\n\n\t\t\tconst translateY = interpolate(\n\t\t\t\tcurrent.gesture.normalizedY.value,\n\t\t\t\t[-1, 0, 1],\n\t\t\t\t[-maxElasticityY, 0, maxElasticityY],\n\t\t\t\t\"clamp\",\n\t\t\t);\n\n\t\t\t/**\n\t\t\t * Applies to unfocused screen ( previous screen )\n\t\t\t */\n\t\t\tconst overlayColor = interpolateColor(\n\t\t\t\tnext?.progress.value || 0,\n\t\t\t\t[0, 1],\n\t\t\t\t[\"rgba(0,0,0,0)\", \"rgba(0,0,0,0.5)\"],\n\t\t\t);\n\n\t\t\treturn {\n\t\t\t\tcontentStyle: {\n\t\t\t\t\ttransform: [{ scale }, { translateX }, { translateY }],\n\t\t\t\t},\n\t\t\t\toverlayStyle: {\n\t\t\t\t\tbackgroundColor: overlayColor,\n\t\t\t\t},\n\t\t\t};\n\t\t},\n\t\t...config,\n\t};\n};\n"],"mappings":"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","names":["View","useAnimatedStyle","useMemo","useSharedValue","Gesture","runOnJS","useSharedValue","shouldSkipPreventDefault","useSharedValue","Gesture","runOnJS","useSharedValue","useMemo","useCallback","useMemo","useWindowDimensions","useSharedValue","useWindowDimensions","useSharedValue","useCallback","useMemo","useSharedValue","jsx","useAnimatedStyle","forwardRef","memo","GestureDetector","Animated","useCallback","useCallback","jsx","Animated","forwardRef","GestureDetector","memo","interpolate","interpolate","View"]}
|