react-native-screens 4.0.0-beta.14 → 4.0.0-beta.15
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/android/src/main/java/com/swmansion/rnscreens/CustomToolbar.kt +13 -3
- package/lib/commonjs/components/DebugContainer.js +40 -0
- package/lib/commonjs/components/DebugContainer.js.map +1 -0
- package/lib/commonjs/components/DebugContainer.web.js +15 -0
- package/lib/commonjs/components/DebugContainer.web.js.map +1 -0
- package/lib/commonjs/components/ScreenStack.js +7 -2
- package/lib/commonjs/components/ScreenStack.js.map +1 -1
- package/lib/commonjs/components/ScreenStackHeaderConfig.js +10 -10
- package/lib/commonjs/components/ScreenStackHeaderConfig.js.map +1 -1
- package/lib/commonjs/components/ScreenStackItem.js +66 -0
- package/lib/commonjs/components/ScreenStackItem.js.map +1 -0
- package/lib/commonjs/index.js +8 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/module/components/DebugContainer.js +31 -0
- package/lib/module/components/DebugContainer.js.map +1 -0
- package/lib/module/components/DebugContainer.web.js +6 -0
- package/lib/module/components/DebugContainer.web.js.map +1 -0
- package/lib/module/components/ScreenStack.js +7 -2
- package/lib/module/components/ScreenStack.js.map +1 -1
- package/lib/module/components/ScreenStackHeaderConfig.js +10 -8
- package/lib/module/components/ScreenStackHeaderConfig.js.map +1 -1
- package/lib/module/components/ScreenStackItem.js +57 -0
- package/lib/module/components/ScreenStackItem.js.map +1 -0
- package/lib/module/index.js +1 -0
- package/lib/module/index.js.map +1 -1
- package/lib/typescript/components/DebugContainer.d.ts +15 -0
- package/lib/typescript/components/DebugContainer.d.ts.map +1 -0
- package/lib/typescript/components/DebugContainer.web.d.ts +4 -0
- package/lib/typescript/components/DebugContainer.web.d.ts.map +1 -0
- package/lib/typescript/components/ScreenStack.d.ts.map +1 -1
- package/lib/typescript/components/ScreenStackHeaderConfig.d.ts +2 -2
- package/lib/typescript/components/ScreenStackHeaderConfig.d.ts.map +1 -1
- package/lib/typescript/components/ScreenStackItem.d.ts +10 -0
- package/lib/typescript/components/ScreenStackItem.d.ts.map +1 -0
- package/lib/typescript/fabric/ScreenStackNativeComponent.d.ts +1 -1
- package/lib/typescript/fabric/ScreenStackNativeComponent.d.ts.map +1 -1
- package/lib/typescript/index.d.ts +1 -0
- package/lib/typescript/index.d.ts.map +1 -1
- package/package.json +1 -1
- package/src/components/DebugContainer.tsx +47 -0
- package/src/components/DebugContainer.web.tsx +7 -0
- package/src/components/ScreenStack.tsx +15 -5
- package/src/components/ScreenStackHeaderConfig.tsx +24 -13
- package/src/components/ScreenStackItem.tsx +122 -0
- package/src/fabric/ScreenStackNativeComponent.ts +1 -1
- package/src/index.tsx +1 -0
|
@@ -3,9 +3,11 @@ package com.swmansion.rnscreens
|
|
|
3
3
|
import android.annotation.SuppressLint
|
|
4
4
|
import android.content.Context
|
|
5
5
|
import android.os.Build
|
|
6
|
+
import android.view.WindowManager
|
|
6
7
|
import androidx.appcompat.widget.Toolbar
|
|
7
8
|
import com.facebook.react.modules.core.ChoreographerCompat
|
|
8
9
|
import com.facebook.react.modules.core.ReactChoreographer
|
|
10
|
+
import com.facebook.react.uimanager.ThemedReactContext
|
|
9
11
|
|
|
10
12
|
// This class is used to store config closer to search bar
|
|
11
13
|
@SuppressLint("ViewConstructor") // Only we construct this view, it is never inflated.
|
|
@@ -18,9 +20,11 @@ open class CustomToolbar(
|
|
|
18
20
|
object : ChoreographerCompat.FrameCallback() {
|
|
19
21
|
override fun doFrame(frameTimeNanos: Long) {
|
|
20
22
|
isLayoutEnqueued = false
|
|
23
|
+
// The following measure specs are selected to work only with Android APIs <= 29.
|
|
24
|
+
// See https://github.com/software-mansion/react-native-screens/pull/2439
|
|
21
25
|
measure(
|
|
22
|
-
MeasureSpec.makeMeasureSpec(width, MeasureSpec.
|
|
23
|
-
MeasureSpec.makeMeasureSpec(height, MeasureSpec.
|
|
26
|
+
MeasureSpec.makeMeasureSpec(width, MeasureSpec.AT_MOST),
|
|
27
|
+
MeasureSpec.makeMeasureSpec(height, MeasureSpec.AT_MOST),
|
|
24
28
|
)
|
|
25
29
|
layout(left, top, right, bottom)
|
|
26
30
|
}
|
|
@@ -28,7 +32,13 @@ open class CustomToolbar(
|
|
|
28
32
|
|
|
29
33
|
override fun requestLayout() {
|
|
30
34
|
super.requestLayout()
|
|
31
|
-
|
|
35
|
+
val softInputMode =
|
|
36
|
+
(context as ThemedReactContext)
|
|
37
|
+
.currentActivity
|
|
38
|
+
?.window
|
|
39
|
+
?.attributes
|
|
40
|
+
?.softInputMode
|
|
41
|
+
if (Build.VERSION.SDK_INT <= Build.VERSION_CODES.Q && softInputMode == WindowManager.LayoutParams.SOFT_INPUT_ADJUST_PAN) {
|
|
32
42
|
// Below Android API 29, layout is not being requested when subviews are being added to the layout,
|
|
33
43
|
// leading to having their subviews in position 0,0 of the toolbar (as Android don't calculate
|
|
34
44
|
// the position of each subview, even if Yoga has correctly set their width and height).
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var React = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _reactNative = require("react-native");
|
|
9
|
+
var _AppContainer = _interopRequireDefault(require("react-native/Libraries/ReactNative/AppContainer"));
|
|
10
|
+
var _ScreenContentWrapper = _interopRequireDefault(require("./ScreenContentWrapper"));
|
|
11
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
12
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
13
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
14
|
+
// @ts-expect-error importing private component
|
|
15
|
+
// eslint-disable-next-line import/namespace, import/default, import/no-named-as-default, import/no-named-as-default-member
|
|
16
|
+
/**
|
|
17
|
+
* This view must *not* be flattened.
|
|
18
|
+
* See https://github.com/software-mansion/react-native-screens/pull/1825
|
|
19
|
+
* for detailed explanation.
|
|
20
|
+
*/
|
|
21
|
+
let DebugContainer = props => {
|
|
22
|
+
return /*#__PURE__*/React.createElement(_ScreenContentWrapper.default, props);
|
|
23
|
+
};
|
|
24
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
25
|
+
// eslint-disable-next-line react/display-name
|
|
26
|
+
DebugContainer = props => {
|
|
27
|
+
const {
|
|
28
|
+
stackPresentation,
|
|
29
|
+
...rest
|
|
30
|
+
} = props;
|
|
31
|
+
if (_reactNative.Platform.OS === 'ios' && stackPresentation !== 'push' && stackPresentation !== 'formSheet') {
|
|
32
|
+
// This is necessary for LogBox
|
|
33
|
+
return /*#__PURE__*/React.createElement(_AppContainer.default, null, /*#__PURE__*/React.createElement(_ScreenContentWrapper.default, rest));
|
|
34
|
+
}
|
|
35
|
+
return /*#__PURE__*/React.createElement(_ScreenContentWrapper.default, rest);
|
|
36
|
+
};
|
|
37
|
+
DebugContainer.displayName = 'DebugContainer';
|
|
38
|
+
}
|
|
39
|
+
var _default = exports.default = DebugContainer;
|
|
40
|
+
//# sourceMappingURL=DebugContainer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","_interopRequireWildcard","require","_reactNative","_AppContainer","_interopRequireDefault","_ScreenContentWrapper","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","DebugContainer","props","createElement","process","env","NODE_ENV","stackPresentation","rest","Platform","OS","displayName","_default","exports"],"sourceRoot":"../../../src","sources":["components/DebugContainer.tsx"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,uBAAA,CAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAGA,IAAAE,aAAA,GAAAC,sBAAA,CAAAH,OAAA;AACA,IAAAI,qBAAA,GAAAD,sBAAA,CAAAH,OAAA;AAA0D,SAAAG,uBAAAE,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,SAAAG,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAV,wBAAAU,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAH,UAAA,SAAAG,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAF,OAAA,EAAAE,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAC,GAAA,CAAAJ,CAAA,UAAAG,CAAA,CAAAE,GAAA,CAAAL,CAAA,OAAAM,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAZ,CAAA,oBAAAY,CAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAY,CAAA,SAAAI,CAAA,GAAAR,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAX,CAAA,EAAAY,CAAA,UAAAI,CAAA,KAAAA,CAAA,CAAAX,GAAA,IAAAW,CAAA,CAAAC,GAAA,IAAAR,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAI,CAAA,IAAAV,CAAA,CAAAM,CAAA,IAAAZ,CAAA,CAAAY,CAAA,YAAAN,CAAA,CAAAR,OAAA,GAAAE,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAc,GAAA,CAAAjB,CAAA,EAAAM,CAAA,GAAAA,CAAA;AAH1D;AACA;AAUA;AACA;AACA;AACA;AACA;AACA,IAAIY,cAAmD,GAAIC,KAAK,IAAK;EACnE,oBAAO9B,KAAA,CAAA+B,aAAA,CAACzB,qBAAA,CAAAG,OAAoB,EAAKqB,KAAQ,CAAC;AAC5C,CAAC;AAED,IAAIE,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,EAAE;EACzC;EACAL,cAAc,GAAIC,KAAqB,IAAK;IAC1C,MAAM;MAAEK,iBAAiB;MAAE,GAAGC;IAAK,CAAC,GAAGN,KAAK;IAE5C,IACEO,qBAAQ,CAACC,EAAE,KAAK,KAAK,IACrBH,iBAAiB,KAAK,MAAM,IAC5BA,iBAAiB,KAAK,WAAW,EACjC;MACA;MACA,oBACEnC,KAAA,CAAA+B,aAAA,CAAC3B,aAAA,CAAAK,OAAY,qBACXT,KAAA,CAAA+B,aAAA,CAACzB,qBAAA,CAAAG,OAAoB,EAAK2B,IAAO,CACrB,CAAC;IAEnB;IAEA,oBAAOpC,KAAA,CAAA+B,aAAA,CAACzB,qBAAA,CAAAG,OAAoB,EAAK2B,IAAO,CAAC;EAC3C,CAAC;EAEDP,cAAc,CAACU,WAAW,GAAG,gBAAgB;AAC/C;AAAC,IAAAC,QAAA,GAAAC,OAAA,CAAAhC,OAAA,GAEcoB,cAAc"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = DebugContainer;
|
|
7
|
+
var React = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _ScreenContentWrapper = _interopRequireDefault(require("./ScreenContentWrapper"));
|
|
9
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
10
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
11
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
12
|
+
function DebugContainer(props) {
|
|
13
|
+
return /*#__PURE__*/React.createElement(_ScreenContentWrapper.default, props);
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=DebugContainer.web.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","_interopRequireWildcard","require","_ScreenContentWrapper","_interopRequireDefault","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","DebugContainer","props","createElement"],"sourceRoot":"../../../src","sources":["components/DebugContainer.web.tsx"],"mappings":";;;;;;AAAA,IAAAA,KAAA,GAAAC,uBAAA,CAAAC,OAAA;AAEA,IAAAC,qBAAA,GAAAC,sBAAA,CAAAF,OAAA;AAA0D,SAAAE,uBAAAC,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAE,OAAA,EAAAF,GAAA;AAAA,SAAAG,yBAAAC,CAAA,6BAAAC,OAAA,mBAAAC,CAAA,OAAAD,OAAA,IAAAE,CAAA,OAAAF,OAAA,YAAAF,wBAAA,YAAAA,CAAAC,CAAA,WAAAA,CAAA,GAAAG,CAAA,GAAAD,CAAA,KAAAF,CAAA;AAAA,SAAAR,wBAAAQ,CAAA,EAAAE,CAAA,SAAAA,CAAA,IAAAF,CAAA,IAAAA,CAAA,CAAAH,UAAA,SAAAG,CAAA,eAAAA,CAAA,uBAAAA,CAAA,yBAAAA,CAAA,WAAAF,OAAA,EAAAE,CAAA,QAAAG,CAAA,GAAAJ,wBAAA,CAAAG,CAAA,OAAAC,CAAA,IAAAA,CAAA,CAAAC,GAAA,CAAAJ,CAAA,UAAAG,CAAA,CAAAE,GAAA,CAAAL,CAAA,OAAAM,CAAA,KAAAC,SAAA,UAAAC,CAAA,GAAAC,MAAA,CAAAC,cAAA,IAAAD,MAAA,CAAAE,wBAAA,WAAAC,CAAA,IAAAZ,CAAA,oBAAAY,CAAA,IAAAH,MAAA,CAAAI,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAf,CAAA,EAAAY,CAAA,SAAAI,CAAA,GAAAR,CAAA,GAAAC,MAAA,CAAAE,wBAAA,CAAAX,CAAA,EAAAY,CAAA,UAAAI,CAAA,KAAAA,CAAA,CAAAX,GAAA,IAAAW,CAAA,CAAAC,GAAA,IAAAR,MAAA,CAAAC,cAAA,CAAAJ,CAAA,EAAAM,CAAA,EAAAI,CAAA,IAAAV,CAAA,CAAAM,CAAA,IAAAZ,CAAA,CAAAY,CAAA,YAAAN,CAAA,CAAAR,OAAA,GAAAE,CAAA,EAAAG,CAAA,IAAAA,CAAA,CAAAc,GAAA,CAAAjB,CAAA,EAAAM,CAAA,GAAAA,CAAA;AAE3C,SAASY,cAAcA,CAACC,KAAgB,EAAG;EACxD,oBAAO5B,KAAA,CAAA6B,aAAA,CAAC1B,qBAAA,CAAAI,OAAoB,EAAKqB,KAAQ,CAAC;AAC5C"}
|
|
@@ -11,7 +11,6 @@ var _DelayedFreeze = _interopRequireDefault(require("./helpers/DelayedFreeze"));
|
|
|
11
11
|
var _ScreenStackNativeComponent = _interopRequireDefault(require("../fabric/ScreenStackNativeComponent"));
|
|
12
12
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
13
13
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : 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); } // Native components
|
|
14
|
-
const NativeScreenStack = _ScreenStackNativeComponent.default;
|
|
15
14
|
function isFabric() {
|
|
16
15
|
return 'nativeFabricUIManager' in global;
|
|
17
16
|
}
|
|
@@ -45,7 +44,13 @@ function ScreenStack(props) {
|
|
|
45
44
|
gestureDetectorBridge.current.stackUseEffectCallback(ref);
|
|
46
45
|
}
|
|
47
46
|
});
|
|
48
|
-
return /*#__PURE__*/_react.default.createElement(
|
|
47
|
+
return /*#__PURE__*/_react.default.createElement(_ScreenStackNativeComponent.default, _extends({}, rest, {
|
|
48
|
+
/**
|
|
49
|
+
* This messy override is to conform NativeProps used by codegen and
|
|
50
|
+
* our Public API. To see reasoning go to this PR:
|
|
51
|
+
* https://github.com/software-mansion/react-native-screens/pull/2423#discussion_r1810616995
|
|
52
|
+
*/
|
|
53
|
+
onFinishTransitioning: props.onFinishTransitioning,
|
|
49
54
|
ref: ref
|
|
50
55
|
}), childrenWithFreeze);
|
|
51
56
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Object","defineProperty","exports","value","default","_react","_interopRequireDefault","require","_core","_DelayedFreeze","_ScreenStackNativeComponent","obj","__esModule","_extends","assign","bind","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","
|
|
1
|
+
{"version":3,"names":["Object","defineProperty","exports","value","default","_react","_interopRequireDefault","require","_core","_DelayedFreeze","_ScreenStackNativeComponent","obj","__esModule","_extends","assign","bind","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","isFabric","global","ScreenStack","props","children","gestureDetectorBridge","rest","ref","React","useRef","size","Children","count","childrenWithFreeze","map","child","index","descriptor","descriptors","isFreezeEnabled","options","freezeOnBlur","freezeEnabled","freezePreviousScreen","createElement","freeze","useEffect","current","stackUseEffectCallback","onFinishTransitioning","_default"],"sourceRoot":"../../../src","sources":["components/ScreenStack.tsx"],"mappings":";AAAA,YAAY;;AAACA,MAAA,CAAAC,cAAA,CAAAC,OAAA;EAAAC,KAAA;AAAA;AAAAD,OAAA,CAAAE,OAAA;AAEb,IAAAC,MAAA,GAAAC,sBAAA,CAAAC,OAAA;AAEA,IAAAC,KAAA,GAAAD,OAAA;AACA,IAAAE,cAAA,GAAAH,sBAAA,CAAAC,OAAA;AAGA,IAAAG,2BAAA,GAAAJ,sBAAA,CAAAC,OAAA;AAE8C,SAAAD,uBAAAK,GAAA,WAAAA,GAAA,IAAAA,GAAA,CAAAC,UAAA,GAAAD,GAAA,KAAAP,OAAA,EAAAO,GAAA;AAAA,SAAAE,SAAA,IAAAA,QAAA,GAAAb,MAAA,CAAAc,MAAA,GAAAd,MAAA,CAAAc,MAAA,CAAAC,IAAA,eAAAC,MAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAC,SAAA,CAAAC,MAAA,EAAAF,CAAA,UAAAG,MAAA,GAAAF,SAAA,CAAAD,CAAA,YAAAI,GAAA,IAAAD,MAAA,QAAApB,MAAA,CAAAsB,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAJ,MAAA,EAAAC,GAAA,KAAAL,MAAA,CAAAK,GAAA,IAAAD,MAAA,CAAAC,GAAA,gBAAAL,MAAA,YAAAH,QAAA,CAAAY,KAAA,OAAAP,SAAA,KAH9C;AAKA,SAASQ,QAAQA,CAAA,EAAG;EAClB,OAAO,uBAAuB,IAAIC,MAAM;AAC1C;AAEA,SAASC,WAAWA,CAACC,KAAuB,EAAE;EAC5C,MAAM;IAAEC,QAAQ;IAAEC,qBAAqB;IAAE,GAAGC;EAAK,CAAC,GAAGH,KAAK;EAC1D,MAAMI,GAAG,GAAGC,cAAK,CAACC,MAAM,CAAC,IAAI,CAAC;EAC9B,MAAMC,IAAI,GAAGF,cAAK,CAACG,QAAQ,CAACC,KAAK,CAACR,QAAQ,CAAC;EAC3C;EACA,MAAMS,kBAAkB,GAAGL,cAAK,CAACG,QAAQ,CAACG,GAAG,CAACV,QAAQ,EAAE,CAACW,KAAK,EAAEC,KAAK,KAAK;IACxE;IACA,MAAM;MAAEb,KAAK;MAAER;IAAI,CAAC,GAAGoB,KAAK;IAC5B,MAAME,UAAU,GAAGd,KAAK,EAAEc,UAAU,IAAId,KAAK,EAAEe,WAAW,GAAGvB,GAAG,CAAC;IACjE,MAAMwB,eAAe,GACnBF,UAAU,EAAEG,OAAO,EAAEC,YAAY,IAAI,IAAAC,mBAAa,EAAC,CAAC;;IAEtD;IACA;IACA,MAAMC,oBAAoB,GAAGvB,QAAQ,CAAC,CAAC,GACnCU,IAAI,GAAGM,KAAK,GAAG,CAAC,GAChBN,IAAI,GAAGM,KAAK,GAAG,CAAC;IAEpB,oBACErC,MAAA,CAAAD,OAAA,CAAA8C,aAAA,CAACzC,cAAA,CAAAL,OAAa;MAAC+C,MAAM,EAAEN,eAAe,IAAII;IAAqB,GAC5DR,KACY,CAAC;EAEpB,CAAC,CAAC;EAEFP,cAAK,CAACkB,SAAS,CAAC,MAAM;IACpB,IAAIrB,qBAAqB,EAAE;MACzBA,qBAAqB,CAACsB,OAAO,CAACC,sBAAsB,CAACrB,GAAG,CAAC;IAC3D;EACF,CAAC,CAAC;EACF,oBACE5B,MAAA,CAAAD,OAAA,CAAA8C,aAAA,CAACxC,2BAAA,CAAAN,OAA0B,EAAAS,QAAA,KACrBmB,IAAI;IACR;AACN;AACA;AACA;AACA;IACMuB,qBAAqB,EACnB1B,KAAK,CAAC0B,qBACP;IACDtB,GAAG,EAAEA;EAAI,IACRM,kBACyB,CAAC;AAEjC;AAAC,IAAAiB,QAAA,GAAAtD,OAAA,CAAAE,OAAA,GAEcwB,WAAW"}
|
|
@@ -4,9 +4,7 @@
|
|
|
4
4
|
Object.defineProperty(exports, "__esModule", {
|
|
5
5
|
value: true
|
|
6
6
|
});
|
|
7
|
-
exports.ScreenStackHeaderCenterView = exports.ScreenStackHeaderBackButtonImage = void 0;
|
|
8
|
-
exports.ScreenStackHeaderConfig = ScreenStackHeaderConfig;
|
|
9
|
-
exports.ScreenStackHeaderSubview = exports.ScreenStackHeaderSearchBarView = exports.ScreenStackHeaderRightView = exports.ScreenStackHeaderLeftView = void 0;
|
|
7
|
+
exports.ScreenStackHeaderSubview = exports.ScreenStackHeaderSearchBarView = exports.ScreenStackHeaderRightView = exports.ScreenStackHeaderLeftView = exports.ScreenStackHeaderConfig = exports.ScreenStackHeaderCenterView = exports.ScreenStackHeaderBackButtonImage = void 0;
|
|
10
8
|
var _react = _interopRequireDefault(require("react"));
|
|
11
9
|
var _reactNative = require("react-native");
|
|
12
10
|
var _ScreenStackHeaderConfigNativeComponent = _interopRequireDefault(require("../fabric/ScreenStackHeaderConfigNativeComponent"));
|
|
@@ -14,12 +12,12 @@ var _ScreenStackHeaderSubviewNativeComponent = _interopRequireDefault(require(".
|
|
|
14
12
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
13
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : 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); } // Native components
|
|
16
14
|
const ScreenStackHeaderSubview = exports.ScreenStackHeaderSubview = _ScreenStackHeaderSubviewNativeComponent.default;
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
15
|
+
const ScreenStackHeaderConfig = exports.ScreenStackHeaderConfig = /*#__PURE__*/_react.default.forwardRef((props, ref) => /*#__PURE__*/_react.default.createElement(_ScreenStackHeaderConfigNativeComponent.default, _extends({}, props, {
|
|
16
|
+
ref: ref,
|
|
17
|
+
style: styles.headerConfig,
|
|
18
|
+
pointerEvents: "box-none"
|
|
19
|
+
})));
|
|
20
|
+
ScreenStackHeaderConfig.displayName = 'ScreenStackHeaderConfig';
|
|
23
21
|
const ScreenStackHeaderBackButtonImage = props => /*#__PURE__*/_react.default.createElement(ScreenStackHeaderSubview, {
|
|
24
22
|
type: "back",
|
|
25
23
|
style: styles.headerSubview
|
|
@@ -84,7 +82,9 @@ const styles = _reactNative.StyleSheet.create({
|
|
|
84
82
|
width: '100%',
|
|
85
83
|
flexDirection: 'row',
|
|
86
84
|
justifyContent: 'space-between',
|
|
87
|
-
|
|
85
|
+
// We only want to center align the subviews on iOS.
|
|
86
|
+
// See https://github.com/software-mansion/react-native-screens/pull/2456
|
|
87
|
+
alignItems: _reactNative.Platform.OS === 'ios' ? 'center' : undefined
|
|
88
88
|
}
|
|
89
89
|
});
|
|
90
90
|
//# sourceMappingURL=ScreenStackHeaderConfig.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Object","defineProperty","exports","value","
|
|
1
|
+
{"version":3,"names":["Object","defineProperty","exports","value","ScreenStackHeaderSubview","ScreenStackHeaderSearchBarView","ScreenStackHeaderRightView","ScreenStackHeaderLeftView","ScreenStackHeaderConfig","ScreenStackHeaderCenterView","ScreenStackHeaderBackButtonImage","_react","_interopRequireDefault","require","_reactNative","_ScreenStackHeaderConfigNativeComponent","_ScreenStackHeaderSubviewNativeComponent","obj","__esModule","default","_extends","assign","bind","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","ScreenStackHeaderSubviewNativeComponent","React","forwardRef","props","ref","createElement","style","styles","headerConfig","pointerEvents","displayName","type","headerSubview","Image","resizeMode","fadeDuration","rest","headerSubviewCenter","StyleSheet","create","flexDirection","alignItems","justifyContent","flexShrink","position","top","width","Platform","OS","undefined"],"sourceRoot":"../../../src","sources":["components/ScreenStackHeaderConfig.tsx"],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.default = void 0;
|
|
7
|
+
var React = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _reactNative = require("react-native");
|
|
9
|
+
var _warnOnce = _interopRequireDefault(require("warn-once"));
|
|
10
|
+
var _DebugContainer = _interopRequireDefault(require("./DebugContainer"));
|
|
11
|
+
var _ScreenStackHeaderConfig = require("./ScreenStackHeaderConfig");
|
|
12
|
+
var _Screen = _interopRequireDefault(require("./Screen"));
|
|
13
|
+
var _ScreenStack = _interopRequireDefault(require("./ScreenStack"));
|
|
14
|
+
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
+
function _getRequireWildcardCache(e) { if ("function" != typeof WeakMap) return null; var r = new WeakMap(), t = new WeakMap(); return (_getRequireWildcardCache = function (e) { return e ? t : r; })(e); }
|
|
16
|
+
function _interopRequireWildcard(e, r) { if (!r && e && e.__esModule) return e; if (null === e || "object" != typeof e && "function" != typeof e) return { default: e }; var t = _getRequireWildcardCache(r); if (t && t.has(e)) return t.get(e); var n = { __proto__: null }, a = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var u in e) if ("default" !== u && Object.prototype.hasOwnProperty.call(e, u)) { var i = a ? Object.getOwnPropertyDescriptor(e, u) : null; i && (i.get || i.set) ? Object.defineProperty(n, u, i) : n[u] = e[u]; } return n.default = e, t && t.set(e, n), n; }
|
|
17
|
+
function _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }
|
|
18
|
+
function ScreenStackItem(_ref, ref) {
|
|
19
|
+
let {
|
|
20
|
+
children,
|
|
21
|
+
headerConfig,
|
|
22
|
+
activityState,
|
|
23
|
+
stackPresentation,
|
|
24
|
+
contentStyle,
|
|
25
|
+
...rest
|
|
26
|
+
} = _ref;
|
|
27
|
+
const isHeaderInModal = _reactNative.Platform.OS === 'android' ? false : stackPresentation !== 'push' && headerConfig?.hidden === false;
|
|
28
|
+
const headerHiddenPreviousRef = React.useRef(headerConfig?.hidden);
|
|
29
|
+
React.useEffect(() => {
|
|
30
|
+
(0, _warnOnce.default)(_reactNative.Platform.OS !== 'android' && stackPresentation !== 'push' && headerHiddenPreviousRef.current !== headerConfig?.hidden, `Dynamically changing header's visibility in modals will result in remounting the screen and losing all local state.`);
|
|
31
|
+
headerHiddenPreviousRef.current = headerConfig?.hidden;
|
|
32
|
+
}, [headerConfig?.hidden, stackPresentation]);
|
|
33
|
+
const content = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(_DebugContainer.default, {
|
|
34
|
+
style: [stackPresentation === 'formSheet' ? _reactNative.Platform.OS === 'ios' ? styles.absolute : null : styles.container, contentStyle],
|
|
35
|
+
stackPresentation: stackPresentation ?? 'push'
|
|
36
|
+
}, children), /*#__PURE__*/React.createElement(_ScreenStackHeaderConfig.ScreenStackHeaderConfig, headerConfig));
|
|
37
|
+
return /*#__PURE__*/React.createElement(_Screen.default, _extends({
|
|
38
|
+
ref: ref,
|
|
39
|
+
enabled: true,
|
|
40
|
+
isNativeStack: true,
|
|
41
|
+
activityState: activityState,
|
|
42
|
+
stackPresentation: stackPresentation,
|
|
43
|
+
hasLargeHeader: headerConfig?.largeTitle ?? false
|
|
44
|
+
}, rest), isHeaderInModal ? /*#__PURE__*/React.createElement(_ScreenStack.default, {
|
|
45
|
+
style: styles.container
|
|
46
|
+
}, /*#__PURE__*/React.createElement(_Screen.default, {
|
|
47
|
+
enabled: true,
|
|
48
|
+
isNativeStack: true,
|
|
49
|
+
activityState: activityState,
|
|
50
|
+
hasLargeHeader: headerConfig?.largeTitle ?? false,
|
|
51
|
+
style: _reactNative.StyleSheet.absoluteFill
|
|
52
|
+
}, content)) : content);
|
|
53
|
+
}
|
|
54
|
+
var _default = exports.default = /*#__PURE__*/React.forwardRef(ScreenStackItem);
|
|
55
|
+
const styles = _reactNative.StyleSheet.create({
|
|
56
|
+
container: {
|
|
57
|
+
flex: 1
|
|
58
|
+
},
|
|
59
|
+
absolute: {
|
|
60
|
+
position: 'absolute',
|
|
61
|
+
top: 0,
|
|
62
|
+
start: 0,
|
|
63
|
+
end: 0
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
//# sourceMappingURL=ScreenStackItem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","_interopRequireWildcard","require","_reactNative","_warnOnce","_interopRequireDefault","_DebugContainer","_ScreenStackHeaderConfig","_Screen","_ScreenStack","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","get","n","__proto__","a","Object","defineProperty","getOwnPropertyDescriptor","u","prototype","hasOwnProperty","call","i","set","_extends","assign","bind","target","arguments","length","source","key","apply","ScreenStackItem","_ref","ref","children","headerConfig","activityState","stackPresentation","contentStyle","rest","isHeaderInModal","Platform","OS","hidden","headerHiddenPreviousRef","useRef","useEffect","warnOnce","current","content","createElement","Fragment","style","styles","absolute","container","ScreenStackHeaderConfig","enabled","isNativeStack","hasLargeHeader","largeTitle","StyleSheet","absoluteFill","_default","exports","forwardRef","create","flex","position","top","start","end"],"sourceRoot":"../../../src","sources":["components/ScreenStackItem.tsx"],"mappings":"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"}
|
package/lib/commonjs/index.js
CHANGED
|
@@ -21,6 +21,7 @@ var _exportNames = {
|
|
|
21
21
|
SearchBar: true,
|
|
22
22
|
ScreenContainer: true,
|
|
23
23
|
ScreenStack: true,
|
|
24
|
+
ScreenStackItem: true,
|
|
24
25
|
FullWindowOverlay: true,
|
|
25
26
|
ScreenFooter: true,
|
|
26
27
|
ScreenContentWrapper: true,
|
|
@@ -126,6 +127,12 @@ Object.defineProperty(exports, "ScreenStackHeaderSubview", {
|
|
|
126
127
|
return _ScreenStackHeaderConfig.ScreenStackHeaderSubview;
|
|
127
128
|
}
|
|
128
129
|
});
|
|
130
|
+
Object.defineProperty(exports, "ScreenStackItem", {
|
|
131
|
+
enumerable: true,
|
|
132
|
+
get: function () {
|
|
133
|
+
return _ScreenStackItem.default;
|
|
134
|
+
}
|
|
135
|
+
});
|
|
129
136
|
Object.defineProperty(exports, "SearchBar", {
|
|
130
137
|
enumerable: true,
|
|
131
138
|
get: function () {
|
|
@@ -198,6 +205,7 @@ var _ScreenStackHeaderConfig = require("./components/ScreenStackHeaderConfig");
|
|
|
198
205
|
var _SearchBar = _interopRequireDefault(require("./components/SearchBar"));
|
|
199
206
|
var _ScreenContainer = _interopRequireDefault(require("./components/ScreenContainer"));
|
|
200
207
|
var _ScreenStack = _interopRequireDefault(require("./components/ScreenStack"));
|
|
208
|
+
var _ScreenStackItem = _interopRequireDefault(require("./components/ScreenStackItem"));
|
|
201
209
|
var _FullWindowOverlay = _interopRequireDefault(require("./components/FullWindowOverlay"));
|
|
202
210
|
var _ScreenFooter = _interopRequireDefault(require("./components/ScreenFooter"));
|
|
203
211
|
var _ScreenContentWrapper = _interopRequireDefault(require("./components/ScreenContentWrapper"));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_types","require","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_core","_Screen","_interopRequireWildcard","_ScreenStackHeaderConfig","_SearchBar","_interopRequireDefault","_ScreenContainer","_ScreenStack","_FullWindowOverlay","_ScreenFooter","_ScreenContentWrapper","_GHContext","_utils","_useTransitionProgress","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","n","__proto__","a","getOwnPropertyDescriptor","u","i","set"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"
|
|
1
|
+
{"version":3,"names":["_types","require","Object","keys","forEach","key","prototype","hasOwnProperty","call","_exportNames","exports","defineProperty","enumerable","get","_core","_Screen","_interopRequireWildcard","_ScreenStackHeaderConfig","_SearchBar","_interopRequireDefault","_ScreenContainer","_ScreenStack","_ScreenStackItem","_FullWindowOverlay","_ScreenFooter","_ScreenContentWrapper","_GHContext","_utils","_useTransitionProgress","obj","__esModule","default","_getRequireWildcardCache","e","WeakMap","r","t","has","n","__proto__","a","getOwnPropertyDescriptor","u","i","set"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { Platform } from 'react-native';
|
|
3
|
+
// @ts-expect-error importing private component
|
|
4
|
+
// eslint-disable-next-line import/namespace, import/default, import/no-named-as-default, import/no-named-as-default-member
|
|
5
|
+
import AppContainer from 'react-native/Libraries/ReactNative/AppContainer';
|
|
6
|
+
import ScreenContentWrapper from './ScreenContentWrapper';
|
|
7
|
+
/**
|
|
8
|
+
* This view must *not* be flattened.
|
|
9
|
+
* See https://github.com/software-mansion/react-native-screens/pull/1825
|
|
10
|
+
* for detailed explanation.
|
|
11
|
+
*/
|
|
12
|
+
let DebugContainer = props => {
|
|
13
|
+
return /*#__PURE__*/React.createElement(ScreenContentWrapper, props);
|
|
14
|
+
};
|
|
15
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
16
|
+
// eslint-disable-next-line react/display-name
|
|
17
|
+
DebugContainer = props => {
|
|
18
|
+
const {
|
|
19
|
+
stackPresentation,
|
|
20
|
+
...rest
|
|
21
|
+
} = props;
|
|
22
|
+
if (Platform.OS === 'ios' && stackPresentation !== 'push' && stackPresentation !== 'formSheet') {
|
|
23
|
+
// This is necessary for LogBox
|
|
24
|
+
return /*#__PURE__*/React.createElement(AppContainer, null, /*#__PURE__*/React.createElement(ScreenContentWrapper, rest));
|
|
25
|
+
}
|
|
26
|
+
return /*#__PURE__*/React.createElement(ScreenContentWrapper, rest);
|
|
27
|
+
};
|
|
28
|
+
DebugContainer.displayName = 'DebugContainer';
|
|
29
|
+
}
|
|
30
|
+
export default DebugContainer;
|
|
31
|
+
//# sourceMappingURL=DebugContainer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","Platform","AppContainer","ScreenContentWrapper","DebugContainer","props","createElement","process","env","NODE_ENV","stackPresentation","rest","OS","displayName"],"sourceRoot":"../../../src","sources":["components/DebugContainer.tsx"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,QAAQ,QAAwB,cAAc;AACvD;AACA;AACA,OAAOC,YAAY,MAAM,iDAAiD;AAC1E,OAAOC,oBAAoB,MAAM,wBAAwB;AAQzD;AACA;AACA;AACA;AACA;AACA,IAAIC,cAAmD,GAAIC,KAAK,IAAK;EACnE,oBAAOL,KAAA,CAAAM,aAAA,CAACH,oBAAoB,EAAKE,KAAQ,CAAC;AAC5C,CAAC;AAED,IAAIE,OAAO,CAACC,GAAG,CAACC,QAAQ,KAAK,YAAY,EAAE;EACzC;EACAL,cAAc,GAAIC,KAAqB,IAAK;IAC1C,MAAM;MAAEK,iBAAiB;MAAE,GAAGC;IAAK,CAAC,GAAGN,KAAK;IAE5C,IACEJ,QAAQ,CAACW,EAAE,KAAK,KAAK,IACrBF,iBAAiB,KAAK,MAAM,IAC5BA,iBAAiB,KAAK,WAAW,EACjC;MACA;MACA,oBACEV,KAAA,CAAAM,aAAA,CAACJ,YAAY,qBACXF,KAAA,CAAAM,aAAA,CAACH,oBAAoB,EAAKQ,IAAO,CACrB,CAAC;IAEnB;IAEA,oBAAOX,KAAA,CAAAM,aAAA,CAACH,oBAAoB,EAAKQ,IAAO,CAAC;EAC3C,CAAC;EAEDP,cAAc,CAACS,WAAW,GAAG,gBAAgB;AAC/C;AAEA,eAAeT,cAAc"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","ScreenContentWrapper","DebugContainer","props","createElement"],"sourceRoot":"../../../src","sources":["components/DebugContainer.web.tsx"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,OAAOC,oBAAoB,MAAM,wBAAwB;AAEzD,eAAe,SAASC,cAAcA,CAACC,KAAgB,EAAG;EACxD,oBAAOH,KAAA,CAAAI,aAAA,CAACH,oBAAoB,EAAKE,KAAQ,CAAC;AAC5C"}
|
|
@@ -7,7 +7,6 @@ import DelayedFreeze from './helpers/DelayedFreeze';
|
|
|
7
7
|
|
|
8
8
|
// Native components
|
|
9
9
|
import ScreenStackNativeComponent from '../fabric/ScreenStackNativeComponent';
|
|
10
|
-
const NativeScreenStack = ScreenStackNativeComponent;
|
|
11
10
|
function isFabric() {
|
|
12
11
|
return 'nativeFabricUIManager' in global;
|
|
13
12
|
}
|
|
@@ -41,7 +40,13 @@ function ScreenStack(props) {
|
|
|
41
40
|
gestureDetectorBridge.current.stackUseEffectCallback(ref);
|
|
42
41
|
}
|
|
43
42
|
});
|
|
44
|
-
return /*#__PURE__*/React.createElement(
|
|
43
|
+
return /*#__PURE__*/React.createElement(ScreenStackNativeComponent, _extends({}, rest, {
|
|
44
|
+
/**
|
|
45
|
+
* This messy override is to conform NativeProps used by codegen and
|
|
46
|
+
* our Public API. To see reasoning go to this PR:
|
|
47
|
+
* https://github.com/software-mansion/react-native-screens/pull/2423#discussion_r1810616995
|
|
48
|
+
*/
|
|
49
|
+
onFinishTransitioning: props.onFinishTransitioning,
|
|
45
50
|
ref: ref
|
|
46
51
|
}), childrenWithFreeze);
|
|
47
52
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_extends","Object","assign","bind","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","React","freezeEnabled","DelayedFreeze","ScreenStackNativeComponent","
|
|
1
|
+
{"version":3,"names":["_extends","Object","assign","bind","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","React","freezeEnabled","DelayedFreeze","ScreenStackNativeComponent","isFabric","global","ScreenStack","props","children","gestureDetectorBridge","rest","ref","useRef","size","Children","count","childrenWithFreeze","map","child","index","descriptor","descriptors","isFreezeEnabled","options","freezeOnBlur","freezePreviousScreen","createElement","freeze","useEffect","current","stackUseEffectCallback","onFinishTransitioning"],"sourceRoot":"../../../src","sources":["components/ScreenStack.tsx"],"mappings":"AAAA,YAAY;;AAAC,SAAAA,SAAA,IAAAA,QAAA,GAAAC,MAAA,CAAAC,MAAA,GAAAD,MAAA,CAAAC,MAAA,CAAAC,IAAA,eAAAC,MAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAC,SAAA,CAAAC,MAAA,EAAAF,CAAA,UAAAG,MAAA,GAAAF,SAAA,CAAAD,CAAA,YAAAI,GAAA,IAAAD,MAAA,QAAAP,MAAA,CAAAS,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAJ,MAAA,EAAAC,GAAA,KAAAL,MAAA,CAAAK,GAAA,IAAAD,MAAA,CAAAC,GAAA,gBAAAL,MAAA,YAAAJ,QAAA,CAAAa,KAAA,OAAAP,SAAA;AAEb,OAAOQ,KAAK,MAAM,OAAO;AAEzB,SAASC,aAAa,QAAQ,SAAS;AACvC,OAAOC,aAAa,MAAM,yBAAyB;;AAEnD;AACA,OAAOC,0BAA0B,MAE1B,sCAAsC;AAE7C,SAASC,QAAQA,CAAA,EAAG;EAClB,OAAO,uBAAuB,IAAIC,MAAM;AAC1C;AAEA,SAASC,WAAWA,CAACC,KAAuB,EAAE;EAC5C,MAAM;IAAEC,QAAQ;IAAEC,qBAAqB;IAAE,GAAGC;EAAK,CAAC,GAAGH,KAAK;EAC1D,MAAMI,GAAG,GAAGX,KAAK,CAACY,MAAM,CAAC,IAAI,CAAC;EAC9B,MAAMC,IAAI,GAAGb,KAAK,CAACc,QAAQ,CAACC,KAAK,CAACP,QAAQ,CAAC;EAC3C;EACA,MAAMQ,kBAAkB,GAAGhB,KAAK,CAACc,QAAQ,CAACG,GAAG,CAACT,QAAQ,EAAE,CAACU,KAAK,EAAEC,KAAK,KAAK;IACxE;IACA,MAAM;MAAEZ,KAAK;MAAEZ;IAAI,CAAC,GAAGuB,KAAK;IAC5B,MAAME,UAAU,GAAGb,KAAK,EAAEa,UAAU,IAAIb,KAAK,EAAEc,WAAW,GAAG1B,GAAG,CAAC;IACjE,MAAM2B,eAAe,GACnBF,UAAU,EAAEG,OAAO,EAAEC,YAAY,IAAIvB,aAAa,CAAC,CAAC;;IAEtD;IACA;IACA,MAAMwB,oBAAoB,GAAGrB,QAAQ,CAAC,CAAC,GACnCS,IAAI,GAAGM,KAAK,GAAG,CAAC,GAChBN,IAAI,GAAGM,KAAK,GAAG,CAAC;IAEpB,oBACEnB,KAAA,CAAA0B,aAAA,CAACxB,aAAa;MAACyB,MAAM,EAAEL,eAAe,IAAIG;IAAqB,GAC5DP,KACY,CAAC;EAEpB,CAAC,CAAC;EAEFlB,KAAK,CAAC4B,SAAS,CAAC,MAAM;IACpB,IAAInB,qBAAqB,EAAE;MACzBA,qBAAqB,CAACoB,OAAO,CAACC,sBAAsB,CAACnB,GAAG,CAAC;IAC3D;EACF,CAAC,CAAC;EACF,oBACEX,KAAA,CAAA0B,aAAA,CAACvB,0BAA0B,EAAAjB,QAAA,KACrBwB,IAAI;IACR;AACN;AACA;AACA;AACA;IACMqB,qBAAqB,EACnBxB,KAAK,CAACwB,qBACP;IACDpB,GAAG,EAAEA;EAAI,IACRK,kBACyB,CAAC;AAEjC;AAEA,eAAeV,WAAW"}
|
|
@@ -2,18 +2,18 @@
|
|
|
2
2
|
|
|
3
3
|
function _extends() { _extends = Object.assign ? Object.assign.bind() : 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); }
|
|
4
4
|
import React from 'react';
|
|
5
|
-
import { Image, StyleSheet } from 'react-native';
|
|
5
|
+
import { Image, Platform, StyleSheet } from 'react-native';
|
|
6
6
|
|
|
7
7
|
// Native components
|
|
8
8
|
import ScreenStackHeaderConfigNativeComponent from '../fabric/ScreenStackHeaderConfigNativeComponent';
|
|
9
9
|
import ScreenStackHeaderSubviewNativeComponent from '../fabric/ScreenStackHeaderSubviewNativeComponent';
|
|
10
10
|
export const ScreenStackHeaderSubview = ScreenStackHeaderSubviewNativeComponent;
|
|
11
|
-
export
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
11
|
+
export const ScreenStackHeaderConfig = /*#__PURE__*/React.forwardRef((props, ref) => /*#__PURE__*/React.createElement(ScreenStackHeaderConfigNativeComponent, _extends({}, props, {
|
|
12
|
+
ref: ref,
|
|
13
|
+
style: styles.headerConfig,
|
|
14
|
+
pointerEvents: "box-none"
|
|
15
|
+
})));
|
|
16
|
+
ScreenStackHeaderConfig.displayName = 'ScreenStackHeaderConfig';
|
|
17
17
|
export const ScreenStackHeaderBackButtonImage = props => /*#__PURE__*/React.createElement(ScreenStackHeaderSubview, {
|
|
18
18
|
type: "back",
|
|
19
19
|
style: styles.headerSubview
|
|
@@ -73,7 +73,9 @@ const styles = StyleSheet.create({
|
|
|
73
73
|
width: '100%',
|
|
74
74
|
flexDirection: 'row',
|
|
75
75
|
justifyContent: 'space-between',
|
|
76
|
-
|
|
76
|
+
// We only want to center align the subviews on iOS.
|
|
77
|
+
// See https://github.com/software-mansion/react-native-screens/pull/2456
|
|
78
|
+
alignItems: Platform.OS === 'ios' ? 'center' : undefined
|
|
77
79
|
}
|
|
78
80
|
});
|
|
79
81
|
//# sourceMappingURL=ScreenStackHeaderConfig.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_extends","Object","assign","bind","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","React","Image","StyleSheet","ScreenStackHeaderConfigNativeComponent","ScreenStackHeaderSubviewNativeComponent","ScreenStackHeaderSubview","ScreenStackHeaderConfig","props","createElement","style","styles","headerConfig","pointerEvents","ScreenStackHeaderBackButtonImage","type","headerSubview","resizeMode","fadeDuration","ScreenStackHeaderRightView","rest","ScreenStackHeaderLeftView","ScreenStackHeaderCenterView","headerSubviewCenter","ScreenStackHeaderSearchBarView","create","flexDirection","alignItems","justifyContent","flexShrink","position","top","width"],"sourceRoot":"../../../src","sources":["components/ScreenStackHeaderConfig.tsx"],"mappings":"AAAA,YAAY;;AAAC,SAAAA,SAAA,IAAAA,QAAA,GAAAC,MAAA,CAAAC,MAAA,GAAAD,MAAA,CAAAC,MAAA,CAAAC,IAAA,eAAAC,MAAA,aAAAC,CAAA,MAAAA,CAAA,GAAAC,SAAA,CAAAC,MAAA,EAAAF,CAAA,UAAAG,MAAA,GAAAF,SAAA,CAAAD,CAAA,YAAAI,GAAA,IAAAD,MAAA,QAAAP,MAAA,CAAAS,SAAA,CAAAC,cAAA,CAAAC,IAAA,CAAAJ,MAAA,EAAAC,GAAA,KAAAL,MAAA,CAAAK,GAAA,IAAAD,MAAA,CAAAC,GAAA,gBAAAL,MAAA,YAAAJ,QAAA,CAAAa,KAAA,OAAAP,SAAA;AAEb,OAAOQ,KAAK,MAAM,OAAO;AAMzB,
|
|
1
|
+
{"version":3,"names":["_extends","Object","assign","bind","target","i","arguments","length","source","key","prototype","hasOwnProperty","call","apply","React","Image","Platform","StyleSheet","ScreenStackHeaderConfigNativeComponent","ScreenStackHeaderSubviewNativeComponent","ScreenStackHeaderSubview","ScreenStackHeaderConfig","forwardRef","props","ref","createElement","style","styles","headerConfig","pointerEvents","displayName","ScreenStackHeaderBackButtonImage","type","headerSubview","resizeMode","fadeDuration","ScreenStackHeaderRightView","rest","ScreenStackHeaderLeftView","ScreenStackHeaderCenterView","headerSubviewCenter","ScreenStackHeaderSearchBarView","create","flexDirection","alignItems","justifyContent","flexShrink","position","top","width","OS","undefined"],"sourceRoot":"../../../src","sources":["components/ScreenStackHeaderConfig.tsx"],"mappings":"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"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
function _extends() { _extends = Object.assign ? Object.assign.bind() : 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
|
+
import * as React from 'react';
|
|
3
|
+
import { Platform, StyleSheet } from 'react-native';
|
|
4
|
+
import warnOnce from 'warn-once';
|
|
5
|
+
import DebugContainer from './DebugContainer';
|
|
6
|
+
import { ScreenStackHeaderConfig } from './ScreenStackHeaderConfig';
|
|
7
|
+
import Screen from './Screen';
|
|
8
|
+
import ScreenStack from './ScreenStack';
|
|
9
|
+
function ScreenStackItem(_ref, ref) {
|
|
10
|
+
let {
|
|
11
|
+
children,
|
|
12
|
+
headerConfig,
|
|
13
|
+
activityState,
|
|
14
|
+
stackPresentation,
|
|
15
|
+
contentStyle,
|
|
16
|
+
...rest
|
|
17
|
+
} = _ref;
|
|
18
|
+
const isHeaderInModal = Platform.OS === 'android' ? false : stackPresentation !== 'push' && headerConfig?.hidden === false;
|
|
19
|
+
const headerHiddenPreviousRef = React.useRef(headerConfig?.hidden);
|
|
20
|
+
React.useEffect(() => {
|
|
21
|
+
warnOnce(Platform.OS !== 'android' && stackPresentation !== 'push' && headerHiddenPreviousRef.current !== headerConfig?.hidden, `Dynamically changing header's visibility in modals will result in remounting the screen and losing all local state.`);
|
|
22
|
+
headerHiddenPreviousRef.current = headerConfig?.hidden;
|
|
23
|
+
}, [headerConfig?.hidden, stackPresentation]);
|
|
24
|
+
const content = /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(DebugContainer, {
|
|
25
|
+
style: [stackPresentation === 'formSheet' ? Platform.OS === 'ios' ? styles.absolute : null : styles.container, contentStyle],
|
|
26
|
+
stackPresentation: stackPresentation ?? 'push'
|
|
27
|
+
}, children), /*#__PURE__*/React.createElement(ScreenStackHeaderConfig, headerConfig));
|
|
28
|
+
return /*#__PURE__*/React.createElement(Screen, _extends({
|
|
29
|
+
ref: ref,
|
|
30
|
+
enabled: true,
|
|
31
|
+
isNativeStack: true,
|
|
32
|
+
activityState: activityState,
|
|
33
|
+
stackPresentation: stackPresentation,
|
|
34
|
+
hasLargeHeader: headerConfig?.largeTitle ?? false
|
|
35
|
+
}, rest), isHeaderInModal ? /*#__PURE__*/React.createElement(ScreenStack, {
|
|
36
|
+
style: styles.container
|
|
37
|
+
}, /*#__PURE__*/React.createElement(Screen, {
|
|
38
|
+
enabled: true,
|
|
39
|
+
isNativeStack: true,
|
|
40
|
+
activityState: activityState,
|
|
41
|
+
hasLargeHeader: headerConfig?.largeTitle ?? false,
|
|
42
|
+
style: StyleSheet.absoluteFill
|
|
43
|
+
}, content)) : content);
|
|
44
|
+
}
|
|
45
|
+
export default /*#__PURE__*/React.forwardRef(ScreenStackItem);
|
|
46
|
+
const styles = StyleSheet.create({
|
|
47
|
+
container: {
|
|
48
|
+
flex: 1
|
|
49
|
+
},
|
|
50
|
+
absolute: {
|
|
51
|
+
position: 'absolute',
|
|
52
|
+
top: 0,
|
|
53
|
+
start: 0,
|
|
54
|
+
end: 0
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
//# sourceMappingURL=ScreenStackItem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","Platform","StyleSheet","warnOnce","DebugContainer","ScreenStackHeaderConfig","Screen","ScreenStack","ScreenStackItem","_ref","ref","children","headerConfig","activityState","stackPresentation","contentStyle","rest","isHeaderInModal","OS","hidden","headerHiddenPreviousRef","useRef","useEffect","current","content","createElement","Fragment","style","styles","absolute","container","_extends","enabled","isNativeStack","hasLargeHeader","largeTitle","absoluteFill","forwardRef","create","flex","position","top","start","end"],"sourceRoot":"../../../src","sources":["components/ScreenStackItem.tsx"],"mappings":";AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SACEC,QAAQ,EAERC,UAAU,QAGL,cAAc;AACrB,OAAOC,QAAQ,MAAM,WAAW;AAEhC,OAAOC,cAAc,MAAM,kBAAkB;AAE7C,SAASC,uBAAuB,QAAQ,2BAA2B;AACnE,OAAOC,MAAM,MAAM,UAAU;AAC7B,OAAOC,WAAW,MAAM,eAAe;AAUvC,SAASC,eAAeA,CAAAC,IAAA,EAOdC,GAA6B,EAAE;EAAA,IAPhB;IACvBC,QAAQ;IACRC,YAAY;IACZC,aAAa;IACbC,iBAAiB;IACjBC,YAAY;IACZ,GAAGC;EACE,CAAC,GAAAP,IAAA;EACN,MAAMQ,eAAe,GACnBhB,QAAQ,CAACiB,EAAE,KAAK,SAAS,GACrB,KAAK,GACLJ,iBAAiB,KAAK,MAAM,IAAIF,YAAY,EAAEO,MAAM,KAAK,KAAK;EAEpE,MAAMC,uBAAuB,GAAGpB,KAAK,CAACqB,MAAM,CAACT,YAAY,EAAEO,MAAM,CAAC;EAElEnB,KAAK,CAACsB,SAAS,CAAC,MAAM;IACpBnB,QAAQ,CACNF,QAAQ,CAACiB,EAAE,KAAK,SAAS,IACvBJ,iBAAiB,KAAK,MAAM,IAC5BM,uBAAuB,CAACG,OAAO,KAAKX,YAAY,EAAEO,MAAM,EACzD,qHACH,CAAC;IAEDC,uBAAuB,CAACG,OAAO,GAAGX,YAAY,EAAEO,MAAM;EACxD,CAAC,EAAE,CAACP,YAAY,EAAEO,MAAM,EAAEL,iBAAiB,CAAC,CAAC;EAE7C,MAAMU,OAAO,gBACXxB,KAAA,CAAAyB,aAAA,CAAAzB,KAAA,CAAA0B,QAAA,qBACE1B,KAAA,CAAAyB,aAAA,CAACrB,cAAc;IACbuB,KAAK,EAAE,CACLb,iBAAiB,KAAK,WAAW,GAC7Bb,QAAQ,CAACiB,EAAE,KAAK,KAAK,GACnBU,MAAM,CAACC,QAAQ,GACf,IAAI,GACND,MAAM,CAACE,SAAS,EACpBf,YAAY,CACZ;IACFD,iBAAiB,EAAEA,iBAAiB,IAAI;EAAO,GAE9CH,QACa,CAAC,eAYjBX,KAAA,CAAAyB,aAAA,CAACpB,uBAAuB,EAAKO,YAAe,CAC5C,CACH;EAED,oBACEZ,KAAA,CAAAyB,aAAA,CAACnB,MAAM,EAAAyB,QAAA;IACLrB,GAAG,EAAEA,GAAI;IACTsB,OAAO;IACPC,aAAa;IACbpB,aAAa,EAAEA,aAAc;IAC7BC,iBAAiB,EAAEA,iBAAkB;IACrCoB,cAAc,EAAEtB,YAAY,EAAEuB,UAAU,IAAI;EAAM,GAC9CnB,IAAI,GAEPC,eAAe,gBACdjB,KAAA,CAAAyB,aAAA,CAAClB,WAAW;IAACoB,KAAK,EAAEC,MAAM,CAACE;EAAU,gBACnC9B,KAAA,CAAAyB,aAAA,CAACnB,MAAM;IACL0B,OAAO;IACPC,aAAa;IACbpB,aAAa,EAAEA,aAAc;IAC7BqB,cAAc,EAAEtB,YAAY,EAAEuB,UAAU,IAAI,KAAM;IAClDR,KAAK,EAAEzB,UAAU,CAACkC;EAAa,GAE9BZ,OACK,CACG,CAAC,GAEdA,OAEI,CAAC;AAEb;AAEA,4BAAexB,KAAK,CAACqC,UAAU,CAAC7B,eAAe,CAAC;AAEhD,MAAMoB,MAAM,GAAG1B,UAAU,CAACoC,MAAM,CAAC;EAC/BR,SAAS,EAAE;IACTS,IAAI,EAAE;EACR,CAAC;EACDV,QAAQ,EAAE;IACRW,QAAQ,EAAE,UAAU;IACpBC,GAAG,EAAE,CAAC;IACNC,KAAK,EAAE,CAAC;IACRC,GAAG,EAAE;EACP;AACF,CAAC,CAAC"}
|
package/lib/module/index.js
CHANGED
|
@@ -13,6 +13,7 @@ export { ScreenStackHeaderConfig, ScreenStackHeaderSubview, ScreenStackHeaderLef
|
|
|
13
13
|
export { default as SearchBar } from './components/SearchBar';
|
|
14
14
|
export { default as ScreenContainer } from './components/ScreenContainer';
|
|
15
15
|
export { default as ScreenStack } from './components/ScreenStack';
|
|
16
|
+
export { default as ScreenStackItem } from './components/ScreenStackItem';
|
|
16
17
|
export { default as FullWindowOverlay } from './components/FullWindowOverlay';
|
|
17
18
|
export { default as ScreenFooter } from './components/ScreenFooter';
|
|
18
19
|
export { default as ScreenContentWrapper } from './components/ScreenContentWrapper';
|
package/lib/module/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["enableScreens","enableFreeze","screensEnabled","freezeEnabled","default","Screen","InnerScreen","ScreenContext","ScreenStackHeaderConfig","ScreenStackHeaderSubview","ScreenStackHeaderLeftView","ScreenStackHeaderCenterView","ScreenStackHeaderRightView","ScreenStackHeaderBackButtonImage","ScreenStackHeaderSearchBarView","SearchBar","ScreenContainer","ScreenStack","FullWindowOverlay","ScreenFooter","ScreenContentWrapper","GHContext","isSearchBarAvailableForCurrentPlatform","compatibilityFlags","executeNativeBackPress","useTransitionProgress"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"AAAA,cAAc,SAAS;;AAEvB;AACA;AACA;AACA,SACEA,aAAa,EACbC,YAAY,EACZC,cAAc,EACdC,aAAa,QACR,QAAQ;;AAEf;AACA;AACA;AACA,SACEC,OAAO,IAAIC,MAAM,EACjBC,WAAW,EACXC,aAAa,QACR,qBAAqB;AAE5B,SACEC,uBAAuB,EACvBC,wBAAwB,EACxBC,yBAAyB,EACzBC,2BAA2B,EAC3BC,0BAA0B,EAC1BC,gCAAgC,EAChCC,8BAA8B,QACzB,sCAAsC;AAE7C,SAASV,OAAO,IAAIW,SAAS,QAAQ,wBAAwB;AAC7D,SAASX,OAAO,IAAIY,eAAe,QAAQ,8BAA8B;AACzE,SAASZ,OAAO,IAAIa,WAAW,QAAQ,0BAA0B;AACjE,SAASb,OAAO,IAAIc,iBAAiB,QAAQ,gCAAgC;AAC7E,
|
|
1
|
+
{"version":3,"names":["enableScreens","enableFreeze","screensEnabled","freezeEnabled","default","Screen","InnerScreen","ScreenContext","ScreenStackHeaderConfig","ScreenStackHeaderSubview","ScreenStackHeaderLeftView","ScreenStackHeaderCenterView","ScreenStackHeaderRightView","ScreenStackHeaderBackButtonImage","ScreenStackHeaderSearchBarView","SearchBar","ScreenContainer","ScreenStack","ScreenStackItem","FullWindowOverlay","ScreenFooter","ScreenContentWrapper","GHContext","isSearchBarAvailableForCurrentPlatform","compatibilityFlags","executeNativeBackPress","useTransitionProgress"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":"AAAA,cAAc,SAAS;;AAEvB;AACA;AACA;AACA,SACEA,aAAa,EACbC,YAAY,EACZC,cAAc,EACdC,aAAa,QACR,QAAQ;;AAEf;AACA;AACA;AACA,SACEC,OAAO,IAAIC,MAAM,EACjBC,WAAW,EACXC,aAAa,QACR,qBAAqB;AAE5B,SACEC,uBAAuB,EACvBC,wBAAwB,EACxBC,yBAAyB,EACzBC,2BAA2B,EAC3BC,0BAA0B,EAC1BC,gCAAgC,EAChCC,8BAA8B,QACzB,sCAAsC;AAE7C,SAASV,OAAO,IAAIW,SAAS,QAAQ,wBAAwB;AAC7D,SAASX,OAAO,IAAIY,eAAe,QAAQ,8BAA8B;AACzE,SAASZ,OAAO,IAAIa,WAAW,QAAQ,0BAA0B;AACjE,SAASb,OAAO,IAAIc,eAAe,QAAQ,8BAA8B;AACzE,SAASd,OAAO,IAAIe,iBAAiB,QAAQ,gCAAgC;AAC7E,SAASf,OAAO,IAAIgB,YAAY,QAAQ,2BAA2B;AACnE,SAAShB,OAAO,IAAIiB,oBAAoB,QAAQ,mCAAmC;;AAEnF;AACA;AACA;AACA,SAASC,SAAS,QAAQ,mCAAmC;;AAE7D;AACA;AACA;AACA,SACEC,sCAAsC,EACtCC,kBAAkB,EAClBC,sBAAsB,QACjB,SAAS;;AAEhB;AACA;AACA;AACA,SAASrB,OAAO,IAAIsB,qBAAqB,QAAQ,yBAAyB"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { type ViewProps } from 'react-native';
|
|
3
|
+
import { StackPresentationTypes } from '../types';
|
|
4
|
+
type ContainerProps = ViewProps & {
|
|
5
|
+
stackPresentation: StackPresentationTypes;
|
|
6
|
+
children: React.ReactNode;
|
|
7
|
+
};
|
|
8
|
+
/**
|
|
9
|
+
* This view must *not* be flattened.
|
|
10
|
+
* See https://github.com/software-mansion/react-native-screens/pull/1825
|
|
11
|
+
* for detailed explanation.
|
|
12
|
+
*/
|
|
13
|
+
declare let DebugContainer: React.ComponentType<ContainerProps>;
|
|
14
|
+
export default DebugContainer;
|
|
15
|
+
//# sourceMappingURL=DebugContainer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DebugContainer.d.ts","sourceRoot":"","sources":["../../../src/components/DebugContainer.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAY,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAKxD,OAAO,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC;AAElD,KAAK,cAAc,GAAG,SAAS,GAAG;IAChC,iBAAiB,EAAE,sBAAsB,CAAC;IAC1C,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAEF;;;;GAIG;AACH,QAAA,IAAI,cAAc,EAAE,KAAK,CAAC,aAAa,CAAC,cAAc,CAErD,CAAA;AA0BD,eAAe,cAAc,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"DebugContainer.web.d.ts","sourceRoot":"","sources":["../../../src/components/DebugContainer.web.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAG9C,MAAM,CAAC,OAAO,UAAU,cAAc,CAAC,KAAK,EAAE,SAAS,qBAEtD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScreenStack.d.ts","sourceRoot":"","sources":["../../../src/components/ScreenStack.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAa5C,iBAAS,WAAW,CAAC,KAAK,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"ScreenStack.d.ts","sourceRoot":"","sources":["../../../src/components/ScreenStack.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAa5C,iBAAS,WAAW,CAAC,KAAK,EAAE,gBAAgB,qBA6C3C;AAED,eAAe,WAAW,CAAC"}
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import React from 'react';
|
|
2
2
|
import { HeaderSubviewTypes, ScreenStackHeaderConfigProps, SearchBarProps } from '../types';
|
|
3
|
-
import { ImageProps, ViewProps } from 'react-native';
|
|
3
|
+
import { ImageProps, View, ViewProps } from 'react-native';
|
|
4
4
|
export declare const ScreenStackHeaderSubview: React.ComponentType<React.PropsWithChildren<ViewProps & {
|
|
5
5
|
type?: HeaderSubviewTypes;
|
|
6
6
|
}>>;
|
|
7
|
-
export declare
|
|
7
|
+
export declare const ScreenStackHeaderConfig: React.ForwardRefExoticComponent<ScreenStackHeaderConfigProps & React.RefAttributes<View>>;
|
|
8
8
|
export declare const ScreenStackHeaderBackButtonImage: (props: ImageProps) => JSX.Element;
|
|
9
9
|
export declare const ScreenStackHeaderRightView: (props: React.PropsWithChildren<ViewProps>) => JSX.Element;
|
|
10
10
|
export declare const ScreenStackHeaderLeftView: (props: React.PropsWithChildren<ViewProps>) => JSX.Element;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScreenStackHeaderConfig.d.ts","sourceRoot":"","sources":["../../../src/components/ScreenStackHeaderConfig.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACL,kBAAkB,EAClB,4BAA4B,EAC5B,cAAc,EACf,MAAM,UAAU,CAAC;AAClB,OAAO,
|
|
1
|
+
{"version":3,"file":"ScreenStackHeaderConfig.d.ts","sourceRoot":"","sources":["../../../src/components/ScreenStackHeaderConfig.tsx"],"names":[],"mappings":"AAEA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,EACL,kBAAkB,EAClB,4BAA4B,EAC5B,cAAc,EACf,MAAM,UAAU,CAAC;AAClB,OAAO,EAEL,UAAU,EAGV,IAAI,EACJ,SAAS,EACV,MAAM,cAAc,CAAC;AAMtB,eAAO,MAAM,wBAAwB,EAAE,KAAK,CAAC,aAAa,CACxD,KAAK,CAAC,iBAAiB,CAAC,SAAS,GAAG;IAAE,IAAI,CAAC,EAAE,kBAAkB,CAAA;CAAE,CAAC,CAClB,CAAC;AAEnD,eAAO,MAAM,uBAAuB,2FAUlC,CAAC;AAIH,eAAO,MAAM,gCAAgC,UACpC,UAAU,KAChB,WAIF,CAAC;AAEF,eAAO,MAAM,0BAA0B,UAC9B,MAAM,iBAAiB,CAAC,SAAS,CAAC,KACxC,WAUF,CAAC;AAEF,eAAO,MAAM,yBAAyB,UAC7B,MAAM,iBAAiB,CAAC,SAAS,CAAC,KACxC,WAUF,CAAC;AAEF,eAAO,MAAM,2BAA2B,UAC/B,MAAM,iBAAiB,CAAC,SAAS,CAAC,KACxC,WAUF,CAAC;AAEF,eAAO,MAAM,8BAA8B,UAClC,MAAM,iBAAiB,CAAC,cAAc,CAAC,KAC7C,WAMF,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { type StyleProp, type ViewStyle, View } from 'react-native';
|
|
3
|
+
import { ScreenProps, ScreenStackHeaderConfigProps } from '../types';
|
|
4
|
+
type Props = Omit<ScreenProps, 'enabled' | 'isNativeStack' | 'hasLargeHeader'> & {
|
|
5
|
+
headerConfig?: ScreenStackHeaderConfigProps;
|
|
6
|
+
contentStyle?: StyleProp<ViewStyle>;
|
|
7
|
+
};
|
|
8
|
+
declare const _default: React.ForwardRefExoticComponent<Omit<Props, "ref"> & React.RefAttributes<View>>;
|
|
9
|
+
export default _default;
|
|
10
|
+
//# sourceMappingURL=ScreenStackItem.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ScreenStackItem.d.ts","sourceRoot":"","sources":["../../../src/components/ScreenStackItem.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAEL,KAAK,SAAS,EAEd,KAAK,SAAS,EACd,IAAI,EACL,MAAM,cAAc,CAAC;AAItB,OAAO,EAAE,WAAW,EAAE,4BAA4B,EAAE,MAAM,UAAU,CAAC;AAKrE,KAAK,KAAK,GAAG,IAAI,CACf,WAAW,EACX,SAAS,GAAG,eAAe,GAAG,gBAAgB,CAC/C,GAAG;IACF,YAAY,CAAC,EAAE,4BAA4B,CAAC;IAC5C,YAAY,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CACrC,CAAC;;AAuFF,wBAAiD"}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import type { ViewProps } from 'react-native';
|
|
3
3
|
import type { DirectEventHandler } from 'react-native/Libraries/Types/CodegenTypes';
|
|
4
4
|
type FinishTransitioningEvent = Readonly<{}>;
|
|
5
|
-
interface NativeProps extends ViewProps {
|
|
5
|
+
export interface NativeProps extends ViewProps {
|
|
6
6
|
onFinishTransitioning?: DirectEventHandler<FinishTransitioningEvent>;
|
|
7
7
|
}
|
|
8
8
|
declare const _default: import("react-native/Libraries/Utilities/codegenNativeComponent").NativeComponentType<NativeProps>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ScreenStackNativeComponent.d.ts","sourceRoot":"","sources":["../../../src/fabric/ScreenStackNativeComponent.ts"],"names":[],"mappings":";AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AAGpF,KAAK,wBAAwB,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;AAE7C,
|
|
1
|
+
{"version":3,"file":"ScreenStackNativeComponent.d.ts","sourceRoot":"","sources":["../../../src/fabric/ScreenStackNativeComponent.ts"],"names":[],"mappings":";AAGA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,2CAA2C,CAAC;AAGpF,KAAK,wBAAwB,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC;AAE7C,MAAM,WAAW,WAAY,SAAQ,SAAS;IAC5C,qBAAqB,CAAC,EAAE,kBAAkB,CAAC,wBAAwB,CAAC,CAAC;CACtE;;AAED,wBAAyE"}
|
|
@@ -11,6 +11,7 @@ export { ScreenStackHeaderConfig, ScreenStackHeaderSubview, ScreenStackHeaderLef
|
|
|
11
11
|
export { default as SearchBar } from './components/SearchBar';
|
|
12
12
|
export { default as ScreenContainer } from './components/ScreenContainer';
|
|
13
13
|
export { default as ScreenStack } from './components/ScreenStack';
|
|
14
|
+
export { default as ScreenStackItem } from './components/ScreenStackItem';
|
|
14
15
|
export { default as FullWindowOverlay } from './components/FullWindowOverlay';
|
|
15
16
|
export { default as ScreenFooter } from './components/ScreenFooter';
|
|
16
17
|
export { default as ScreenContentWrapper } from './components/ScreenContentWrapper';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AAExB;;GAEG;AACH,OAAO,EACL,aAAa,EACb,YAAY,EACZ,cAAc,EACd,aAAa,GACd,MAAM,QAAQ,CAAC;AAEhB;;GAEG;AACH,OAAO,EACL,OAAO,IAAI,MAAM,EACjB,WAAW,EACX,aAAa,GACd,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,yBAAyB,EACzB,2BAA2B,EAC3B,0BAA0B,EAC1B,gCAAgC,EAChC,8BAA8B,GAC/B,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAEpF;;GAEG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAE9D;;GAEG;AACH,OAAO,EACL,sCAAsC,EACtC,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,SAAS,CAAC;AAEjB;;GAEG;AACH,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,yBAAyB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.tsx"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AAExB;;GAEG;AACH,OAAO,EACL,aAAa,EACb,YAAY,EACZ,cAAc,EACd,aAAa,GACd,MAAM,QAAQ,CAAC;AAEhB;;GAEG;AACH,OAAO,EACL,OAAO,IAAI,MAAM,EACjB,WAAW,EACX,aAAa,GACd,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EACL,uBAAuB,EACvB,wBAAwB,EACxB,yBAAyB,EACzB,2BAA2B,EAC3B,0BAA0B,EAC1B,gCAAgC,EAChC,8BAA8B,GAC/B,MAAM,sCAAsC,CAAC;AAE9C,OAAO,EAAE,OAAO,IAAI,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAC9D,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,WAAW,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,OAAO,IAAI,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC1E,OAAO,EAAE,OAAO,IAAI,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AAC9E,OAAO,EAAE,OAAO,IAAI,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACpE,OAAO,EAAE,OAAO,IAAI,oBAAoB,EAAE,MAAM,mCAAmC,CAAC;AAEpF;;GAEG;AACH,OAAO,EAAE,SAAS,EAAE,MAAM,mCAAmC,CAAC;AAE9D;;GAEG;AACH,OAAO,EACL,sCAAsC,EACtC,kBAAkB,EAClB,sBAAsB,GACvB,MAAM,SAAS,CAAC;AAEjB;;GAEG;AACH,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,yBAAyB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "react-native-screens",
|
|
3
|
-
"version": "4.0.0-beta.
|
|
3
|
+
"version": "4.0.0-beta.15",
|
|
4
4
|
"description": "Native navigation primitives for your React Native app.",
|
|
5
5
|
"scripts": {
|
|
6
6
|
"submodules": "git submodule update --init --recursive && (cd react-navigation && yarn)",
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { Platform, type ViewProps } from 'react-native';
|
|
3
|
+
// @ts-expect-error importing private component
|
|
4
|
+
// eslint-disable-next-line import/namespace, import/default, import/no-named-as-default, import/no-named-as-default-member
|
|
5
|
+
import AppContainer from 'react-native/Libraries/ReactNative/AppContainer';
|
|
6
|
+
import ScreenContentWrapper from './ScreenContentWrapper';
|
|
7
|
+
import { StackPresentationTypes } from '../types';
|
|
8
|
+
|
|
9
|
+
type ContainerProps = ViewProps & {
|
|
10
|
+
stackPresentation: StackPresentationTypes;
|
|
11
|
+
children: React.ReactNode;
|
|
12
|
+
};
|
|
13
|
+
|
|
14
|
+
/**
|
|
15
|
+
* This view must *not* be flattened.
|
|
16
|
+
* See https://github.com/software-mansion/react-native-screens/pull/1825
|
|
17
|
+
* for detailed explanation.
|
|
18
|
+
*/
|
|
19
|
+
let DebugContainer: React.ComponentType<ContainerProps> = (props) => {
|
|
20
|
+
return <ScreenContentWrapper {...props} />;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
if (process.env.NODE_ENV !== 'production') {
|
|
24
|
+
// eslint-disable-next-line react/display-name
|
|
25
|
+
DebugContainer = (props: ContainerProps) => {
|
|
26
|
+
const { stackPresentation, ...rest } = props;
|
|
27
|
+
|
|
28
|
+
if (
|
|
29
|
+
Platform.OS === 'ios' &&
|
|
30
|
+
stackPresentation !== 'push' &&
|
|
31
|
+
stackPresentation !== 'formSheet'
|
|
32
|
+
) {
|
|
33
|
+
// This is necessary for LogBox
|
|
34
|
+
return (
|
|
35
|
+
<AppContainer>
|
|
36
|
+
<ScreenContentWrapper {...rest} />
|
|
37
|
+
</AppContainer>
|
|
38
|
+
);
|
|
39
|
+
}
|
|
40
|
+
|
|
41
|
+
return <ScreenContentWrapper {...rest} />;
|
|
42
|
+
};
|
|
43
|
+
|
|
44
|
+
DebugContainer.displayName = 'DebugContainer';
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
export default DebugContainer;
|
|
@@ -6,9 +6,9 @@ import { freezeEnabled } from '../core';
|
|
|
6
6
|
import DelayedFreeze from './helpers/DelayedFreeze';
|
|
7
7
|
|
|
8
8
|
// Native components
|
|
9
|
-
import ScreenStackNativeComponent
|
|
10
|
-
|
|
11
|
-
|
|
9
|
+
import ScreenStackNativeComponent, {
|
|
10
|
+
NativeProps,
|
|
11
|
+
} from '../fabric/ScreenStackNativeComponent';
|
|
12
12
|
|
|
13
13
|
function isFabric() {
|
|
14
14
|
return 'nativeFabricUIManager' in global;
|
|
@@ -45,9 +45,19 @@ function ScreenStack(props: ScreenStackProps) {
|
|
|
45
45
|
}
|
|
46
46
|
});
|
|
47
47
|
return (
|
|
48
|
-
<
|
|
48
|
+
<ScreenStackNativeComponent
|
|
49
|
+
{...rest}
|
|
50
|
+
/**
|
|
51
|
+
* This messy override is to conform NativeProps used by codegen and
|
|
52
|
+
* our Public API. To see reasoning go to this PR:
|
|
53
|
+
* https://github.com/software-mansion/react-native-screens/pull/2423#discussion_r1810616995
|
|
54
|
+
*/
|
|
55
|
+
onFinishTransitioning={
|
|
56
|
+
props.onFinishTransitioning as NativeProps['onFinishTransitioning']
|
|
57
|
+
}
|
|
58
|
+
ref={ref}>
|
|
49
59
|
{childrenWithFreeze}
|
|
50
|
-
</
|
|
60
|
+
</ScreenStackNativeComponent>
|
|
51
61
|
);
|
|
52
62
|
}
|
|
53
63
|
|
|
@@ -6,7 +6,14 @@ import {
|
|
|
6
6
|
ScreenStackHeaderConfigProps,
|
|
7
7
|
SearchBarProps,
|
|
8
8
|
} from '../types';
|
|
9
|
-
import {
|
|
9
|
+
import {
|
|
10
|
+
Image,
|
|
11
|
+
ImageProps,
|
|
12
|
+
Platform,
|
|
13
|
+
StyleSheet,
|
|
14
|
+
View,
|
|
15
|
+
ViewProps,
|
|
16
|
+
} from 'react-native';
|
|
10
17
|
|
|
11
18
|
// Native components
|
|
12
19
|
import ScreenStackHeaderConfigNativeComponent from '../fabric/ScreenStackHeaderConfigNativeComponent';
|
|
@@ -16,17 +23,19 @@ export const ScreenStackHeaderSubview: React.ComponentType<
|
|
|
16
23
|
React.PropsWithChildren<ViewProps & { type?: HeaderSubviewTypes }>
|
|
17
24
|
> = ScreenStackHeaderSubviewNativeComponent as any;
|
|
18
25
|
|
|
19
|
-
export
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
26
|
+
export const ScreenStackHeaderConfig = React.forwardRef<
|
|
27
|
+
View,
|
|
28
|
+
ScreenStackHeaderConfigProps
|
|
29
|
+
>((props, ref) => (
|
|
30
|
+
<ScreenStackHeaderConfigNativeComponent
|
|
31
|
+
{...props}
|
|
32
|
+
ref={ref}
|
|
33
|
+
style={styles.headerConfig}
|
|
34
|
+
pointerEvents="box-none"
|
|
35
|
+
/>
|
|
36
|
+
));
|
|
37
|
+
|
|
38
|
+
ScreenStackHeaderConfig.displayName = 'ScreenStackHeaderConfig';
|
|
30
39
|
|
|
31
40
|
export const ScreenStackHeaderBackButtonImage = (
|
|
32
41
|
props: ImageProps,
|
|
@@ -106,6 +115,8 @@ const styles = StyleSheet.create({
|
|
|
106
115
|
width: '100%',
|
|
107
116
|
flexDirection: 'row',
|
|
108
117
|
justifyContent: 'space-between',
|
|
109
|
-
|
|
118
|
+
// We only want to center align the subviews on iOS.
|
|
119
|
+
// See https://github.com/software-mansion/react-native-screens/pull/2456
|
|
120
|
+
alignItems: Platform.OS === 'ios' ? 'center' : undefined,
|
|
110
121
|
},
|
|
111
122
|
});
|
|
@@ -0,0 +1,122 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import {
|
|
3
|
+
Platform,
|
|
4
|
+
type StyleProp,
|
|
5
|
+
StyleSheet,
|
|
6
|
+
type ViewStyle,
|
|
7
|
+
View,
|
|
8
|
+
} from 'react-native';
|
|
9
|
+
import warnOnce from 'warn-once';
|
|
10
|
+
|
|
11
|
+
import DebugContainer from './DebugContainer';
|
|
12
|
+
import { ScreenProps, ScreenStackHeaderConfigProps } from '../types';
|
|
13
|
+
import { ScreenStackHeaderConfig } from './ScreenStackHeaderConfig';
|
|
14
|
+
import Screen from './Screen';
|
|
15
|
+
import ScreenStack from './ScreenStack';
|
|
16
|
+
|
|
17
|
+
type Props = Omit<
|
|
18
|
+
ScreenProps,
|
|
19
|
+
'enabled' | 'isNativeStack' | 'hasLargeHeader'
|
|
20
|
+
> & {
|
|
21
|
+
headerConfig?: ScreenStackHeaderConfigProps;
|
|
22
|
+
contentStyle?: StyleProp<ViewStyle>;
|
|
23
|
+
};
|
|
24
|
+
|
|
25
|
+
function ScreenStackItem({
|
|
26
|
+
children,
|
|
27
|
+
headerConfig,
|
|
28
|
+
activityState,
|
|
29
|
+
stackPresentation,
|
|
30
|
+
contentStyle,
|
|
31
|
+
...rest
|
|
32
|
+
}: Props, ref: React.ForwardedRef<View>) {
|
|
33
|
+
const isHeaderInModal =
|
|
34
|
+
Platform.OS === 'android'
|
|
35
|
+
? false
|
|
36
|
+
: stackPresentation !== 'push' && headerConfig?.hidden === false;
|
|
37
|
+
|
|
38
|
+
const headerHiddenPreviousRef = React.useRef(headerConfig?.hidden);
|
|
39
|
+
|
|
40
|
+
React.useEffect(() => {
|
|
41
|
+
warnOnce(
|
|
42
|
+
Platform.OS !== 'android' &&
|
|
43
|
+
stackPresentation !== 'push' &&
|
|
44
|
+
headerHiddenPreviousRef.current !== headerConfig?.hidden,
|
|
45
|
+
`Dynamically changing header's visibility in modals will result in remounting the screen and losing all local state.`
|
|
46
|
+
);
|
|
47
|
+
|
|
48
|
+
headerHiddenPreviousRef.current = headerConfig?.hidden;
|
|
49
|
+
}, [headerConfig?.hidden, stackPresentation]);
|
|
50
|
+
|
|
51
|
+
const content = (
|
|
52
|
+
<>
|
|
53
|
+
<DebugContainer
|
|
54
|
+
style={[
|
|
55
|
+
stackPresentation === 'formSheet'
|
|
56
|
+
? Platform.OS === 'ios'
|
|
57
|
+
? styles.absolute
|
|
58
|
+
: null
|
|
59
|
+
: styles.container,
|
|
60
|
+
contentStyle,
|
|
61
|
+
]}
|
|
62
|
+
stackPresentation={stackPresentation ?? 'push'}
|
|
63
|
+
>
|
|
64
|
+
{children}
|
|
65
|
+
</DebugContainer>
|
|
66
|
+
{/**
|
|
67
|
+
* `HeaderConfig` needs to be the direct child of `Screen` without any intermediate `View`
|
|
68
|
+
* We don't render it conditionally based on visibility to make it possible to dynamically render a custom `header`
|
|
69
|
+
* Otherwise dynamically rendering a custom `header` leaves the native header visible
|
|
70
|
+
*
|
|
71
|
+
* https://github.com/software-mansion/react-native-screens/blob/main/guides/GUIDE_FOR_LIBRARY_AUTHORS.md#screenstackheaderconfig
|
|
72
|
+
*
|
|
73
|
+
* HeaderConfig must not be first child of a Screen.
|
|
74
|
+
* See https://github.com/software-mansion/react-native-screens/pull/1825
|
|
75
|
+
* for detailed explanation.
|
|
76
|
+
*/}
|
|
77
|
+
<ScreenStackHeaderConfig {...headerConfig} />
|
|
78
|
+
</>
|
|
79
|
+
);
|
|
80
|
+
|
|
81
|
+
return (
|
|
82
|
+
<Screen
|
|
83
|
+
ref={ref}
|
|
84
|
+
enabled
|
|
85
|
+
isNativeStack
|
|
86
|
+
activityState={activityState}
|
|
87
|
+
stackPresentation={stackPresentation}
|
|
88
|
+
hasLargeHeader={headerConfig?.largeTitle ?? false}
|
|
89
|
+
{...rest}
|
|
90
|
+
>
|
|
91
|
+
{isHeaderInModal ? (
|
|
92
|
+
<ScreenStack style={styles.container}>
|
|
93
|
+
<Screen
|
|
94
|
+
enabled
|
|
95
|
+
isNativeStack
|
|
96
|
+
activityState={activityState}
|
|
97
|
+
hasLargeHeader={headerConfig?.largeTitle ?? false}
|
|
98
|
+
style={StyleSheet.absoluteFill}
|
|
99
|
+
>
|
|
100
|
+
{content}
|
|
101
|
+
</Screen>
|
|
102
|
+
</ScreenStack>
|
|
103
|
+
) : (
|
|
104
|
+
content
|
|
105
|
+
)}
|
|
106
|
+
</Screen>
|
|
107
|
+
);
|
|
108
|
+
}
|
|
109
|
+
|
|
110
|
+
export default React.forwardRef(ScreenStackItem);
|
|
111
|
+
|
|
112
|
+
const styles = StyleSheet.create({
|
|
113
|
+
container: {
|
|
114
|
+
flex: 1,
|
|
115
|
+
},
|
|
116
|
+
absolute: {
|
|
117
|
+
position: 'absolute',
|
|
118
|
+
top: 0,
|
|
119
|
+
start: 0,
|
|
120
|
+
end: 0,
|
|
121
|
+
},
|
|
122
|
+
});
|
|
@@ -7,7 +7,7 @@ import type { DirectEventHandler } from 'react-native/Libraries/Types/CodegenTyp
|
|
|
7
7
|
// eslint-disable-next-line @typescript-eslint/ban-types
|
|
8
8
|
type FinishTransitioningEvent = Readonly<{}>;
|
|
9
9
|
|
|
10
|
-
interface NativeProps extends ViewProps {
|
|
10
|
+
export interface NativeProps extends ViewProps {
|
|
11
11
|
onFinishTransitioning?: DirectEventHandler<FinishTransitioningEvent>;
|
|
12
12
|
}
|
|
13
13
|
|
package/src/index.tsx
CHANGED
|
@@ -32,6 +32,7 @@ export {
|
|
|
32
32
|
export { default as SearchBar } from './components/SearchBar';
|
|
33
33
|
export { default as ScreenContainer } from './components/ScreenContainer';
|
|
34
34
|
export { default as ScreenStack } from './components/ScreenStack';
|
|
35
|
+
export { default as ScreenStackItem } from './components/ScreenStackItem';
|
|
35
36
|
export { default as FullWindowOverlay } from './components/FullWindowOverlay';
|
|
36
37
|
export { default as ScreenFooter } from './components/ScreenFooter';
|
|
37
38
|
export { default as ScreenContentWrapper } from './components/ScreenContentWrapper';
|