react-native-screen-transitions 3.2.1 → 3.3.0-beta.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/README.md +1 -1
- package/lib/commonjs/shared/components/create-transition-aware-component.js +8 -2
- package/lib/commonjs/shared/components/create-transition-aware-component.js.map +1 -1
- package/lib/commonjs/shared/components/{root-transition-aware.js → screen-container.js} +28 -12
- package/lib/commonjs/shared/components/screen-container.js.map +1 -0
- package/lib/commonjs/shared/configs/presets.js +3 -3
- package/lib/commonjs/shared/configs/presets.js.map +1 -1
- package/lib/commonjs/shared/configs/specs.js +6 -1
- package/lib/commonjs/shared/configs/specs.js.map +1 -1
- package/lib/commonjs/shared/hooks/gestures/use-build-gestures.js +36 -188
- package/lib/commonjs/shared/hooks/gestures/use-build-gestures.js.map +1 -1
- package/lib/commonjs/shared/hooks/gestures/use-screen-gesture-handlers.js +334 -0
- package/lib/commonjs/shared/hooks/gestures/use-screen-gesture-handlers.js.map +1 -0
- package/lib/commonjs/shared/hooks/gestures/use-scroll-registry.js +47 -4
- package/lib/commonjs/shared/hooks/gestures/use-scroll-registry.js.map +1 -1
- package/lib/commonjs/shared/hooks/lifecycle/use-close-transition.js +3 -3
- package/lib/commonjs/shared/hooks/lifecycle/use-close-transition.js.map +1 -1
- package/lib/commonjs/shared/hooks/lifecycle/use-open-transition.js +25 -3
- package/lib/commonjs/shared/hooks/lifecycle/use-open-transition.js.map +1 -1
- package/lib/commonjs/shared/hooks/navigation/use-screen-state.js +61 -2
- package/lib/commonjs/shared/hooks/navigation/use-screen-state.js.map +1 -1
- package/lib/commonjs/shared/hooks/use-backdrop-pointer-events.js +32 -0
- package/lib/commonjs/shared/hooks/use-backdrop-pointer-events.js.map +1 -0
- package/lib/commonjs/shared/providers/gestures.provider.js +4 -2
- package/lib/commonjs/shared/providers/gestures.provider.js.map +1 -1
- package/lib/commonjs/shared/providers/screen/screen-composer.js +2 -2
- package/lib/commonjs/shared/providers/screen/screen-composer.js.map +1 -1
- package/lib/commonjs/shared/utils/animation/{start-screen-transition.js → animate-to-progress.js} +11 -7
- package/lib/commonjs/shared/utils/animation/animate-to-progress.js.map +1 -0
- package/lib/commonjs/shared/utils/gesture/check-gesture-activation.js +71 -0
- package/lib/commonjs/shared/utils/gesture/check-gesture-activation.js.map +1 -1
- package/lib/commonjs/shared/utils/gesture/determine-snap-target.js +56 -0
- package/lib/commonjs/shared/utils/gesture/determine-snap-target.js.map +1 -0
- package/lib/commonjs/shared/utils/gesture/validate-snap-points.js +31 -0
- package/lib/commonjs/shared/utils/gesture/validate-snap-points.js.map +1 -0
- package/lib/commonjs/shared/utils/gesture/velocity.js +11 -0
- package/lib/commonjs/shared/utils/gesture/velocity.js.map +1 -1
- package/lib/module/shared/components/create-transition-aware-component.js +8 -2
- package/lib/module/shared/components/create-transition-aware-component.js.map +1 -1
- package/lib/module/shared/components/screen-container.js +64 -0
- package/lib/module/shared/components/screen-container.js.map +1 -0
- package/lib/module/shared/configs/presets.js +3 -3
- package/lib/module/shared/configs/presets.js.map +1 -1
- package/lib/module/shared/configs/specs.js +5 -0
- package/lib/module/shared/configs/specs.js.map +1 -1
- package/lib/module/shared/hooks/gestures/use-build-gestures.js +36 -187
- package/lib/module/shared/hooks/gestures/use-build-gestures.js.map +1 -1
- package/lib/module/shared/hooks/gestures/use-screen-gesture-handlers.js +328 -0
- package/lib/module/shared/hooks/gestures/use-screen-gesture-handlers.js.map +1 -0
- package/lib/module/shared/hooks/gestures/use-scroll-registry.js +47 -4
- package/lib/module/shared/hooks/gestures/use-scroll-registry.js.map +1 -1
- package/lib/module/shared/hooks/lifecycle/use-close-transition.js +3 -3
- package/lib/module/shared/hooks/lifecycle/use-close-transition.js.map +1 -1
- package/lib/module/shared/hooks/lifecycle/use-open-transition.js +25 -3
- package/lib/module/shared/hooks/lifecycle/use-open-transition.js.map +1 -1
- package/lib/module/shared/hooks/navigation/use-screen-state.js +63 -4
- package/lib/module/shared/hooks/navigation/use-screen-state.js.map +1 -1
- package/lib/module/shared/hooks/use-backdrop-pointer-events.js +28 -0
- package/lib/module/shared/hooks/use-backdrop-pointer-events.js.map +1 -0
- package/lib/module/shared/providers/gestures.provider.js +4 -2
- package/lib/module/shared/providers/gestures.provider.js.map +1 -1
- package/lib/module/shared/providers/screen/screen-composer.js +2 -2
- package/lib/module/shared/providers/screen/screen-composer.js.map +1 -1
- package/lib/module/shared/utils/animation/{start-screen-transition.js → animate-to-progress.js} +9 -5
- package/lib/module/shared/utils/animation/animate-to-progress.js.map +1 -0
- package/lib/module/shared/utils/gesture/check-gesture-activation.js +70 -0
- package/lib/module/shared/utils/gesture/check-gesture-activation.js.map +1 -1
- package/lib/module/shared/utils/gesture/determine-snap-target.js +52 -0
- package/lib/module/shared/utils/gesture/determine-snap-target.js.map +1 -0
- package/lib/module/shared/utils/gesture/validate-snap-points.js +26 -0
- package/lib/module/shared/utils/gesture/validate-snap-points.js.map +1 -0
- package/lib/module/shared/utils/gesture/velocity.js +11 -0
- package/lib/module/shared/utils/gesture/velocity.js.map +1 -1
- package/lib/typescript/shared/components/create-transition-aware-component.d.ts.map +1 -1
- package/lib/typescript/shared/components/screen-container.d.ts +6 -0
- package/lib/typescript/shared/components/screen-container.d.ts.map +1 -0
- package/lib/typescript/shared/configs/specs.d.ts +1 -0
- package/lib/typescript/shared/configs/specs.d.ts.map +1 -1
- package/lib/typescript/shared/hooks/gestures/use-build-gestures.d.ts +1 -1
- package/lib/typescript/shared/hooks/gestures/use-build-gestures.d.ts.map +1 -1
- package/lib/typescript/shared/hooks/gestures/use-screen-gesture-handlers.d.ts +34 -0
- package/lib/typescript/shared/hooks/gestures/use-screen-gesture-handlers.d.ts.map +1 -0
- package/lib/typescript/shared/hooks/gestures/use-scroll-registry.d.ts +5 -1
- package/lib/typescript/shared/hooks/gestures/use-scroll-registry.d.ts.map +1 -1
- package/lib/typescript/shared/hooks/lifecycle/use-open-transition.d.ts.map +1 -1
- package/lib/typescript/shared/hooks/navigation/use-screen-state.d.ts +14 -0
- package/lib/typescript/shared/hooks/navigation/use-screen-state.d.ts.map +1 -1
- package/lib/typescript/shared/hooks/use-backdrop-pointer-events.d.ts +15 -0
- package/lib/typescript/shared/hooks/use-backdrop-pointer-events.d.ts.map +1 -0
- package/lib/typescript/shared/providers/gestures.provider.d.ts +1 -0
- package/lib/typescript/shared/providers/gestures.provider.d.ts.map +1 -1
- package/lib/typescript/shared/types/animation.types.d.ts +28 -2
- package/lib/typescript/shared/types/animation.types.d.ts.map +1 -1
- package/lib/typescript/shared/types/screen.types.d.ts +26 -0
- package/lib/typescript/shared/types/screen.types.d.ts.map +1 -1
- package/lib/typescript/shared/utils/animation/animate-to-progress.d.ts +19 -0
- package/lib/typescript/shared/utils/animation/animate-to-progress.d.ts.map +1 -0
- package/lib/typescript/shared/utils/gesture/check-gesture-activation.d.ts +24 -0
- package/lib/typescript/shared/utils/gesture/check-gesture-activation.d.ts.map +1 -1
- package/lib/typescript/shared/utils/gesture/determine-snap-target.d.ts +26 -0
- package/lib/typescript/shared/utils/gesture/determine-snap-target.d.ts.map +1 -0
- package/lib/typescript/shared/utils/gesture/validate-snap-points.d.ts +13 -0
- package/lib/typescript/shared/utils/gesture/validate-snap-points.d.ts.map +1 -0
- package/lib/typescript/shared/utils/gesture/velocity.d.ts +1 -0
- package/lib/typescript/shared/utils/gesture/velocity.d.ts.map +1 -1
- package/package.json +3 -2
- package/src/shared/__tests__/determine-snap-target.test.ts +268 -0
- package/src/shared/__tests__/gesture-activation.test.ts +247 -0
- package/src/shared/__tests__/validate-snap-points.test.ts +125 -0
- package/src/shared/components/create-transition-aware-component.tsx +11 -1
- package/src/shared/components/screen-container.tsx +65 -0
- package/src/shared/configs/presets.ts +3 -3
- package/src/shared/configs/specs.ts +6 -0
- package/src/shared/hooks/gestures/use-build-gestures.tsx +33 -253
- package/src/shared/hooks/gestures/use-screen-gesture-handlers.ts +436 -0
- package/src/shared/hooks/gestures/use-scroll-registry.tsx +52 -1
- package/src/shared/hooks/lifecycle/use-close-transition.ts +3 -3
- package/src/shared/hooks/lifecycle/use-open-transition.ts +27 -3
- package/src/shared/hooks/navigation/use-screen-state.tsx +106 -2
- package/src/shared/hooks/use-backdrop-pointer-events.ts +32 -0
- package/src/shared/providers/gestures.provider.tsx +3 -2
- package/src/shared/providers/screen/screen-composer.tsx +2 -2
- package/src/shared/types/animation.types.ts +29 -2
- package/src/shared/types/screen.types.ts +29 -0
- package/src/shared/utils/animation/{start-screen-transition.ts → animate-to-progress.ts} +19 -7
- package/src/shared/utils/gesture/check-gesture-activation.ts +78 -0
- package/src/shared/utils/gesture/determine-snap-target.ts +75 -0
- package/src/shared/utils/gesture/validate-snap-points.ts +37 -0
- package/src/shared/utils/gesture/velocity.ts +10 -0
- package/lib/commonjs/shared/components/root-transition-aware.js.map +0 -1
- package/lib/commonjs/shared/hooks/use-stack-pointer-events.js +0 -23
- package/lib/commonjs/shared/hooks/use-stack-pointer-events.js.map +0 -1
- package/lib/commonjs/shared/utils/animation/start-screen-transition.js.map +0 -1
- package/lib/module/shared/components/root-transition-aware.js +0 -48
- package/lib/module/shared/components/root-transition-aware.js.map +0 -1
- package/lib/module/shared/hooks/use-stack-pointer-events.js +0 -20
- package/lib/module/shared/hooks/use-stack-pointer-events.js.map +0 -1
- package/lib/module/shared/utils/animation/start-screen-transition.js.map +0 -1
- package/lib/typescript/shared/components/root-transition-aware.d.ts +0 -6
- package/lib/typescript/shared/components/root-transition-aware.d.ts.map +0 -1
- package/lib/typescript/shared/hooks/use-stack-pointer-events.d.ts +0 -10
- package/lib/typescript/shared/hooks/use-stack-pointer-events.d.ts.map +0 -1
- package/lib/typescript/shared/utils/animation/start-screen-transition.d.ts +0 -13
- package/lib/typescript/shared/utils/animation/start-screen-transition.d.ts.map +0 -1
- package/src/shared/components/root-transition-aware.tsx +0 -49
- package/src/shared/hooks/use-stack-pointer-events.ts +0 -15
|
@@ -151,7 +151,17 @@ export type TransitionInterpolatedStyle = {
|
|
|
151
151
|
*/
|
|
152
152
|
contentStyle?: StyleProps;
|
|
153
153
|
/**
|
|
154
|
-
* Animated style for
|
|
154
|
+
* Animated style for the semi-transparent backdrop layer behind screen content.
|
|
155
|
+
*
|
|
156
|
+
* @example
|
|
157
|
+
* backdropStyle: {
|
|
158
|
+
* backgroundColor: "black",
|
|
159
|
+
* opacity: interpolate(progress, [0, 1], [0, 0.5]),
|
|
160
|
+
* }
|
|
161
|
+
*/
|
|
162
|
+
backdropStyle?: StyleProps;
|
|
163
|
+
/**
|
|
164
|
+
* @deprecated Use `backdropStyle` instead. Will be removed in next major version.
|
|
155
165
|
*/
|
|
156
166
|
overlayStyle?: StyleProps;
|
|
157
167
|
/**
|
|
@@ -164,10 +174,26 @@ export type TransitionInterpolatedStyle = {
|
|
|
164
174
|
*/
|
|
165
175
|
export type AnimationConfig = WithSpringConfig | WithTimingConfig;
|
|
166
176
|
/**
|
|
167
|
-
* Defines separate animation configurations for
|
|
177
|
+
* Defines separate animation configurations for screen transitions and snap point changes.
|
|
168
178
|
*/
|
|
169
179
|
export interface TransitionSpec {
|
|
180
|
+
/**
|
|
181
|
+
* Animation config for opening/entering a screen.
|
|
182
|
+
*/
|
|
170
183
|
open?: AnimationConfig;
|
|
184
|
+
/**
|
|
185
|
+
* Animation config for closing/exiting a screen.
|
|
186
|
+
*/
|
|
171
187
|
close?: AnimationConfig;
|
|
188
|
+
/**
|
|
189
|
+
* Animation config for expanding to a higher snap point.
|
|
190
|
+
* Uses lower intensity than `open` to match smaller movement distances.
|
|
191
|
+
*/
|
|
192
|
+
expand?: AnimationConfig;
|
|
193
|
+
/**
|
|
194
|
+
* Animation config for collapsing to a lower snap point.
|
|
195
|
+
* Uses lower intensity than `close` to match smaller movement distances.
|
|
196
|
+
*/
|
|
197
|
+
collapse?: AnimationConfig;
|
|
172
198
|
}
|
|
173
199
|
//# sourceMappingURL=animation.types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"animation.types.d.ts","sourceRoot":"","sources":["../../../../src/shared/types/animation.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,MAAM,WAAW,yBAAyB;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE;QACR;;WAEG;QACH,MAAM,EAAE,MAAM,CAAC;KACf,CAAC;IACF,MAAM,EAAE,UAAU,CAAC;CACnB;AAED,MAAM,MAAM,qBAAqB,GAAG;IACnC;;;;;;;OAOG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;;;;OAMG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;;;;;OAMG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;;;OAIG;IACH,OAAO,EAAE,aAAa,CAAC;IAEvB;;;;;;;;;;OAUG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE/B;;OAEG;IACH,KAAK,EAAE,cAAc,CAAC;CACtB,CAAC;AAEF,MAAM,WAAW,wBAAwB;IACxC;;OAEG;IACH,QAAQ,EAAE,qBAAqB,GAAG,SAAS,CAAC;IAE5C;;OAEG;IACH,OAAO,EAAE,qBAAqB,CAAC;IAE/B;;OAEG;IACH,IAAI,EAAE,qBAAqB,GAAG,SAAS,CAAC;IAExC;;OAEG;IACH,OAAO,EAAE;QACR;;WAEG;QACH,MAAM,EAAE,MAAM,CAAC;KACf,CAAC;IAEF;;OAEG;IACH,MAAM,EAAE,UAAU,CAAC;IAEnB;;;OAGG;IACH,aAAa,CAAC,EAAE,KAAK,CAAC;IAEtB;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;;;;;;;;OAUG;IACH,aAAa,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,MAAM,EAAE,cAAc,CAAC;IAEvB;;OAEG;IACH,MAAM,EAAE,qBAAqB,CAAC;IAE9B;;;OAGG;IACH,QAAQ,EAAE,qBAAqB,GAAG,SAAS,CAAC;IAE5C;;;OAGG;IACH,qBAAqB,EAAE,OAAO,CAAC;IAE/B;;;OAGG;IACH,YAAY,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,MAAM,uBAAuB,GAAG,CACrC,KAAK,EAAE,wBAAwB,KAC3B,2BAA2B,CAAC;AAEjC,MAAM,MAAM,2BAA2B,GAAG;IACzC;;OAEG;IACH,YAAY,CAAC,EAAE,UAAU,CAAC;IAE1B;;OAEG;IACH,YAAY,CAAC,EAAE,UAAU,CAAC;IAE1B;;OAEG;IACH,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;CACrC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;AAElE;;GAEG;AACH,MAAM,WAAW,cAAc;IAC9B,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB,KAAK,CAAC,EAAE,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"animation.types.d.ts","sourceRoot":"","sources":["../../../../src/shared/types/animation.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,UAAU,EACV,gBAAgB,EAChB,gBAAgB,EAChB,MAAM,yBAAyB,CAAC;AACjC,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,gCAAgC,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAC7C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAEpD,MAAM,WAAW,yBAAyB;IACzC,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE;QACR;;WAEG;QACH,MAAM,EAAE,MAAM,CAAC;KACf,CAAC;IACF,MAAM,EAAE,UAAU,CAAC;CACnB;AAED,MAAM,MAAM,qBAAqB,GAAG;IACnC;;;;;;;OAOG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;;;;OAMG;IACH,OAAO,EAAE,MAAM,CAAC;IAEhB;;;;;;OAMG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;;OAIG;IACH,SAAS,EAAE,MAAM,CAAC;IAElB;;;;OAIG;IACH,OAAO,EAAE,aAAa,CAAC;IAEvB;;;;;;;;;;OAUG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE/B;;OAEG;IACH,KAAK,EAAE,cAAc,CAAC;CACtB,CAAC;AAEF,MAAM,WAAW,wBAAwB;IACxC;;OAEG;IACH,QAAQ,EAAE,qBAAqB,GAAG,SAAS,CAAC;IAE5C;;OAEG;IACH,OAAO,EAAE,qBAAqB,CAAC;IAE/B;;OAEG;IACH,IAAI,EAAE,qBAAqB,GAAG,SAAS,CAAC;IAExC;;OAEG;IACH,OAAO,EAAE;QACR;;WAEG;QACH,MAAM,EAAE,MAAM,CAAC;KACf,CAAC;IAEF;;OAEG;IACH,MAAM,EAAE,UAAU,CAAC;IAEnB;;;OAGG;IACH,aAAa,CAAC,EAAE,KAAK,CAAC;IAEtB;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IAEjB;;OAEG;IACH,QAAQ,EAAE,MAAM,CAAC;IAEjB;;;;;;;;;;OAUG;IACH,aAAa,EAAE,MAAM,CAAC;IAEtB;;OAEG;IACH,MAAM,EAAE,cAAc,CAAC;IAEvB;;OAEG;IACH,MAAM,EAAE,qBAAqB,CAAC;IAE9B;;;OAGG;IACH,QAAQ,EAAE,qBAAqB,GAAG,SAAS,CAAC;IAE5C;;;OAGG;IACH,qBAAqB,EAAE,OAAO,CAAC;IAE/B;;;OAGG;IACH,YAAY,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,MAAM,uBAAuB,GAAG,CACrC,KAAK,EAAE,wBAAwB,KAC3B,2BAA2B,CAAC;AAEjC,MAAM,MAAM,2BAA2B,GAAG;IACzC;;OAEG;IACH,YAAY,CAAC,EAAE,UAAU,CAAC;IAE1B;;;;;;;;OAQG;IACH,aAAa,CAAC,EAAE,UAAU,CAAC;IAE3B;;OAEG;IACH,YAAY,CAAC,EAAE,UAAU,CAAC;IAE1B;;OAEG;IACH,CAAC,EAAE,EAAE,MAAM,GAAG,UAAU,GAAG,SAAS,CAAC;CACrC,CAAC;AAEF;;GAEG;AACH,MAAM,MAAM,eAAe,GAAG,gBAAgB,GAAG,gBAAgB,CAAC;AAElE;;GAEG;AACH,MAAM,WAAW,cAAc;IAC9B;;OAEG;IACH,IAAI,CAAC,EAAE,eAAe,CAAC;IACvB;;OAEG;IACH,KAAK,CAAC,EAAE,eAAe,CAAC;IACxB;;;OAGG;IACH,MAAM,CAAC,EAAE,eAAe,CAAC;IACzB;;;OAGG;IACH,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC3B"}
|
|
@@ -116,5 +116,31 @@ export type ScreenTransitionConfig = {
|
|
|
116
116
|
* @default false
|
|
117
117
|
*/
|
|
118
118
|
experimental_enableHighRefreshRate?: boolean;
|
|
119
|
+
/**
|
|
120
|
+
* Describes heights where a screen can rest, as fractions of screen height.
|
|
121
|
+
* Pass an array of ascending values from 0 to 1.
|
|
122
|
+
*
|
|
123
|
+
* @example
|
|
124
|
+
* snapPoints={[0.5, 1.0]} // 50% and 100% of screen height
|
|
125
|
+
*
|
|
126
|
+
* @default [1.0]
|
|
127
|
+
*/
|
|
128
|
+
snapPoints?: number[];
|
|
129
|
+
/**
|
|
130
|
+
* The initial snap point index when the screen opens.
|
|
131
|
+
*
|
|
132
|
+
* @default 0
|
|
133
|
+
*/
|
|
134
|
+
initialSnapIndex?: number;
|
|
135
|
+
/**
|
|
136
|
+
* Controls how touches interact with the backdrop area (outside the screen content).
|
|
137
|
+
*
|
|
138
|
+
* - `'block'`: Backdrop catches all touches (default for most screens)
|
|
139
|
+
* - `'passthrough'`: Touches pass through to content behind (default for component stacks)
|
|
140
|
+
* - `'dismiss'`: Tapping backdrop dismisses the screen
|
|
141
|
+
*
|
|
142
|
+
* @default 'block' (or 'passthrough' for component stacks)
|
|
143
|
+
*/
|
|
144
|
+
backdropBehavior?: "block" | "passthrough" | "dismiss";
|
|
119
145
|
};
|
|
120
146
|
//# sourceMappingURL=screen.types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"screen.types.d.ts","sourceRoot":"","sources":["../../../../src/shared/types/screen.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EACX,uBAAuB,EACvB,cAAc,EACd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEjE,MAAM,MAAM,MAAM,GAAG;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAE/B,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,MAAM,IAAI,aAAa,CAAC,CAAC,CAAC,GAAG;IACvE;;;;;;;;;;;;;;;;;;;OAmBG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;;;;;;;;;;;OAcG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACpC;;OAEG;IACH,uBAAuB,CAAC,EAAE,uBAAuB,CAAC;IAElD;;OAEG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;IAEhC;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;OAEG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,gBAAgB,EAAE,CAAC;IAEzD;;OAEG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B;;OAEG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC;;OAEG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEhC;;OAEG;IACH,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IAE9C;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE/B;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,KAAK,CAAC,SAAS,CAAC;IAEnD;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAE1B;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;;;;;;;;OASG;IACH,kCAAkC,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"screen.types.d.ts","sourceRoot":"","sources":["../../../../src/shared/types/screen.types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AAC7D,OAAO,KAAK,EACX,uBAAuB,EACvB,cAAc,EACd,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAC/E,OAAO,KAAK,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEjE,MAAM,MAAM,MAAM,GAAG;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CACf,CAAC;AAEF,MAAM,MAAM,SAAS,GAAG,MAAM,CAAC;AAE/B,MAAM,MAAM,oBAAoB,CAAC,CAAC,SAAS,MAAM,IAAI,aAAa,CAAC,CAAC,CAAC,GAAG;IACvE;;;;;;;;;;;;;;;;;;;OAmBG;IACH,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB;;;;;;;;;;;;;;OAcG;IACH,cAAc,CAAC,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,sBAAsB,GAAG;IACpC;;OAEG;IACH,uBAAuB,CAAC,EAAE,uBAAuB,CAAC;IAElD;;OAEG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;IAEhC;;OAEG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IAEzB;;OAEG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,GAAG,gBAAgB,EAAE,CAAC;IAEzD;;OAEG;IACH,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAE/B;;OAEG;IACH,uBAAuB,CAAC,EAAE,MAAM,CAAC;IAEjC;;OAEG;IACH,qBAAqB,CAAC,EAAE,OAAO,CAAC;IAEhC;;OAEG;IACH,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;IAE9C;;;;;OAKG;IACH,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAE/B;;;OAGG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,YAAY,KAAK,KAAK,CAAC,SAAS,CAAC;IAEnD;;;;;;;OAOG;IACH,WAAW,CAAC,EAAE,WAAW,CAAC;IAE1B;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;IAEvB;;;;;;;;;OASG;IACH,kCAAkC,CAAC,EAAE,OAAO,CAAC;IAE7C;;;;;;;;OAQG;IACH,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IAEtB;;;;OAIG;IACH,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B;;;;;;;;OAQG;IACH,gBAAgB,CAAC,EAAE,OAAO,GAAG,aAAa,GAAG,SAAS,CAAC;CACvD,CAAC"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import type { AnimationStoreMap } from "../../stores/animation.store";
|
|
2
|
+
import type { TransitionSpec } from "../../types/animation.types";
|
|
3
|
+
interface AnimateToProgressProps {
|
|
4
|
+
/**
|
|
5
|
+
* Target for the animation:
|
|
6
|
+
* - "open" = animate to progress 1
|
|
7
|
+
* - "close" = animate to progress 0
|
|
8
|
+
* - number = animate to specific progress value (e.g., 0.5 for snap point)
|
|
9
|
+
*/
|
|
10
|
+
target: "open" | "close" | number;
|
|
11
|
+
spec?: TransitionSpec;
|
|
12
|
+
onAnimationFinish?: (finished: boolean) => void;
|
|
13
|
+
animations: AnimationStoreMap;
|
|
14
|
+
/** Optional initial velocity for spring-based progress (units: progress/sec). */
|
|
15
|
+
initialVelocity?: number;
|
|
16
|
+
}
|
|
17
|
+
export declare const animateToProgress: ({ target, spec, onAnimationFinish, animations, initialVelocity, }: AnimateToProgressProps) => void;
|
|
18
|
+
export {};
|
|
19
|
+
//# sourceMappingURL=animate-to-progress.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"animate-to-progress.d.ts","sourceRoot":"","sources":["../../../../../src/shared/utils/animation/animate-to-progress.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AACtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAGlE,UAAU,sBAAsB;IAC/B;;;;;OAKG;IACH,MAAM,EAAE,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;IAClC,IAAI,CAAC,EAAE,cAAc,CAAC;IACtB,iBAAiB,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,KAAK,IAAI,CAAC;IAChD,UAAU,EAAE,iBAAiB,CAAC;IAC9B,iFAAiF;IACjF,eAAe,CAAC,EAAE,MAAM,CAAC;CACzB;AAED,eAAO,MAAM,iBAAiB,GAAI,mEAM/B,sBAAsB,SAmDxB,CAAC"}
|
|
@@ -82,5 +82,29 @@ export declare function shouldActivateOrFail(params: ShouldActivateOrFailProps):
|
|
|
82
82
|
* Since we're using onTouchesMove to activate our pan, faillOffset and activateOffset don't actually work. In that case we'll create this function to use in onTouchesMove which acts simarly to the original functionality.
|
|
83
83
|
*/
|
|
84
84
|
export declare const applyOffsetRules: ({ initialTouch, touch, directions, manager, gestureOffsetState, activationArea, dimensions, responseDistance, }: CheckGestureActivationProps) => ReturnValues;
|
|
85
|
+
interface ScrollAwareActivationParams {
|
|
86
|
+
swipeInfo: {
|
|
87
|
+
isSwipingDown: boolean;
|
|
88
|
+
isSwipingUp: boolean;
|
|
89
|
+
isSwipingRight: boolean;
|
|
90
|
+
isSwipingLeft: boolean;
|
|
91
|
+
};
|
|
92
|
+
directions: Directions;
|
|
93
|
+
scrollX: number;
|
|
94
|
+
scrollY: number;
|
|
95
|
+
maxScrollX: number;
|
|
96
|
+
maxScrollY: number;
|
|
97
|
+
hasSnapPoints?: boolean;
|
|
98
|
+
canExpandMore?: boolean;
|
|
99
|
+
}
|
|
100
|
+
type GestureDirection = "vertical" | "vertical-inverted" | "horizontal" | "horizontal-inverted";
|
|
101
|
+
/**
|
|
102
|
+
* Checks if a gesture should activate based on scroll position.
|
|
103
|
+
* Returns the direction to activate for, or null if activation should not occur.
|
|
104
|
+
*/
|
|
105
|
+
export declare function checkScrollAwareActivation({ swipeInfo, directions, scrollX, scrollY, maxScrollX, maxScrollY, hasSnapPoints, canExpandMore, }: ScrollAwareActivationParams): {
|
|
106
|
+
shouldActivate: boolean;
|
|
107
|
+
direction: GestureDirection | null;
|
|
108
|
+
};
|
|
85
109
|
export {};
|
|
86
110
|
//# sourceMappingURL=check-gesture-activation.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check-gesture-activation.d.ts","sourceRoot":"","sources":["../../../../../src/shared/utils/gesture/check-gesture-activation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,mFAAmF,CAAC;AACjI,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3D,OAAO,EACN,KAAK,cAAc,EACnB,KAAK,qBAAqB,EAC1B,kBAAkB,EAElB,MAAM,2BAA2B,CAAC;AACnC,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,0BAA0B,CAAC;AAEvD,KAAK,UAAU,GAAG;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,UAAU,EAAE,OAAO,CAAC;IACpB,kBAAkB,EAAE,OAAO,CAAC;CAC5B,CAAC;AAEF,UAAU,2BAA2B;IACpC,YAAY,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACvC,KAAK,EAAE;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAChC,UAAU,EAAE,UAAU,CAAC;IACvB,OAAO,CAAC,EAAE,uBAAuB,CAAC;IAClC,kBAAkB,EAAE,WAAW,CAAC,kBAAkB,CAAC,CAAC;IACpD,cAAc,CAAC,EAAE,qBAAqB,CAAC;IACvC,UAAU,EAAE,MAAM,CAAC;IACnB,gBAAgB,CAAC,EAAE,MAAM,CAAC;CAC1B;AAED,KAAK,eAAe,GAAG;IACtB,IAAI,EAAE,cAAc,CAAC;IACrB,KAAK,EAAE,cAAc,CAAC;IACtB,GAAG,EAAE,cAAc,CAAC;IACpB,MAAM,EAAE,cAAc,CAAC;CACvB,CAAC;AAEF,UAAU,yBAAyB;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,OAAO,CAAC;IACrB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,eAAe,EAAE,OAAO,CAAC;IACzB,YAAY,EAAE,OAAO,CAAC;IACtB,WAAW,EAAE,OAAO,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,kBAAkB,EAAE,OAAO,CAAC;IAC5B,cAAc,EAAE,OAAO,CAAC;IACxB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,cAAc,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,OAAO,CAAC;CACvB;AAED,UAAU,YAAY;IACrB,aAAa,EAAE,OAAO,CAAC;IACvB,WAAW,EAAE,OAAO,CAAC;IACrB,cAAc,EAAE,OAAO,CAAC;IACxB,aAAa,EAAE,OAAO,CAAC;CACvB;AAaD,wBAAgB,cAAc,CAAC,IAAI,CAAC,EAAE,qBAAqB,GAAG,eAAe,CAc5E;AAED,wBAAgB,sBAAsB,CACrC,YAAY,EAAE;IAAE,CAAC,EAAE,MAAM,CAAC;IAAC,CAAC,EAAE,MAAM,CAAA;CAAE,EACtC,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,eAAe,EACtB,gBAAgB,CAAC,EAAE,MAAM;;;;;EAczB;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;;;;;;;EAmBhE;AAED,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,yBAAyB;;;EAyFrE;AAED;;GAEG;AACH,eAAO,MAAM,gBAAgB,GAAI,iHAS9B,2BAA2B,KAAG,YA2EhC,CAAC"}
|
|
1
|
+
{"version":3,"file":"check-gesture-activation.d.ts","sourceRoot":"","sources":["../../../../../src/shared/utils/gesture/check-gesture-activation.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
interface DetermineSnapTargetProps {
|
|
2
|
+
currentProgress: number;
|
|
3
|
+
snapPoints: number[];
|
|
4
|
+
/** Velocity along the snap axis (positive = toward dismiss) */
|
|
5
|
+
velocity: number;
|
|
6
|
+
/** Screen dimension along the snap axis (width or height) */
|
|
7
|
+
dimension: number;
|
|
8
|
+
/** How much velocity affects the snap decision (0-1). Default 0.15 */
|
|
9
|
+
velocityFactor?: number;
|
|
10
|
+
/** Whether dismiss (progress=0) is allowed. Default true */
|
|
11
|
+
canDismiss?: boolean;
|
|
12
|
+
}
|
|
13
|
+
interface DetermineSnapTargetResult {
|
|
14
|
+
targetProgress: number;
|
|
15
|
+
shouldDismiss: boolean;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Determines which snap point to animate to based on current progress and velocity.
|
|
19
|
+
*
|
|
20
|
+
* Logic: Snap to whichever point is closest, factoring in velocity.
|
|
21
|
+
* The "zones" between snap points are split at midpoints.
|
|
22
|
+
* Velocity can push you into the next zone.
|
|
23
|
+
*/
|
|
24
|
+
export declare function determineSnapTarget({ currentProgress, snapPoints, velocity, dimension, velocityFactor, canDismiss, }: DetermineSnapTargetProps): DetermineSnapTargetResult;
|
|
25
|
+
export {};
|
|
26
|
+
//# sourceMappingURL=determine-snap-target.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"determine-snap-target.d.ts","sourceRoot":"","sources":["../../../../../src/shared/utils/gesture/determine-snap-target.ts"],"names":[],"mappings":"AAAA,UAAU,wBAAwB;IACjC,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,+DAA+D;IAC/D,QAAQ,EAAE,MAAM,CAAC;IACjB,6DAA6D;IAC7D,SAAS,EAAE,MAAM,CAAC;IAClB,sEAAsE;IACtE,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4DAA4D;IAC5D,UAAU,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,UAAU,yBAAyB;IAClC,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,OAAO,CAAC;CACvB;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,EACnC,eAAe,EACf,UAAU,EACV,QAAQ,EACR,SAAS,EACT,cAAqB,EACrB,UAAiB,GACjB,EAAE,wBAAwB,GAAG,yBAAyB,CA0CtD"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
interface ValidateSnapPointsResult {
|
|
2
|
+
hasSnapPoints: boolean;
|
|
3
|
+
snapPoints: number[];
|
|
4
|
+
minSnapPoint: number;
|
|
5
|
+
maxSnapPoint: number;
|
|
6
|
+
}
|
|
7
|
+
interface ValidateSnapPointsOptions {
|
|
8
|
+
snapPoints?: number[];
|
|
9
|
+
canDismiss?: boolean;
|
|
10
|
+
}
|
|
11
|
+
export declare const validateSnapPoints: ({ snapPoints, canDismiss, }: ValidateSnapPointsOptions) => ValidateSnapPointsResult;
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=validate-snap-points.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate-snap-points.d.ts","sourceRoot":"","sources":["../../../../../src/shared/utils/gesture/validate-snap-points.ts"],"names":[],"mappings":"AAAA,UAAU,wBAAwB;IACjC,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,MAAM,CAAC;CACrB;AAED,UAAU,yBAAyB;IAClC,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,UAAU,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,eAAO,MAAM,kBAAkB,GAAI,6BAGhC,yBAAyB,KAAG,wBAqB9B,CAAC"}
|
|
@@ -17,6 +17,7 @@ interface CalculateProgressProps {
|
|
|
17
17
|
}
|
|
18
18
|
export declare const velocity: {
|
|
19
19
|
normalize: (velocityPixelsPerSecond: number, screenSize: number) => number;
|
|
20
|
+
normalizeTranslation: (translation: number, dimension: number) => number;
|
|
20
21
|
calculateRestoreVelocity: (currentValueNormalized: number, baseVelocityNormalized: number) => number;
|
|
21
22
|
calculateProgressVelocity: ({ animations, shouldDismiss, event, dimensions, directions, }: CalculateProgressProps) => number;
|
|
22
23
|
shouldPassDismissalThreshold: (translationPixels: number, velocityPixelsPerSecond: number, screenSize: number, velocityWeight: number) => boolean;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"velocity.d.ts","sourceRoot":"","sources":["../../../../../src/shared/utils/gesture/velocity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,uBAAuB,EACvB,6BAA6B,EAC7B,MAAM,8BAA8B,CAAC;AAEtC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEtE,UAAU,sBAAsB;IAC/B,UAAU,EAAE,iBAAiB,CAAC;IAC9B,aAAa,EAAE,OAAO,CAAC;IACvB,KAAK,EAAE,uBAAuB,CAAC,6BAA6B,CAAC,CAAC;IAC9D,UAAU,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9C,UAAU,EAAE;QACX,UAAU,EAAE,OAAO,CAAC;QACpB,kBAAkB,EAAE,OAAO,CAAC;QAC5B,QAAQ,EAAE,OAAO,CAAC;QAClB,gBAAgB,EAAE,OAAO,CAAC;KAC1B,CAAC;CACF;
|
|
1
|
+
{"version":3,"file":"velocity.d.ts","sourceRoot":"","sources":["../../../../../src/shared/utils/gesture/velocity.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,uBAAuB,EACvB,6BAA6B,EAC7B,MAAM,8BAA8B,CAAC;AAEtC,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEtE,UAAU,sBAAsB;IAC/B,UAAU,EAAE,iBAAiB,CAAC;IAC9B,aAAa,EAAE,OAAO,CAAC;IACvB,KAAK,EAAE,uBAAuB,CAAC,6BAA6B,CAAC,CAAC;IAC9D,UAAU,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9C,UAAU,EAAE;QACX,UAAU,EAAE,OAAO,CAAC;QACpB,kBAAkB,EAAE,OAAO,CAAC;QAC5B,QAAQ,EAAE,OAAO,CAAC;QAClB,gBAAgB,EAAE,OAAO,CAAC;KAC1B,CAAC;CACF;AAgID,eAAO,MAAM,QAAQ;yCAvHuB,MAAM,cAAc,MAAM;wCAa3B,MAAM,aAAa,MAAM;uDAU3C,MAAM,0BACN,MAAM;+FAkB5B,sBAAsB;sDAyDL,MAAM,2BACA,MAAM,cACnB,MAAM,kBACF,MAAM;CAuBtB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-screen-transitions",
|
|
3
|
-
"version": "3.
|
|
3
|
+
"version": "3.3.0-beta.0",
|
|
4
4
|
"description": "Easy screen transitions for React Native and Expo",
|
|
5
5
|
"author": "Ed",
|
|
6
6
|
"license": "MIT",
|
|
@@ -44,7 +44,8 @@
|
|
|
44
44
|
"lint": "biome check ./src",
|
|
45
45
|
"typecheck": "tsc --noEmit",
|
|
46
46
|
"prepublishOnly": "bun run build",
|
|
47
|
-
"release": "release-it"
|
|
47
|
+
"release": "release-it",
|
|
48
|
+
"release:beta": "release-it --preRelease=beta"
|
|
48
49
|
},
|
|
49
50
|
"keywords": [
|
|
50
51
|
"react-native",
|
|
@@ -0,0 +1,268 @@
|
|
|
1
|
+
import { describe, expect, it } from "bun:test";
|
|
2
|
+
import { determineSnapTarget } from "../utils/gesture/determine-snap-target";
|
|
3
|
+
|
|
4
|
+
describe("determineSnapTarget", () => {
|
|
5
|
+
const dimension = 800; // screen height
|
|
6
|
+
const snapPoints = [0.3, 0.6, 1]; // 3 snap points
|
|
7
|
+
|
|
8
|
+
describe("basic snapping without velocity", () => {
|
|
9
|
+
it("snaps to nearest snap point when exactly at a snap point", () => {
|
|
10
|
+
const result = determineSnapTarget({
|
|
11
|
+
currentProgress: 0.6,
|
|
12
|
+
snapPoints,
|
|
13
|
+
velocity: 0,
|
|
14
|
+
dimension,
|
|
15
|
+
});
|
|
16
|
+
expect(result.targetProgress).toBe(0.6);
|
|
17
|
+
expect(result.shouldDismiss).toBe(false);
|
|
18
|
+
});
|
|
19
|
+
|
|
20
|
+
it("snaps to lower snap point when below midpoint", () => {
|
|
21
|
+
// Midpoint between 0.3 and 0.6 is 0.45
|
|
22
|
+
const result = determineSnapTarget({
|
|
23
|
+
currentProgress: 0.4,
|
|
24
|
+
snapPoints,
|
|
25
|
+
velocity: 0,
|
|
26
|
+
dimension,
|
|
27
|
+
});
|
|
28
|
+
expect(result.targetProgress).toBe(0.3);
|
|
29
|
+
});
|
|
30
|
+
|
|
31
|
+
it("snaps to higher snap point when above midpoint", () => {
|
|
32
|
+
// Midpoint between 0.3 and 0.6 is 0.45
|
|
33
|
+
const result = determineSnapTarget({
|
|
34
|
+
currentProgress: 0.5,
|
|
35
|
+
snapPoints,
|
|
36
|
+
velocity: 0,
|
|
37
|
+
dimension,
|
|
38
|
+
});
|
|
39
|
+
expect(result.targetProgress).toBe(0.6);
|
|
40
|
+
});
|
|
41
|
+
|
|
42
|
+
it("snaps to highest point when above all snap points", () => {
|
|
43
|
+
const result = determineSnapTarget({
|
|
44
|
+
currentProgress: 1.2,
|
|
45
|
+
snapPoints,
|
|
46
|
+
velocity: 0,
|
|
47
|
+
dimension,
|
|
48
|
+
});
|
|
49
|
+
expect(result.targetProgress).toBe(1);
|
|
50
|
+
});
|
|
51
|
+
});
|
|
52
|
+
|
|
53
|
+
describe("velocity influence", () => {
|
|
54
|
+
it("velocity toward dismiss pushes toward lower snap point", () => {
|
|
55
|
+
// At 0.5 (above midpoint 0.45), normally would snap to 0.6
|
|
56
|
+
// But positive velocity (toward dismiss) should push toward 0.3
|
|
57
|
+
const result = determineSnapTarget({
|
|
58
|
+
currentProgress: 0.5,
|
|
59
|
+
snapPoints,
|
|
60
|
+
velocity: 800, // Strong velocity toward dismiss
|
|
61
|
+
dimension,
|
|
62
|
+
velocityFactor: 0.15,
|
|
63
|
+
});
|
|
64
|
+
expect(result.targetProgress).toBe(0.3);
|
|
65
|
+
});
|
|
66
|
+
|
|
67
|
+
it("velocity toward expand pushes toward higher snap point", () => {
|
|
68
|
+
// At 0.4 (below midpoint 0.45), normally would snap to 0.3
|
|
69
|
+
// But negative velocity (toward expand) should push toward 0.6
|
|
70
|
+
const result = determineSnapTarget({
|
|
71
|
+
currentProgress: 0.4,
|
|
72
|
+
snapPoints,
|
|
73
|
+
velocity: -800, // Strong velocity toward expand
|
|
74
|
+
dimension,
|
|
75
|
+
velocityFactor: 0.15,
|
|
76
|
+
});
|
|
77
|
+
expect(result.targetProgress).toBe(0.6);
|
|
78
|
+
});
|
|
79
|
+
|
|
80
|
+
it("weak velocity does not override position", () => {
|
|
81
|
+
// At 0.55 (above midpoint), weak velocity shouldn't change target
|
|
82
|
+
const result = determineSnapTarget({
|
|
83
|
+
currentProgress: 0.55,
|
|
84
|
+
snapPoints,
|
|
85
|
+
velocity: 100, // Weak velocity
|
|
86
|
+
dimension,
|
|
87
|
+
velocityFactor: 0.15,
|
|
88
|
+
});
|
|
89
|
+
expect(result.targetProgress).toBe(0.6);
|
|
90
|
+
});
|
|
91
|
+
|
|
92
|
+
it("respects custom velocityFactor", () => {
|
|
93
|
+
// Higher velocityFactor = velocity has more influence
|
|
94
|
+
const result = determineSnapTarget({
|
|
95
|
+
currentProgress: 0.5,
|
|
96
|
+
snapPoints,
|
|
97
|
+
velocity: 400,
|
|
98
|
+
dimension,
|
|
99
|
+
velocityFactor: 0.5, // High factor
|
|
100
|
+
});
|
|
101
|
+
expect(result.targetProgress).toBe(0.3);
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
|
|
105
|
+
describe("dismiss behavior", () => {
|
|
106
|
+
it("allows dismiss when canDismiss is true and near 0", () => {
|
|
107
|
+
const result = determineSnapTarget({
|
|
108
|
+
currentProgress: 0.1,
|
|
109
|
+
snapPoints,
|
|
110
|
+
velocity: 500,
|
|
111
|
+
dimension,
|
|
112
|
+
canDismiss: true,
|
|
113
|
+
});
|
|
114
|
+
expect(result.targetProgress).toBe(0);
|
|
115
|
+
expect(result.shouldDismiss).toBe(true);
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
it("prevents dismiss when canDismiss is false", () => {
|
|
119
|
+
const result = determineSnapTarget({
|
|
120
|
+
currentProgress: 0.1,
|
|
121
|
+
snapPoints,
|
|
122
|
+
velocity: 1000, // Strong dismiss velocity
|
|
123
|
+
dimension,
|
|
124
|
+
canDismiss: false,
|
|
125
|
+
});
|
|
126
|
+
expect(result.targetProgress).toBe(0.3); // First snap point
|
|
127
|
+
expect(result.shouldDismiss).toBe(false);
|
|
128
|
+
});
|
|
129
|
+
|
|
130
|
+
it("defaults canDismiss to true", () => {
|
|
131
|
+
const result = determineSnapTarget({
|
|
132
|
+
currentProgress: 0.1,
|
|
133
|
+
snapPoints,
|
|
134
|
+
velocity: 500,
|
|
135
|
+
dimension,
|
|
136
|
+
});
|
|
137
|
+
expect(result.shouldDismiss).toBe(true);
|
|
138
|
+
});
|
|
139
|
+
|
|
140
|
+
it("shouldDismiss is false when snapping to any snap point", () => {
|
|
141
|
+
const result = determineSnapTarget({
|
|
142
|
+
currentProgress: 0.5,
|
|
143
|
+
snapPoints,
|
|
144
|
+
velocity: 0,
|
|
145
|
+
dimension,
|
|
146
|
+
});
|
|
147
|
+
expect(result.shouldDismiss).toBe(false);
|
|
148
|
+
});
|
|
149
|
+
});
|
|
150
|
+
|
|
151
|
+
describe("edge cases", () => {
|
|
152
|
+
it("handles single snap point", () => {
|
|
153
|
+
const result = determineSnapTarget({
|
|
154
|
+
currentProgress: 0.3,
|
|
155
|
+
snapPoints: [0.5],
|
|
156
|
+
velocity: 0,
|
|
157
|
+
dimension,
|
|
158
|
+
});
|
|
159
|
+
expect(result.targetProgress).toBe(0.5);
|
|
160
|
+
});
|
|
161
|
+
|
|
162
|
+
it("handles unsorted snap points", () => {
|
|
163
|
+
const result = determineSnapTarget({
|
|
164
|
+
currentProgress: 0.5,
|
|
165
|
+
snapPoints: [1, 0.3, 0.6], // Unsorted
|
|
166
|
+
velocity: 0,
|
|
167
|
+
dimension,
|
|
168
|
+
});
|
|
169
|
+
// After sorting: [0.3, 0.6, 1], midpoint 0.3-0.6 is 0.45
|
|
170
|
+
expect(result.targetProgress).toBe(0.6);
|
|
171
|
+
});
|
|
172
|
+
|
|
173
|
+
it("handles progress at exactly 0", () => {
|
|
174
|
+
const result = determineSnapTarget({
|
|
175
|
+
currentProgress: 0,
|
|
176
|
+
snapPoints,
|
|
177
|
+
velocity: 0,
|
|
178
|
+
dimension,
|
|
179
|
+
canDismiss: true,
|
|
180
|
+
});
|
|
181
|
+
expect(result.targetProgress).toBe(0);
|
|
182
|
+
expect(result.shouldDismiss).toBe(true);
|
|
183
|
+
});
|
|
184
|
+
|
|
185
|
+
it("handles negative progress", () => {
|
|
186
|
+
const result = determineSnapTarget({
|
|
187
|
+
currentProgress: -0.1,
|
|
188
|
+
snapPoints,
|
|
189
|
+
velocity: 0,
|
|
190
|
+
dimension,
|
|
191
|
+
canDismiss: true,
|
|
192
|
+
});
|
|
193
|
+
expect(result.targetProgress).toBe(0);
|
|
194
|
+
});
|
|
195
|
+
|
|
196
|
+
it("handles very high velocity", () => {
|
|
197
|
+
const result = determineSnapTarget({
|
|
198
|
+
currentProgress: 0.9,
|
|
199
|
+
snapPoints,
|
|
200
|
+
velocity: 5000, // Very high velocity
|
|
201
|
+
dimension,
|
|
202
|
+
canDismiss: true,
|
|
203
|
+
});
|
|
204
|
+
expect(result.targetProgress).toBe(0);
|
|
205
|
+
expect(result.shouldDismiss).toBe(true);
|
|
206
|
+
});
|
|
207
|
+
|
|
208
|
+
it("handles snap points not starting at typical values", () => {
|
|
209
|
+
const result = determineSnapTarget({
|
|
210
|
+
currentProgress: 0.7,
|
|
211
|
+
snapPoints: [0.5, 0.75, 1],
|
|
212
|
+
velocity: 0,
|
|
213
|
+
dimension,
|
|
214
|
+
});
|
|
215
|
+
// Midpoint between 0.5 and 0.75 is 0.625
|
|
216
|
+
// 0.7 is above 0.625, so should snap to 0.75
|
|
217
|
+
expect(result.targetProgress).toBe(0.75);
|
|
218
|
+
});
|
|
219
|
+
|
|
220
|
+
it("handles two snap points", () => {
|
|
221
|
+
const result = determineSnapTarget({
|
|
222
|
+
currentProgress: 0.4,
|
|
223
|
+
snapPoints: [0.3, 1],
|
|
224
|
+
velocity: 0,
|
|
225
|
+
dimension,
|
|
226
|
+
});
|
|
227
|
+
// Midpoint is 0.65, 0.4 is below, so snap to 0.3
|
|
228
|
+
expect(result.targetProgress).toBe(0.3);
|
|
229
|
+
});
|
|
230
|
+
});
|
|
231
|
+
|
|
232
|
+
describe("zone boundaries", () => {
|
|
233
|
+
it("snaps to higher at exact midpoint (uses < not <=)", () => {
|
|
234
|
+
// Midpoint between 0 and 0.3 is 0.15
|
|
235
|
+
// The algorithm uses `<` so at exact midpoint, it snaps to higher
|
|
236
|
+
const result = determineSnapTarget({
|
|
237
|
+
currentProgress: 0.15,
|
|
238
|
+
snapPoints,
|
|
239
|
+
velocity: 0,
|
|
240
|
+
dimension,
|
|
241
|
+
canDismiss: true,
|
|
242
|
+
});
|
|
243
|
+
expect(result.targetProgress).toBe(0.3);
|
|
244
|
+
});
|
|
245
|
+
|
|
246
|
+
it("snaps to lower just below midpoint", () => {
|
|
247
|
+
const result = determineSnapTarget({
|
|
248
|
+
currentProgress: 0.149,
|
|
249
|
+
snapPoints,
|
|
250
|
+
velocity: 0,
|
|
251
|
+
dimension,
|
|
252
|
+
canDismiss: true,
|
|
253
|
+
});
|
|
254
|
+
expect(result.targetProgress).toBe(0);
|
|
255
|
+
});
|
|
256
|
+
|
|
257
|
+
it("snaps to higher just above midpoint", () => {
|
|
258
|
+
const result = determineSnapTarget({
|
|
259
|
+
currentProgress: 0.151,
|
|
260
|
+
snapPoints,
|
|
261
|
+
velocity: 0,
|
|
262
|
+
dimension,
|
|
263
|
+
canDismiss: true,
|
|
264
|
+
});
|
|
265
|
+
expect(result.targetProgress).toBe(0.3);
|
|
266
|
+
});
|
|
267
|
+
});
|
|
268
|
+
});
|