react-native-screen-transitions 3.11.2 → 3.11.3
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/lib/commonjs/native-stack/views/NativeStackView.native.js +1 -1
- package/lib/commonjs/native-stack/views/NativeStackView.native.js.map +1 -1
- package/lib/commonjs/shared/components/boundary/components/boundary-lifecycle.js +36 -0
- package/lib/commonjs/shared/components/boundary/components/boundary-lifecycle.js.map +1 -0
- package/lib/commonjs/shared/components/boundary/hooks/lifecycles/use-initial-destination-measurement.js +1 -13
- package/lib/commonjs/shared/components/boundary/hooks/lifecycles/use-initial-destination-measurement.js.map +1 -1
- package/lib/commonjs/shared/components/boundary/hooks/lifecycles/use-refresh-boundary.js +9 -2
- package/lib/commonjs/shared/components/boundary/hooks/lifecycles/use-refresh-boundary.js.map +1 -1
- package/lib/commonjs/shared/components/boundary/hooks/use-boundary-measurement.js +3 -2
- package/lib/commonjs/shared/components/boundary/hooks/use-boundary-measurement.js.map +1 -1
- package/lib/commonjs/shared/components/boundary/hooks/use-measurer.js +9 -2
- package/lib/commonjs/shared/components/boundary/hooks/use-measurer.js.map +1 -1
- package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/components/host.js +5 -12
- package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/components/host.js.map +1 -1
- package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/components/portal-boundary-host.js +25 -43
- package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/components/portal-boundary-host.js.map +1 -1
- package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/helpers/local-measurement.js +13 -0
- package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/helpers/local-measurement.js.map +1 -0
- package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/helpers/offset-style.js +8 -31
- package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/helpers/offset-style.js.map +1 -1
- package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/hooks/use-active-portal-boundary-host.js +14 -19
- package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/hooks/use-active-portal-boundary-host.js.map +1 -1
- package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/hooks/use-boundary-portal-attachment.js +8 -0
- package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/hooks/use-boundary-portal-attachment.js.map +1 -1
- package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/hooks/use-host-measurement.js +19 -47
- package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/hooks/use-host-measurement.js.map +1 -1
- package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/index.js.map +1 -1
- package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/stores/portal-boundary-host.store.js +1 -1
- package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/stores/portal-boundary-host.store.js.map +1 -1
- package/lib/commonjs/shared/components/boundary/providers/boundary-root.provider.js +19 -17
- package/lib/commonjs/shared/components/boundary/providers/boundary-root.provider.js.map +1 -1
- package/lib/commonjs/shared/components/boundary/utils/refresh-signals.js +19 -5
- package/lib/commonjs/shared/components/boundary/utils/refresh-signals.js.map +1 -1
- package/lib/commonjs/shared/components/screen-container/layers/backdrop.js +11 -7
- package/lib/commonjs/shared/components/screen-container/layers/backdrop.js.map +1 -1
- package/lib/commonjs/shared/components/screen-lifecycle/hooks/helpers/close-interception-rules.js +31 -0
- package/lib/commonjs/shared/components/screen-lifecycle/hooks/helpers/close-interception-rules.js.map +1 -0
- package/lib/commonjs/shared/components/screen-lifecycle/hooks/use-close-completion.js +26 -0
- package/lib/commonjs/shared/components/screen-lifecycle/hooks/use-close-completion.js.map +1 -0
- package/lib/commonjs/shared/components/screen-lifecycle/hooks/use-close-transition-intent.js +60 -86
- package/lib/commonjs/shared/components/screen-lifecycle/hooks/use-close-transition-intent.js.map +1 -1
- package/lib/commonjs/shared/components/screen-lifecycle/hooks/use-transition-start-controller.js +1 -5
- package/lib/commonjs/shared/components/screen-lifecycle/hooks/use-transition-start-controller.js.map +1 -1
- package/lib/commonjs/shared/components/screen-lifecycle/index.js +9 -6
- package/lib/commonjs/shared/components/screen-lifecycle/index.js.map +1 -1
- package/lib/commonjs/shared/hooks/navigation/use-navigation-helpers.js +28 -6
- package/lib/commonjs/shared/hooks/navigation/use-navigation-helpers.js.map +1 -1
- package/lib/commonjs/shared/providers/helpers/measured-bounds-writes.js +1 -2
- package/lib/commonjs/shared/providers/helpers/measured-bounds-writes.js.map +1 -1
- package/lib/commonjs/shared/providers/screen/gestures/hooks/use-screen-gesture-config.js +9 -2
- package/lib/commonjs/shared/providers/screen/gestures/hooks/use-screen-gesture-config.js.map +1 -1
- package/lib/commonjs/shared/providers/screen/gestures/pan/behavior/pan-lifecycle.js +4 -5
- package/lib/commonjs/shared/providers/screen/gestures/pan/behavior/pan-lifecycle.js.map +1 -1
- package/lib/commonjs/shared/providers/screen/gestures/pan/behavior/use-pan-behavior.js +2 -3
- package/lib/commonjs/shared/providers/screen/gestures/pan/behavior/use-pan-behavior.js.map +1 -1
- package/lib/commonjs/shared/providers/screen/gestures/pinch/behavior/pinch-lifecycle.js +4 -5
- package/lib/commonjs/shared/providers/screen/gestures/pinch/behavior/pinch-lifecycle.js.map +1 -1
- package/lib/commonjs/shared/providers/screen/gestures/pinch/behavior/use-pinch-behavior.js +2 -3
- package/lib/commonjs/shared/providers/screen/gestures/pinch/behavior/use-pinch-behavior.js.map +1 -1
- package/lib/commonjs/shared/providers/screen/gestures/shared/policy.js +9 -5
- package/lib/commonjs/shared/providers/screen/gestures/shared/policy.js.map +1 -1
- package/lib/commonjs/shared/providers/stack/blank-stack-state/blank-stack-controller.js +5 -1
- package/lib/commonjs/shared/providers/stack/blank-stack-state/blank-stack-controller.js.map +1 -1
- package/lib/commonjs/shared/stores/bounds/internals/links.js +1 -1
- package/lib/commonjs/shared/stores/bounds/internals/links.js.map +1 -1
- package/lib/commonjs/shared/stores/system.store.js +1 -2
- package/lib/commonjs/shared/stores/system.store.js.map +1 -1
- package/lib/commonjs/shared/utils/animation/animate-to-progress.js +0 -22
- package/lib/commonjs/shared/utils/animation/animate-to-progress.js.map +1 -1
- package/lib/commonjs/shared/utils/navigation/close-action-replay.js +22 -0
- package/lib/commonjs/shared/utils/navigation/close-action-replay.js.map +1 -0
- package/lib/module/native-stack/views/NativeStackView.native.js +1 -1
- package/lib/module/native-stack/views/NativeStackView.native.js.map +1 -1
- package/lib/module/shared/components/boundary/components/boundary-lifecycle.js +32 -0
- package/lib/module/shared/components/boundary/components/boundary-lifecycle.js.map +1 -0
- package/lib/module/shared/components/boundary/hooks/lifecycles/use-initial-destination-measurement.js +1 -13
- package/lib/module/shared/components/boundary/hooks/lifecycles/use-initial-destination-measurement.js.map +1 -1
- package/lib/module/shared/components/boundary/hooks/lifecycles/use-refresh-boundary.js +9 -2
- package/lib/module/shared/components/boundary/hooks/lifecycles/use-refresh-boundary.js.map +1 -1
- package/lib/module/shared/components/boundary/hooks/use-boundary-measurement.js +3 -2
- package/lib/module/shared/components/boundary/hooks/use-boundary-measurement.js.map +1 -1
- package/lib/module/shared/components/boundary/hooks/use-measurer.js +9 -2
- package/lib/module/shared/components/boundary/hooks/use-measurer.js.map +1 -1
- package/lib/module/shared/components/boundary/portal/components/boundary-portal/components/host.js +5 -12
- package/lib/module/shared/components/boundary/portal/components/boundary-portal/components/host.js.map +1 -1
- package/lib/module/shared/components/boundary/portal/components/boundary-portal/components/portal-boundary-host.js +27 -45
- package/lib/module/shared/components/boundary/portal/components/boundary-portal/components/portal-boundary-host.js.map +1 -1
- package/lib/module/shared/components/boundary/portal/components/boundary-portal/helpers/local-measurement.js +8 -0
- package/lib/module/shared/components/boundary/portal/components/boundary-portal/helpers/local-measurement.js.map +1 -0
- package/lib/module/shared/components/boundary/portal/components/boundary-portal/helpers/offset-style.js +8 -32
- package/lib/module/shared/components/boundary/portal/components/boundary-portal/helpers/offset-style.js.map +1 -1
- package/lib/module/shared/components/boundary/portal/components/boundary-portal/hooks/use-active-portal-boundary-host.js +15 -20
- package/lib/module/shared/components/boundary/portal/components/boundary-portal/hooks/use-active-portal-boundary-host.js.map +1 -1
- package/lib/module/shared/components/boundary/portal/components/boundary-portal/hooks/use-boundary-portal-attachment.js +8 -0
- package/lib/module/shared/components/boundary/portal/components/boundary-portal/hooks/use-boundary-portal-attachment.js.map +1 -1
- package/lib/module/shared/components/boundary/portal/components/boundary-portal/hooks/use-host-measurement.js +20 -48
- package/lib/module/shared/components/boundary/portal/components/boundary-portal/hooks/use-host-measurement.js.map +1 -1
- package/lib/module/shared/components/boundary/portal/components/boundary-portal/index.js.map +1 -1
- package/lib/module/shared/components/boundary/portal/components/boundary-portal/stores/portal-boundary-host.store.js +1 -1
- package/lib/module/shared/components/boundary/portal/components/boundary-portal/stores/portal-boundary-host.store.js.map +1 -1
- package/lib/module/shared/components/boundary/providers/boundary-root.provider.js +20 -18
- package/lib/module/shared/components/boundary/providers/boundary-root.provider.js.map +1 -1
- package/lib/module/shared/components/boundary/utils/refresh-signals.js +19 -5
- package/lib/module/shared/components/boundary/utils/refresh-signals.js.map +1 -1
- package/lib/module/shared/components/screen-container/layers/backdrop.js +12 -8
- package/lib/module/shared/components/screen-container/layers/backdrop.js.map +1 -1
- package/lib/module/shared/components/screen-lifecycle/hooks/helpers/close-interception-rules.js +25 -0
- package/lib/module/shared/components/screen-lifecycle/hooks/helpers/close-interception-rules.js.map +1 -0
- package/lib/module/shared/components/screen-lifecycle/hooks/use-close-completion.js +21 -0
- package/lib/module/shared/components/screen-lifecycle/hooks/use-close-completion.js.map +1 -0
- package/lib/module/shared/components/screen-lifecycle/hooks/use-close-transition-intent.js +60 -85
- package/lib/module/shared/components/screen-lifecycle/hooks/use-close-transition-intent.js.map +1 -1
- package/lib/module/shared/components/screen-lifecycle/hooks/use-transition-start-controller.js +1 -5
- package/lib/module/shared/components/screen-lifecycle/hooks/use-transition-start-controller.js.map +1 -1
- package/lib/module/shared/components/screen-lifecycle/index.js +9 -6
- package/lib/module/shared/components/screen-lifecycle/index.js.map +1 -1
- package/lib/module/shared/hooks/navigation/use-navigation-helpers.js +29 -7
- package/lib/module/shared/hooks/navigation/use-navigation-helpers.js.map +1 -1
- package/lib/module/shared/providers/helpers/measured-bounds-writes.js +1 -2
- package/lib/module/shared/providers/helpers/measured-bounds-writes.js.map +1 -1
- package/lib/module/shared/providers/screen/gestures/hooks/use-screen-gesture-config.js +9 -2
- package/lib/module/shared/providers/screen/gestures/hooks/use-screen-gesture-config.js.map +1 -1
- package/lib/module/shared/providers/screen/gestures/pan/behavior/pan-lifecycle.js +4 -5
- package/lib/module/shared/providers/screen/gestures/pan/behavior/pan-lifecycle.js.map +1 -1
- package/lib/module/shared/providers/screen/gestures/pan/behavior/use-pan-behavior.js +2 -3
- package/lib/module/shared/providers/screen/gestures/pan/behavior/use-pan-behavior.js.map +1 -1
- package/lib/module/shared/providers/screen/gestures/pinch/behavior/pinch-lifecycle.js +4 -5
- package/lib/module/shared/providers/screen/gestures/pinch/behavior/pinch-lifecycle.js.map +1 -1
- package/lib/module/shared/providers/screen/gestures/pinch/behavior/use-pinch-behavior.js +2 -3
- package/lib/module/shared/providers/screen/gestures/pinch/behavior/use-pinch-behavior.js.map +1 -1
- package/lib/module/shared/providers/screen/gestures/shared/policy.js +9 -5
- package/lib/module/shared/providers/screen/gestures/shared/policy.js.map +1 -1
- package/lib/module/shared/providers/stack/blank-stack-state/blank-stack-controller.js +5 -1
- package/lib/module/shared/providers/stack/blank-stack-state/blank-stack-controller.js.map +1 -1
- package/lib/module/shared/stores/bounds/internals/links.js +1 -1
- package/lib/module/shared/stores/bounds/internals/links.js.map +1 -1
- package/lib/module/shared/stores/system.store.js +1 -2
- package/lib/module/shared/stores/system.store.js.map +1 -1
- package/lib/module/shared/utils/animation/animate-to-progress.js +0 -22
- package/lib/module/shared/utils/animation/animate-to-progress.js.map +1 -1
- package/lib/module/shared/utils/navigation/close-action-replay.js +16 -0
- package/lib/module/shared/utils/navigation/close-action-replay.js.map +1 -0
- package/lib/typescript/native-stack/views/NativeStackView.native.d.ts.map +1 -1
- package/lib/typescript/shared/components/boundary/components/boundary-lifecycle.d.ts +18 -0
- package/lib/typescript/shared/components/boundary/components/boundary-lifecycle.d.ts.map +1 -0
- package/lib/typescript/shared/components/boundary/hooks/lifecycles/use-initial-destination-measurement.d.ts +1 -2
- package/lib/typescript/shared/components/boundary/hooks/lifecycles/use-initial-destination-measurement.d.ts.map +1 -1
- package/lib/typescript/shared/components/boundary/hooks/lifecycles/use-refresh-boundary.d.ts.map +1 -1
- package/lib/typescript/shared/components/boundary/hooks/use-boundary-measurement.d.ts +3 -2
- package/lib/typescript/shared/components/boundary/hooks/use-boundary-measurement.d.ts.map +1 -1
- package/lib/typescript/shared/components/boundary/hooks/use-measurer.d.ts +3 -2
- package/lib/typescript/shared/components/boundary/hooks/use-measurer.d.ts.map +1 -1
- package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/components/host.d.ts.map +1 -1
- package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/components/portal-boundary-host.d.ts +5 -1
- package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/components/portal-boundary-host.d.ts.map +1 -1
- package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/helpers/local-measurement.d.ts +4 -0
- package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/helpers/local-measurement.d.ts.map +1 -0
- package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/helpers/offset-style.d.ts +4 -17
- package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/helpers/offset-style.d.ts.map +1 -1
- package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/hooks/use-active-portal-boundary-host.d.ts +3 -1
- package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/hooks/use-active-portal-boundary-host.d.ts.map +1 -1
- package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/hooks/use-boundary-portal-attachment.d.ts.map +1 -1
- package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/hooks/use-host-measurement.d.ts +5 -9
- package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/hooks/use-host-measurement.d.ts.map +1 -1
- package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/stores/portal-boundary-host.store.d.ts +2 -1
- package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/stores/portal-boundary-host.store.d.ts.map +1 -1
- package/lib/typescript/shared/components/boundary/providers/boundary-root.provider.d.ts +2 -1
- package/lib/typescript/shared/components/boundary/providers/boundary-root.provider.d.ts.map +1 -1
- package/lib/typescript/shared/components/boundary/types.d.ts +6 -0
- package/lib/typescript/shared/components/boundary/types.d.ts.map +1 -1
- package/lib/typescript/shared/components/boundary/utils/refresh-signals.d.ts +1 -0
- package/lib/typescript/shared/components/boundary/utils/refresh-signals.d.ts.map +1 -1
- package/lib/typescript/shared/components/screen-container/layers/backdrop.d.ts.map +1 -1
- package/lib/typescript/shared/components/screen-lifecycle/hooks/helpers/close-interception-rules.d.ts +27 -0
- package/lib/typescript/shared/components/screen-lifecycle/hooks/helpers/close-interception-rules.d.ts.map +1 -0
- package/lib/typescript/shared/components/screen-lifecycle/hooks/use-close-completion.d.ts +7 -0
- package/lib/typescript/shared/components/screen-lifecycle/hooks/use-close-completion.d.ts.map +1 -0
- package/lib/typescript/shared/components/screen-lifecycle/hooks/use-close-transition-intent.d.ts +2 -7
- package/lib/typescript/shared/components/screen-lifecycle/hooks/use-close-transition-intent.d.ts.map +1 -1
- package/lib/typescript/shared/components/screen-lifecycle/hooks/use-transition-start-controller.d.ts +1 -3
- package/lib/typescript/shared/components/screen-lifecycle/hooks/use-transition-start-controller.d.ts.map +1 -1
- package/lib/typescript/shared/components/screen-lifecycle/index.d.ts.map +1 -1
- package/lib/typescript/shared/hooks/navigation/use-navigation-helpers.d.ts +1 -0
- package/lib/typescript/shared/hooks/navigation/use-navigation-helpers.d.ts.map +1 -1
- package/lib/typescript/shared/providers/screen/gestures/hooks/use-screen-gesture-config.d.ts.map +1 -1
- package/lib/typescript/shared/providers/screen/gestures/pan/behavior/pan-lifecycle.d.ts +1 -1
- package/lib/typescript/shared/providers/screen/gestures/pan/behavior/pan-lifecycle.d.ts.map +1 -1
- package/lib/typescript/shared/providers/screen/gestures/pan/behavior/use-pan-behavior.d.ts.map +1 -1
- package/lib/typescript/shared/providers/screen/gestures/pinch/behavior/pinch-lifecycle.d.ts +1 -1
- package/lib/typescript/shared/providers/screen/gestures/pinch/behavior/pinch-lifecycle.d.ts.map +1 -1
- package/lib/typescript/shared/providers/screen/gestures/pinch/behavior/use-pinch-behavior.d.ts.map +1 -1
- package/lib/typescript/shared/providers/screen/gestures/shared/policy.d.ts +2 -1
- package/lib/typescript/shared/providers/screen/gestures/shared/policy.d.ts.map +1 -1
- package/lib/typescript/shared/providers/screen/gestures/types.d.ts +2 -0
- package/lib/typescript/shared/providers/screen/gestures/types.d.ts.map +1 -1
- package/lib/typescript/shared/providers/stack/blank-stack-state/blank-stack-controller.d.ts.map +1 -1
- package/lib/typescript/shared/stores/system.store.d.ts +1 -2
- package/lib/typescript/shared/stores/system.store.d.ts.map +1 -1
- package/lib/typescript/shared/utils/animation/animate-to-progress.d.ts +2 -3
- package/lib/typescript/shared/utils/animation/animate-to-progress.d.ts.map +1 -1
- package/lib/typescript/shared/utils/navigation/close-action-replay.d.ts +4 -0
- package/lib/typescript/shared/utils/navigation/close-action-replay.d.ts.map +1 -0
- package/package.json +1 -1
- package/src/native-stack/views/NativeStackView.native.tsx +3 -1
- package/src/shared/components/boundary/components/boundary-lifecycle.tsx +53 -0
- package/src/shared/components/boundary/hooks/lifecycles/use-initial-destination-measurement.ts +0 -14
- package/src/shared/components/boundary/hooks/lifecycles/use-refresh-boundary.ts +13 -2
- package/src/shared/components/boundary/hooks/use-boundary-measurement.ts +7 -2
- package/src/shared/components/boundary/hooks/use-measurer.ts +11 -1
- package/src/shared/components/boundary/portal/components/boundary-portal/components/host.tsx +13 -11
- package/src/shared/components/boundary/portal/components/boundary-portal/components/portal-boundary-host.tsx +44 -55
- package/src/shared/components/boundary/portal/components/boundary-portal/helpers/local-measurement.ts +10 -0
- package/src/shared/components/boundary/portal/components/boundary-portal/helpers/offset-style.ts +11 -55
- package/src/shared/components/boundary/portal/components/boundary-portal/hooks/use-active-portal-boundary-host.ts +20 -24
- package/src/shared/components/boundary/portal/components/boundary-portal/hooks/use-boundary-portal-attachment.ts +11 -0
- package/src/shared/components/boundary/portal/components/boundary-portal/hooks/use-host-measurement.ts +20 -67
- package/src/shared/components/boundary/portal/components/boundary-portal/index.tsx +1 -0
- package/src/shared/components/boundary/portal/components/boundary-portal/stores/portal-boundary-host.store.ts +3 -2
- package/src/shared/components/boundary/providers/boundary-root.provider.tsx +29 -20
- package/src/shared/components/boundary/types.ts +9 -0
- package/src/shared/components/boundary/utils/refresh-signals.ts +39 -6
- package/src/shared/components/screen-container/layers/backdrop.tsx +11 -7
- package/src/shared/components/screen-lifecycle/hooks/helpers/close-interception-rules.ts +64 -0
- package/src/shared/components/screen-lifecycle/hooks/use-close-completion.ts +28 -0
- package/src/shared/components/screen-lifecycle/hooks/use-close-transition-intent.ts +67 -108
- package/src/shared/components/screen-lifecycle/hooks/use-transition-start-controller.ts +0 -12
- package/src/shared/components/screen-lifecycle/index.tsx +8 -4
- package/src/shared/hooks/navigation/use-navigation-helpers.ts +39 -7
- package/src/shared/providers/helpers/measured-bounds-writes.ts +1 -1
- package/src/shared/providers/screen/gestures/hooks/use-screen-gesture-config.ts +9 -1
- package/src/shared/providers/screen/gestures/pan/behavior/pan-lifecycle.ts +4 -6
- package/src/shared/providers/screen/gestures/pan/behavior/use-pan-behavior.ts +1 -3
- package/src/shared/providers/screen/gestures/pinch/behavior/pinch-lifecycle.ts +4 -6
- package/src/shared/providers/screen/gestures/pinch/behavior/use-pinch-behavior.ts +2 -8
- package/src/shared/providers/screen/gestures/shared/policy.ts +17 -6
- package/src/shared/providers/screen/gestures/types.ts +2 -0
- package/src/shared/providers/stack/blank-stack-state/blank-stack-controller.ts +5 -1
- package/src/shared/stores/bounds/internals/links.ts +1 -1
- package/src/shared/stores/system.store.ts +1 -2
- package/src/shared/utils/animation/animate-to-progress.ts +1 -22
- package/src/shared/utils/navigation/close-action-replay.ts +25 -0
- package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/helpers/active-pair.js +0 -30
- package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/helpers/active-pair.js.map +0 -1
- package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/stores/host-bounds.store.js +0 -47
- package/lib/commonjs/shared/components/boundary/portal/components/boundary-portal/stores/host-bounds.store.js.map +0 -1
- package/lib/module/shared/components/boundary/portal/components/boundary-portal/helpers/active-pair.js +0 -25
- package/lib/module/shared/components/boundary/portal/components/boundary-portal/helpers/active-pair.js.map +0 -1
- package/lib/module/shared/components/boundary/portal/components/boundary-portal/stores/host-bounds.store.js +0 -40
- package/lib/module/shared/components/boundary/portal/components/boundary-portal/stores/host-bounds.store.js.map +0 -1
- package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/helpers/active-pair.d.ts +0 -9
- package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/helpers/active-pair.d.ts.map +0 -1
- package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/stores/host-bounds.store.d.ts +0 -9
- package/lib/typescript/shared/components/boundary/portal/components/boundary-portal/stores/host-bounds.store.d.ts.map +0 -1
- package/src/shared/components/boundary/portal/components/boundary-portal/helpers/active-pair.ts +0 -36
- package/src/shared/components/boundary/portal/components/boundary-portal/stores/host-bounds.store.ts +0 -45
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { memo, useCallback, useMemo } from "react";
|
|
4
4
|
import { Pressable, StyleSheet } from "react-native";
|
|
5
|
-
import Animated, { runOnUI } from "react-native-reanimated";
|
|
5
|
+
import Animated, { runOnJS, runOnUI } from "react-native-reanimated";
|
|
6
6
|
import { DefaultSnapSpec } from "../../../configs/specs";
|
|
7
7
|
import { useNavigationHelpers } from "../../../hooks/navigation/use-navigation-helpers";
|
|
8
8
|
import { useDescriptorsStore } from "../../../providers/screen/descriptors";
|
|
@@ -19,12 +19,14 @@ export const BackdropLayer = /*#__PURE__*/memo(function BackdropLayer({
|
|
|
19
19
|
isBackdropActive
|
|
20
20
|
}) {
|
|
21
21
|
const {
|
|
22
|
-
|
|
22
|
+
isRemovePrevented,
|
|
23
|
+
requestDismiss
|
|
23
24
|
} = useNavigationHelpers();
|
|
24
25
|
const routeKey = useDescriptorsStore(store => store.derivations.currentScreenKey);
|
|
25
26
|
const BackdropComponent = useDescriptorsStore(store => store.options.backdropComponent);
|
|
26
27
|
const rawSnapPoints = useDescriptorsStore(store => store.options.snapPoints);
|
|
27
|
-
const
|
|
28
|
+
const isGestureDismissEnabled = useDescriptorsStore(store => store.options.gestureEnabled !== false);
|
|
29
|
+
const canDismiss = isGestureDismissEnabled && !isRemovePrevented;
|
|
28
30
|
const transitionSpec = useDescriptorsStore(store => store.options.transitionSpec);
|
|
29
31
|
const animations = AnimationStore.getBag(routeKey);
|
|
30
32
|
const {
|
|
@@ -35,13 +37,13 @@ export const BackdropLayer = /*#__PURE__*/memo(function BackdropLayer({
|
|
|
35
37
|
const AnimatedBackdropComponent = useMemo(() => BackdropComponent && !usesLayerRenderProps(BackdropComponent) ? Animated.createAnimatedComponent(BackdropComponent) : null, [BackdropComponent]);
|
|
36
38
|
const handleBackdropPress = useCallback(() => {
|
|
37
39
|
if (backdropBehavior === "dismiss") {
|
|
38
|
-
|
|
40
|
+
requestDismiss();
|
|
39
41
|
return;
|
|
40
42
|
}
|
|
41
43
|
if (backdropBehavior === "collapse") {
|
|
42
44
|
// No snap points → fallback to dismiss
|
|
43
45
|
if (!rawSnapPoints || rawSnapPoints.length === 0) {
|
|
44
|
-
|
|
46
|
+
requestDismiss();
|
|
45
47
|
return;
|
|
46
48
|
}
|
|
47
49
|
const gestures = GestureStore.getBag(routeKey);
|
|
@@ -74,12 +76,14 @@ export const BackdropLayer = /*#__PURE__*/memo(function BackdropLayer({
|
|
|
74
76
|
spec,
|
|
75
77
|
animations,
|
|
76
78
|
targetProgress,
|
|
77
|
-
animationProgress
|
|
78
|
-
onAnimationFinish: shouldDismiss ? dismissScreen : undefined
|
|
79
|
+
animationProgress
|
|
79
80
|
});
|
|
81
|
+
if (shouldDismiss) {
|
|
82
|
+
runOnJS(requestDismiss)();
|
|
83
|
+
}
|
|
80
84
|
})();
|
|
81
85
|
}
|
|
82
|
-
}, [animations, targetProgress, animationProgress, resolvedAutoSnapPoint, backdropBehavior, rawSnapPoints, canDismiss, transitionSpec,
|
|
86
|
+
}, [animations, targetProgress, animationProgress, resolvedAutoSnapPoint, backdropBehavior, rawSnapPoints, canDismiss, transitionSpec, requestDismiss, routeKey]);
|
|
83
87
|
const animatedBackdropStyle = useSlotStyles("backdrop");
|
|
84
88
|
const animatedBackdropProps = useSlotProps("backdrop");
|
|
85
89
|
const backdropPointerEvents = isBackdropActive ? "auto" : "none";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["memo","useCallback","useMemo","Pressable","StyleSheet","Animated","runOnUI","DefaultSnapSpec","useNavigationHelpers","useDescriptorsStore","useSlotProps","useSlotStyles","AnimationStore","GestureStore","SystemStore","animateToProgress","findCollapseTarget","usesLayerRenderProps","jsx","_jsx","BackdropLayer","backdropBehavior","isBackdropActive","
|
|
1
|
+
{"version":3,"names":["memo","useCallback","useMemo","Pressable","StyleSheet","Animated","runOnJS","runOnUI","DefaultSnapSpec","useNavigationHelpers","useDescriptorsStore","useSlotProps","useSlotStyles","AnimationStore","GestureStore","SystemStore","animateToProgress","findCollapseTarget","usesLayerRenderProps","jsx","_jsx","BackdropLayer","backdropBehavior","isBackdropActive","isRemovePrevented","requestDismiss","routeKey","store","derivations","currentScreenKey","BackdropComponent","options","backdropComponent","rawSnapPoints","snapPoints","isGestureDismissEnabled","gestureEnabled","canDismiss","transitionSpec","animations","getBag","targetProgress","animationProgress","resolvedAutoSnapPoint","AnimatedBackdropComponent","createAnimatedComponent","handleBackdropPress","length","gestures","resolvedSnaps","i","point","resolvedPoint","get","push","target","shouldDismiss","transitionProgress","dismissing","set","spec","open","expand","close","collapse","markEntering","animatedBackdropStyle","animatedBackdropProps","backdropPointerEvents","backdropStyles","absoluteFill","backdropProps","style","pointerEvents","onPress","undefined","children","animatedProps","styles","props","View"],"sourceRoot":"../../../../../../src","sources":["shared/components/screen-container/layers/backdrop.tsx"],"mappings":"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","ignoreList":[]}
|
package/lib/module/shared/components/screen-lifecycle/hooks/helpers/close-interception-rules.js
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
const containsRouteKey = (routes, routeKey) => routes.some(route => route.key === routeKey || (route.state ? containsRouteKey(route.state.routes, routeKey) : false));
|
|
4
|
+
export const doesNavigatorOwnCloseAction = ({
|
|
5
|
+
state,
|
|
6
|
+
action
|
|
7
|
+
}) => {
|
|
8
|
+
if (typeof action.target === "string") {
|
|
9
|
+
return action.target === state.key;
|
|
10
|
+
}
|
|
11
|
+
if (typeof action.source === "string") {
|
|
12
|
+
return containsRouteKey(state.routes, action.source);
|
|
13
|
+
}
|
|
14
|
+
return true;
|
|
15
|
+
};
|
|
16
|
+
|
|
17
|
+
/** Only the focused removable route owns a stack close transition. */
|
|
18
|
+
export const shouldInterceptClose = ({
|
|
19
|
+
enabled,
|
|
20
|
+
ownsAction,
|
|
21
|
+
ancestorDismissing,
|
|
22
|
+
routeIndex,
|
|
23
|
+
focusedIndex
|
|
24
|
+
}) => enabled && ownsAction && !ancestorDismissing && routeIndex > 0 && routeIndex === focusedIndex;
|
|
25
|
+
//# sourceMappingURL=close-interception-rules.js.map
|
package/lib/module/shared/components/screen-lifecycle/hooks/helpers/close-interception-rules.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["containsRouteKey","routes","routeKey","some","route","key","state","doesNavigatorOwnCloseAction","action","target","source","shouldInterceptClose","enabled","ownsAction","ancestorDismissing","routeIndex","focusedIndex"],"sourceRoot":"../../../../../../../src","sources":["shared/components/screen-lifecycle/hooks/helpers/close-interception-rules.ts"],"mappings":";;AAuBA,MAAMA,gBAAgB,GAAGA,CACxBC,MAA6B,EAC7BC,QAAgB,KAEhBD,MAAM,CAACE,IAAI,CACTC,KAAK,IACLA,KAAK,CAACC,GAAG,KAAKH,QAAQ,KACrBE,KAAK,CAACE,KAAK,GAAGN,gBAAgB,CAACI,KAAK,CAACE,KAAK,CAACL,MAAM,EAAEC,QAAQ,CAAC,GAAG,KAAK,CACvE,CAAC;AAEF,OAAO,MAAMK,2BAA2B,GAAGA,CAAC;EAC3CD,KAAK;EACLE;AAID,CAAC,KAAc;EACd,IAAI,OAAOA,MAAM,CAACC,MAAM,KAAK,QAAQ,EAAE;IACtC,OAAOD,MAAM,CAACC,MAAM,KAAKH,KAAK,CAACD,GAAG;EACnC;EAEA,IAAI,OAAOG,MAAM,CAACE,MAAM,KAAK,QAAQ,EAAE;IACtC,OAAOV,gBAAgB,CAACM,KAAK,CAACL,MAAM,EAAEO,MAAM,CAACE,MAAM,CAAC;EACrD;EAEA,OAAO,IAAI;AACZ,CAAC;;AAED;AACA,OAAO,MAAMC,oBAAoB,GAAGA,CAAC;EACpCC,OAAO;EACPC,UAAU;EACVC,kBAAkB;EAClBC,UAAU;EACVC;AACuB,CAAC,KACxBJ,OAAO,IACPC,UAAU,IACV,CAACC,kBAAkB,IACnBC,UAAU,GAAG,CAAC,IACdA,UAAU,KAAKC,YAAY","ignoreList":[]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { runOnJS, useAnimatedReaction } from "react-native-reanimated";
|
|
4
|
+
export const useCloseCompletion = ({
|
|
5
|
+
closing,
|
|
6
|
+
animationProgress,
|
|
7
|
+
onComplete
|
|
8
|
+
}) => {
|
|
9
|
+
useAnimatedReaction(() => {
|
|
10
|
+
"worklet";
|
|
11
|
+
|
|
12
|
+
return !!closing.get() && animationProgress.get() <= 0;
|
|
13
|
+
}, (complete, previouslyComplete) => {
|
|
14
|
+
"worklet";
|
|
15
|
+
|
|
16
|
+
if (complete && !previouslyComplete) {
|
|
17
|
+
runOnJS(onComplete)();
|
|
18
|
+
}
|
|
19
|
+
});
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=use-close-completion.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["runOnJS","useAnimatedReaction","useCloseCompletion","closing","animationProgress","onComplete","get","complete","previouslyComplete"],"sourceRoot":"../../../../../../src","sources":["shared/components/screen-lifecycle/hooks/use-close-completion.ts"],"mappings":";;AAAA,SACCA,OAAO,EAEPC,mBAAmB,QACb,yBAAyB;AAEhC,OAAO,MAAMC,kBAAkB,GAAGA,CAAC;EAClCC,OAAO;EACPC,iBAAiB;EACjBC;AAKD,CAAC,KAAK;EACLJ,mBAAmB,CAClB,MAAM;IACL,SAAS;;IACT,OAAO,CAAC,CAACE,OAAO,CAACG,GAAG,CAAC,CAAC,IAAIF,iBAAiB,CAACE,GAAG,CAAC,CAAC,IAAI,CAAC;EACvD,CAAC,EACD,CAACC,QAAQ,EAAEC,kBAAkB,KAAK;IACjC,SAAS;;IACT,IAAID,QAAQ,IAAI,CAACC,kBAAkB,EAAE;MACpCR,OAAO,CAACK,UAAU,CAAC,CAAC,CAAC;IACtB;EACD,CACD,CAAC;AACF,CAAC","ignoreList":[]}
|
|
@@ -1,85 +1,84 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
/** biome-ignore-all lint/correctness/useHookAtTopLevel: STACK_TYPE is stable per navigator */
|
|
4
3
|
import { useLayoutEffect, useMemo, useRef } from "react";
|
|
4
|
+
import { useNavigationHelpers } from "../../../hooks/navigation/use-navigation-helpers";
|
|
5
5
|
import useStableCallback from "../../../hooks/use-stable-callback";
|
|
6
|
+
import { hasTransitionsEnabled } from "../../../providers/screen/animation/helpers/has-transitions-enabled";
|
|
6
7
|
import { useDescriptorsStore } from "../../../providers/screen/descriptors";
|
|
7
8
|
import { useBlankStackStore } from "../../../providers/stack/blank-stack.provider";
|
|
8
9
|
import { useStackCoreStore } from "../../../providers/stack/core.provider";
|
|
9
10
|
import { GestureStore } from "../../../stores/gesture.store";
|
|
10
|
-
import { LifecycleTransitionRequestKind } from "../../../stores/system.store";
|
|
11
11
|
import { StackType } from "../../../types/stack.types";
|
|
12
|
+
import { dispatchCloseAction, isCloseActionReplay } from "../../../utils/navigation/close-action-replay";
|
|
13
|
+
import { doesNavigatorOwnCloseAction, shouldInterceptClose } from "./helpers/close-interception-rules";
|
|
12
14
|
import { resetStoresForScreen } from "./helpers/reset-stores-for-screen";
|
|
13
|
-
|
|
14
|
-
current
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
15
|
+
export function useCloseTransitionIntent(current) {
|
|
16
|
+
const routeKey = current.route.key;
|
|
17
|
+
const {
|
|
18
|
+
STACK_TYPE: stackType,
|
|
19
|
+
TRANSITIONS_ALWAYS_ON: transitionsAlwaysOn
|
|
20
|
+
} = useStackCoreStore(store => store.flags);
|
|
18
21
|
const handleCloseRoute = useBlankStackStore(store => store?.handleCloseRoute);
|
|
19
|
-
const
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
}
|
|
26
|
-
const handleBlankStackCloseEnd = useStableCallback(finished => {
|
|
27
|
-
if (!finished) return;
|
|
28
|
-
if (!handleCloseRoute) {
|
|
29
|
-
throw new Error("Blank stack close handler was not found.");
|
|
30
|
-
}
|
|
31
|
-
handleCloseRoute({
|
|
32
|
-
route: current.route
|
|
33
|
-
});
|
|
34
|
-
requestAnimationFrame(() => {
|
|
35
|
-
resetStores();
|
|
36
|
-
});
|
|
37
|
-
});
|
|
38
|
-
return {
|
|
39
|
-
handleBlankStackCloseEnd
|
|
40
|
-
};
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
/**
|
|
44
|
-
* Native stack close - listens to beforeRemove navigation event.
|
|
45
|
-
*/
|
|
46
|
-
const useNativeStackClose = ({
|
|
47
|
-
current,
|
|
48
|
-
requestLifecycleTransition,
|
|
49
|
-
resetStores
|
|
50
|
-
}) => {
|
|
51
|
-
const parentScreenKey = useDescriptorsStore(store => store.derivations.parentScreenKey);
|
|
22
|
+
const isBlankStackClosing = useBlankStackStore(store => store?.scenesByKey[routeKey]?.activity === "closing");
|
|
23
|
+
const ancestorKeys = useDescriptorsStore(store => store.derivations.ancestorKeys);
|
|
24
|
+
const parentScreenKey = ancestorKeys[0];
|
|
25
|
+
const {
|
|
26
|
+
dismissScreen,
|
|
27
|
+
requestDismiss
|
|
28
|
+
} = useNavigationHelpers();
|
|
52
29
|
const pendingActionRef = useRef(null);
|
|
53
30
|
const nearestAncestorDismissing = useMemo(() => {
|
|
54
31
|
if (!parentScreenKey) return null;
|
|
55
32
|
return GestureStore.peekBag(parentScreenKey)?.dismissing ?? null;
|
|
56
33
|
}, [parentScreenKey]);
|
|
57
|
-
|
|
58
|
-
if (
|
|
59
|
-
|
|
60
|
-
return;
|
|
34
|
+
useLayoutEffect(() => {
|
|
35
|
+
if (isBlankStackClosing) {
|
|
36
|
+
requestDismiss();
|
|
61
37
|
}
|
|
62
|
-
|
|
38
|
+
}, [isBlankStackClosing, requestDismiss]);
|
|
39
|
+
const completeClose = useStableCallback(() => {
|
|
40
|
+
const pendingAction = pendingActionRef.current;
|
|
63
41
|
pendingActionRef.current = null;
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
42
|
+
if (pendingAction) {
|
|
43
|
+
dispatchCloseAction(pendingAction, action => {
|
|
44
|
+
current.navigation.dispatch(action);
|
|
45
|
+
});
|
|
46
|
+
} else if (stackType !== StackType.NATIVE && handleCloseRoute) {
|
|
47
|
+
handleCloseRoute({
|
|
48
|
+
route: current.route
|
|
49
|
+
});
|
|
50
|
+
} else {
|
|
51
|
+
dismissScreen();
|
|
52
|
+
}
|
|
53
|
+
resetStoresForScreen(routeKey);
|
|
67
54
|
});
|
|
68
|
-
const handleBeforeRemove = useStableCallback(
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
const
|
|
73
|
-
const state = navigation.getState();
|
|
55
|
+
const handleBeforeRemove = useStableCallback(event => {
|
|
56
|
+
if (isCloseActionReplay(event.data.action)) {
|
|
57
|
+
return;
|
|
58
|
+
}
|
|
59
|
+
const state = current.navigation.getState();
|
|
74
60
|
const routeIndex = state.routes.findIndex(route => route.key === routeKey);
|
|
75
|
-
const
|
|
76
|
-
|
|
77
|
-
|
|
61
|
+
const action = event.data.action;
|
|
62
|
+
const ownsAction = doesNavigatorOwnCloseAction({
|
|
63
|
+
state,
|
|
64
|
+
action
|
|
65
|
+
});
|
|
66
|
+
const shouldIntercept = shouldInterceptClose({
|
|
67
|
+
enabled: hasTransitionsEnabled(current.options, transitionsAlwaysOn),
|
|
68
|
+
ownsAction,
|
|
69
|
+
ancestorDismissing: !!nearestAncestorDismissing?.get(),
|
|
70
|
+
routeIndex,
|
|
71
|
+
focusedIndex: state.index
|
|
72
|
+
});
|
|
73
|
+
if (!shouldIntercept) {
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
pendingActionRef.current ??= event.data.action;
|
|
77
|
+
if (!requestDismiss()) {
|
|
78
|
+
pendingActionRef.current = null;
|
|
78
79
|
return;
|
|
79
80
|
}
|
|
80
|
-
|
|
81
|
-
pendingActionRef.current = e.data.action;
|
|
82
|
-
requestLifecycleTransition(LifecycleTransitionRequestKind.NativeClose, 0);
|
|
81
|
+
event.preventDefault();
|
|
83
82
|
});
|
|
84
83
|
|
|
85
84
|
// biome-ignore lint/correctness/useExhaustiveDependencies: navigation listener should only rebind when the navigator instance changes
|
|
@@ -87,31 +86,7 @@ const useNativeStackClose = ({
|
|
|
87
86
|
return current.navigation.addListener?.("beforeRemove", handleBeforeRemove);
|
|
88
87
|
}, [current.navigation]);
|
|
89
88
|
return {
|
|
90
|
-
|
|
91
|
-
};
|
|
92
|
-
};
|
|
93
|
-
|
|
94
|
-
/**
|
|
95
|
-
* Handles close transition intent and returns finish callbacks for cleanup.
|
|
96
|
-
*/
|
|
97
|
-
export function useCloseTransitionIntent(current, system) {
|
|
98
|
-
const routeKey = current.route.key;
|
|
99
|
-
const stackType = useStackCoreStore(store => store.flags.STACK_TYPE);
|
|
100
|
-
const isNativeStack = stackType === StackType.NATIVE;
|
|
101
|
-
const {
|
|
102
|
-
requestLifecycleTransition
|
|
103
|
-
} = system.actions;
|
|
104
|
-
const resetStores = useStableCallback(() => {
|
|
105
|
-
resetStoresForScreen(routeKey);
|
|
106
|
-
});
|
|
107
|
-
const closeParams = {
|
|
108
|
-
current,
|
|
109
|
-
requestLifecycleTransition,
|
|
110
|
-
resetStores
|
|
89
|
+
completeClose
|
|
111
90
|
};
|
|
112
|
-
if (isNativeStack) {
|
|
113
|
-
return useNativeStackClose(closeParams);
|
|
114
|
-
}
|
|
115
|
-
return useBlankStackClose(closeParams);
|
|
116
91
|
}
|
|
117
92
|
//# sourceMappingURL=use-close-transition-intent.js.map
|
package/lib/module/shared/components/screen-lifecycle/hooks/use-close-transition-intent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useLayoutEffect","useMemo","useRef","useStableCallback","useDescriptorsStore","useBlankStackStore","useStackCoreStore","GestureStore","
|
|
1
|
+
{"version":3,"names":["useLayoutEffect","useMemo","useRef","useNavigationHelpers","useStableCallback","hasTransitionsEnabled","useDescriptorsStore","useBlankStackStore","useStackCoreStore","GestureStore","StackType","dispatchCloseAction","isCloseActionReplay","doesNavigatorOwnCloseAction","shouldInterceptClose","resetStoresForScreen","useCloseTransitionIntent","current","routeKey","route","key","STACK_TYPE","stackType","TRANSITIONS_ALWAYS_ON","transitionsAlwaysOn","store","flags","handleCloseRoute","isBlankStackClosing","scenesByKey","activity","ancestorKeys","derivations","parentScreenKey","dismissScreen","requestDismiss","pendingActionRef","nearestAncestorDismissing","peekBag","dismissing","completeClose","pendingAction","action","navigation","dispatch","NATIVE","handleBeforeRemove","event","data","state","getState","routeIndex","routes","findIndex","ownsAction","shouldIntercept","enabled","options","ancestorDismissing","get","focusedIndex","index","preventDefault","addListener"],"sourceRoot":"../../../../../../src","sources":["shared/components/screen-lifecycle/hooks/use-close-transition-intent.ts"],"mappings":";;AAAA,SAASA,eAAe,EAAEC,OAAO,EAAEC,MAAM,QAAQ,OAAO;AACxD,SAASC,oBAAoB,QAAQ,kDAAkD;AACvF,OAAOC,iBAAiB,MAAM,oCAAoC;AAClE,SAASC,qBAAqB,QAAQ,qEAAqE;AAC3G,SAECC,mBAAmB,QACb,uCAAuC;AAC9C,SAASC,kBAAkB,QAAQ,+CAA+C;AAClF,SAASC,iBAAiB,QAAQ,wCAAwC;AAC1E,SAASC,YAAY,QAAQ,+BAA+B;AAC5D,SAASC,SAAS,QAAQ,4BAA4B;AACtD,SACCC,mBAAmB,EACnBC,mBAAmB,QACb,+CAA+C;AACtD,SACCC,2BAA2B,EAC3BC,oBAAoB,QACd,oCAAoC;AAC3C,SAASC,oBAAoB,QAAQ,mCAAmC;AAExE,OAAO,SAASC,wBAAwBA,CAACC,OAAuB,EAE9D;EACD,MAAMC,QAAQ,GAAGD,OAAO,CAACE,KAAK,CAACC,GAAG;EAClC,MAAM;IAAEC,UAAU,EAAEC,SAAS;IAAEC,qBAAqB,EAAEC;EAAoB,CAAC,GAC1EhB,iBAAiB,CAAEiB,KAAK,IAAKA,KAAK,CAACC,KAAK,CAAC;EAC1C,MAAMC,gBAAgB,GAAGpB,kBAAkB,CACzCkB,KAAK,IAAKA,KAAK,EAAEE,gBACnB,CAAC;EACD,MAAMC,mBAAmB,GAAGrB,kBAAkB,CAC5CkB,KAAK,IAAKA,KAAK,EAAEI,WAAW,CAACX,QAAQ,CAAC,EAAEY,QAAQ,KAAK,SACvD,CAAC;EACD,MAAMC,YAAY,GAAGzB,mBAAmB,CACtCmB,KAAK,IAAKA,KAAK,CAACO,WAAW,CAACD,YAC9B,CAAC;EACD,MAAME,eAAe,GAAGF,YAAY,CAAC,CAAC,CAAC;EACvC,MAAM;IAAEG,aAAa;IAAEC;EAAe,CAAC,GAAGhC,oBAAoB,CAAC,CAAC;EAChE,MAAMiC,gBAAgB,GAAGlC,MAAM,CAAM,IAAI,CAAC;EAE1C,MAAMmC,yBAAyB,GAAGpC,OAAO,CAAC,MAAM;IAC/C,IAAI,CAACgC,eAAe,EAAE,OAAO,IAAI;IAEjC,OAAOxB,YAAY,CAAC6B,OAAO,CAACL,eAAe,CAAC,EAAEM,UAAU,IAAI,IAAI;EACjE,CAAC,EAAE,CAACN,eAAe,CAAC,CAAC;EAErBjC,eAAe,CAAC,MAAM;IACrB,IAAI4B,mBAAmB,EAAE;MACxBO,cAAc,CAAC,CAAC;IACjB;EACD,CAAC,EAAE,CAACP,mBAAmB,EAAEO,cAAc,CAAC,CAAC;EAEzC,MAAMK,aAAa,GAAGpC,iBAAiB,CAAC,MAAM;IAC7C,MAAMqC,aAAa,GAAGL,gBAAgB,CAACnB,OAAO;IAC9CmB,gBAAgB,CAACnB,OAAO,GAAG,IAAI;IAE/B,IAAIwB,aAAa,EAAE;MAClB9B,mBAAmB,CAAC8B,aAAa,EAAGC,MAAM,IAAK;QAC9CzB,OAAO,CAAC0B,UAAU,CAACC,QAAQ,CAACF,MAAM,CAAC;MACpC,CAAC,CAAC;IACH,CAAC,MAAM,IAAIpB,SAAS,KAAKZ,SAAS,CAACmC,MAAM,IAAIlB,gBAAgB,EAAE;MAC9DA,gBAAgB,CAAC;QAAER,KAAK,EAAEF,OAAO,CAACE;MAAM,CAAC,CAAC;IAC3C,CAAC,MAAM;MACNe,aAAa,CAAC,CAAC;IAChB;IAEAnB,oBAAoB,CAACG,QAAQ,CAAC;EAC/B,CAAC,CAAC;EAEF,MAAM4B,kBAAkB,GAAG1C,iBAAiB,CAAE2C,KAAU,IAAK;IAC5D,IAAInC,mBAAmB,CAACmC,KAAK,CAACC,IAAI,CAACN,MAAM,CAAC,EAAE;MAC3C;IACD;IAEA,MAAMO,KAAK,GAAGhC,OAAO,CAAC0B,UAAU,CAACO,QAAQ,CAAC,CAAC;IAC3C,MAAMC,UAAU,GAAGF,KAAK,CAACG,MAAM,CAACC,SAAS,CACvClC,KAAK,IAAKA,KAAK,CAACC,GAAG,KAAKF,QAC1B,CAAC;IACD,MAAMwB,MAAM,GAAGK,KAAK,CAACC,IAAI,CAACN,MAAM;IAChC,MAAMY,UAAU,GAAGzC,2BAA2B,CAAC;MAC9CoC,KAAK;MACLP;IACD,CAAC,CAAC;IACF,MAAMa,eAAe,GAAGzC,oBAAoB,CAAC;MAC5C0C,OAAO,EAAEnD,qBAAqB,CAACY,OAAO,CAACwC,OAAO,EAAEjC,mBAAmB,CAAC;MACpE8B,UAAU;MACVI,kBAAkB,EAAE,CAAC,CAACrB,yBAAyB,EAAEsB,GAAG,CAAC,CAAC;MACtDR,UAAU;MACVS,YAAY,EAAEX,KAAK,CAACY;IACrB,CAAC,CAAC;IAEF,IAAI,CAACN,eAAe,EAAE;MACrB;IACD;IAEAnB,gBAAgB,CAACnB,OAAO,KAAK8B,KAAK,CAACC,IAAI,CAACN,MAAM;IAC9C,IAAI,CAACP,cAAc,CAAC,CAAC,EAAE;MACtBC,gBAAgB,CAACnB,OAAO,GAAG,IAAI;MAC/B;IACD;IAEA8B,KAAK,CAACe,cAAc,CAAC,CAAC;EACvB,CAAC,CAAC;;EAEF;EACA9D,eAAe,CAAC,MAAM;IACrB,OAAOiB,OAAO,CAAC0B,UAAU,CAACoB,WAAW,GAAG,cAAc,EAAEjB,kBAAkB,CAAC;EAC5E,CAAC,EAAE,CAAC7B,OAAO,CAAC0B,UAAU,CAAC,CAAC;EAExB,OAAO;IAAEH;EAAc,CAAC;AACzB","ignoreList":[]}
|
package/lib/module/shared/components/screen-lifecycle/hooks/use-transition-start-controller.js
CHANGED
|
@@ -7,9 +7,7 @@ import { animateToProgress } from "../../../utils/animation/animate-to-progress"
|
|
|
7
7
|
export const useTransitionStartController = ({
|
|
8
8
|
current,
|
|
9
9
|
animations,
|
|
10
|
-
system
|
|
11
|
-
onBlankStackCloseFinish,
|
|
12
|
-
onNativeCloseFinish
|
|
10
|
+
system
|
|
13
11
|
}) => {
|
|
14
12
|
const {
|
|
15
13
|
targetProgress,
|
|
@@ -37,7 +35,6 @@ export const useTransitionStartController = ({
|
|
|
37
35
|
if (blockCount > 0) {
|
|
38
36
|
return;
|
|
39
37
|
}
|
|
40
|
-
const onAnimationFinish = kind === LifecycleTransitionRequestKind.BlankStackClose ? onBlankStackCloseFinish : kind === LifecycleTransitionRequestKind.NativeClose ? onNativeCloseFinish : undefined;
|
|
41
38
|
animateToProgress({
|
|
42
39
|
target,
|
|
43
40
|
spec: transitionSpec,
|
|
@@ -45,7 +42,6 @@ export const useTransitionStartController = ({
|
|
|
45
42
|
animations,
|
|
46
43
|
targetProgress,
|
|
47
44
|
animationProgress,
|
|
48
|
-
onAnimationFinish,
|
|
49
45
|
isDragging
|
|
50
46
|
});
|
|
51
47
|
clearLifecycleTransitionRequest();
|
package/lib/module/shared/components/screen-lifecycle/hooks/use-transition-start-controller.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useAnimatedReaction","GestureStore","LifecycleTransitionRequestKind","animateToProgress","useTransitionStartController","current","animations","system","
|
|
1
|
+
{"version":3,"names":["useAnimatedReaction","GestureStore","LifecycleTransitionRequestKind","animateToProgress","useTransitionStartController","current","animations","system","targetProgress","animationProgress","pendingLifecycleRequestKind","pendingLifecycleRequestTarget","pendingLifecycleStartBlockCount","clearLifecycleTransitionRequest","actions","transitionSpec","options","isDragging","getValue","route","key","get","next","kind","target","blockCount","None","spec","emitWillAnimate","Open","entering"],"sourceRoot":"../../../../../../src","sources":["shared/components/screen-lifecycle/hooks/use-transition-start-controller.ts"],"mappings":";;AAAA,SAASA,mBAAmB,QAAQ,yBAAyB;AAG7D,SAASC,YAAY,QAAQ,+BAA+B;AAC5D,SACCC,8BAA8B,QAExB,8BAA8B;AACrC,SAASC,iBAAiB,QAAQ,8CAA8C;AAEhF,OAAO,MAAMC,4BAA4B,GAAGA,CAAC;EAC5CC,OAAO;EACPC,UAAU;EACVC;AAKD,CAAC,KAAK;EACL,MAAM;IACLC,cAAc;IACdC,iBAAiB;IACjBC,2BAA2B;IAC3BC,6BAA6B;IAC7BC;EACD,CAAC,GAAGL,MAAM;EACV,MAAM;IAAEM;EAAgC,CAAC,GAAGN,MAAM,CAACO,OAAO;EAC1D,MAAMC,cAAc,GAAGV,OAAO,CAACW,OAAO,CAACD,cAAc;EACrD,MAAME,UAAU,GAAGhB,YAAY,CAACiB,QAAQ,CAACb,OAAO,CAACc,KAAK,CAACC,GAAG,EAAE,UAAU,CAAC;EAEvEpB,mBAAmB,CAClB,MAAM;IACL,SAAS;;IACT,OAAO,CACNU,2BAA2B,CAACW,GAAG,CAAC,CAAC,EACjCV,6BAA6B,CAACU,GAAG,CAAC,CAAC,EACnCT,+BAA+B,CAACS,GAAG,CAAC,CAAC,CACrC;EACF,CAAC,EACAC,IAAI,IAAK;IACT,SAAS;;IACT,MAAM,CAACC,IAAI,EAAEC,MAAM,EAAEC,UAAU,CAAC,GAAGH,IAAI;IAEvC,IAAIC,IAAI,KAAKrB,8BAA8B,CAACwB,IAAI,EAAE;MACjD;IACD;IAEA,IAAID,UAAU,GAAG,CAAC,EAAE;MACnB;IACD;IAEAtB,iBAAiB,CAAC;MACjBqB,MAAM;MACNG,IAAI,EAAEZ,cAAc;MACpBa,eAAe,EACdL,IAAI,KAAKrB,8BAA8B,CAAC2B,IAAI,IAC5C,CAACvB,UAAU,CAACwB,QAAQ,CAACT,GAAG,CAAC,CAAC;MAC3Bf,UAAU;MACVE,cAAc;MACdC,iBAAiB;MACjBQ;IACD,CAAC,CAAC;IAEFJ,+BAA+B,CAAC,CAAC;EAClC,CACD,CAAC;AACF,CAAC","ignoreList":[]}
|
|
@@ -4,6 +4,7 @@ import { useDescriptorsStore } from "../../providers/screen/descriptors";
|
|
|
4
4
|
import { AnimationStore } from "../../stores/animation.store";
|
|
5
5
|
import { SystemStore } from "../../stores/system.store";
|
|
6
6
|
import { useScreenHistory } from "./hooks/history/use-screen-history";
|
|
7
|
+
import { useCloseCompletion } from "./hooks/use-close-completion";
|
|
7
8
|
import { useCloseTransitionIntent } from "./hooks/use-close-transition-intent";
|
|
8
9
|
import { useOpenTransitionIntent } from "./hooks/use-open-transition-intent";
|
|
9
10
|
import { useTransitionStartController } from "./hooks/use-transition-start-controller";
|
|
@@ -19,16 +20,18 @@ export const ScreenLifecycle = ({
|
|
|
19
20
|
const animations = AnimationStore.getBag(current.route.key);
|
|
20
21
|
const system = SystemStore.getBag(current.route.key);
|
|
21
22
|
const {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
} = useCloseTransitionIntent(current, system);
|
|
23
|
+
completeClose
|
|
24
|
+
} = useCloseTransitionIntent(current);
|
|
25
25
|
useOpenTransitionIntent(current, animations, system);
|
|
26
26
|
useTransitionStartController({
|
|
27
27
|
current,
|
|
28
28
|
animations,
|
|
29
|
-
system
|
|
30
|
-
|
|
31
|
-
|
|
29
|
+
system
|
|
30
|
+
});
|
|
31
|
+
useCloseCompletion({
|
|
32
|
+
closing: animations.closing,
|
|
33
|
+
animationProgress: system.animationProgress,
|
|
34
|
+
onComplete: completeClose
|
|
32
35
|
});
|
|
33
36
|
useScreenHistory(current, previous, animations);
|
|
34
37
|
return children;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useDescriptorsStore","AnimationStore","SystemStore","useScreenHistory","useCloseTransitionIntent","useOpenTransitionIntent","useTransitionStartController","ScreenLifecycle","children","current","store","previous","animations","getBag","route","key","system","
|
|
1
|
+
{"version":3,"names":["useDescriptorsStore","AnimationStore","SystemStore","useScreenHistory","useCloseCompletion","useCloseTransitionIntent","useOpenTransitionIntent","useTransitionStartController","ScreenLifecycle","children","current","store","previous","animations","getBag","route","key","system","completeClose","closing","animationProgress","onComplete"],"sourceRoot":"../../../../../src","sources":["shared/components/screen-lifecycle/index.tsx"],"mappings":";;AAAA,SAASA,mBAAmB,QAAQ,oCAAoC;AACxE,SAASC,cAAc,QAAQ,8BAA8B;AAC7D,SAASC,WAAW,QAAQ,2BAA2B;AACvD,SAASC,gBAAgB,QAAQ,oCAAoC;AACrE,SAASC,kBAAkB,QAAQ,8BAA8B;AACjE,SAASC,wBAAwB,QAAQ,qCAAqC;AAC9E,SAASC,uBAAuB,QAAQ,oCAAoC;AAC5E,SAASC,4BAA4B,QAAQ,yCAAyC;AAMtF;AACA;AACA;AACA;AACA,OAAO,MAAMC,eAAe,GAAGA,CAAC;EAAEC;AAAgB,CAAC,KAAK;EACvD,MAAMC,OAAO,GAAGV,mBAAmB,CAAEW,KAAK,IAAKA,KAAK,CAACD,OAAO,CAAC;EAC7D,MAAME,QAAQ,GAAGZ,mBAAmB,CAAEW,KAAK,IAAKA,KAAK,CAACC,QAAQ,CAAC;EAE/D,MAAMC,UAAU,GAAGZ,cAAc,CAACa,MAAM,CAACJ,OAAO,CAACK,KAAK,CAACC,GAAG,CAAC;EAC3D,MAAMC,MAAM,GAAGf,WAAW,CAACY,MAAM,CAACJ,OAAO,CAACK,KAAK,CAACC,GAAG,CAAC;EAEpD,MAAM;IAAEE;EAAc,CAAC,GAAGb,wBAAwB,CAACK,OAAO,CAAC;EAE3DJ,uBAAuB,CAACI,OAAO,EAAEG,UAAU,EAAEI,MAAM,CAAC;EAEpDV,4BAA4B,CAAC;IAC5BG,OAAO;IACPG,UAAU;IACVI;EACD,CAAC,CAAC;EAEFb,kBAAkB,CAAC;IAClBe,OAAO,EAAEN,UAAU,CAACM,OAAO;IAC3BC,iBAAiB,EAAEH,MAAM,CAACG,iBAAiB;IAC3CC,UAAU,EAAEH;EACb,CAAC,CAAC;EAEFf,gBAAgB,CAACO,OAAO,EAAEE,QAAQ,EAAEC,UAAU,CAAC;EAE/C,OAAOJ,QAAQ;AAChB,CAAC","ignoreList":[]}
|
|
@@ -1,32 +1,54 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
import { StackActions } from "@react-navigation/native";
|
|
3
|
+
import { StackActions, usePreventRemoveContext } from "@react-navigation/native";
|
|
4
4
|
import { useCallback } from "react";
|
|
5
5
|
import { useDescriptorsStore } from "../../providers/screen/descriptors";
|
|
6
|
+
import { AnimationStore } from "../../stores/animation.store";
|
|
7
|
+
import { LifecycleTransitionRequestKind, SystemStore } from "../../stores/system.store";
|
|
8
|
+
import { dispatchCloseAction } from "../../utils/navigation/close-action-replay";
|
|
6
9
|
import { useStack } from "./use-stack";
|
|
7
10
|
export function useNavigationHelpers() {
|
|
8
11
|
const route = useDescriptorsStore(store => store.current.route);
|
|
9
12
|
const navigation = useDescriptorsStore(store => store.current.navigation);
|
|
10
13
|
const requestStackDismiss = useStack(stack => stack.requestDismiss);
|
|
11
|
-
const
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
}, [route, requestStackDismiss]);
|
|
14
|
+
const {
|
|
15
|
+
preventedRoutes
|
|
16
|
+
} = usePreventRemoveContext();
|
|
17
|
+
const isRemovePrevented = preventedRoutes[route.key]?.preventRemove === true;
|
|
16
18
|
const dismissScreen = useCallback(() => {
|
|
17
19
|
const state = navigation.getState();
|
|
18
20
|
const routeIndex = state.routes.findIndex(stateRoute => stateRoute.key === route.key);
|
|
19
21
|
const routeStillPresent = routeIndex !== -1;
|
|
20
22
|
if (!routeStillPresent || routeIndex === 0) return false;
|
|
21
|
-
|
|
23
|
+
const action = {
|
|
22
24
|
...StackActions.pop(),
|
|
23
25
|
source: route.key,
|
|
24
26
|
target: state.key
|
|
27
|
+
};
|
|
28
|
+
dispatchCloseAction(action, closeAction => {
|
|
29
|
+
navigation.dispatch(closeAction);
|
|
25
30
|
});
|
|
26
31
|
return true;
|
|
27
32
|
}, [navigation, route.key]);
|
|
33
|
+
const requestDismiss = useCallback(() => {
|
|
34
|
+
if (isRemovePrevented) return false;
|
|
35
|
+
if (requestStackDismiss) {
|
|
36
|
+
if (!requestStackDismiss({
|
|
37
|
+
route
|
|
38
|
+
})) return false;
|
|
39
|
+
} else {
|
|
40
|
+
const state = navigation.getState();
|
|
41
|
+
const routeIndex = state.routes.findIndex(stateRoute => stateRoute.key === route.key);
|
|
42
|
+
if (routeIndex <= 0) return false;
|
|
43
|
+
}
|
|
44
|
+
if (!AnimationStore.getValue(route.key, "closing").get()) {
|
|
45
|
+
SystemStore.getBag(route.key).actions.requestLifecycleTransition(LifecycleTransitionRequestKind.Close, 0);
|
|
46
|
+
}
|
|
47
|
+
return true;
|
|
48
|
+
}, [isRemovePrevented, navigation, route, requestStackDismiss]);
|
|
28
49
|
return {
|
|
29
50
|
dismissScreen,
|
|
51
|
+
isRemovePrevented,
|
|
30
52
|
requestDismiss
|
|
31
53
|
};
|
|
32
54
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["StackActions","useCallback","useDescriptorsStore","useStack","useNavigationHelpers","route","store","current","navigation","requestStackDismiss","stack","requestDismiss","dismissScreen","state","getState","routeIndex","routes","findIndex","stateRoute","
|
|
1
|
+
{"version":3,"names":["StackActions","usePreventRemoveContext","useCallback","useDescriptorsStore","AnimationStore","LifecycleTransitionRequestKind","SystemStore","dispatchCloseAction","useStack","useNavigationHelpers","route","store","current","navigation","requestStackDismiss","stack","requestDismiss","preventedRoutes","isRemovePrevented","key","preventRemove","dismissScreen","state","getState","routeIndex","routes","findIndex","stateRoute","routeStillPresent","action","pop","source","target","closeAction","dispatch","getValue","get","getBag","actions","requestLifecycleTransition","Close"],"sourceRoot":"../../../../../src","sources":["shared/hooks/navigation/use-navigation-helpers.ts"],"mappings":";;AAAA,SACCA,YAAY,EACZC,uBAAuB,QACjB,0BAA0B;AACjC,SAASC,WAAW,QAAQ,OAAO;AACnC,SAASC,mBAAmB,QAAQ,oCAAoC;AACxE,SAASC,cAAc,QAAQ,8BAA8B;AAC7D,SACCC,8BAA8B,EAC9BC,WAAW,QACL,2BAA2B;AAClC,SAASC,mBAAmB,QAAQ,4CAA4C;AAChF,SAASC,QAAQ,QAAQ,aAAa;AAEtC,OAAO,SAASC,oBAAoBA,CAAA,EAAG;EACtC,MAAMC,KAAK,GAAGP,mBAAmB,CAAEQ,KAAK,IAAKA,KAAK,CAACC,OAAO,CAACF,KAAK,CAAC;EACjE,MAAMG,UAAU,GAAGV,mBAAmB,CAAEQ,KAAK,IAAKA,KAAK,CAACC,OAAO,CAACC,UAAU,CAAC;EAC3E,MAAMC,mBAAmB,GAAGN,QAAQ,CAAEO,KAAK,IAAKA,KAAK,CAACC,cAAc,CAAC;EACrE,MAAM;IAAEC;EAAgB,CAAC,GAAGhB,uBAAuB,CAAC,CAAC;EACrD,MAAMiB,iBAAiB,GAAGD,eAAe,CAACP,KAAK,CAACS,GAAG,CAAC,EAAEC,aAAa,KAAK,IAAI;EAE5E,MAAMC,aAAa,GAAGnB,WAAW,CAAC,MAAe;IAChD,MAAMoB,KAAK,GAAGT,UAAU,CAACU,QAAQ,CAAC,CAAC;IACnC,MAAMC,UAAU,GAAGF,KAAK,CAACG,MAAM,CAACC,SAAS,CACvCC,UAAU,IAAKA,UAAU,CAACR,GAAG,KAAKT,KAAK,CAACS,GAC1C,CAAC;IACD,MAAMS,iBAAiB,GAAGJ,UAAU,KAAK,CAAC,CAAC;IAC3C,IAAI,CAACI,iBAAiB,IAAIJ,UAAU,KAAK,CAAC,EAAE,OAAO,KAAK;IAExD,MAAMK,MAAM,GAAG;MACd,GAAG7B,YAAY,CAAC8B,GAAG,CAAC,CAAC;MACrBC,MAAM,EAAErB,KAAK,CAACS,GAAG;MACjBa,MAAM,EAAEV,KAAK,CAACH;IACf,CAAC;IACDZ,mBAAmB,CAACsB,MAAM,EAAGI,WAAW,IAAK;MAC5CpB,UAAU,CAACqB,QAAQ,CAACD,WAAW,CAAC;IACjC,CAAC,CAAC;IACF,OAAO,IAAI;EACZ,CAAC,EAAE,CAACpB,UAAU,EAAEH,KAAK,CAACS,GAAG,CAAC,CAAC;EAE3B,MAAMH,cAAc,GAAGd,WAAW,CAAC,MAAe;IACjD,IAAIgB,iBAAiB,EAAE,OAAO,KAAK;IAEnC,IAAIJ,mBAAmB,EAAE;MACxB,IAAI,CAACA,mBAAmB,CAAC;QAAEJ;MAAM,CAAC,CAAC,EAAE,OAAO,KAAK;IAClD,CAAC,MAAM;MACN,MAAMY,KAAK,GAAGT,UAAU,CAACU,QAAQ,CAAC,CAAC;MACnC,MAAMC,UAAU,GAAGF,KAAK,CAACG,MAAM,CAACC,SAAS,CACvCC,UAAU,IAAKA,UAAU,CAACR,GAAG,KAAKT,KAAK,CAACS,GAC1C,CAAC;MACD,IAAIK,UAAU,IAAI,CAAC,EAAE,OAAO,KAAK;IAClC;IAEA,IAAI,CAACpB,cAAc,CAAC+B,QAAQ,CAACzB,KAAK,CAACS,GAAG,EAAE,SAAS,CAAC,CAACiB,GAAG,CAAC,CAAC,EAAE;MACzD9B,WAAW,CAAC+B,MAAM,CAAC3B,KAAK,CAACS,GAAG,CAAC,CAACmB,OAAO,CAACC,0BAA0B,CAC/DlC,8BAA8B,CAACmC,KAAK,EACpC,CACD,CAAC;IACF;IACA,OAAO,IAAI;EACZ,CAAC,EAAE,CAACtB,iBAAiB,EAAEL,UAAU,EAAEH,KAAK,EAAEI,mBAAmB,CAAC,CAAC;EAE/D,OAAO;IAAEO,aAAa;IAAEH,iBAAiB;IAAEF;EAAe,CAAC;AAC5D","ignoreList":[]}
|
|
@@ -30,8 +30,7 @@ export const applyMeasuredBoundsWrites = params => {
|
|
|
30
30
|
}
|
|
31
31
|
if (linkWrite?.type === "destination") {
|
|
32
32
|
setDestination(linkWrite.pairKey, linkId, currentScreenKey, measured, preparedStyles, group, {
|
|
33
|
-
handoff
|
|
34
|
-
escapeClipping
|
|
33
|
+
handoff
|
|
35
34
|
});
|
|
36
35
|
}
|
|
37
36
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["setEntry","setDestination","setSource","applyMeasuredBoundsWrites","params","entryTag","linkId","group","currentScreenKey","measured","preparedStyles","linkWrite","handoff","escapeClipping","bounds","type","pairKey"],"sourceRoot":"../../../../../src","sources":["shared/providers/helpers/measured-bounds-writes.ts"],"mappings":";;AACA,SAASA,QAAQ,QAAQ,uCAAuC;AAChE,SAASC,cAAc,EAAEC,SAAS,QAAQ,qCAAqC;AAyB/E,OAAO,MAAMC,yBAAyB,GACrCC,MAAuC,IACnC;EACJ,SAAS;;EACT,MAAM;IACLC,QAAQ;IACRC,MAAM;IACNC,KAAK;IACLC,gBAAgB;IAChBC,QAAQ;IACRC,cAAc;IACdC,SAAS;IACTC,OAAO;IACPC;EACD,CAAC,GAAGT,MAAM;;EAEV;EACA;EACAJ,QAAQ,CAACK,QAAQ,EAAEG,gBAAgB,EAAE;IACpCM,MAAM,EAAEL;EACT,CAAC,CAAC;EAEF,IAAIE,SAAS,EAAEI,IAAI,KAAK,QAAQ,EAAE;IACjCb,SAAS,CACRS,SAAS,CAACK,OAAO,EACjBV,MAAM,EACNE,gBAAgB,EAChBC,QAAQ,EACRC,cAAc,EACdH,KAAK,EACL;MAAEK,OAAO;MAAEC;IAAe,CAC3B,CAAC;EACF;EAEA,IAAIF,SAAS,EAAEI,IAAI,KAAK,aAAa,EAAE;IACtCd,cAAc,CACbU,SAAS,CAACK,OAAO,EACjBV,MAAM,EACNE,gBAAgB,EAChBC,QAAQ,EACRC,cAAc,EACdH,KAAK,EACL;MAAEK
|
|
1
|
+
{"version":3,"names":["setEntry","setDestination","setSource","applyMeasuredBoundsWrites","params","entryTag","linkId","group","currentScreenKey","measured","preparedStyles","linkWrite","handoff","escapeClipping","bounds","type","pairKey"],"sourceRoot":"../../../../../src","sources":["shared/providers/helpers/measured-bounds-writes.ts"],"mappings":";;AACA,SAASA,QAAQ,QAAQ,uCAAuC;AAChE,SAASC,cAAc,EAAEC,SAAS,QAAQ,qCAAqC;AAyB/E,OAAO,MAAMC,yBAAyB,GACrCC,MAAuC,IACnC;EACJ,SAAS;;EACT,MAAM;IACLC,QAAQ;IACRC,MAAM;IACNC,KAAK;IACLC,gBAAgB;IAChBC,QAAQ;IACRC,cAAc;IACdC,SAAS;IACTC,OAAO;IACPC;EACD,CAAC,GAAGT,MAAM;;EAEV;EACA;EACAJ,QAAQ,CAACK,QAAQ,EAAEG,gBAAgB,EAAE;IACpCM,MAAM,EAAEL;EACT,CAAC,CAAC;EAEF,IAAIE,SAAS,EAAEI,IAAI,KAAK,QAAQ,EAAE;IACjCb,SAAS,CACRS,SAAS,CAACK,OAAO,EACjBV,MAAM,EACNE,gBAAgB,EAChBC,QAAQ,EACRC,cAAc,EACdH,KAAK,EACL;MAAEK,OAAO;MAAEC;IAAe,CAC3B,CAAC;EACF;EAEA,IAAIF,SAAS,EAAEI,IAAI,KAAK,aAAa,EAAE;IACtCd,cAAc,CACbU,SAAS,CAACK,OAAO,EACjBV,MAAM,EACNE,gBAAgB,EAChBC,QAAQ,EACRC,cAAc,EACdH,KAAK,EACL;MAAEK;IAAQ,CACX,CAAC;EACF;AACD,CAAC","ignoreList":[]}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
+
import { usePreventRemoveContext } from "@react-navigation/native";
|
|
3
4
|
import { useMemo } from "react";
|
|
4
5
|
import { useDescriptorsStore } from "../../descriptors";
|
|
5
6
|
import { useGestureStore } from "../gestures.provider";
|
|
@@ -8,10 +9,16 @@ export function useScreenGestureConfig() {
|
|
|
8
9
|
const gestureContext = useGestureStore();
|
|
9
10
|
const options = useDescriptorsStore(store => store.options);
|
|
10
11
|
const isFirstKey = useDescriptorsStore(store => store.derivations.isFirstKey);
|
|
12
|
+
const currentScreenKey = useDescriptorsStore(store => store.derivations.currentScreenKey);
|
|
13
|
+
const {
|
|
14
|
+
preventedRoutes
|
|
15
|
+
} = usePreventRemoveContext();
|
|
16
|
+
const isRemovePrevented = preventedRoutes[currentScreenKey]?.preventRemove === true;
|
|
11
17
|
return useMemo(() => resolveScreenGestureConfig({
|
|
12
18
|
options,
|
|
13
19
|
isFirstKey,
|
|
14
|
-
gestureContext
|
|
15
|
-
|
|
20
|
+
gestureContext,
|
|
21
|
+
isRemovePrevented
|
|
22
|
+
}), [isFirstKey, options, gestureContext, isRemovePrevented]);
|
|
16
23
|
}
|
|
17
24
|
//# sourceMappingURL=use-screen-gesture-config.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["useMemo","useDescriptorsStore","useGestureStore","resolveScreenGestureConfig","useScreenGestureConfig","gestureContext","options","store","isFirstKey","derivations"],"sourceRoot":"../../../../../../../src","sources":["shared/providers/screen/gestures/hooks/use-screen-gesture-config.ts"],"mappings":";;AAAA,SAASA,OAAO,QAAQ,OAAO;AAC/B,SAASC,mBAAmB,QAAQ,mBAAmB;AACvD,SAASC,eAAe,QAAQ,sBAAsB;AACtD,SAASC,0BAA0B,QAAQ,kBAAkB;AAG7D,OAAO,SAASC,sBAAsBA,CAAA,EAAwB;EAC7D,MAAMC,cAAc,GAAGH,eAAe,CAAC,CAAC;EACxC,MAAMI,OAAO,GAAGL,mBAAmB,CAAEM,KAAK,IAAKA,KAAK,CAACD,OAAO,CAAC;EAC7D,MAAME,UAAU,GAAGP,mBAAmB,CACpCM,KAAK,IAAKA,KAAK,CAACE,WAAW,CAACD,UAC9B,CAAC;
|
|
1
|
+
{"version":3,"names":["usePreventRemoveContext","useMemo","useDescriptorsStore","useGestureStore","resolveScreenGestureConfig","useScreenGestureConfig","gestureContext","options","store","isFirstKey","derivations","currentScreenKey","preventedRoutes","isRemovePrevented","preventRemove"],"sourceRoot":"../../../../../../../src","sources":["shared/providers/screen/gestures/hooks/use-screen-gesture-config.ts"],"mappings":";;AAAA,SAASA,uBAAuB,QAAQ,0BAA0B;AAClE,SAASC,OAAO,QAAQ,OAAO;AAC/B,SAASC,mBAAmB,QAAQ,mBAAmB;AACvD,SAASC,eAAe,QAAQ,sBAAsB;AACtD,SAASC,0BAA0B,QAAQ,kBAAkB;AAG7D,OAAO,SAASC,sBAAsBA,CAAA,EAAwB;EAC7D,MAAMC,cAAc,GAAGH,eAAe,CAAC,CAAC;EACxC,MAAMI,OAAO,GAAGL,mBAAmB,CAAEM,KAAK,IAAKA,KAAK,CAACD,OAAO,CAAC;EAC7D,MAAME,UAAU,GAAGP,mBAAmB,CACpCM,KAAK,IAAKA,KAAK,CAACE,WAAW,CAACD,UAC9B,CAAC;EACD,MAAME,gBAAgB,GAAGT,mBAAmB,CAC1CM,KAAK,IAAKA,KAAK,CAACE,WAAW,CAACC,gBAC9B,CAAC;EACD,MAAM;IAAEC;EAAgB,CAAC,GAAGZ,uBAAuB,CAAC,CAAC;EACrD,MAAMa,iBAAiB,GACtBD,eAAe,CAACD,gBAAgB,CAAC,EAAEG,aAAa,KAAK,IAAI;EAE1D,OAAOb,OAAO,CACb,MACCG,0BAA0B,CAAC;IAC1BG,OAAO;IACPE,UAAU;IACVH,cAAc;IACdO;EACD,CAAC,CAAC,EACH,CAACJ,UAAU,EAAEF,OAAO,EAAED,cAAc,EAAEO,iBAAiB,CACxD,CAAC;AACF","ignoreList":[]}
|
|
@@ -68,7 +68,7 @@ export const trackPanGesture = (event, rawEvent, gestures, dimensions) => {
|
|
|
68
68
|
velocity
|
|
69
69
|
};
|
|
70
70
|
};
|
|
71
|
-
export const finalizePanRelease = (release, runtime,
|
|
71
|
+
export const finalizePanRelease = (release, runtime, dimensions, rawEvent, requestDismiss, gestureCompositionOwner) => {
|
|
72
72
|
"worklet";
|
|
73
73
|
|
|
74
74
|
const {
|
|
@@ -111,12 +111,8 @@ export const finalizePanRelease = (release, runtime, dismissScreen, dimensions,
|
|
|
111
111
|
system.targetProgress.set(plan.target);
|
|
112
112
|
return;
|
|
113
113
|
}
|
|
114
|
-
if (plan.shouldDismiss && requestDismiss) {
|
|
115
|
-
runOnJS(requestDismiss)();
|
|
116
|
-
}
|
|
117
114
|
animateToProgress({
|
|
118
115
|
target: plan.target,
|
|
119
|
-
onAnimationFinish: plan.shouldDismiss ? dismissScreen : undefined,
|
|
120
116
|
spec: plan.transitionSpec,
|
|
121
117
|
emitWillAnimate: false,
|
|
122
118
|
markEntering: false,
|
|
@@ -125,5 +121,8 @@ export const finalizePanRelease = (release, runtime, dismissScreen, dimensions,
|
|
|
125
121
|
animations,
|
|
126
122
|
initialVelocity: plan.progressVelocity
|
|
127
123
|
});
|
|
124
|
+
if (plan.shouldDismiss && requestDismiss) {
|
|
125
|
+
runOnJS(requestDismiss)();
|
|
126
|
+
}
|
|
128
127
|
};
|
|
129
128
|
//# sourceMappingURL=pan-lifecycle.js.map
|