@react-navigation/stack 6.2.2 → 6.3.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/lib/commonjs/TransitionConfigs/HeaderStyleInterpolators.js +5 -5
- package/lib/commonjs/TransitionConfigs/HeaderStyleInterpolators.js.map +1 -1
- package/lib/commonjs/utils/getInvertedMultiplier.js +2 -2
- package/lib/commonjs/utils/getInvertedMultiplier.js.map +1 -1
- package/lib/commonjs/views/GestureHandlerNative.js +0 -6
- package/lib/commonjs/views/GestureHandlerNative.js.map +1 -1
- package/lib/commonjs/views/Screens.js.map +1 -1
- package/lib/commonjs/views/Stack/Card.js +6 -6
- package/lib/commonjs/views/Stack/Card.js.map +1 -1
- package/lib/commonjs/views/Stack/CardStack.js +4 -2
- package/lib/commonjs/views/Stack/CardStack.js.map +1 -1
- package/lib/module/TransitionConfigs/HeaderStyleInterpolators.js +5 -5
- package/lib/module/TransitionConfigs/HeaderStyleInterpolators.js.map +1 -1
- package/lib/module/utils/getInvertedMultiplier.js +2 -2
- package/lib/module/utils/getInvertedMultiplier.js.map +1 -1
- package/lib/module/views/GestureHandlerNative.js +1 -1
- package/lib/module/views/GestureHandlerNative.js.map +1 -1
- package/lib/module/views/Screens.js.map +1 -1
- package/lib/module/views/Stack/Card.js +6 -6
- package/lib/module/views/Stack/Card.js.map +1 -1
- package/lib/module/views/Stack/CardStack.js +4 -2
- package/lib/module/views/Stack/CardStack.js.map +1 -1
- package/lib/typescript/src/types.d.ts +8 -0
- package/lib/typescript/src/views/GestureHandlerNative.d.ts +2 -1
- package/lib/typescript/src/views/Screens.d.ts +1 -0
- package/lib/typescript/src/views/Stack/Card.d.ts +5 -2
- package/package.json +13 -12
- package/src/TransitionConfigs/HeaderStyleInterpolators.tsx +5 -5
- package/src/types.tsx +8 -0
- package/src/utils/getInvertedMultiplier.tsx +2 -2
- package/src/views/GestureHandlerNative.tsx +1 -1
- package/src/views/Screens.tsx +1 -0
- package/src/views/Stack/Card.tsx +11 -5
- package/src/views/Stack/CardStack.tsx +3 -1
|
@@ -57,7 +57,7 @@ function forUIKit(_ref) {
|
|
|
57
57
|
transform: [{
|
|
58
58
|
translateX: progress.interpolate({
|
|
59
59
|
inputRange: [0, 1, 2],
|
|
60
|
-
outputRange: _reactNative.I18nManager.isRTL ? [-rightOffset, 0, leftLabelOffset] : [leftLabelOffset, 0, -rightOffset]
|
|
60
|
+
outputRange: _reactNative.I18nManager.getConstants().isRTL ? [-rightOffset, 0, leftLabelOffset] : [leftLabelOffset, 0, -rightOffset]
|
|
61
61
|
})
|
|
62
62
|
}]
|
|
63
63
|
},
|
|
@@ -75,7 +75,7 @@ function forUIKit(_ref) {
|
|
|
75
75
|
transform: [{
|
|
76
76
|
translateX: progress.interpolate({
|
|
77
77
|
inputRange: [0.5, 1, 2],
|
|
78
|
-
outputRange: _reactNative.I18nManager.isRTL ? [-titleLeftOffset, 0, rightOffset] : [rightOffset, 0, -titleLeftOffset]
|
|
78
|
+
outputRange: _reactNative.I18nManager.getConstants().isRTL ? [-titleLeftOffset, 0, rightOffset] : [rightOffset, 0, -titleLeftOffset]
|
|
79
79
|
})
|
|
80
80
|
}]
|
|
81
81
|
},
|
|
@@ -83,7 +83,7 @@ function forUIKit(_ref) {
|
|
|
83
83
|
transform: [{
|
|
84
84
|
translateX: progress.interpolate({
|
|
85
85
|
inputRange: [0, 1, 2],
|
|
86
|
-
outputRange: _reactNative.I18nManager.isRTL ? [-layouts.screen.width, 0, layouts.screen.width] : [layouts.screen.width, 0, -layouts.screen.width]
|
|
86
|
+
outputRange: _reactNative.I18nManager.getConstants().isRTL ? [-layouts.screen.width, 0, layouts.screen.width] : [layouts.screen.width, 0, -layouts.screen.width]
|
|
87
87
|
})
|
|
88
88
|
}]
|
|
89
89
|
}
|
|
@@ -154,7 +154,7 @@ function forSlideLeft(_ref3) {
|
|
|
154
154
|
}) : 0);
|
|
155
155
|
const translateX = progress.interpolate({
|
|
156
156
|
inputRange: [0, 1, 2],
|
|
157
|
-
outputRange: _reactNative.I18nManager.isRTL ? [-screen.width, 0, screen.width] : [screen.width, 0, -screen.width]
|
|
157
|
+
outputRange: _reactNative.I18nManager.getConstants().isRTL ? [-screen.width, 0, screen.width] : [screen.width, 0, -screen.width]
|
|
158
158
|
});
|
|
159
159
|
const transform = [{
|
|
160
160
|
translateX
|
|
@@ -198,7 +198,7 @@ function forSlideRight(_ref4) {
|
|
|
198
198
|
}) : 0);
|
|
199
199
|
const translateX = progress.interpolate({
|
|
200
200
|
inputRange: [0, 1, 2],
|
|
201
|
-
outputRange: _reactNative.I18nManager.isRTL ? [screen.width, 0, -screen.width] : [-screen.width, 0, screen.width]
|
|
201
|
+
outputRange: _reactNative.I18nManager.getConstants().isRTL ? [screen.width, 0, -screen.width] : [-screen.width, 0, screen.width]
|
|
202
202
|
});
|
|
203
203
|
const transform = [{
|
|
204
204
|
translateX
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["HeaderStyleInterpolators.tsx"],"names":["add","Animated","forUIKit","current","next","layouts","defaultOffset","leftSpacing","leftLabelOffset","leftLabel","screen","width","titleLeftOffset","title","rightOffset","progress","interpolate","inputRange","outputRange","extrapolate","leftButtonStyle","opacity","leftLabelStyle","transform","translateX","I18nManager","isRTL","rightButtonStyle","titleStyle","backgroundStyle","forFade","forSlideLeft","forSlideRight","forSlideUp","header","translateY","height","forNoAnimation"],"mappings":"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","sourcesContent":["import { Animated, I18nManager } from 'react-native';\n\nimport type {\n StackHeaderInterpolatedStyle,\n StackHeaderInterpolationProps,\n} from '../types';\n\nconst { add } = Animated;\n\n/**\n * Standard UIKit style animation for the header where the title fades into the back button label.\n */\nexport function forUIKit({\n current,\n next,\n layouts,\n}: StackHeaderInterpolationProps): StackHeaderInterpolatedStyle {\n const defaultOffset = 100;\n const leftSpacing = 27;\n\n // The title and back button title should cross-fade to each other\n // When screen is fully open, the title should be in center, and back title should be on left\n // When screen is closing, the previous title will animate to back title's position\n // And back title will animate to title's position\n // We achieve this by calculating the offsets needed to translate title to back title's position and vice-versa\n const leftLabelOffset = layouts.leftLabel\n ? (layouts.screen.width - layouts.leftLabel.width) / 2 - leftSpacing\n : defaultOffset;\n const titleLeftOffset = layouts.title\n ? (layouts.screen.width - layouts.title.width) / 2 - leftSpacing\n : defaultOffset;\n\n // When the current title is animating to right, it is centered in the right half of screen in middle of transition\n // The back title also animates in from this position\n const rightOffset = layouts.screen.width / 4;\n\n const progress = add(\n current.progress.interpolate({\n inputRange: [0, 1],\n outputRange: [0, 1],\n extrapolate: 'clamp',\n }),\n next\n ? next.progress.interpolate({\n inputRange: [0, 1],\n outputRange: [0, 1],\n extrapolate: 'clamp',\n })\n : 0\n );\n\n return {\n leftButtonStyle: {\n opacity: progress.interpolate({\n inputRange: [0.3, 1, 1.5],\n outputRange: [0, 1, 0],\n }),\n },\n leftLabelStyle: {\n transform: [\n {\n translateX: progress.interpolate({\n inputRange: [0, 1, 2],\n outputRange: I18nManager.isRTL\n ? [-rightOffset, 0, leftLabelOffset]\n : [leftLabelOffset, 0, -rightOffset],\n }),\n },\n ],\n },\n rightButtonStyle: {\n opacity: progress.interpolate({\n inputRange: [0.3, 1, 1.5],\n outputRange: [0, 1, 0],\n }),\n },\n titleStyle: {\n opacity: progress.interpolate({\n inputRange: [0, 0.4, 1, 1.5],\n outputRange: [0, 0.1, 1, 0],\n }),\n transform: [\n {\n translateX: progress.interpolate({\n inputRange: [0.5, 1, 2],\n outputRange: I18nManager.isRTL\n ? [-titleLeftOffset, 0, rightOffset]\n : [rightOffset, 0, -titleLeftOffset],\n }),\n },\n ],\n },\n backgroundStyle: {\n transform: [\n {\n translateX: progress.interpolate({\n inputRange: [0, 1, 2],\n outputRange: I18nManager.isRTL\n ? [-layouts.screen.width, 0, layouts.screen.width]\n : [layouts.screen.width, 0, -layouts.screen.width],\n }),\n },\n ],\n },\n };\n}\n\n/**\n * Simple fade animation for the header elements.\n */\nexport function forFade({\n current,\n next,\n}: StackHeaderInterpolationProps): StackHeaderInterpolatedStyle {\n const progress = add(\n current.progress.interpolate({\n inputRange: [0, 1],\n outputRange: [0, 1],\n extrapolate: 'clamp',\n }),\n next\n ? next.progress.interpolate({\n inputRange: [0, 1],\n outputRange: [0, 1],\n extrapolate: 'clamp',\n })\n : 0\n );\n\n const opacity = progress.interpolate({\n inputRange: [0, 1, 2],\n outputRange: [0, 1, 0],\n });\n\n return {\n leftButtonStyle: { opacity },\n rightButtonStyle: { opacity },\n titleStyle: { opacity },\n backgroundStyle: {\n opacity: progress.interpolate({\n inputRange: [0, 1, 1.9, 2],\n outputRange: [0, 1, 1, 0],\n }),\n },\n };\n}\n\n/**\n * Simple translate animation to translate the header to left.\n */\nexport function forSlideLeft({\n current,\n next,\n layouts: { screen },\n}: StackHeaderInterpolationProps): StackHeaderInterpolatedStyle {\n const progress = add(\n current.progress.interpolate({\n inputRange: [0, 1],\n outputRange: [0, 1],\n extrapolate: 'clamp',\n }),\n next\n ? next.progress.interpolate({\n inputRange: [0, 1],\n outputRange: [0, 1],\n extrapolate: 'clamp',\n })\n : 0\n );\n\n const translateX = progress.interpolate({\n inputRange: [0, 1, 2],\n outputRange: I18nManager.isRTL\n ? [-screen.width, 0, screen.width]\n : [screen.width, 0, -screen.width],\n });\n\n const transform = [{ translateX }];\n\n return {\n leftButtonStyle: { transform },\n rightButtonStyle: { transform },\n titleStyle: { transform },\n backgroundStyle: { transform },\n };\n}\n\n/**\n * Simple translate animation to translate the header to right.\n */\nexport function forSlideRight({\n current,\n next,\n layouts: { screen },\n}: StackHeaderInterpolationProps): StackHeaderInterpolatedStyle {\n const progress = add(\n current.progress.interpolate({\n inputRange: [0, 1],\n outputRange: [0, 1],\n extrapolate: 'clamp',\n }),\n next\n ? next.progress.interpolate({\n inputRange: [0, 1],\n outputRange: [0, 1],\n extrapolate: 'clamp',\n })\n : 0\n );\n\n const translateX = progress.interpolate({\n inputRange: [0, 1, 2],\n outputRange: I18nManager.isRTL\n ? [screen.width, 0, -screen.width]\n : [-screen.width, 0, screen.width],\n });\n\n const transform = [{ translateX }];\n\n return {\n leftButtonStyle: { transform },\n rightButtonStyle: { transform },\n titleStyle: { transform },\n backgroundStyle: { transform },\n };\n}\n\n/**\n * Simple translate animation to translate the header to slide up.\n */\nexport function forSlideUp({\n current,\n next,\n layouts: { header },\n}: StackHeaderInterpolationProps): StackHeaderInterpolatedStyle {\n const progress = add(\n current.progress.interpolate({\n inputRange: [0, 1],\n outputRange: [0, 1],\n extrapolate: 'clamp',\n }),\n next\n ? next.progress.interpolate({\n inputRange: [0, 1],\n outputRange: [0, 1],\n extrapolate: 'clamp',\n })\n : 0\n );\n\n const translateY = progress.interpolate({\n inputRange: [0, 1, 2],\n outputRange: [-header.height, 0, -header.height],\n });\n\n const transform = [{ translateY }];\n\n return {\n leftButtonStyle: { transform },\n rightButtonStyle: { transform },\n titleStyle: { transform },\n backgroundStyle: { transform },\n };\n}\n\nexport function forNoAnimation(): StackHeaderInterpolatedStyle {\n return {};\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["HeaderStyleInterpolators.tsx"],"names":["add","Animated","forUIKit","current","next","layouts","defaultOffset","leftSpacing","leftLabelOffset","leftLabel","screen","width","titleLeftOffset","title","rightOffset","progress","interpolate","inputRange","outputRange","extrapolate","leftButtonStyle","opacity","leftLabelStyle","transform","translateX","I18nManager","getConstants","isRTL","rightButtonStyle","titleStyle","backgroundStyle","forFade","forSlideLeft","forSlideRight","forSlideUp","header","translateY","height","forNoAnimation"],"mappings":"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","sourcesContent":["import { Animated, I18nManager } from 'react-native';\n\nimport type {\n StackHeaderInterpolatedStyle,\n StackHeaderInterpolationProps,\n} from '../types';\n\nconst { add } = Animated;\n\n/**\n * Standard UIKit style animation for the header where the title fades into the back button label.\n */\nexport function forUIKit({\n current,\n next,\n layouts,\n}: StackHeaderInterpolationProps): StackHeaderInterpolatedStyle {\n const defaultOffset = 100;\n const leftSpacing = 27;\n\n // The title and back button title should cross-fade to each other\n // When screen is fully open, the title should be in center, and back title should be on left\n // When screen is closing, the previous title will animate to back title's position\n // And back title will animate to title's position\n // We achieve this by calculating the offsets needed to translate title to back title's position and vice-versa\n const leftLabelOffset = layouts.leftLabel\n ? (layouts.screen.width - layouts.leftLabel.width) / 2 - leftSpacing\n : defaultOffset;\n const titleLeftOffset = layouts.title\n ? (layouts.screen.width - layouts.title.width) / 2 - leftSpacing\n : defaultOffset;\n\n // When the current title is animating to right, it is centered in the right half of screen in middle of transition\n // The back title also animates in from this position\n const rightOffset = layouts.screen.width / 4;\n\n const progress = add(\n current.progress.interpolate({\n inputRange: [0, 1],\n outputRange: [0, 1],\n extrapolate: 'clamp',\n }),\n next\n ? next.progress.interpolate({\n inputRange: [0, 1],\n outputRange: [0, 1],\n extrapolate: 'clamp',\n })\n : 0\n );\n\n return {\n leftButtonStyle: {\n opacity: progress.interpolate({\n inputRange: [0.3, 1, 1.5],\n outputRange: [0, 1, 0],\n }),\n },\n leftLabelStyle: {\n transform: [\n {\n translateX: progress.interpolate({\n inputRange: [0, 1, 2],\n outputRange: I18nManager.getConstants().isRTL\n ? [-rightOffset, 0, leftLabelOffset]\n : [leftLabelOffset, 0, -rightOffset],\n }),\n },\n ],\n },\n rightButtonStyle: {\n opacity: progress.interpolate({\n inputRange: [0.3, 1, 1.5],\n outputRange: [0, 1, 0],\n }),\n },\n titleStyle: {\n opacity: progress.interpolate({\n inputRange: [0, 0.4, 1, 1.5],\n outputRange: [0, 0.1, 1, 0],\n }),\n transform: [\n {\n translateX: progress.interpolate({\n inputRange: [0.5, 1, 2],\n outputRange: I18nManager.getConstants().isRTL\n ? [-titleLeftOffset, 0, rightOffset]\n : [rightOffset, 0, -titleLeftOffset],\n }),\n },\n ],\n },\n backgroundStyle: {\n transform: [\n {\n translateX: progress.interpolate({\n inputRange: [0, 1, 2],\n outputRange: I18nManager.getConstants().isRTL\n ? [-layouts.screen.width, 0, layouts.screen.width]\n : [layouts.screen.width, 0, -layouts.screen.width],\n }),\n },\n ],\n },\n };\n}\n\n/**\n * Simple fade animation for the header elements.\n */\nexport function forFade({\n current,\n next,\n}: StackHeaderInterpolationProps): StackHeaderInterpolatedStyle {\n const progress = add(\n current.progress.interpolate({\n inputRange: [0, 1],\n outputRange: [0, 1],\n extrapolate: 'clamp',\n }),\n next\n ? next.progress.interpolate({\n inputRange: [0, 1],\n outputRange: [0, 1],\n extrapolate: 'clamp',\n })\n : 0\n );\n\n const opacity = progress.interpolate({\n inputRange: [0, 1, 2],\n outputRange: [0, 1, 0],\n });\n\n return {\n leftButtonStyle: { opacity },\n rightButtonStyle: { opacity },\n titleStyle: { opacity },\n backgroundStyle: {\n opacity: progress.interpolate({\n inputRange: [0, 1, 1.9, 2],\n outputRange: [0, 1, 1, 0],\n }),\n },\n };\n}\n\n/**\n * Simple translate animation to translate the header to left.\n */\nexport function forSlideLeft({\n current,\n next,\n layouts: { screen },\n}: StackHeaderInterpolationProps): StackHeaderInterpolatedStyle {\n const progress = add(\n current.progress.interpolate({\n inputRange: [0, 1],\n outputRange: [0, 1],\n extrapolate: 'clamp',\n }),\n next\n ? next.progress.interpolate({\n inputRange: [0, 1],\n outputRange: [0, 1],\n extrapolate: 'clamp',\n })\n : 0\n );\n\n const translateX = progress.interpolate({\n inputRange: [0, 1, 2],\n outputRange: I18nManager.getConstants().isRTL\n ? [-screen.width, 0, screen.width]\n : [screen.width, 0, -screen.width],\n });\n\n const transform = [{ translateX }];\n\n return {\n leftButtonStyle: { transform },\n rightButtonStyle: { transform },\n titleStyle: { transform },\n backgroundStyle: { transform },\n };\n}\n\n/**\n * Simple translate animation to translate the header to right.\n */\nexport function forSlideRight({\n current,\n next,\n layouts: { screen },\n}: StackHeaderInterpolationProps): StackHeaderInterpolatedStyle {\n const progress = add(\n current.progress.interpolate({\n inputRange: [0, 1],\n outputRange: [0, 1],\n extrapolate: 'clamp',\n }),\n next\n ? next.progress.interpolate({\n inputRange: [0, 1],\n outputRange: [0, 1],\n extrapolate: 'clamp',\n })\n : 0\n );\n\n const translateX = progress.interpolate({\n inputRange: [0, 1, 2],\n outputRange: I18nManager.getConstants().isRTL\n ? [screen.width, 0, -screen.width]\n : [-screen.width, 0, screen.width],\n });\n\n const transform = [{ translateX }];\n\n return {\n leftButtonStyle: { transform },\n rightButtonStyle: { transform },\n titleStyle: { transform },\n backgroundStyle: { transform },\n };\n}\n\n/**\n * Simple translate animation to translate the header to slide up.\n */\nexport function forSlideUp({\n current,\n next,\n layouts: { header },\n}: StackHeaderInterpolationProps): StackHeaderInterpolatedStyle {\n const progress = add(\n current.progress.interpolate({\n inputRange: [0, 1],\n outputRange: [0, 1],\n extrapolate: 'clamp',\n }),\n next\n ? next.progress.interpolate({\n inputRange: [0, 1],\n outputRange: [0, 1],\n extrapolate: 'clamp',\n })\n : 0\n );\n\n const translateY = progress.interpolate({\n inputRange: [0, 1, 2],\n outputRange: [-header.height, 0, -header.height],\n });\n\n const transform = [{ translateY }];\n\n return {\n leftButtonStyle: { transform },\n rightButtonStyle: { transform },\n titleStyle: { transform },\n backgroundStyle: { transform },\n };\n}\n\nexport function forNoAnimation(): StackHeaderInterpolatedStyle {\n return {};\n}\n"]}
|
|
@@ -16,10 +16,10 @@ function getInvertedMultiplier(gestureDirection) {
|
|
|
16
16
|
return -1;
|
|
17
17
|
|
|
18
18
|
case 'horizontal':
|
|
19
|
-
return _reactNative.I18nManager.isRTL ? -1 : 1;
|
|
19
|
+
return _reactNative.I18nManager.getConstants().isRTL ? -1 : 1;
|
|
20
20
|
|
|
21
21
|
case 'horizontal-inverted':
|
|
22
|
-
return _reactNative.I18nManager.isRTL ? 1 : -1;
|
|
22
|
+
return _reactNative.I18nManager.getConstants().isRTL ? 1 : -1;
|
|
23
23
|
}
|
|
24
24
|
}
|
|
25
25
|
//# sourceMappingURL=getInvertedMultiplier.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["getInvertedMultiplier.tsx"],"names":["getInvertedMultiplier","gestureDirection","I18nManager","isRTL"],"mappings":";;;;;;;AAAA;;AAIe,SAASA,qBAAT,CACbC,gBADa,EAEL;AACR,UAAQA,gBAAR;AACE,SAAK,UAAL;AACE,aAAO,CAAP;;AACF,SAAK,mBAAL;AACE,aAAO,CAAC,CAAR;;AACF,SAAK,YAAL;AACE,aAAOC,yBAAYC,
|
|
1
|
+
{"version":3,"sources":["getInvertedMultiplier.tsx"],"names":["getInvertedMultiplier","gestureDirection","I18nManager","getConstants","isRTL"],"mappings":";;;;;;;AAAA;;AAIe,SAASA,qBAAT,CACbC,gBADa,EAEL;AACR,UAAQA,gBAAR;AACE,SAAK,UAAL;AACE,aAAO,CAAP;;AACF,SAAK,mBAAL;AACE,aAAO,CAAC,CAAR;;AACF,SAAK,YAAL;AACE,aAAOC,yBAAYC,YAAZ,GAA2BC,KAA3B,GAAmC,CAAC,CAApC,GAAwC,CAA/C;;AACF,SAAK,qBAAL;AACE,aAAOF,yBAAYC,YAAZ,GAA2BC,KAA3B,GAAmC,CAAnC,GAAuC,CAAC,CAA/C;AARJ;AAUD","sourcesContent":["import { I18nManager } from 'react-native';\n\nimport type { GestureDirection } from '../types';\n\nexport default function getInvertedMultiplier(\n gestureDirection: GestureDirection\n): 1 | -1 {\n switch (gestureDirection) {\n case 'vertical':\n return 1;\n case 'vertical-inverted':\n return -1;\n case 'horizontal':\n return I18nManager.getConstants().isRTL ? -1 : 1;\n case 'horizontal-inverted':\n return I18nManager.getConstants().isRTL ? 1 : -1;\n }\n}\n"]}
|
|
@@ -16,12 +16,6 @@ Object.defineProperty(exports, "GestureState", {
|
|
|
16
16
|
}
|
|
17
17
|
});
|
|
18
18
|
exports.PanGestureHandler = PanGestureHandler;
|
|
19
|
-
Object.defineProperty(exports, "PanGestureHandlerGestureEvent", {
|
|
20
|
-
enumerable: true,
|
|
21
|
-
get: function () {
|
|
22
|
-
return _reactNativeGestureHandler.PanGestureHandlerGestureEvent;
|
|
23
|
-
}
|
|
24
|
-
});
|
|
25
19
|
|
|
26
20
|
var React = _interopRequireWildcard(require("react"));
|
|
27
21
|
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["GestureHandlerNative.tsx"],"names":["PanGestureHandler","props","gestureRef","React","useRef"],"mappings":"
|
|
1
|
+
{"version":3,"sources":["GestureHandlerNative.tsx"],"names":["PanGestureHandler","props","gestureRef","React","useRef"],"mappings":";;;;;;;;;;;;;;;;;;;AAAA;;AACA;;AAKA;;;;;;;;;;AAEO,SAASA,iBAAT,CAA2BC,KAA3B,EAA+D;AACpE,QAAMC,UAAU,GAAGC,KAAK,CAACC,MAAN,CAAsC,IAAtC,CAAnB;AAEA,sBACE,oBAAC,iCAAD,CAA0B,QAA1B;AAAmC,IAAA,KAAK,EAAEF;AAA1C,kBACE,oBAAC,4CAAD,eAA6BD,KAA7B;AAAoC,IAAA,GAAG,EAAEC;AAAzC,KADF,CADF;AAKD","sourcesContent":["import * as React from 'react';\nimport {\n PanGestureHandler as PanGestureHandlerNative,\n PanGestureHandlerProperties,\n} from 'react-native-gesture-handler';\n\nimport GestureHandlerRefContext from '../utils/GestureHandlerRefContext';\n\nexport function PanGestureHandler(props: PanGestureHandlerProperties) {\n const gestureRef = React.useRef<PanGestureHandlerNative>(null);\n\n return (\n <GestureHandlerRefContext.Provider value={gestureRef}>\n <PanGestureHandlerNative {...props} ref={gestureRef} />\n </GestureHandlerRefContext.Provider>\n );\n}\n\nexport type { PanGestureHandlerGestureEvent } from 'react-native-gesture-handler';\nexport {\n GestureHandlerRootView,\n State as GestureState,\n} from 'react-native-gesture-handler';\n"]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Screens.tsx"],"names":["Screens","require","e","MaybeScreenContainer","enabled","rest","MaybeScreen","active"],"mappings":";;;;;;;AAAA;;AACA;;;;;;;;AAEA,IAAIA,OAAJ;;AAEA,IAAI;AACFA,EAAAA,OAAO,GAAGC,OAAO,CAAC,sBAAD,CAAjB;AACD,CAFD,CAEE,OAAOC,CAAP,EAAU,CACV;AACD;;AAEM,MAAMC,oBAAoB,GAAG,QAM9B;AAAA,MAN+B;AACnCC,IAAAA,OADmC;AAEnC,OAAGC;AAFgC,GAM/B;;AACJ,MAAIL,OAAO,IAAI,IAAf,EAAqB;AACnB,wBAAO,oBAAC,OAAD,CAAS,eAAT;AAAyB,MAAA,OAAO,EAAEI;AAAlC,OAA+CC,IAA/C,EAAP;AACD;;AAED,sBAAO,oBAAC,iBAAD,EAAUA,IAAV,CAAP;AACD,CAZM;;;;AAcA,MAAMC,WAAW,GAAG,
|
|
1
|
+
{"version":3,"sources":["Screens.tsx"],"names":["Screens","require","e","MaybeScreenContainer","enabled","rest","MaybeScreen","active"],"mappings":";;;;;;;AAAA;;AACA;;;;;;;;AAEA,IAAIA,OAAJ;;AAEA,IAAI;AACFA,EAAAA,OAAO,GAAGC,OAAO,CAAC,sBAAD,CAAjB;AACD,CAFD,CAEE,OAAOC,CAAP,EAAU,CACV;AACD;;AAEM,MAAMC,oBAAoB,GAAG,QAM9B;AAAA,MAN+B;AACnCC,IAAAA,OADmC;AAEnC,OAAGC;AAFgC,GAM/B;;AACJ,MAAIL,OAAO,IAAI,IAAf,EAAqB;AACnB,wBAAO,oBAAC,OAAD,CAAS,eAAT;AAAyB,MAAA,OAAO,EAAEI;AAAlC,OAA+CC,IAA/C,EAAP;AACD;;AAED,sBAAO,oBAAC,iBAAD,EAAUA,IAAV,CAAP;AACD,CAZM;;;;AAcA,MAAMC,WAAW,GAAG,SASrB;AAAA,MATsB;AAC1BF,IAAAA,OAD0B;AAE1BG,IAAAA,MAF0B;AAG1B,OAAGF;AAHuB,GAStB;;AACJ,MAAIL,OAAO,IAAI,IAAf,EAAqB;AACnB,wBACE,oBAAC,OAAD,CAAS,MAAT;AAAgB,MAAA,OAAO,EAAEI,OAAzB;AAAkC,MAAA,aAAa,EAAEG;AAAjD,OAA6DF,IAA7D,EADF;AAGD;;AAED,sBAAO,oBAAC,iBAAD,EAAUA,IAAV,CAAP;AACD,CAjBM","sourcesContent":["import * as React from 'react';\nimport { Animated, View, ViewProps } from 'react-native';\n\nlet Screens: typeof import('react-native-screens') | undefined;\n\ntry {\n Screens = require('react-native-screens');\n} catch (e) {\n // Ignore\n}\n\nexport const MaybeScreenContainer = ({\n enabled,\n ...rest\n}: ViewProps & {\n enabled: boolean;\n children: React.ReactNode;\n}) => {\n if (Screens != null) {\n return <Screens.ScreenContainer enabled={enabled} {...rest} />;\n }\n\n return <View {...rest} />;\n};\n\nexport const MaybeScreen = ({\n enabled,\n active,\n ...rest\n}: ViewProps & {\n enabled: boolean;\n active: 0 | 1 | Animated.AnimatedInterpolation;\n children: React.ReactNode;\n freezeOnBlur?: boolean;\n}) => {\n if (Screens != null) {\n return (\n <Screens.Screen enabled={enabled} activityState={active} {...rest} />\n );\n }\n\n return <View {...rest} />;\n};\n"]}
|
|
@@ -62,6 +62,10 @@ class Card extends React.Component {
|
|
|
62
62
|
constructor() {
|
|
63
63
|
super(...arguments);
|
|
64
64
|
|
|
65
|
+
_defineProperty(this, "state", {
|
|
66
|
+
pointerEvents: 'auto'
|
|
67
|
+
});
|
|
68
|
+
|
|
65
69
|
_defineProperty(this, "isCurrentlyMounted", false);
|
|
66
70
|
|
|
67
71
|
_defineProperty(this, "isClosing", new _reactNative.Animated.Value(FALSE));
|
|
@@ -149,10 +153,8 @@ class Card extends React.Component {
|
|
|
149
153
|
});
|
|
150
154
|
|
|
151
155
|
_defineProperty(this, "setPointerEventsEnabled", enabled => {
|
|
152
|
-
var _this$contentRef$curr;
|
|
153
|
-
|
|
154
156
|
const pointerEvents = enabled ? 'box-none' : 'none';
|
|
155
|
-
|
|
157
|
+
this.setState({
|
|
156
158
|
pointerEvents
|
|
157
159
|
});
|
|
158
160
|
});
|
|
@@ -268,8 +270,6 @@ class Card extends React.Component {
|
|
|
268
270
|
left: insetLeft
|
|
269
271
|
}
|
|
270
272
|
})));
|
|
271
|
-
|
|
272
|
-
_defineProperty(this, "contentRef", /*#__PURE__*/React.createRef());
|
|
273
273
|
}
|
|
274
274
|
|
|
275
275
|
componentDidMount() {
|
|
@@ -461,7 +461,7 @@ class Card extends React.Component {
|
|
|
461
461
|
}, shadowStyle],
|
|
462
462
|
pointerEvents: "none"
|
|
463
463
|
}) : null, /*#__PURE__*/React.createElement(_CardSheet.default, {
|
|
464
|
-
|
|
464
|
+
pointerEvents: this.state.pointerEvents,
|
|
465
465
|
enabled: pageOverflowEnabled,
|
|
466
466
|
layout: layout,
|
|
467
467
|
style: contentStyle
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["Card.tsx"],"names":["GESTURE_VELOCITY_IMPACT","TRUE","FALSE","GESTURE_RESPONSE_DISTANCE_HORIZONTAL","GESTURE_RESPONSE_DISTANCE_VERTICAL","useNativeDriver","Platform","OS","hasOpacityStyle","style","flattenedStyle","StyleSheet","flatten","opacity","Card","React","Component","Animated","Value","props","gestureDirection","width","layout","height","closing","velocity","gesture","transitionSpec","onOpen","onClose","onTransition","toValue","getAnimateToValue","lastToValue","isClosing","setValue","spec","close","open","animation","spring","timing","setPointerEventsEnabled","handleStartInteraction","clearTimeout","pendingGestureCallback","undefined","config","isInteraction","start","finished","handleEndInteraction","isCurrentlyMounted","forceUpdate","enabled","pointerEvents","contentRef","current","setNativeProps","interactionHandle","InteractionManager","createInteractionHandle","clearInteractionHandle","nativeEvent","onGestureBegin","onGestureCanceled","onGestureEnd","gestureVelocityImpact","state","GestureState","ACTIVE","isSwiping","CANCELLED","velocityY","velocityX","animate","END","distance","translation","translationY","translationX","setTimeout","styleInterpolator","interpolationIndex","next","insetTop","insetRight","insetBottom","insetLeft","index","progress","swiping","inverted","layouts","screen","insets","top","right","bottom","left","createRef","componentDidMount","componentDidUpdate","prevProps","componentWillUnmount","stopAnimation","gestureActivationCriteria","gestureResponseDistance","enableTrackpadTwoFingerGesture","maxDeltaX","minOffsetY","hitSlop","invertedMultiplier","minOffsetX","maxDeltaY","render","overlay","overlayEnabled","shadowEnabled","gestureEnabled","pageOverflowEnabled","headerDarkContent","children","containerStyle","customContainerStyle","contentStyle","rest","interpolationProps","getCardAnimation","interpolatedStyle","getInterpolatedStyle","cardStyle","overlayStyle","shadowStyle","handleGestureEvent","event","backgroundColor","isTransparent","alpha","getIsModalPresentation","absoluteFill","styles","container","handleGestureStateChange","shadow","shadowHorizontal","shadowLeft","shadowRight","shadowVertical","shadowTop","shadowBottom","cardStyleInterpolator","forModalPresentationIOS","name","create","flex","position","shadowRadius","shadowColor","shadowOpacity","shadowOffset"],"mappings":"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","sourcesContent":["import Color from 'color';\nimport * as React from 'react';\nimport {\n Animated,\n InteractionManager,\n Platform,\n StyleProp,\n StyleSheet,\n View,\n ViewProps,\n ViewStyle,\n} from 'react-native';\nimport type { EdgeInsets } from 'react-native-safe-area-context';\n\nimport { forModalPresentationIOS } from '../../TransitionConfigs/CardStyleInterpolators';\nimport type {\n GestureDirection,\n Layout,\n StackCardInterpolationProps,\n StackCardStyleInterpolator,\n TransitionSpec,\n} from '../../types';\nimport CardAnimationContext from '../../utils/CardAnimationContext';\nimport getDistanceForDirection from '../../utils/getDistanceForDirection';\nimport getInvertedMultiplier from '../../utils/getInvertedMultiplier';\nimport memoize from '../../utils/memoize';\nimport {\n GestureState,\n PanGestureHandler,\n PanGestureHandlerGestureEvent,\n} from '../GestureHandler';\nimport ModalStatusBarManager from '../ModalStatusBarManager';\nimport CardSheet from './CardSheet';\n\ntype Props = ViewProps & {\n interpolationIndex: number;\n closing: boolean;\n next?: Animated.AnimatedInterpolation;\n current: Animated.AnimatedInterpolation;\n gesture: Animated.Value;\n layout: Layout;\n insets: EdgeInsets;\n headerDarkContent: boolean | undefined;\n pageOverflowEnabled: boolean;\n gestureDirection: GestureDirection;\n onOpen: () => void;\n onClose: () => void;\n onTransition: (props: { closing: boolean; gesture: boolean }) => void;\n onGestureBegin: () => void;\n onGestureCanceled: () => void;\n onGestureEnd: () => void;\n children: React.ReactNode;\n overlay: (props: {\n style: Animated.WithAnimatedValue<StyleProp<ViewStyle>>;\n }) => React.ReactNode;\n overlayEnabled: boolean;\n shadowEnabled: boolean;\n gestureEnabled: boolean;\n gestureResponseDistance?: number;\n gestureVelocityImpact: number;\n transitionSpec: {\n open: TransitionSpec;\n close: TransitionSpec;\n };\n styleInterpolator: StackCardStyleInterpolator;\n containerStyle?: StyleProp<ViewStyle>;\n contentStyle?: StyleProp<ViewStyle>;\n};\n\nconst GESTURE_VELOCITY_IMPACT = 0.3;\n\nconst TRUE = 1;\nconst FALSE = 0;\n\n/**\n * The distance of touch start from the edge of the screen where the gesture will be recognized\n */\nconst GESTURE_RESPONSE_DISTANCE_HORIZONTAL = 50;\nconst GESTURE_RESPONSE_DISTANCE_VERTICAL = 135;\n\nconst useNativeDriver = Platform.OS !== 'web';\n\nconst hasOpacityStyle = (style: any) => {\n if (style) {\n const flattenedStyle = StyleSheet.flatten(style);\n return flattenedStyle.opacity != null;\n }\n\n return false;\n};\n\nexport default class Card extends React.Component<Props> {\n static defaultProps = {\n shadowEnabled: false,\n gestureEnabled: true,\n gestureVelocityImpact: GESTURE_VELOCITY_IMPACT,\n overlay: ({\n style,\n }: {\n style: Animated.WithAnimatedValue<StyleProp<ViewStyle>>;\n }) =>\n style ? (\n <Animated.View pointerEvents=\"none\" style={[styles.overlay, style]} />\n ) : null,\n };\n\n componentDidMount() {\n this.animate({ closing: this.props.closing });\n this.isCurrentlyMounted = true;\n }\n\n componentDidUpdate(prevProps: Props) {\n const { layout, gestureDirection, closing } = this.props;\n const { width, height } = layout;\n\n if (width !== prevProps.layout.width) {\n this.layout.width.setValue(width);\n }\n\n if (height !== prevProps.layout.height) {\n this.layout.height.setValue(height);\n }\n\n if (gestureDirection !== prevProps.gestureDirection) {\n this.inverted.setValue(getInvertedMultiplier(gestureDirection));\n }\n\n const toValue = this.getAnimateToValue(this.props);\n\n if (\n this.getAnimateToValue(prevProps) !== toValue ||\n this.lastToValue !== toValue\n ) {\n // We need to trigger the animation when route was closed\n // Thr route might have been closed by a `POP` action or by a gesture\n // When route was closed due to a gesture, the animation would've happened already\n // It's still important to trigger the animation so that `onClose` is called\n // If `onClose` is not called, cleanup step won't be performed for gestures\n this.animate({ closing });\n }\n }\n\n componentWillUnmount() {\n this.props.gesture.stopAnimation();\n this.isCurrentlyMounted = false;\n this.handleEndInteraction();\n }\n\n private isCurrentlyMounted = false;\n\n private isClosing = new Animated.Value(FALSE);\n\n private inverted = new Animated.Value(\n getInvertedMultiplier(this.props.gestureDirection)\n );\n\n private layout = {\n width: new Animated.Value(this.props.layout.width),\n height: new Animated.Value(this.props.layout.height),\n };\n\n private isSwiping = new Animated.Value(FALSE);\n\n private interactionHandle: number | undefined;\n\n private pendingGestureCallback: number | undefined;\n\n private lastToValue: number | undefined;\n\n private animate = ({\n closing,\n velocity,\n }: {\n closing: boolean;\n velocity?: number;\n }) => {\n const { gesture, transitionSpec, onOpen, onClose, onTransition } =\n this.props;\n\n const toValue = this.getAnimateToValue({\n ...this.props,\n closing,\n });\n\n this.lastToValue = toValue;\n\n this.isClosing.setValue(closing ? TRUE : FALSE);\n\n const spec = closing ? transitionSpec.close : transitionSpec.open;\n\n const animation =\n spec.animation === 'spring' ? Animated.spring : Animated.timing;\n\n this.setPointerEventsEnabled(!closing);\n this.handleStartInteraction();\n\n clearTimeout(this.pendingGestureCallback);\n\n onTransition?.({ closing, gesture: velocity !== undefined });\n animation(gesture, {\n ...spec.config,\n velocity,\n toValue,\n useNativeDriver,\n isInteraction: false,\n }).start(({ finished }) => {\n this.handleEndInteraction();\n\n clearTimeout(this.pendingGestureCallback);\n\n if (finished) {\n if (closing) {\n onClose();\n } else {\n onOpen();\n }\n\n if (this.isCurrentlyMounted) {\n // Make sure to re-open screen if it wasn't removed\n this.forceUpdate();\n }\n }\n });\n };\n\n private getAnimateToValue = ({\n closing,\n layout,\n gestureDirection,\n }: {\n closing?: boolean;\n layout: Layout;\n gestureDirection: GestureDirection;\n }) => {\n if (!closing) {\n return 0;\n }\n\n return getDistanceForDirection(layout, gestureDirection);\n };\n\n private setPointerEventsEnabled = (enabled: boolean) => {\n const pointerEvents = enabled ? 'box-none' : 'none';\n\n this.contentRef.current?.setNativeProps({ pointerEvents });\n };\n\n private handleStartInteraction = () => {\n if (this.interactionHandle === undefined) {\n this.interactionHandle = InteractionManager.createInteractionHandle();\n }\n };\n\n private handleEndInteraction = () => {\n if (this.interactionHandle !== undefined) {\n InteractionManager.clearInteractionHandle(this.interactionHandle);\n this.interactionHandle = undefined;\n }\n };\n\n private handleGestureStateChange = ({\n nativeEvent,\n }: PanGestureHandlerGestureEvent) => {\n const {\n layout,\n onClose,\n onGestureBegin,\n onGestureCanceled,\n onGestureEnd,\n gestureDirection,\n gestureVelocityImpact,\n } = this.props;\n\n switch (nativeEvent.state) {\n case GestureState.ACTIVE:\n this.isSwiping.setValue(TRUE);\n this.handleStartInteraction();\n onGestureBegin?.();\n break;\n case GestureState.CANCELLED: {\n this.isSwiping.setValue(FALSE);\n this.handleEndInteraction();\n\n const velocity =\n gestureDirection === 'vertical' ||\n gestureDirection === 'vertical-inverted'\n ? nativeEvent.velocityY\n : nativeEvent.velocityX;\n\n this.animate({ closing: this.props.closing, velocity });\n\n onGestureCanceled?.();\n break;\n }\n case GestureState.END: {\n this.isSwiping.setValue(FALSE);\n\n let distance;\n let translation;\n let velocity;\n\n if (\n gestureDirection === 'vertical' ||\n gestureDirection === 'vertical-inverted'\n ) {\n distance = layout.height;\n translation = nativeEvent.translationY;\n velocity = nativeEvent.velocityY;\n } else {\n distance = layout.width;\n translation = nativeEvent.translationX;\n velocity = nativeEvent.velocityX;\n }\n\n const closing =\n (translation + velocity * gestureVelocityImpact) *\n getInvertedMultiplier(gestureDirection) >\n distance / 2\n ? velocity !== 0 || translation !== 0\n : this.props.closing;\n\n this.animate({ closing, velocity });\n\n if (closing) {\n // We call onClose with a delay to make sure that the animation has already started\n // This will make sure that the state update caused by this doesn't affect start of animation\n this.pendingGestureCallback = setTimeout(() => {\n onClose();\n\n // Trigger an update after we dispatch the action to remove the screen\n // This will make sure that we check if the screen didn't get removed so we can cancel the animation\n this.forceUpdate();\n }, 32) as any as number;\n }\n\n onGestureEnd?.();\n break;\n }\n }\n };\n\n // Memoize this to avoid extra work on re-render\n private getInterpolatedStyle = memoize(\n (\n styleInterpolator: StackCardStyleInterpolator,\n animation: StackCardInterpolationProps\n ) => styleInterpolator(animation)\n );\n\n // Keep track of the animation context when deps changes.\n private getCardAnimation = memoize(\n (\n interpolationIndex: number,\n current: Animated.AnimatedInterpolation,\n next: Animated.AnimatedInterpolation | undefined,\n layout: Layout,\n insetTop: number,\n insetRight: number,\n insetBottom: number,\n insetLeft: number\n ) => ({\n index: interpolationIndex,\n current: { progress: current },\n next: next && { progress: next },\n closing: this.isClosing,\n swiping: this.isSwiping,\n inverted: this.inverted,\n layouts: {\n screen: layout,\n },\n insets: {\n top: insetTop,\n right: insetRight,\n bottom: insetBottom,\n left: insetLeft,\n },\n })\n );\n\n private gestureActivationCriteria() {\n const { layout, gestureDirection, gestureResponseDistance } = this.props;\n const enableTrackpadTwoFingerGesture = true;\n\n const distance =\n gestureResponseDistance !== undefined\n ? gestureResponseDistance\n : gestureDirection === 'vertical' ||\n gestureDirection === 'vertical-inverted'\n ? GESTURE_RESPONSE_DISTANCE_VERTICAL\n : GESTURE_RESPONSE_DISTANCE_HORIZONTAL;\n\n if (gestureDirection === 'vertical') {\n return {\n maxDeltaX: 15,\n minOffsetY: 5,\n hitSlop: { bottom: -layout.height + distance },\n enableTrackpadTwoFingerGesture,\n };\n } else if (gestureDirection === 'vertical-inverted') {\n return {\n maxDeltaX: 15,\n minOffsetY: -5,\n hitSlop: { top: -layout.height + distance },\n enableTrackpadTwoFingerGesture,\n };\n } else {\n const hitSlop = -layout.width + distance;\n const invertedMultiplier = getInvertedMultiplier(gestureDirection);\n\n if (invertedMultiplier === 1) {\n return {\n minOffsetX: 5,\n maxDeltaY: 20,\n hitSlop: { right: hitSlop },\n enableTrackpadTwoFingerGesture,\n };\n } else {\n return {\n minOffsetX: -5,\n maxDeltaY: 20,\n hitSlop: { left: hitSlop },\n enableTrackpadTwoFingerGesture,\n };\n }\n }\n }\n\n private contentRef = React.createRef<View>();\n\n render() {\n const {\n styleInterpolator,\n interpolationIndex,\n current,\n gesture,\n next,\n layout,\n insets,\n overlay,\n overlayEnabled,\n shadowEnabled,\n gestureEnabled,\n gestureDirection,\n pageOverflowEnabled,\n headerDarkContent,\n children,\n containerStyle: customContainerStyle,\n contentStyle,\n ...rest\n } = this.props;\n\n const interpolationProps = this.getCardAnimation(\n interpolationIndex,\n current,\n next,\n layout,\n insets.top,\n insets.right,\n insets.bottom,\n insets.left\n );\n\n const interpolatedStyle = this.getInterpolatedStyle(\n styleInterpolator,\n interpolationProps\n );\n\n const { containerStyle, cardStyle, overlayStyle, shadowStyle } =\n interpolatedStyle;\n\n const handleGestureEvent = gestureEnabled\n ? Animated.event(\n [\n {\n nativeEvent:\n gestureDirection === 'vertical' ||\n gestureDirection === 'vertical-inverted'\n ? { translationY: gesture }\n : { translationX: gesture },\n },\n ],\n { useNativeDriver }\n )\n : undefined;\n\n const { backgroundColor } = StyleSheet.flatten(contentStyle || {});\n const isTransparent =\n typeof backgroundColor === 'string'\n ? Color(backgroundColor).alpha() === 0\n : false;\n\n return (\n <CardAnimationContext.Provider value={interpolationProps}>\n {\n // StatusBar messes with translucent status bar on Android\n // So we should only enable it on iOS\n Platform.OS === 'ios' &&\n overlayEnabled &&\n next &&\n getIsModalPresentation(styleInterpolator) ? (\n <ModalStatusBarManager\n dark={headerDarkContent}\n layout={layout}\n insets={insets}\n style={cardStyle}\n />\n ) : null\n }\n <Animated.View\n style={{\n // This is a dummy style that doesn't actually change anything visually.\n // Animated needs the animated value to be used somewhere, otherwise things don't update properly.\n // If we disable animations and hide header, it could end up making the value unused.\n // So we have this dummy style that will always be used regardless of what else changed.\n opacity: current,\n }}\n // Make sure that this view isn't removed. If this view is removed, our style with animated value won't apply\n collapsable={false}\n />\n <View pointerEvents=\"box-none\" {...rest}>\n {overlayEnabled ? (\n <View pointerEvents=\"box-none\" style={StyleSheet.absoluteFill}>\n {overlay({ style: overlayStyle })}\n </View>\n ) : null}\n <Animated.View\n style={[styles.container, containerStyle, customContainerStyle]}\n pointerEvents=\"box-none\"\n >\n <PanGestureHandler\n enabled={layout.width !== 0 && gestureEnabled}\n onGestureEvent={handleGestureEvent}\n onHandlerStateChange={this.handleGestureStateChange}\n {...this.gestureActivationCriteria()}\n >\n <Animated.View\n needsOffscreenAlphaCompositing={hasOpacityStyle(cardStyle)}\n style={[styles.container, cardStyle]}\n >\n {shadowEnabled && shadowStyle && !isTransparent ? (\n <Animated.View\n style={[\n styles.shadow,\n gestureDirection === 'horizontal'\n ? [styles.shadowHorizontal, styles.shadowLeft]\n : gestureDirection === 'horizontal-inverted'\n ? [styles.shadowHorizontal, styles.shadowRight]\n : gestureDirection === 'vertical'\n ? [styles.shadowVertical, styles.shadowTop]\n : [styles.shadowVertical, styles.shadowBottom],\n { backgroundColor },\n shadowStyle,\n ]}\n pointerEvents=\"none\"\n />\n ) : null}\n <CardSheet\n ref={this.contentRef}\n enabled={pageOverflowEnabled}\n layout={layout}\n style={contentStyle}\n >\n {children}\n </CardSheet>\n </Animated.View>\n </PanGestureHandler>\n </Animated.View>\n </View>\n </CardAnimationContext.Provider>\n );\n }\n}\n\nexport const getIsModalPresentation = (\n cardStyleInterpolator: StackCardStyleInterpolator\n) => {\n return (\n cardStyleInterpolator === forModalPresentationIOS ||\n // Handle custom modal presentation interpolators as well\n cardStyleInterpolator.name === 'forModalPresentationIOS'\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n overlay: {\n flex: 1,\n backgroundColor: '#000',\n },\n shadow: {\n position: 'absolute',\n shadowRadius: 5,\n shadowColor: '#000',\n shadowOpacity: 0.3,\n },\n shadowHorizontal: {\n top: 0,\n bottom: 0,\n width: 3,\n shadowOffset: { width: -1, height: 1 },\n },\n shadowLeft: {\n left: 0,\n },\n shadowRight: {\n right: 0,\n },\n shadowVertical: {\n left: 0,\n right: 0,\n height: 3,\n shadowOffset: { width: 1, height: -1 },\n },\n shadowTop: {\n top: 0,\n },\n shadowBottom: {\n bottom: 0,\n },\n});\n"]}
|
|
1
|
+
{"version":3,"sources":["Card.tsx"],"names":["GESTURE_VELOCITY_IMPACT","TRUE","FALSE","GESTURE_RESPONSE_DISTANCE_HORIZONTAL","GESTURE_RESPONSE_DISTANCE_VERTICAL","useNativeDriver","Platform","OS","hasOpacityStyle","style","flattenedStyle","StyleSheet","flatten","opacity","Card","React","Component","pointerEvents","Animated","Value","props","gestureDirection","width","layout","height","closing","velocity","gesture","transitionSpec","onOpen","onClose","onTransition","toValue","getAnimateToValue","lastToValue","isClosing","setValue","spec","close","open","animation","spring","timing","setPointerEventsEnabled","handleStartInteraction","clearTimeout","pendingGestureCallback","undefined","config","isInteraction","start","finished","handleEndInteraction","isCurrentlyMounted","forceUpdate","enabled","setState","interactionHandle","InteractionManager","createInteractionHandle","clearInteractionHandle","nativeEvent","onGestureBegin","onGestureCanceled","onGestureEnd","gestureVelocityImpact","state","GestureState","ACTIVE","isSwiping","CANCELLED","velocityY","velocityX","animate","END","distance","translation","translationY","translationX","setTimeout","styleInterpolator","interpolationIndex","current","next","insetTop","insetRight","insetBottom","insetLeft","index","progress","swiping","inverted","layouts","screen","insets","top","right","bottom","left","componentDidMount","componentDidUpdate","prevProps","componentWillUnmount","stopAnimation","gestureActivationCriteria","gestureResponseDistance","enableTrackpadTwoFingerGesture","maxDeltaX","minOffsetY","hitSlop","invertedMultiplier","minOffsetX","maxDeltaY","render","overlay","overlayEnabled","shadowEnabled","gestureEnabled","pageOverflowEnabled","headerDarkContent","children","containerStyle","customContainerStyle","contentStyle","rest","interpolationProps","getCardAnimation","interpolatedStyle","getInterpolatedStyle","cardStyle","overlayStyle","shadowStyle","handleGestureEvent","event","backgroundColor","isTransparent","alpha","getIsModalPresentation","absoluteFill","styles","container","handleGestureStateChange","shadow","shadowHorizontal","shadowLeft","shadowRight","shadowVertical","shadowTop","shadowBottom","cardStyleInterpolator","forModalPresentationIOS","name","create","flex","position","shadowRadius","shadowColor","shadowOpacity","shadowOffset"],"mappings":"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","sourcesContent":["import Color from 'color';\nimport * as React from 'react';\nimport {\n Animated,\n InteractionManager,\n Platform,\n StyleProp,\n StyleSheet,\n View,\n ViewProps,\n ViewStyle,\n} from 'react-native';\nimport type { EdgeInsets } from 'react-native-safe-area-context';\n\nimport { forModalPresentationIOS } from '../../TransitionConfigs/CardStyleInterpolators';\nimport type {\n GestureDirection,\n Layout,\n StackCardInterpolationProps,\n StackCardStyleInterpolator,\n TransitionSpec,\n} from '../../types';\nimport CardAnimationContext from '../../utils/CardAnimationContext';\nimport getDistanceForDirection from '../../utils/getDistanceForDirection';\nimport getInvertedMultiplier from '../../utils/getInvertedMultiplier';\nimport memoize from '../../utils/memoize';\nimport {\n GestureState,\n PanGestureHandler,\n PanGestureHandlerGestureEvent,\n} from '../GestureHandler';\nimport ModalStatusBarManager from '../ModalStatusBarManager';\nimport CardSheet from './CardSheet';\n\ntype Props = ViewProps & {\n interpolationIndex: number;\n closing: boolean;\n next?: Animated.AnimatedInterpolation;\n current: Animated.AnimatedInterpolation;\n gesture: Animated.Value;\n layout: Layout;\n insets: EdgeInsets;\n headerDarkContent: boolean | undefined;\n pageOverflowEnabled: boolean;\n gestureDirection: GestureDirection;\n onOpen: () => void;\n onClose: () => void;\n onTransition: (props: { closing: boolean; gesture: boolean }) => void;\n onGestureBegin: () => void;\n onGestureCanceled: () => void;\n onGestureEnd: () => void;\n children: React.ReactNode;\n overlay: (props: {\n style: Animated.WithAnimatedValue<StyleProp<ViewStyle>>;\n }) => React.ReactNode;\n overlayEnabled: boolean;\n shadowEnabled: boolean;\n gestureEnabled: boolean;\n gestureResponseDistance?: number;\n gestureVelocityImpact: number;\n transitionSpec: {\n open: TransitionSpec;\n close: TransitionSpec;\n };\n styleInterpolator: StackCardStyleInterpolator;\n containerStyle?: StyleProp<ViewStyle>;\n contentStyle?: StyleProp<ViewStyle>;\n};\n\ntype State = {\n pointerEvents: ViewProps['pointerEvents'];\n};\n\nconst GESTURE_VELOCITY_IMPACT = 0.3;\n\nconst TRUE = 1;\nconst FALSE = 0;\n\n/**\n * The distance of touch start from the edge of the screen where the gesture will be recognized\n */\nconst GESTURE_RESPONSE_DISTANCE_HORIZONTAL = 50;\nconst GESTURE_RESPONSE_DISTANCE_VERTICAL = 135;\n\nconst useNativeDriver = Platform.OS !== 'web';\n\nconst hasOpacityStyle = (style: any) => {\n if (style) {\n const flattenedStyle = StyleSheet.flatten(style);\n return flattenedStyle.opacity != null;\n }\n\n return false;\n};\n\nexport default class Card extends React.Component<Props, State> {\n static defaultProps = {\n shadowEnabled: false,\n gestureEnabled: true,\n gestureVelocityImpact: GESTURE_VELOCITY_IMPACT,\n overlay: ({\n style,\n }: {\n style: Animated.WithAnimatedValue<StyleProp<ViewStyle>>;\n }) =>\n style ? (\n <Animated.View pointerEvents=\"none\" style={[styles.overlay, style]} />\n ) : null,\n };\n\n state: State = {\n pointerEvents: 'auto',\n };\n\n componentDidMount() {\n this.animate({ closing: this.props.closing });\n this.isCurrentlyMounted = true;\n }\n\n componentDidUpdate(prevProps: Props) {\n const { layout, gestureDirection, closing } = this.props;\n const { width, height } = layout;\n\n if (width !== prevProps.layout.width) {\n this.layout.width.setValue(width);\n }\n\n if (height !== prevProps.layout.height) {\n this.layout.height.setValue(height);\n }\n\n if (gestureDirection !== prevProps.gestureDirection) {\n this.inverted.setValue(getInvertedMultiplier(gestureDirection));\n }\n\n const toValue = this.getAnimateToValue(this.props);\n\n if (\n this.getAnimateToValue(prevProps) !== toValue ||\n this.lastToValue !== toValue\n ) {\n // We need to trigger the animation when route was closed\n // Thr route might have been closed by a `POP` action or by a gesture\n // When route was closed due to a gesture, the animation would've happened already\n // It's still important to trigger the animation so that `onClose` is called\n // If `onClose` is not called, cleanup step won't be performed for gestures\n this.animate({ closing });\n }\n }\n\n componentWillUnmount() {\n this.props.gesture.stopAnimation();\n this.isCurrentlyMounted = false;\n this.handleEndInteraction();\n }\n\n private isCurrentlyMounted = false;\n\n private isClosing = new Animated.Value(FALSE);\n\n private inverted = new Animated.Value(\n getInvertedMultiplier(this.props.gestureDirection)\n );\n\n private layout = {\n width: new Animated.Value(this.props.layout.width),\n height: new Animated.Value(this.props.layout.height),\n };\n\n private isSwiping = new Animated.Value(FALSE);\n\n private interactionHandle: number | undefined;\n\n private pendingGestureCallback: number | undefined;\n\n private lastToValue: number | undefined;\n\n private animate = ({\n closing,\n velocity,\n }: {\n closing: boolean;\n velocity?: number;\n }) => {\n const { gesture, transitionSpec, onOpen, onClose, onTransition } =\n this.props;\n\n const toValue = this.getAnimateToValue({\n ...this.props,\n closing,\n });\n\n this.lastToValue = toValue;\n\n this.isClosing.setValue(closing ? TRUE : FALSE);\n\n const spec = closing ? transitionSpec.close : transitionSpec.open;\n\n const animation =\n spec.animation === 'spring' ? Animated.spring : Animated.timing;\n\n this.setPointerEventsEnabled(!closing);\n this.handleStartInteraction();\n\n clearTimeout(this.pendingGestureCallback);\n\n onTransition?.({ closing, gesture: velocity !== undefined });\n animation(gesture, {\n ...spec.config,\n velocity,\n toValue,\n useNativeDriver,\n isInteraction: false,\n }).start(({ finished }) => {\n this.handleEndInteraction();\n\n clearTimeout(this.pendingGestureCallback);\n\n if (finished) {\n if (closing) {\n onClose();\n } else {\n onOpen();\n }\n\n if (this.isCurrentlyMounted) {\n // Make sure to re-open screen if it wasn't removed\n this.forceUpdate();\n }\n }\n });\n };\n\n private getAnimateToValue = ({\n closing,\n layout,\n gestureDirection,\n }: {\n closing?: boolean;\n layout: Layout;\n gestureDirection: GestureDirection;\n }) => {\n if (!closing) {\n return 0;\n }\n\n return getDistanceForDirection(layout, gestureDirection);\n };\n\n private setPointerEventsEnabled = (enabled: boolean) => {\n const pointerEvents = enabled ? 'box-none' : 'none';\n\n this.setState({ pointerEvents });\n };\n\n private handleStartInteraction = () => {\n if (this.interactionHandle === undefined) {\n this.interactionHandle = InteractionManager.createInteractionHandle();\n }\n };\n\n private handleEndInteraction = () => {\n if (this.interactionHandle !== undefined) {\n InteractionManager.clearInteractionHandle(this.interactionHandle);\n this.interactionHandle = undefined;\n }\n };\n\n private handleGestureStateChange = ({\n nativeEvent,\n }: PanGestureHandlerGestureEvent) => {\n const {\n layout,\n onClose,\n onGestureBegin,\n onGestureCanceled,\n onGestureEnd,\n gestureDirection,\n gestureVelocityImpact,\n } = this.props;\n\n switch (nativeEvent.state) {\n case GestureState.ACTIVE:\n this.isSwiping.setValue(TRUE);\n this.handleStartInteraction();\n onGestureBegin?.();\n break;\n case GestureState.CANCELLED: {\n this.isSwiping.setValue(FALSE);\n this.handleEndInteraction();\n\n const velocity =\n gestureDirection === 'vertical' ||\n gestureDirection === 'vertical-inverted'\n ? nativeEvent.velocityY\n : nativeEvent.velocityX;\n\n this.animate({ closing: this.props.closing, velocity });\n\n onGestureCanceled?.();\n break;\n }\n case GestureState.END: {\n this.isSwiping.setValue(FALSE);\n\n let distance;\n let translation;\n let velocity;\n\n if (\n gestureDirection === 'vertical' ||\n gestureDirection === 'vertical-inverted'\n ) {\n distance = layout.height;\n translation = nativeEvent.translationY;\n velocity = nativeEvent.velocityY;\n } else {\n distance = layout.width;\n translation = nativeEvent.translationX;\n velocity = nativeEvent.velocityX;\n }\n\n const closing =\n (translation + velocity * gestureVelocityImpact) *\n getInvertedMultiplier(gestureDirection) >\n distance / 2\n ? velocity !== 0 || translation !== 0\n : this.props.closing;\n\n this.animate({ closing, velocity });\n\n if (closing) {\n // We call onClose with a delay to make sure that the animation has already started\n // This will make sure that the state update caused by this doesn't affect start of animation\n this.pendingGestureCallback = setTimeout(() => {\n onClose();\n\n // Trigger an update after we dispatch the action to remove the screen\n // This will make sure that we check if the screen didn't get removed so we can cancel the animation\n this.forceUpdate();\n }, 32) as any as number;\n }\n\n onGestureEnd?.();\n break;\n }\n }\n };\n\n // Memoize this to avoid extra work on re-render\n private getInterpolatedStyle = memoize(\n (\n styleInterpolator: StackCardStyleInterpolator,\n animation: StackCardInterpolationProps\n ) => styleInterpolator(animation)\n );\n\n // Keep track of the animation context when deps changes.\n private getCardAnimation = memoize(\n (\n interpolationIndex: number,\n current: Animated.AnimatedInterpolation,\n next: Animated.AnimatedInterpolation | undefined,\n layout: Layout,\n insetTop: number,\n insetRight: number,\n insetBottom: number,\n insetLeft: number\n ) => ({\n index: interpolationIndex,\n current: { progress: current },\n next: next && { progress: next },\n closing: this.isClosing,\n swiping: this.isSwiping,\n inverted: this.inverted,\n layouts: {\n screen: layout,\n },\n insets: {\n top: insetTop,\n right: insetRight,\n bottom: insetBottom,\n left: insetLeft,\n },\n })\n );\n\n private gestureActivationCriteria() {\n const { layout, gestureDirection, gestureResponseDistance } = this.props;\n const enableTrackpadTwoFingerGesture = true;\n\n const distance =\n gestureResponseDistance !== undefined\n ? gestureResponseDistance\n : gestureDirection === 'vertical' ||\n gestureDirection === 'vertical-inverted'\n ? GESTURE_RESPONSE_DISTANCE_VERTICAL\n : GESTURE_RESPONSE_DISTANCE_HORIZONTAL;\n\n if (gestureDirection === 'vertical') {\n return {\n maxDeltaX: 15,\n minOffsetY: 5,\n hitSlop: { bottom: -layout.height + distance },\n enableTrackpadTwoFingerGesture,\n };\n } else if (gestureDirection === 'vertical-inverted') {\n return {\n maxDeltaX: 15,\n minOffsetY: -5,\n hitSlop: { top: -layout.height + distance },\n enableTrackpadTwoFingerGesture,\n };\n } else {\n const hitSlop = -layout.width + distance;\n const invertedMultiplier = getInvertedMultiplier(gestureDirection);\n\n if (invertedMultiplier === 1) {\n return {\n minOffsetX: 5,\n maxDeltaY: 20,\n hitSlop: { right: hitSlop },\n enableTrackpadTwoFingerGesture,\n };\n } else {\n return {\n minOffsetX: -5,\n maxDeltaY: 20,\n hitSlop: { left: hitSlop },\n enableTrackpadTwoFingerGesture,\n };\n }\n }\n }\n\n render() {\n const {\n styleInterpolator,\n interpolationIndex,\n current,\n gesture,\n next,\n layout,\n insets,\n overlay,\n overlayEnabled,\n shadowEnabled,\n gestureEnabled,\n gestureDirection,\n pageOverflowEnabled,\n headerDarkContent,\n children,\n containerStyle: customContainerStyle,\n contentStyle,\n ...rest\n } = this.props;\n\n const interpolationProps = this.getCardAnimation(\n interpolationIndex,\n current,\n next,\n layout,\n insets.top,\n insets.right,\n insets.bottom,\n insets.left\n );\n\n const interpolatedStyle = this.getInterpolatedStyle(\n styleInterpolator,\n interpolationProps\n );\n\n const { containerStyle, cardStyle, overlayStyle, shadowStyle } =\n interpolatedStyle;\n\n const handleGestureEvent = gestureEnabled\n ? Animated.event(\n [\n {\n nativeEvent:\n gestureDirection === 'vertical' ||\n gestureDirection === 'vertical-inverted'\n ? { translationY: gesture }\n : { translationX: gesture },\n },\n ],\n { useNativeDriver }\n )\n : undefined;\n\n const { backgroundColor } = StyleSheet.flatten(contentStyle || {});\n const isTransparent =\n typeof backgroundColor === 'string'\n ? Color(backgroundColor).alpha() === 0\n : false;\n\n return (\n <CardAnimationContext.Provider value={interpolationProps}>\n {\n // StatusBar messes with translucent status bar on Android\n // So we should only enable it on iOS\n Platform.OS === 'ios' &&\n overlayEnabled &&\n next &&\n getIsModalPresentation(styleInterpolator) ? (\n <ModalStatusBarManager\n dark={headerDarkContent}\n layout={layout}\n insets={insets}\n style={cardStyle}\n />\n ) : null\n }\n <Animated.View\n style={{\n // This is a dummy style that doesn't actually change anything visually.\n // Animated needs the animated value to be used somewhere, otherwise things don't update properly.\n // If we disable animations and hide header, it could end up making the value unused.\n // So we have this dummy style that will always be used regardless of what else changed.\n opacity: current,\n }}\n // Make sure that this view isn't removed. If this view is removed, our style with animated value won't apply\n collapsable={false}\n />\n <View pointerEvents=\"box-none\" {...rest}>\n {overlayEnabled ? (\n <View pointerEvents=\"box-none\" style={StyleSheet.absoluteFill}>\n {overlay({ style: overlayStyle })}\n </View>\n ) : null}\n <Animated.View\n style={[styles.container, containerStyle, customContainerStyle]}\n pointerEvents=\"box-none\"\n >\n <PanGestureHandler\n enabled={layout.width !== 0 && gestureEnabled}\n onGestureEvent={handleGestureEvent}\n onHandlerStateChange={this.handleGestureStateChange}\n {...this.gestureActivationCriteria()}\n >\n <Animated.View\n needsOffscreenAlphaCompositing={hasOpacityStyle(cardStyle)}\n style={[styles.container, cardStyle]}\n >\n {shadowEnabled && shadowStyle && !isTransparent ? (\n <Animated.View\n style={[\n styles.shadow,\n gestureDirection === 'horizontal'\n ? [styles.shadowHorizontal, styles.shadowLeft]\n : gestureDirection === 'horizontal-inverted'\n ? [styles.shadowHorizontal, styles.shadowRight]\n : gestureDirection === 'vertical'\n ? [styles.shadowVertical, styles.shadowTop]\n : [styles.shadowVertical, styles.shadowBottom],\n { backgroundColor },\n shadowStyle,\n ]}\n pointerEvents=\"none\"\n />\n ) : null}\n <CardSheet\n pointerEvents={this.state.pointerEvents}\n enabled={pageOverflowEnabled}\n layout={layout}\n style={contentStyle}\n >\n {children}\n </CardSheet>\n </Animated.View>\n </PanGestureHandler>\n </Animated.View>\n </View>\n </CardAnimationContext.Provider>\n );\n }\n}\n\nexport const getIsModalPresentation = (\n cardStyleInterpolator: StackCardStyleInterpolator\n) => {\n return (\n cardStyleInterpolator === forModalPresentationIOS ||\n // Handle custom modal presentation interpolators as well\n cardStyleInterpolator.name === 'forModalPresentationIOS'\n );\n};\n\nconst styles = StyleSheet.create({\n container: {\n flex: 1,\n },\n overlay: {\n flex: 1,\n backgroundColor: '#000',\n },\n shadow: {\n position: 'absolute',\n shadowRadius: 5,\n shadowColor: '#000',\n shadowOpacity: 0.3,\n },\n shadowHorizontal: {\n top: 0,\n bottom: 0,\n width: 3,\n shadowOffset: { width: -1, height: 1 },\n },\n shadowLeft: {\n left: 0,\n },\n shadowRight: {\n right: 0,\n },\n shadowVertical: {\n left: 0,\n right: 0,\n height: 3,\n shadowOffset: { width: 1, height: -1 },\n },\n shadowTop: {\n top: 0,\n },\n shadowBottom: {\n bottom: 0,\n },\n});\n"]}
|
|
@@ -33,7 +33,7 @@ function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { de
|
|
|
33
33
|
|
|
34
34
|
function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
|
|
35
35
|
|
|
36
|
-
const EPSILON =
|
|
36
|
+
const EPSILON = 1e-5;
|
|
37
37
|
const STATE_INACTIVE = 0;
|
|
38
38
|
const STATE_TRANSITIONING_OR_BELOW_TOP = 1;
|
|
39
39
|
const STATE_ON_TOP = 2;
|
|
@@ -413,7 +413,8 @@ class CardStack extends React.Component {
|
|
|
413
413
|
headerShown = true,
|
|
414
414
|
headerTransparent,
|
|
415
415
|
headerStyle,
|
|
416
|
-
headerTintColor
|
|
416
|
+
headerTintColor,
|
|
417
|
+
freezeOnBlur
|
|
417
418
|
} = scene.descriptor.options;
|
|
418
419
|
const safeAreaInsetTop = insets.top;
|
|
419
420
|
const safeAreaInsetRight = insets.right;
|
|
@@ -444,6 +445,7 @@ class CardStack extends React.Component {
|
|
|
444
445
|
style: _reactNative.StyleSheet.absoluteFill,
|
|
445
446
|
enabled: detachInactiveScreens,
|
|
446
447
|
active: isScreenActive,
|
|
448
|
+
freezeOnBlur: freezeOnBlur,
|
|
447
449
|
pointerEvents: "box-none"
|
|
448
450
|
}, /*#__PURE__*/React.createElement(_CardContainer.default, {
|
|
449
451
|
index: index,
|