react-native-screens 3.7.1 → 3.10.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 +69 -3
- package/android/build.gradle +8 -7
- package/android/src/main/java/com/swmansion/rnscreens/CustomSearchView.kt +71 -0
- package/android/src/main/java/com/swmansion/rnscreens/CustomToolbar.kt +7 -0
- package/android/src/main/java/com/swmansion/rnscreens/FragmentBackPressOverrider.kt +29 -0
- package/android/src/main/java/com/swmansion/rnscreens/RNScreensPackage.kt +2 -1
- package/android/src/main/java/com/swmansion/rnscreens/Screen.kt +7 -41
- package/android/src/main/java/com/swmansion/rnscreens/ScreenContainer.kt +55 -40
- package/android/src/main/java/com/swmansion/rnscreens/ScreenFragment.kt +19 -1
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStack.kt +30 -101
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStackFragment.kt +75 -14
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfig.kt +13 -4
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderConfigViewManager.kt +8 -0
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderSubview.kt +7 -1
- package/android/src/main/java/com/swmansion/rnscreens/ScreenStackHeaderSubviewManager.kt +1 -0
- package/android/src/main/java/com/swmansion/rnscreens/SearchBarManager.kt +90 -0
- package/android/src/main/java/com/swmansion/rnscreens/SearchBarView.kt +150 -0
- package/android/src/main/java/com/swmansion/rnscreens/SearchViewFormatter.kt +40 -0
- package/createNativeStackNavigator/README.md +33 -9
- package/ios/RNSScreen.h +1 -0
- package/ios/RNSScreen.m +35 -0
- package/ios/RNSScreenContainer.h +2 -0
- package/ios/RNSScreenStack.m +24 -6
- package/ios/RNSScreenStackHeaderConfig.m +45 -2
- package/ios/RNSScreenWindowTraits.h +5 -0
- package/ios/RNSScreenWindowTraits.m +29 -0
- package/lib/commonjs/index.js +24 -1
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/index.native.js +103 -17
- package/lib/commonjs/index.native.js.map +1 -1
- package/lib/commonjs/native-stack/utils/useBackPressSubscription.js +67 -0
- package/lib/commonjs/native-stack/utils/useBackPressSubscription.js.map +1 -0
- package/lib/commonjs/native-stack/views/HeaderConfig.js +46 -4
- package/lib/commonjs/native-stack/views/HeaderConfig.js.map +1 -1
- package/lib/commonjs/reanimated/ReanimatedNativeStackScreen.js +60 -0
- package/lib/commonjs/reanimated/ReanimatedNativeStackScreen.js.map +1 -0
- package/lib/commonjs/reanimated/ReanimatedScreen.js +7 -79
- package/lib/commonjs/reanimated/ReanimatedScreen.js.map +1 -1
- package/lib/commonjs/reanimated/ReanimatedScreenProvider.js +61 -0
- package/lib/commonjs/reanimated/ReanimatedScreenProvider.js.map +1 -0
- package/lib/commonjs/reanimated/index.js +2 -2
- package/lib/commonjs/reanimated/index.js.map +1 -1
- package/lib/commonjs/utils.js +20 -0
- package/lib/commonjs/utils.js.map +1 -0
- package/lib/module/index.js +5 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/index.native.js +99 -19
- package/lib/module/index.native.js.map +1 -1
- package/lib/module/native-stack/utils/useBackPressSubscription.js +50 -0
- package/lib/module/native-stack/utils/useBackPressSubscription.js.map +1 -0
- package/lib/module/native-stack/views/HeaderConfig.js +46 -5
- package/lib/module/native-stack/views/HeaderConfig.js.map +1 -1
- package/lib/module/reanimated/ReanimatedNativeStackScreen.js +40 -0
- package/lib/module/reanimated/ReanimatedNativeStackScreen.js.map +1 -0
- package/lib/module/reanimated/ReanimatedScreen.js +6 -73
- package/lib/module/reanimated/ReanimatedScreen.js.map +1 -1
- package/lib/module/reanimated/ReanimatedScreenProvider.js +49 -0
- package/lib/module/reanimated/ReanimatedScreenProvider.js.map +1 -0
- package/lib/module/reanimated/index.js +1 -1
- package/lib/module/reanimated/index.js.map +1 -1
- package/lib/module/utils.js +8 -0
- package/lib/module/utils.js.map +1 -0
- package/lib/typescript/index.d.ts +2 -0
- package/lib/typescript/native-stack/types.d.ts +0 -2
- package/lib/typescript/native-stack/utils/useBackPressSubscription.d.ts +16 -0
- package/lib/typescript/reanimated/ReanimatedNativeStackScreen.d.ts +5 -0
- package/lib/typescript/reanimated/ReanimatedScreen.d.ts +5 -2
- package/lib/typescript/reanimated/ReanimatedScreenProvider.d.ts +2 -0
- package/lib/typescript/reanimated/index.d.ts +1 -1
- package/lib/typescript/types.d.ts +46 -1
- package/lib/typescript/utils.d.ts +2 -0
- package/native-stack/README.md +35 -7
- package/package.json +5 -2
- package/src/index.native.tsx +138 -43
- package/src/index.tsx +10 -0
- package/src/native-stack/types.tsx +0 -2
- package/src/native-stack/utils/useBackPressSubscription.tsx +66 -0
- package/src/native-stack/views/HeaderConfig.tsx +46 -3
- package/src/reanimated/ReanimatedNativeStackScreen.tsx +61 -0
- package/src/reanimated/ReanimatedScreen.tsx +6 -84
- package/src/reanimated/ReanimatedScreenProvider.tsx +42 -0
- package/src/reanimated/index.tsx +1 -1
- package/src/types.tsx +46 -1
- package/src/utils.ts +12 -0
- package/windows/.gitignore +0 -92
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { BackHandler } from 'react-native';
|
|
3
|
+
|
|
4
|
+
/**
|
|
5
|
+
* This hook is an abstraction for keeping back press subscription
|
|
6
|
+
* logic in one place.
|
|
7
|
+
*/
|
|
8
|
+
export function useBackPressSubscription({
|
|
9
|
+
onBackPress,
|
|
10
|
+
isDisabled
|
|
11
|
+
}) {
|
|
12
|
+
const [isActive, setIsActive] = React.useState(false);
|
|
13
|
+
const subscription = React.useRef();
|
|
14
|
+
const clearSubscription = React.useCallback((shouldSetActive = true) => {
|
|
15
|
+
var _subscription$current;
|
|
16
|
+
|
|
17
|
+
(_subscription$current = subscription.current) === null || _subscription$current === void 0 ? void 0 : _subscription$current.remove();
|
|
18
|
+
subscription.current = undefined;
|
|
19
|
+
if (shouldSetActive) setIsActive(false);
|
|
20
|
+
}, []);
|
|
21
|
+
const createSubscription = React.useCallback(() => {
|
|
22
|
+
if (!isDisabled) {
|
|
23
|
+
var _subscription$current2;
|
|
24
|
+
|
|
25
|
+
(_subscription$current2 = subscription.current) === null || _subscription$current2 === void 0 ? void 0 : _subscription$current2.remove();
|
|
26
|
+
subscription.current = BackHandler.addEventListener('hardwareBackPress', onBackPress);
|
|
27
|
+
setIsActive(true);
|
|
28
|
+
}
|
|
29
|
+
}, [isDisabled, onBackPress]);
|
|
30
|
+
const handleAttached = React.useCallback(() => {
|
|
31
|
+
if (isActive) {
|
|
32
|
+
createSubscription();
|
|
33
|
+
}
|
|
34
|
+
}, [createSubscription, isActive]);
|
|
35
|
+
const handleDetached = React.useCallback(() => {
|
|
36
|
+
clearSubscription(false);
|
|
37
|
+
}, [clearSubscription]);
|
|
38
|
+
React.useEffect(() => {
|
|
39
|
+
if (isDisabled) {
|
|
40
|
+
clearSubscription();
|
|
41
|
+
}
|
|
42
|
+
}, [isDisabled, clearSubscription]);
|
|
43
|
+
return {
|
|
44
|
+
handleAttached,
|
|
45
|
+
handleDetached,
|
|
46
|
+
createSubscription,
|
|
47
|
+
clearSubscription
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=useBackPressSubscription.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["useBackPressSubscription.tsx"],"names":["React","BackHandler","useBackPressSubscription","onBackPress","isDisabled","isActive","setIsActive","useState","subscription","useRef","clearSubscription","useCallback","shouldSetActive","current","remove","undefined","createSubscription","addEventListener","handleAttached","handleDetached","useEffect"],"mappings":"AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,WAAT,QAAqD,cAArD;;AAcA;AACA;AACA;AACA;AACA,OAAO,SAASC,wBAAT,CAAkC;AACvCC,EAAAA,WADuC;AAEvCC,EAAAA;AAFuC,CAAlC,EAG4B;AACjC,QAAM,CAACC,QAAD,EAAWC,WAAX,IAA0BN,KAAK,CAACO,QAAN,CAAe,KAAf,CAAhC;AACA,QAAMC,YAAY,GAAGR,KAAK,CAACS,MAAN,EAArB;AAEA,QAAMC,iBAAiB,GAAGV,KAAK,CAACW,WAAN,CAAkB,CAACC,eAAe,GAAG,IAAnB,KAA4B;AAAA;;AACtE,6BAAAJ,YAAY,CAACK,OAAb,gFAAsBC,MAAtB;AACAN,IAAAA,YAAY,CAACK,OAAb,GAAuBE,SAAvB;AACA,QAAIH,eAAJ,EAAqBN,WAAW,CAAC,KAAD,CAAX;AACtB,GAJyB,EAIvB,EAJuB,CAA1B;AAMA,QAAMU,kBAAkB,GAAGhB,KAAK,CAACW,WAAN,CAAkB,MAAM;AACjD,QAAI,CAACP,UAAL,EAAiB;AAAA;;AACf,gCAAAI,YAAY,CAACK,OAAb,kFAAsBC,MAAtB;AACAN,MAAAA,YAAY,CAACK,OAAb,GAAuBZ,WAAW,CAACgB,gBAAZ,CACrB,mBADqB,EAErBd,WAFqB,CAAvB;AAIAG,MAAAA,WAAW,CAAC,IAAD,CAAX;AACD;AACF,GAT0B,EASxB,CAACF,UAAD,EAAaD,WAAb,CATwB,CAA3B;AAWA,QAAMe,cAAc,GAAGlB,KAAK,CAACW,WAAN,CAAkB,MAAM;AAC7C,QAAIN,QAAJ,EAAc;AACZW,MAAAA,kBAAkB;AACnB;AACF,GAJsB,EAIpB,CAACA,kBAAD,EAAqBX,QAArB,CAJoB,CAAvB;AAMA,QAAMc,cAAc,GAAGnB,KAAK,CAACW,WAAN,CAAkB,MAAM;AAC7CD,IAAAA,iBAAiB,CAAC,KAAD,CAAjB;AACD,GAFsB,EAEpB,CAACA,iBAAD,CAFoB,CAAvB;AAIAV,EAAAA,KAAK,CAACoB,SAAN,CAAgB,MAAM;AACpB,QAAIhB,UAAJ,EAAgB;AACdM,MAAAA,iBAAiB;AAClB;AACF,GAJD,EAIG,CAACN,UAAD,EAAaM,iBAAb,CAJH;AAMA,SAAO;AACLQ,IAAAA,cADK;AAELC,IAAAA,cAFK;AAGLH,IAAAA,kBAHK;AAILN,IAAAA;AAJK,GAAP;AAMD","sourcesContent":["import React from 'react';\nimport { BackHandler, NativeEventSubscription } from 'react-native';\n\ninterface Args {\n onBackPress: () => boolean;\n isDisabled: boolean;\n}\n\ninterface UseBackPressSubscription {\n handleAttached: () => void;\n handleDetached: () => void;\n createSubscription: () => void;\n clearSubscription: () => void;\n}\n\n/**\n * This hook is an abstraction for keeping back press subscription\n * logic in one place.\n */\nexport function useBackPressSubscription({\n onBackPress,\n isDisabled,\n}: Args): UseBackPressSubscription {\n const [isActive, setIsActive] = React.useState(false);\n const subscription = React.useRef<NativeEventSubscription | undefined>();\n\n const clearSubscription = React.useCallback((shouldSetActive = true) => {\n subscription.current?.remove();\n subscription.current = undefined;\n if (shouldSetActive) setIsActive(false);\n }, []);\n\n const createSubscription = React.useCallback(() => {\n if (!isDisabled) {\n subscription.current?.remove();\n subscription.current = BackHandler.addEventListener(\n 'hardwareBackPress',\n onBackPress\n );\n setIsActive(true);\n }\n }, [isDisabled, onBackPress]);\n\n const handleAttached = React.useCallback(() => {\n if (isActive) {\n createSubscription();\n }\n }, [createSubscription, isActive]);\n\n const handleDetached = React.useCallback(() => {\n clearSubscription(false);\n }, [clearSubscription]);\n\n React.useEffect(() => {\n if (isDisabled) {\n clearSubscription();\n }\n }, [isDisabled, clearSubscription]);\n\n return {\n handleAttached,\n handleDetached,\n createSubscription,\n clearSubscription,\n };\n}\n"]}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { useTheme } from '@react-navigation/native';
|
|
2
2
|
import * as React from 'react';
|
|
3
3
|
import { Platform } from 'react-native';
|
|
4
|
-
import { ScreenStackHeaderBackButtonImage, ScreenStackHeaderCenterView, ScreenStackHeaderConfig, ScreenStackHeaderLeftView, ScreenStackHeaderRightView, ScreenStackHeaderSearchBarView, SearchBar } from 'react-native-screens';
|
|
4
|
+
import { ScreenStackHeaderBackButtonImage, ScreenStackHeaderCenterView, ScreenStackHeaderConfig, ScreenStackHeaderLeftView, ScreenStackHeaderRightView, ScreenStackHeaderSearchBarView, SearchBar, isSearchBarAvailableForCurrentPlatform, executeNativeBackPress } from 'react-native-screens';
|
|
5
|
+
import { useBackPressSubscription } from '../utils/useBackPressSubscription';
|
|
5
6
|
import { processFonts } from './FontProcessor';
|
|
6
7
|
export default function HeaderConfig({
|
|
7
8
|
backButtonImage,
|
|
@@ -34,8 +35,46 @@ export default function HeaderConfig({
|
|
|
34
35
|
const {
|
|
35
36
|
colors
|
|
36
37
|
} = useTheme();
|
|
37
|
-
const tintColor = headerTintColor !== null && headerTintColor !== void 0 ? headerTintColor : colors.primary;
|
|
38
|
-
|
|
38
|
+
const tintColor = headerTintColor !== null && headerTintColor !== void 0 ? headerTintColor : colors.primary; // We need to use back press subscription here to override back button behavior on JS side.
|
|
39
|
+
// Because screens are usually used with react-navigation and this library overrides back button
|
|
40
|
+
// we need to handle it first in case when search bar is open
|
|
41
|
+
|
|
42
|
+
const {
|
|
43
|
+
handleAttached,
|
|
44
|
+
handleDetached,
|
|
45
|
+
clearSubscription,
|
|
46
|
+
createSubscription
|
|
47
|
+
} = useBackPressSubscription({
|
|
48
|
+
onBackPress: executeNativeBackPress,
|
|
49
|
+
isDisabled: !searchBar || !!searchBar.disableBackButtonOverride
|
|
50
|
+
});
|
|
51
|
+
const [backTitleFontFamily, largeTitleFontFamily, titleFontFamily] = processFonts([headerBackTitleStyle.fontFamily, headerLargeTitleStyle.fontFamily, headerTitleStyle.fontFamily]); // We want to clear clearSubscription only when components unmounts or search bar changes
|
|
52
|
+
|
|
53
|
+
React.useEffect(() => clearSubscription, [searchBar]);
|
|
54
|
+
const processedSearchBarOptions = React.useMemo(() => {
|
|
55
|
+
if (Platform.OS === 'android' && searchBar && !searchBar.disableBackButtonOverride) {
|
|
56
|
+
const onFocus = (...args) => {
|
|
57
|
+
var _searchBar$onFocus;
|
|
58
|
+
|
|
59
|
+
createSubscription();
|
|
60
|
+
(_searchBar$onFocus = searchBar.onFocus) === null || _searchBar$onFocus === void 0 ? void 0 : _searchBar$onFocus.call(searchBar, ...args);
|
|
61
|
+
};
|
|
62
|
+
|
|
63
|
+
const onClose = (...args) => {
|
|
64
|
+
var _searchBar$onClose;
|
|
65
|
+
|
|
66
|
+
clearSubscription();
|
|
67
|
+
(_searchBar$onClose = searchBar.onClose) === null || _searchBar$onClose === void 0 ? void 0 : _searchBar$onClose.call(searchBar, ...args);
|
|
68
|
+
};
|
|
69
|
+
|
|
70
|
+
return { ...searchBar,
|
|
71
|
+
onFocus,
|
|
72
|
+
onClose
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
return searchBar;
|
|
77
|
+
}, [searchBar, createSubscription, clearSubscription]);
|
|
39
78
|
return /*#__PURE__*/React.createElement(ScreenStackHeaderConfig, {
|
|
40
79
|
backButtonInCustomView: backButtonInCustomView,
|
|
41
80
|
backgroundColor: headerStyle.backgroundColor ? headerStyle.backgroundColor : colors.card,
|
|
@@ -62,7 +101,9 @@ export default function HeaderConfig({
|
|
|
62
101
|
titleFontSize: headerTitleStyle.fontSize,
|
|
63
102
|
titleFontWeight: headerTitleStyle.fontWeight,
|
|
64
103
|
topInsetEnabled: headerTopInsetEnabled,
|
|
65
|
-
translucent: headerTranslucent === true
|
|
104
|
+
translucent: headerTranslucent === true,
|
|
105
|
+
onAttached: handleAttached,
|
|
106
|
+
onDetached: handleDetached
|
|
66
107
|
}, headerRight !== undefined ? /*#__PURE__*/React.createElement(ScreenStackHeaderRightView, null, headerRight({
|
|
67
108
|
tintColor
|
|
68
109
|
})) : null, backButtonImage !== undefined ? /*#__PURE__*/React.createElement(ScreenStackHeaderBackButtonImage, {
|
|
@@ -72,6 +113,6 @@ export default function HeaderConfig({
|
|
|
72
113
|
tintColor
|
|
73
114
|
})) : null, headerCenter !== undefined ? /*#__PURE__*/React.createElement(ScreenStackHeaderCenterView, null, headerCenter({
|
|
74
115
|
tintColor
|
|
75
|
-
})) : null,
|
|
116
|
+
})) : null, isSearchBarAvailableForCurrentPlatform && processedSearchBarOptions !== undefined ? /*#__PURE__*/React.createElement(ScreenStackHeaderSearchBarView, null, /*#__PURE__*/React.createElement(SearchBar, processedSearchBarOptions)) : null);
|
|
76
117
|
}
|
|
77
118
|
//# sourceMappingURL=HeaderConfig.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["HeaderConfig.tsx"],"names":["useTheme","React","Platform","ScreenStackHeaderBackButtonImage","ScreenStackHeaderCenterView","ScreenStackHeaderConfig","ScreenStackHeaderLeftView","ScreenStackHeaderRightView","ScreenStackHeaderSearchBarView","SearchBar","processFonts","HeaderConfig","backButtonImage","backButtonInCustomView","direction","disableBackButtonMenu","headerBackTitle","headerBackTitleStyle","headerBackTitleVisible","headerCenter","headerHideBackButton","headerHideShadow","headerLargeStyle","headerLargeTitle","headerLargeTitleHideShadow","headerLargeTitleStyle","headerLeft","headerRight","headerShown","headerStyle","headerTintColor","headerTitle","headerTitleStyle","headerTopInsetEnabled","headerTranslucent","route","searchBar","title","colors","tintColor","primary","backTitleFontFamily","largeTitleFontFamily","titleFontFamily","fontFamily","backgroundColor","card","fontSize","blurEffect","color","fontWeight","undefined","name","text","OS"],"mappings":"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","sourcesContent":["import { Route, useTheme } from '@react-navigation/native';\nimport * as React from 'react';\nimport { Platform } from 'react-native';\nimport {\n ScreenStackHeaderBackButtonImage,\n ScreenStackHeaderCenterView,\n ScreenStackHeaderConfig,\n ScreenStackHeaderLeftView,\n ScreenStackHeaderRightView,\n ScreenStackHeaderSearchBarView,\n SearchBar,\n} from 'react-native-screens';\nimport { NativeStackNavigationOptions } from '../types';\nimport { processFonts } from './FontProcessor';\n\ntype Props = NativeStackNavigationOptions & {\n route: Route<string>;\n};\n\nexport default function HeaderConfig({\n backButtonImage,\n backButtonInCustomView,\n direction,\n disableBackButtonMenu,\n headerBackTitle,\n headerBackTitleStyle = {},\n headerBackTitleVisible = true,\n headerCenter,\n headerHideBackButton,\n headerHideShadow,\n headerLargeStyle = {},\n headerLargeTitle,\n headerLargeTitleHideShadow,\n headerLargeTitleStyle = {},\n headerLeft,\n headerRight,\n headerShown,\n headerStyle = {},\n headerTintColor,\n headerTitle,\n headerTitleStyle = {},\n headerTopInsetEnabled = true,\n headerTranslucent,\n route,\n searchBar,\n title,\n}: Props): JSX.Element {\n const { colors } = useTheme();\n const tintColor = headerTintColor ?? colors.primary;\n\n const [\n backTitleFontFamily,\n largeTitleFontFamily,\n titleFontFamily,\n ] = processFonts([\n headerBackTitleStyle.fontFamily,\n headerLargeTitleStyle.fontFamily,\n headerTitleStyle.fontFamily,\n ]);\n\n return (\n <ScreenStackHeaderConfig\n backButtonInCustomView={backButtonInCustomView}\n backgroundColor={\n headerStyle.backgroundColor ? headerStyle.backgroundColor : colors.card\n }\n backTitle={headerBackTitleVisible ? headerBackTitle : ' '}\n backTitleFontFamily={backTitleFontFamily}\n backTitleFontSize={headerBackTitleStyle.fontSize}\n blurEffect={headerStyle.blurEffect}\n color={tintColor}\n direction={direction}\n disableBackButtonMenu={disableBackButtonMenu}\n hidden={headerShown === false}\n hideBackButton={headerHideBackButton}\n hideShadow={headerHideShadow}\n largeTitle={headerLargeTitle}\n largeTitleBackgroundColor={headerLargeStyle.backgroundColor}\n largeTitleColor={headerLargeTitleStyle.color}\n largeTitleFontFamily={largeTitleFontFamily}\n largeTitleFontSize={headerLargeTitleStyle.fontSize}\n largeTitleFontWeight={headerLargeTitleStyle.fontWeight}\n largeTitleHideShadow={headerLargeTitleHideShadow}\n title={\n headerTitle !== undefined\n ? headerTitle\n : title !== undefined\n ? title\n : route.name\n }\n titleColor={\n headerTitleStyle.color !== undefined\n ? headerTitleStyle.color\n : headerTintColor !== undefined\n ? headerTintColor\n : colors.text\n }\n titleFontFamily={titleFontFamily}\n titleFontSize={headerTitleStyle.fontSize}\n titleFontWeight={headerTitleStyle.fontWeight}\n topInsetEnabled={headerTopInsetEnabled}\n translucent={headerTranslucent === true}>\n {headerRight !== undefined ? (\n <ScreenStackHeaderRightView>\n {headerRight({ tintColor })}\n </ScreenStackHeaderRightView>\n ) : null}\n {backButtonImage !== undefined ? (\n <ScreenStackHeaderBackButtonImage\n key=\"backImage\"\n source={backButtonImage}\n />\n ) : null}\n {headerLeft !== undefined ? (\n <ScreenStackHeaderLeftView>\n {headerLeft({ tintColor })}\n </ScreenStackHeaderLeftView>\n ) : null}\n {headerCenter !== undefined ? (\n <ScreenStackHeaderCenterView>\n {headerCenter({ tintColor })}\n </ScreenStackHeaderCenterView>\n ) : null}\n {Platform.OS === 'ios' && searchBar !== undefined ? (\n <ScreenStackHeaderSearchBarView>\n <SearchBar {...searchBar} />\n </ScreenStackHeaderSearchBarView>\n ) : null}\n </ScreenStackHeaderConfig>\n );\n}\n"]}
|
|
1
|
+
{"version":3,"sources":["HeaderConfig.tsx"],"names":["useTheme","React","Platform","ScreenStackHeaderBackButtonImage","ScreenStackHeaderCenterView","ScreenStackHeaderConfig","ScreenStackHeaderLeftView","ScreenStackHeaderRightView","ScreenStackHeaderSearchBarView","SearchBar","isSearchBarAvailableForCurrentPlatform","executeNativeBackPress","useBackPressSubscription","processFonts","HeaderConfig","backButtonImage","backButtonInCustomView","direction","disableBackButtonMenu","headerBackTitle","headerBackTitleStyle","headerBackTitleVisible","headerCenter","headerHideBackButton","headerHideShadow","headerLargeStyle","headerLargeTitle","headerLargeTitleHideShadow","headerLargeTitleStyle","headerLeft","headerRight","headerShown","headerStyle","headerTintColor","headerTitle","headerTitleStyle","headerTopInsetEnabled","headerTranslucent","route","searchBar","title","colors","tintColor","primary","handleAttached","handleDetached","clearSubscription","createSubscription","onBackPress","isDisabled","disableBackButtonOverride","backTitleFontFamily","largeTitleFontFamily","titleFontFamily","fontFamily","useEffect","processedSearchBarOptions","useMemo","OS","onFocus","args","onClose","backgroundColor","card","fontSize","blurEffect","color","fontWeight","undefined","name","text"],"mappings":"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","sourcesContent":["import { Route, useTheme } from '@react-navigation/native';\nimport * as React from 'react';\nimport { Platform } from 'react-native';\nimport {\n ScreenStackHeaderBackButtonImage,\n ScreenStackHeaderCenterView,\n ScreenStackHeaderConfig,\n ScreenStackHeaderLeftView,\n ScreenStackHeaderRightView,\n ScreenStackHeaderSearchBarView,\n SearchBar,\n SearchBarProps,\n isSearchBarAvailableForCurrentPlatform,\n executeNativeBackPress,\n} from 'react-native-screens';\nimport { NativeStackNavigationOptions } from '../types';\nimport { useBackPressSubscription } from '../utils/useBackPressSubscription';\nimport { processFonts } from './FontProcessor';\n\ntype Props = NativeStackNavigationOptions & {\n route: Route<string>;\n};\n\nexport default function HeaderConfig({\n backButtonImage,\n backButtonInCustomView,\n direction,\n disableBackButtonMenu,\n headerBackTitle,\n headerBackTitleStyle = {},\n headerBackTitleVisible = true,\n headerCenter,\n headerHideBackButton,\n headerHideShadow,\n headerLargeStyle = {},\n headerLargeTitle,\n headerLargeTitleHideShadow,\n headerLargeTitleStyle = {},\n headerLeft,\n headerRight,\n headerShown,\n headerStyle = {},\n headerTintColor,\n headerTitle,\n headerTitleStyle = {},\n headerTopInsetEnabled = true,\n headerTranslucent,\n route,\n searchBar,\n title,\n}: Props): JSX.Element {\n const { colors } = useTheme();\n const tintColor = headerTintColor ?? colors.primary;\n\n // We need to use back press subscription here to override back button behavior on JS side.\n // Because screens are usually used with react-navigation and this library overrides back button\n // we need to handle it first in case when search bar is open\n const {\n handleAttached,\n handleDetached,\n clearSubscription,\n createSubscription,\n } = useBackPressSubscription({\n onBackPress: executeNativeBackPress,\n isDisabled: !searchBar || !!searchBar.disableBackButtonOverride,\n });\n\n const [\n backTitleFontFamily,\n largeTitleFontFamily,\n titleFontFamily,\n ] = processFonts([\n headerBackTitleStyle.fontFamily,\n headerLargeTitleStyle.fontFamily,\n headerTitleStyle.fontFamily,\n ]);\n\n // We want to clear clearSubscription only when components unmounts or search bar changes\n React.useEffect(() => clearSubscription, [searchBar]);\n\n const processedSearchBarOptions = React.useMemo(() => {\n if (\n Platform.OS === 'android' &&\n searchBar &&\n !searchBar.disableBackButtonOverride\n ) {\n const onFocus: SearchBarProps['onFocus'] = (...args) => {\n createSubscription();\n searchBar.onFocus?.(...args);\n };\n const onClose: SearchBarProps['onClose'] = (...args) => {\n clearSubscription();\n searchBar.onClose?.(...args);\n };\n\n return { ...searchBar, onFocus, onClose };\n }\n return searchBar;\n }, [searchBar, createSubscription, clearSubscription]);\n\n return (\n <ScreenStackHeaderConfig\n backButtonInCustomView={backButtonInCustomView}\n backgroundColor={\n headerStyle.backgroundColor ? headerStyle.backgroundColor : colors.card\n }\n backTitle={headerBackTitleVisible ? headerBackTitle : ' '}\n backTitleFontFamily={backTitleFontFamily}\n backTitleFontSize={headerBackTitleStyle.fontSize}\n blurEffect={headerStyle.blurEffect}\n color={tintColor}\n direction={direction}\n disableBackButtonMenu={disableBackButtonMenu}\n hidden={headerShown === false}\n hideBackButton={headerHideBackButton}\n hideShadow={headerHideShadow}\n largeTitle={headerLargeTitle}\n largeTitleBackgroundColor={headerLargeStyle.backgroundColor}\n largeTitleColor={headerLargeTitleStyle.color}\n largeTitleFontFamily={largeTitleFontFamily}\n largeTitleFontSize={headerLargeTitleStyle.fontSize}\n largeTitleFontWeight={headerLargeTitleStyle.fontWeight}\n largeTitleHideShadow={headerLargeTitleHideShadow}\n title={\n headerTitle !== undefined\n ? headerTitle\n : title !== undefined\n ? title\n : route.name\n }\n titleColor={\n headerTitleStyle.color !== undefined\n ? headerTitleStyle.color\n : headerTintColor !== undefined\n ? headerTintColor\n : colors.text\n }\n titleFontFamily={titleFontFamily}\n titleFontSize={headerTitleStyle.fontSize}\n titleFontWeight={headerTitleStyle.fontWeight}\n topInsetEnabled={headerTopInsetEnabled}\n translucent={headerTranslucent === true}\n onAttached={handleAttached}\n onDetached={handleDetached}>\n {headerRight !== undefined ? (\n <ScreenStackHeaderRightView>\n {headerRight({ tintColor })}\n </ScreenStackHeaderRightView>\n ) : null}\n {backButtonImage !== undefined ? (\n <ScreenStackHeaderBackButtonImage\n key=\"backImage\"\n source={backButtonImage}\n />\n ) : null}\n {headerLeft !== undefined ? (\n <ScreenStackHeaderLeftView>\n {headerLeft({ tintColor })}\n </ScreenStackHeaderLeftView>\n ) : null}\n {headerCenter !== undefined ? (\n <ScreenStackHeaderCenterView>\n {headerCenter({ tintColor })}\n </ScreenStackHeaderCenterView>\n ) : null}\n {isSearchBarAvailableForCurrentPlatform &&\n processedSearchBarOptions !== undefined ? (\n <ScreenStackHeaderSearchBarView>\n <SearchBar {...processedSearchBarOptions} />\n </ScreenStackHeaderSearchBarView>\n ) : null}\n </ScreenStackHeaderConfig>\n );\n}\n"]}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
2
|
+
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { Platform } from 'react-native';
|
|
5
|
+
import { Screen } from 'react-native-screens'; // @ts-ignore file to be used only if `react-native-reanimated` available in the project
|
|
6
|
+
|
|
7
|
+
import Animated, { useEvent, useSharedValue } from 'react-native-reanimated';
|
|
8
|
+
import ReanimatedTransitionProgressContext from './ReanimatedTransitionProgressContext';
|
|
9
|
+
const AnimatedScreen = Animated.createAnimatedComponent(Screen);
|
|
10
|
+
const ReanimatedNativeStackScreen = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
11
|
+
const {
|
|
12
|
+
children,
|
|
13
|
+
...rest
|
|
14
|
+
} = props;
|
|
15
|
+
const progress = useSharedValue(0);
|
|
16
|
+
const closing = useSharedValue(0);
|
|
17
|
+
const goingForward = useSharedValue(0);
|
|
18
|
+
return /*#__PURE__*/React.createElement(AnimatedScreen // @ts-ignore some problems with ref and onTransitionProgressReanimated being "fake" prop for parsing of `useEvent` return value
|
|
19
|
+
, _extends({
|
|
20
|
+
ref: ref,
|
|
21
|
+
onTransitionProgressReanimated: useEvent(event => {
|
|
22
|
+
'worklet';
|
|
23
|
+
|
|
24
|
+
progress.value = event.progress;
|
|
25
|
+
closing.value = event.closing;
|
|
26
|
+
goingForward.value = event.goingForward;
|
|
27
|
+
}, [// This should not be necessary, but is not properly managed by `react-native-reanimated`
|
|
28
|
+
// @ts-ignore wrong type
|
|
29
|
+
Platform.OS === 'android' ? 'onTransitionProgress' : 'topTransitionProgress'])
|
|
30
|
+
}, rest), /*#__PURE__*/React.createElement(ReanimatedTransitionProgressContext.Provider, {
|
|
31
|
+
value: {
|
|
32
|
+
progress: progress,
|
|
33
|
+
closing: closing,
|
|
34
|
+
goingForward: goingForward
|
|
35
|
+
}
|
|
36
|
+
}, children));
|
|
37
|
+
});
|
|
38
|
+
ReanimatedNativeStackScreen.displayName = 'ReanimatedNativeStackScreen';
|
|
39
|
+
export default ReanimatedNativeStackScreen;
|
|
40
|
+
//# sourceMappingURL=ReanimatedNativeStackScreen.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["ReanimatedNativeStackScreen.tsx"],"names":["React","Platform","Screen","Animated","useEvent","useSharedValue","ReanimatedTransitionProgressContext","AnimatedScreen","createAnimatedComponent","ReanimatedNativeStackScreen","forwardRef","props","ref","children","rest","progress","closing","goingForward","event","value","OS","displayName"],"mappings":";;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,QAAT,QAAyB,cAAzB;AACA,SACEC,MADF,QAIO,sBAJP,C,CAMA;;AACA,OAAOC,QAAP,IAAmBC,QAAnB,EAA6BC,cAA7B,QAAmD,yBAAnD;AACA,OAAOC,mCAAP,MAAgD,uCAAhD;AAEA,MAAMC,cAAc,GAAGJ,QAAQ,CAACK,uBAAT,CACpBN,MADoB,CAAvB;AAIA,MAAMO,2BAA2B,gBAAGT,KAAK,CAACU,UAAN,CAGlC,CAACC,KAAD,EAAQC,GAAR,KAAgB;AAChB,QAAM;AAAEC,IAAAA,QAAF;AAAY,OAAGC;AAAf,MAAwBH,KAA9B;AAEA,QAAMI,QAAQ,GAAGV,cAAc,CAAC,CAAD,CAA/B;AACA,QAAMW,OAAO,GAAGX,cAAc,CAAC,CAAD,CAA9B;AACA,QAAMY,YAAY,GAAGZ,cAAc,CAAC,CAAD,CAAnC;AAEA,sBACE,oBAAC,cAAD,CACE;AADF;AAEE,IAAA,GAAG,EAAEO,GAFP;AAGE,IAAA,8BAA8B,EAAER,QAAQ,CACrCc,KAAD,IAAwC;AACtC;;AACAH,MAAAA,QAAQ,CAACI,KAAT,GAAiBD,KAAK,CAACH,QAAvB;AACAC,MAAAA,OAAO,CAACG,KAAR,GAAgBD,KAAK,CAACF,OAAtB;AACAC,MAAAA,YAAY,CAACE,KAAb,GAAqBD,KAAK,CAACD,YAA3B;AACD,KANqC,EAOtC,CACE;AACA;AACAhB,IAAAA,QAAQ,CAACmB,EAAT,KAAgB,SAAhB,GACI,sBADJ,GAEI,uBALN,CAPsC;AAH1C,KAkBMN,IAlBN,gBAmBE,oBAAC,mCAAD,CAAqC,QAArC;AACE,IAAA,KAAK,EAAE;AACLC,MAAAA,QAAQ,EAAEA,QADL;AAELC,MAAAA,OAAO,EAAEA,OAFJ;AAGLC,MAAAA,YAAY,EAAEA;AAHT;AADT,KAMGJ,QANH,CAnBF,CADF;AA8BD,CAxCmC,CAApC;AA0CAJ,2BAA2B,CAACY,WAA5B,GAA0C,6BAA1C;AAEA,eAAeZ,2BAAf","sourcesContent":["import React from 'react';\nimport { Platform } from 'react-native';\nimport {\n Screen,\n ScreenProps,\n TransitionProgressEventType,\n} from 'react-native-screens';\n\n// @ts-ignore file to be used only if `react-native-reanimated` available in the project\nimport Animated, { useEvent, useSharedValue } from 'react-native-reanimated';\nimport ReanimatedTransitionProgressContext from './ReanimatedTransitionProgressContext';\n\nconst AnimatedScreen = Animated.createAnimatedComponent(\n (Screen as unknown) as React.ComponentClass\n);\n\nconst ReanimatedNativeStackScreen = React.forwardRef<\n typeof AnimatedScreen,\n ScreenProps\n>((props, ref) => {\n const { children, ...rest } = props;\n\n const progress = useSharedValue(0);\n const closing = useSharedValue(0);\n const goingForward = useSharedValue(0);\n\n return (\n <AnimatedScreen\n // @ts-ignore some problems with ref and onTransitionProgressReanimated being \"fake\" prop for parsing of `useEvent` return value\n ref={ref}\n onTransitionProgressReanimated={useEvent(\n (event: TransitionProgressEventType) => {\n 'worklet';\n progress.value = event.progress;\n closing.value = event.closing;\n goingForward.value = event.goingForward;\n },\n [\n // This should not be necessary, but is not properly managed by `react-native-reanimated`\n // @ts-ignore wrong type\n Platform.OS === 'android'\n ? 'onTransitionProgress'\n : 'topTransitionProgress',\n ]\n )}\n {...rest}>\n <ReanimatedTransitionProgressContext.Provider\n value={{\n progress: progress,\n closing: closing,\n goingForward: goingForward,\n }}>\n {children}\n </ReanimatedTransitionProgressContext.Provider>\n </AnimatedScreen>\n );\n});\n\nReanimatedNativeStackScreen.displayName = 'ReanimatedNativeStackScreen';\n\nexport default ReanimatedNativeStackScreen;\n"]}
|
|
@@ -1,83 +1,16 @@
|
|
|
1
1
|
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
2
2
|
|
|
3
|
-
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; }
|
|
4
|
-
|
|
5
3
|
import React from 'react';
|
|
6
|
-
import {
|
|
7
|
-
import { Screen, ScreenContext } from 'react-native-screens'; // @ts-ignore file to be used only if `react-native-reanimated` available in the project
|
|
4
|
+
import { Screen } from 'react-native-screens'; // @ts-ignore file to be used only if `react-native-reanimated` available in the project
|
|
8
5
|
|
|
9
|
-
import Animated
|
|
10
|
-
import ReanimatedTransitionProgressContext from './ReanimatedTransitionProgressContext';
|
|
6
|
+
import Animated from 'react-native-reanimated';
|
|
11
7
|
const AnimatedScreen = Animated.createAnimatedComponent(Screen);
|
|
12
|
-
|
|
13
|
-
class ReanimatedScreenWrapper extends React.Component {
|
|
14
|
-
constructor(...args) {
|
|
15
|
-
super(...args);
|
|
16
|
-
|
|
17
|
-
_defineProperty(this, "ref", null);
|
|
18
|
-
|
|
19
|
-
_defineProperty(this, "setRef", ref => {
|
|
20
|
-
var _this$props$onCompone, _this$props;
|
|
21
|
-
|
|
22
|
-
this.ref = ref;
|
|
23
|
-
(_this$props$onCompone = (_this$props = this.props).onComponentRef) === null || _this$props$onCompone === void 0 ? void 0 : _this$props$onCompone.call(_this$props, ref);
|
|
24
|
-
});
|
|
25
|
-
}
|
|
26
|
-
|
|
27
|
-
setNativeProps(props) {
|
|
28
|
-
var _this$ref;
|
|
29
|
-
|
|
30
|
-
(_this$ref = this.ref) === null || _this$ref === void 0 ? void 0 : _this$ref.setNativeProps(props);
|
|
31
|
-
}
|
|
32
|
-
|
|
33
|
-
render() {
|
|
34
|
-
return /*#__PURE__*/React.createElement(ReanimatedScreen, _extends({}, this.props, {
|
|
35
|
-
// @ts-ignore some problems with ref
|
|
36
|
-
ref: this.setRef
|
|
37
|
-
}));
|
|
38
|
-
}
|
|
39
|
-
|
|
40
|
-
}
|
|
41
|
-
|
|
42
8
|
const ReanimatedScreen = /*#__PURE__*/React.forwardRef((props, ref) => {
|
|
43
|
-
const {
|
|
44
|
-
children,
|
|
45
|
-
...rest
|
|
46
|
-
} = props;
|
|
47
|
-
const progress = useSharedValue(0);
|
|
48
|
-
const closing = useSharedValue(0);
|
|
49
|
-
const goingForward = useSharedValue(0);
|
|
50
9
|
return /*#__PURE__*/React.createElement(AnimatedScreen // @ts-ignore some problems with ref and onTransitionProgressReanimated being "fake" prop for parsing of `useEvent` return value
|
|
51
10
|
, _extends({
|
|
52
|
-
ref: ref
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
'worklet';
|
|
56
|
-
|
|
57
|
-
progress.value = event.progress;
|
|
58
|
-
closing.value = event.closing;
|
|
59
|
-
goingForward.value = event.goingForward;
|
|
60
|
-
}, [// This should not be necessary, but is not properly managed by `react-native-reanimated`
|
|
61
|
-
// @ts-ignore wrong type
|
|
62
|
-
Platform.OS === 'android' ? 'onTransitionProgress' : 'topTransitionProgress'])
|
|
63
|
-
}, rest), !props.isNativeStack ? // see comment of this prop in types.tsx for information why it is needed
|
|
64
|
-
children : /*#__PURE__*/React.createElement(ReanimatedTransitionProgressContext.Provider, {
|
|
65
|
-
value: {
|
|
66
|
-
progress: progress,
|
|
67
|
-
closing: closing,
|
|
68
|
-
goingForward: goingForward
|
|
69
|
-
}
|
|
70
|
-
}, children));
|
|
71
|
-
}); // used to silence error "Component definition is missing display name"
|
|
72
|
-
|
|
11
|
+
ref: ref
|
|
12
|
+
}, props));
|
|
13
|
+
});
|
|
73
14
|
ReanimatedScreen.displayName = 'ReanimatedScreen';
|
|
74
|
-
export default
|
|
75
|
-
return (
|
|
76
|
-
/*#__PURE__*/
|
|
77
|
-
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
78
|
-
React.createElement(ScreenContext.Provider, {
|
|
79
|
-
value: ReanimatedScreenWrapper
|
|
80
|
-
}, props.children)
|
|
81
|
-
);
|
|
82
|
-
}
|
|
15
|
+
export default ReanimatedScreen;
|
|
83
16
|
//# sourceMappingURL=ReanimatedScreen.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["ReanimatedScreen.tsx"],"names":["React","
|
|
1
|
+
{"version":3,"sources":["ReanimatedScreen.tsx"],"names":["React","Screen","Animated","AnimatedScreen","createAnimatedComponent","ReanimatedScreen","forwardRef","props","ref","displayName"],"mappings":";;AAAA,OAAOA,KAAP,MAAkB,OAAlB;AACA,SAASC,MAAT,QAAoC,sBAApC,C,CAEA;;AACA,OAAOC,QAAP,MAAqB,yBAArB;AAEA,MAAMC,cAAc,GAAGD,QAAQ,CAACE,uBAAT,CACpBH,MADoB,CAAvB;AAIA,MAAMI,gBAAgB,gBAAGL,KAAK,CAACM,UAAN,CACvB,CAACC,KAAD,EAAQC,GAAR,KAAgB;AACd,sBACE,oBAAC,cAAD,CACE;AADF;AAEE,IAAA,GAAG,EAAEA;AAFP,KAGMD,KAHN,EADF;AAOD,CATsB,CAAzB;AAYAF,gBAAgB,CAACI,WAAjB,GAA+B,kBAA/B;AAEA,eAAeJ,gBAAf","sourcesContent":["import React from 'react';\nimport { Screen, ScreenProps } from 'react-native-screens';\n\n// @ts-ignore file to be used only if `react-native-reanimated` available in the project\nimport Animated from 'react-native-reanimated';\n\nconst AnimatedScreen = Animated.createAnimatedComponent(\n (Screen as unknown) as React.ComponentClass\n);\n\nconst ReanimatedScreen = React.forwardRef<typeof AnimatedScreen, ScreenProps>(\n (props, ref) => {\n return (\n <AnimatedScreen\n // @ts-ignore some problems with ref and onTransitionProgressReanimated being \"fake\" prop for parsing of `useEvent` return value\n ref={ref}\n {...props}\n />\n );\n }\n);\n\nReanimatedScreen.displayName = 'ReanimatedScreen';\n\nexport default ReanimatedScreen;\n"]}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
|
|
2
|
+
|
|
3
|
+
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; }
|
|
4
|
+
|
|
5
|
+
import React from 'react';
|
|
6
|
+
import { ScreenContext } from 'react-native-screens';
|
|
7
|
+
import ReanimatedNativeStackScreen from './ReanimatedNativeStackScreen';
|
|
8
|
+
import AnimatedScreen from './ReanimatedScreen';
|
|
9
|
+
|
|
10
|
+
class ReanimatedScreenWrapper extends React.Component {
|
|
11
|
+
constructor(...args) {
|
|
12
|
+
super(...args);
|
|
13
|
+
|
|
14
|
+
_defineProperty(this, "ref", null);
|
|
15
|
+
|
|
16
|
+
_defineProperty(this, "setRef", ref => {
|
|
17
|
+
var _this$props$onCompone, _this$props;
|
|
18
|
+
|
|
19
|
+
this.ref = ref;
|
|
20
|
+
(_this$props$onCompone = (_this$props = this.props).onComponentRef) === null || _this$props$onCompone === void 0 ? void 0 : _this$props$onCompone.call(_this$props, ref);
|
|
21
|
+
});
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
setNativeProps(props) {
|
|
25
|
+
var _this$ref;
|
|
26
|
+
|
|
27
|
+
(_this$ref = this.ref) === null || _this$ref === void 0 ? void 0 : _this$ref.setNativeProps(props);
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
render() {
|
|
31
|
+
const ReanimatedScreen = this.props.isNativeStack ? ReanimatedNativeStackScreen : AnimatedScreen;
|
|
32
|
+
return /*#__PURE__*/React.createElement(ReanimatedScreen, _extends({}, this.props, {
|
|
33
|
+
// @ts-ignore some problems with ref
|
|
34
|
+
ref: this.setRef
|
|
35
|
+
}));
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
}
|
|
39
|
+
|
|
40
|
+
export default function ReanimatedScreenProvider(props) {
|
|
41
|
+
return (
|
|
42
|
+
/*#__PURE__*/
|
|
43
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
44
|
+
React.createElement(ScreenContext.Provider, {
|
|
45
|
+
value: ReanimatedScreenWrapper
|
|
46
|
+
}, props.children)
|
|
47
|
+
);
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=ReanimatedScreenProvider.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["ReanimatedScreenProvider.tsx"],"names":["React","ScreenContext","ReanimatedNativeStackScreen","AnimatedScreen","ReanimatedScreenWrapper","Component","ref","props","onComponentRef","setNativeProps","render","ReanimatedScreen","isNativeStack","setRef","ReanimatedScreenProvider","children"],"mappings":";;;;AAAA,OAAOA,KAAP,MAAyC,OAAzC;AAEA,SAAsBC,aAAtB,QAA2C,sBAA3C;AACA,OAAOC,2BAAP,MAAwC,+BAAxC;AACA,OAAOC,cAAP,MAA2B,oBAA3B;;AAEA,MAAMC,uBAAN,SAAsCJ,KAAK,CAACK,SAA5C,CAAmE;AAAA;AAAA;;AAAA,iCACb,IADa;;AAAA,oCAOvDC,GAAD,IAAqD;AAAA;;AAC5D,WAAKA,GAAL,GAAWA,GAAX;AACA,mDAAKC,KAAL,EAAWC,cAAX,kGAA4BF,GAA5B;AACD,KAVgE;AAAA;;AAGjEG,EAAAA,cAAc,CAACF,KAAD,EAA2B;AAAA;;AACvC,sBAAKD,GAAL,wDAAUG,cAAV,CAAyBF,KAAzB;AACD;;AAODG,EAAAA,MAAM,GAAG;AACP,UAAMC,gBAAgB,GAAG,KAAKJ,KAAL,CAAWK,aAAX,GACrBV,2BADqB,GAErBC,cAFJ;AAGA,wBACE,oBAAC,gBAAD,eACM,KAAKI,KADX;AAEE;AACA,MAAA,GAAG,EAAE,KAAKM;AAHZ,OADF;AAOD;;AAvBgE;;AA0BnE,eAAe,SAASC,wBAAT,CACbP,KADa,EAEb;AACA;AAAA;AACE;AACA,wBAAC,aAAD,CAAe,QAAf;AAAwB,MAAA,KAAK,EAAEH;AAA/B,OACGG,KAAK,CAACQ,QADT;AAFF;AAMD","sourcesContent":["import React, { PropsWithChildren } from 'react';\nimport { View } from 'react-native';\nimport { ScreenProps, ScreenContext } from 'react-native-screens';\nimport ReanimatedNativeStackScreen from './ReanimatedNativeStackScreen';\nimport AnimatedScreen from './ReanimatedScreen';\n\nclass ReanimatedScreenWrapper extends React.Component<ScreenProps> {\n private ref: React.ElementRef<typeof View> | null = null;\n\n setNativeProps(props: ScreenProps): void {\n this.ref?.setNativeProps(props);\n }\n\n setRef = (ref: React.ElementRef<typeof View> | null): void => {\n this.ref = ref;\n this.props.onComponentRef?.(ref);\n };\n\n render() {\n const ReanimatedScreen = this.props.isNativeStack\n ? ReanimatedNativeStackScreen\n : AnimatedScreen;\n return (\n <ReanimatedScreen\n {...this.props}\n // @ts-ignore some problems with ref\n ref={this.setRef}\n />\n );\n }\n}\n\nexport default function ReanimatedScreenProvider(\n props: PropsWithChildren<unknown>\n) {\n return (\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n <ScreenContext.Provider value={ReanimatedScreenWrapper as any}>\n {props.children}\n </ScreenContext.Provider>\n );\n}\n"]}
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
export { default as ReanimatedScreenProvider } from './
|
|
1
|
+
export { default as ReanimatedScreenProvider } from './ReanimatedScreenProvider';
|
|
2
2
|
export { default as useReanimatedTransitionProgress } from './useReanimatedTransitionProgress';
|
|
3
3
|
//# sourceMappingURL=index.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["index.tsx"],"names":["default","ReanimatedScreenProvider","useReanimatedTransitionProgress"],"mappings":"AAAA,SAASA,OAAO,IAAIC,wBAApB,QAAoD,
|
|
1
|
+
{"version":3,"sources":["index.tsx"],"names":["default","ReanimatedScreenProvider","useReanimatedTransitionProgress"],"mappings":"AAAA,SAASA,OAAO,IAAIC,wBAApB,QAAoD,4BAApD;AACA,SAASD,OAAO,IAAIE,+BAApB,QAA2D,mCAA3D","sourcesContent":["export { default as ReanimatedScreenProvider } from './ReanimatedScreenProvider';\nexport { default as useReanimatedTransitionProgress } from './useReanimatedTransitionProgress';\n"]}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { BackHandler, Platform } from 'react-native';
|
|
2
|
+
export const isSearchBarAvailableForCurrentPlatform = ['ios', 'android'].includes(Platform.OS);
|
|
3
|
+
export function executeNativeBackPress() {
|
|
4
|
+
// This function invokes the native back press event
|
|
5
|
+
BackHandler.exitApp();
|
|
6
|
+
return true;
|
|
7
|
+
}
|
|
8
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["utils.ts"],"names":["BackHandler","Platform","isSearchBarAvailableForCurrentPlatform","includes","OS","executeNativeBackPress","exitApp"],"mappings":"AAAA,SAASA,WAAT,EAAsBC,QAAtB,QAAsC,cAAtC;AAEA,OAAO,MAAMC,sCAAsC,GAAG,CACpD,KADoD,EAEpD,SAFoD,EAGpDC,QAHoD,CAG3CF,QAAQ,CAACG,EAHkC,CAA/C;AAKP,OAAO,SAASC,sBAAT,GAAkC;AACvC;AACAL,EAAAA,WAAW,CAACM,OAAZ;AACA,SAAO,IAAP;AACD","sourcesContent":["import { BackHandler, Platform } from 'react-native';\n\nexport const isSearchBarAvailableForCurrentPlatform = [\n 'ios',\n 'android',\n].includes(Platform.OS);\n\nexport function executeNativeBackPress() {\n // This function invokes the native back press event\n BackHandler.exitApp();\n return true;\n}\n"]}
|
|
@@ -3,8 +3,10 @@ import { Animated, View, ViewProps, ImageProps } from 'react-native';
|
|
|
3
3
|
import { ScreenProps, ScreenContainerProps, ScreenStackProps, ScreenStackHeaderConfigProps, HeaderSubviewTypes, SearchBarProps } from './types';
|
|
4
4
|
export * from './types';
|
|
5
5
|
export { default as useTransitionProgress } from './useTransitionProgress';
|
|
6
|
+
export { isSearchBarAvailableForCurrentPlatform, executeNativeBackPress, } from './utils';
|
|
6
7
|
export declare function enableScreens(shouldEnableScreens?: boolean): void;
|
|
7
8
|
export declare function screensEnabled(): boolean;
|
|
9
|
+
export declare function enableFreeze(shouldEnableReactFreeze?: boolean): void;
|
|
8
10
|
export declare class NativeScreen extends React.Component<ScreenProps> {
|
|
9
11
|
render(): JSX.Element;
|
|
10
12
|
}
|
|
@@ -253,8 +253,6 @@ export declare type NativeStackNavigationOptions = {
|
|
|
253
253
|
screenOrientation?: ScreenProps['screenOrientation'];
|
|
254
254
|
/**
|
|
255
255
|
* Object in which you should pass props in order to render native iOS searchBar.
|
|
256
|
-
*
|
|
257
|
-
* @platform ios
|
|
258
256
|
*/
|
|
259
257
|
searchBar?: SearchBarProps;
|
|
260
258
|
/**
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
interface Args {
|
|
2
|
+
onBackPress: () => boolean;
|
|
3
|
+
isDisabled: boolean;
|
|
4
|
+
}
|
|
5
|
+
interface UseBackPressSubscription {
|
|
6
|
+
handleAttached: () => void;
|
|
7
|
+
handleDetached: () => void;
|
|
8
|
+
createSubscription: () => void;
|
|
9
|
+
clearSubscription: () => void;
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* This hook is an abstraction for keeping back press subscription
|
|
13
|
+
* logic in one place.
|
|
14
|
+
*/
|
|
15
|
+
export declare function useBackPressSubscription({ onBackPress, isDisabled, }: Args): UseBackPressSubscription;
|
|
16
|
+
export {};
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ScreenProps } from 'react-native-screens';
|
|
3
|
+
import Animated from 'react-native-reanimated';
|
|
4
|
+
declare const ReanimatedNativeStackScreen: React.ForwardRefExoticComponent<Pick<ScreenProps, "children" | "active" | "activityState" | "customAnimationOnSwipe" | "enabled" | "isNativeStack" | "fullScreenSwipeEnabled" | "gestureEnabled" | "nativeBackButtonDismissalEnabled" | "onAppear" | "onComponentRef" | "onDisappear" | "onDismissed" | "onHeaderBackButtonClicked" | "onTransitionProgress" | "onWillAppear" | "onWillDisappear" | "replaceAnimation" | "screenOrientation" | "stackAnimation" | "stackPresentation" | "statusBarAnimation" | "statusBarColor" | "statusBarHidden" | "statusBarStyle" | "statusBarTranslucent" | "hitSlop" | "onLayout" | "pointerEvents" | "removeClippedSubviews" | "style" | "testID" | "nativeID" | "collapsable" | "needsOffscreenAlphaCompositing" | "renderToHardwareTextureAndroid" | "focusable" | "shouldRasterizeIOS" | "isTVSelectable" | "hasTVPreferredFocus" | "tvParallaxProperties" | "tvParallaxShiftDistanceX" | "tvParallaxShiftDistanceY" | "tvParallaxTiltAngle" | "tvParallaxMagnification" | "onStartShouldSetResponder" | "onMoveShouldSetResponder" | "onResponderEnd" | "onResponderGrant" | "onResponderReject" | "onResponderMove" | "onResponderRelease" | "onResponderStart" | "onResponderTerminationRequest" | "onResponderTerminate" | "onStartShouldSetResponderCapture" | "onMoveShouldSetResponderCapture" | "onTouchStart" | "onTouchMove" | "onTouchEnd" | "onTouchCancel" | "onTouchEndCapture" | "accessible" | "accessibilityActions" | "accessibilityLabel" | "accessibilityRole" | "accessibilityState" | "accessibilityHint" | "accessibilityValue" | "onAccessibilityAction" | "accessibilityComponentType" | "accessibilityLiveRegion" | "importantForAccessibility" | "accessibilityElementsHidden" | "accessibilityTraits" | "accessibilityViewIsModal" | "onAccessibilityEscape" | "onAccessibilityTap" | "onMagicTap" | "accessibilityIgnoresInvertColors"> & React.RefAttributes<React.ComponentClass<Animated.AnimateProps<{}>, any>>>;
|
|
5
|
+
export default ReanimatedNativeStackScreen;
|
|
@@ -1,2 +1,5 @@
|
|
|
1
|
-
import
|
|
2
|
-
|
|
1
|
+
import React from 'react';
|
|
2
|
+
import { ScreenProps } from 'react-native-screens';
|
|
3
|
+
import Animated from 'react-native-reanimated';
|
|
4
|
+
declare const ReanimatedScreen: React.ForwardRefExoticComponent<Pick<ScreenProps, "children" | "active" | "activityState" | "customAnimationOnSwipe" | "enabled" | "isNativeStack" | "fullScreenSwipeEnabled" | "gestureEnabled" | "nativeBackButtonDismissalEnabled" | "onAppear" | "onComponentRef" | "onDisappear" | "onDismissed" | "onHeaderBackButtonClicked" | "onTransitionProgress" | "onWillAppear" | "onWillDisappear" | "replaceAnimation" | "screenOrientation" | "stackAnimation" | "stackPresentation" | "statusBarAnimation" | "statusBarColor" | "statusBarHidden" | "statusBarStyle" | "statusBarTranslucent" | "hitSlop" | "onLayout" | "pointerEvents" | "removeClippedSubviews" | "style" | "testID" | "nativeID" | "collapsable" | "needsOffscreenAlphaCompositing" | "renderToHardwareTextureAndroid" | "focusable" | "shouldRasterizeIOS" | "isTVSelectable" | "hasTVPreferredFocus" | "tvParallaxProperties" | "tvParallaxShiftDistanceX" | "tvParallaxShiftDistanceY" | "tvParallaxTiltAngle" | "tvParallaxMagnification" | "onStartShouldSetResponder" | "onMoveShouldSetResponder" | "onResponderEnd" | "onResponderGrant" | "onResponderReject" | "onResponderMove" | "onResponderRelease" | "onResponderStart" | "onResponderTerminationRequest" | "onResponderTerminate" | "onStartShouldSetResponderCapture" | "onMoveShouldSetResponderCapture" | "onTouchStart" | "onTouchMove" | "onTouchEnd" | "onTouchCancel" | "onTouchEndCapture" | "accessible" | "accessibilityActions" | "accessibilityLabel" | "accessibilityRole" | "accessibilityState" | "accessibilityHint" | "accessibilityValue" | "onAccessibilityAction" | "accessibilityComponentType" | "accessibilityLiveRegion" | "importantForAccessibility" | "accessibilityElementsHidden" | "accessibilityTraits" | "accessibilityViewIsModal" | "onAccessibilityEscape" | "onAccessibilityTap" | "onMagicTap" | "accessibilityIgnoresInvertColors"> & React.RefAttributes<React.ComponentClass<Animated.AnimateProps<{}>, any>>>;
|
|
5
|
+
export default ReanimatedScreen;
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export { default as ReanimatedScreenProvider } from './
|
|
1
|
+
export { default as ReanimatedScreenProvider } from './ReanimatedScreenProvider';
|
|
2
2
|
export { default as useReanimatedTransitionProgress } from './useReanimatedTransitionProgress';
|
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
/// <reference types="react" />
|
|
2
1
|
import { Animated, NativeSyntheticEvent, ViewProps, View, TargetedEvent, TextInputFocusEventData } from 'react-native';
|
|
3
2
|
export declare type StackPresentationTypes = 'push' | 'modal' | 'transparentModal' | 'containedModal' | 'containedTransparentModal' | 'fullScreenModal' | 'formSheet';
|
|
4
3
|
export declare type StackAnimationTypes = 'default' | 'fade' | 'fade_from_bottom' | 'flip' | 'none' | 'simple_push' | 'slide_from_bottom' | 'slide_from_right' | 'slide_from_left';
|
|
@@ -270,6 +269,14 @@ export interface ScreenStackHeaderConfigProps extends ViewProps {
|
|
|
270
269
|
* Boolean that allows for disabling drop shadow under navigation header when the edge of any scrollable content reaches the matching edge of the navigation bar.
|
|
271
270
|
*/
|
|
272
271
|
largeTitleHideShadow?: boolean;
|
|
272
|
+
/**
|
|
273
|
+
* Callback which is executed when screen header is attached
|
|
274
|
+
*/
|
|
275
|
+
onAttached?: () => void;
|
|
276
|
+
/**
|
|
277
|
+
* Callback which is executed when screen header is detached
|
|
278
|
+
*/
|
|
279
|
+
onDetached?: () => void;
|
|
273
280
|
/**
|
|
274
281
|
* String that can be displayed in the header as a fallback for `headerTitle`.
|
|
275
282
|
*/
|
|
@@ -309,22 +316,46 @@ export interface SearchBarProps {
|
|
|
309
316
|
* The auto-capitalization behavior
|
|
310
317
|
*/
|
|
311
318
|
autoCapitalize?: 'none' | 'words' | 'sentences' | 'characters';
|
|
319
|
+
/**
|
|
320
|
+
* Automatically focuses search bar on mount
|
|
321
|
+
*
|
|
322
|
+
* @platform android
|
|
323
|
+
*/
|
|
324
|
+
autoFocus?: boolean;
|
|
312
325
|
/**
|
|
313
326
|
* The search field background color
|
|
314
327
|
*/
|
|
315
328
|
barTintColor?: string;
|
|
316
329
|
/**
|
|
317
330
|
* The text to be used instead of default `Cancel` button text
|
|
331
|
+
*
|
|
332
|
+
* @platform ios
|
|
318
333
|
*/
|
|
319
334
|
cancelButtonText?: string;
|
|
335
|
+
/**
|
|
336
|
+
* Specifies whether the back button should close search bar's text input or not.
|
|
337
|
+
*
|
|
338
|
+
* @platform android
|
|
339
|
+
*/
|
|
340
|
+
disableBackButtonOverride?: boolean;
|
|
320
341
|
/**
|
|
321
342
|
* Indicates whether to hide the navigation bar
|
|
343
|
+
*
|
|
344
|
+
* @platform ios
|
|
322
345
|
*/
|
|
323
346
|
hideNavigationBar?: boolean;
|
|
324
347
|
/**
|
|
325
348
|
* Indicates whether to hide the search bar when scrolling
|
|
349
|
+
*
|
|
350
|
+
* @platform ios
|
|
326
351
|
*/
|
|
327
352
|
hideWhenScrolling?: boolean;
|
|
353
|
+
/**
|
|
354
|
+
* Sets type of the input. Defaults to `text`.
|
|
355
|
+
*
|
|
356
|
+
* @platform android
|
|
357
|
+
*/
|
|
358
|
+
inputType?: 'text' | 'phone' | 'number' | 'email';
|
|
328
359
|
/**
|
|
329
360
|
* Indicates whether to to obscure the underlying content
|
|
330
361
|
*/
|
|
@@ -335,6 +366,8 @@ export interface SearchBarProps {
|
|
|
335
366
|
onBlur?: (e: NativeSyntheticEvent<TargetedEvent>) => void;
|
|
336
367
|
/**
|
|
337
368
|
* A callback that gets called when the cancel button is pressed
|
|
369
|
+
*
|
|
370
|
+
* @platform ios
|
|
338
371
|
*/
|
|
339
372
|
onCancelButtonPress?: (e: NativeSyntheticEvent<TargetedEvent>) => void;
|
|
340
373
|
/**
|
|
@@ -344,7 +377,19 @@ export interface SearchBarProps {
|
|
|
344
377
|
/**
|
|
345
378
|
* A callback that gets called when search bar has received focus
|
|
346
379
|
*/
|
|
380
|
+
onClose?: () => void;
|
|
381
|
+
/**
|
|
382
|
+
* A callback that gets called when search bar is opened
|
|
383
|
+
*
|
|
384
|
+
* @platform android
|
|
385
|
+
*/
|
|
347
386
|
onFocus?: (e: NativeSyntheticEvent<TargetedEvent>) => void;
|
|
387
|
+
/**
|
|
388
|
+
* A callback that gets called when search bar is closed
|
|
389
|
+
*
|
|
390
|
+
* @platform android
|
|
391
|
+
*/
|
|
392
|
+
onOpen?: () => void;
|
|
348
393
|
/**
|
|
349
394
|
* A callback that gets called when the search button is pressed. It receives the current text value of the search bar.
|
|
350
395
|
*/
|