@react-navigation/elements 3.0.0-alpha.50 → 3.0.0-alpha.52
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/module/ActivityView.js +3 -3
- package/lib/module/ActivityView.js.map +1 -1
- package/lib/module/ActivityView.native.js +3 -3
- package/lib/module/ActivityView.native.js.map +1 -1
- package/lib/module/Container.js +11 -0
- package/lib/module/Container.js.map +1 -1
- package/lib/module/SafeAreaProviderCompat.js +1 -3
- package/lib/module/SafeAreaProviderCompat.js.map +1 -1
- package/lib/module/Screen.js +29 -3
- package/lib/module/Screen.js.map +1 -1
- package/lib/module/useFrameSize.js +49 -3
- package/lib/module/useFrameSize.js.map +1 -1
- package/lib/typescript/src/ActivityView.d.ts.map +1 -1
- package/lib/typescript/src/ActivityView.native.d.ts.map +1 -1
- package/lib/typescript/src/Container.d.ts.map +1 -1
- package/lib/typescript/src/SafeAreaProviderCompat.d.ts.map +1 -1
- package/lib/typescript/src/Screen.d.ts +3 -0
- package/lib/typescript/src/Screen.d.ts.map +1 -1
- package/lib/typescript/src/useFrameSize.d.ts.map +1 -1
- package/package.json +5 -5
- package/src/ActivityView.native.tsx +3 -5
- package/src/ActivityView.tsx +3 -5
- package/src/Container.tsx +7 -1
- package/src/SafeAreaProviderCompat.tsx +1 -2
- package/src/Screen.tsx +47 -2
- package/src/useFrameSize.tsx +60 -3
|
@@ -11,18 +11,18 @@ export function ActivityView({
|
|
|
11
11
|
style,
|
|
12
12
|
children
|
|
13
13
|
}) {
|
|
14
|
-
const [
|
|
14
|
+
const [delayedPaused, setDelayedPaused] = useState(mode === 'paused');
|
|
15
15
|
useEffect(() => {
|
|
16
16
|
if (!delay) {
|
|
17
17
|
return;
|
|
18
18
|
}
|
|
19
19
|
const timer = setTimeout(() => {
|
|
20
|
-
|
|
20
|
+
setDelayedPaused(mode === 'paused');
|
|
21
21
|
}, delay);
|
|
22
22
|
return () => clearTimeout(timer);
|
|
23
23
|
}, [delay, mode]);
|
|
24
24
|
const display = visible ? 'flex' : 'none';
|
|
25
|
-
const activityMode = mode !== 'paused' || delay &&
|
|
25
|
+
const activityMode = mode !== 'paused' || delay && !delayedPaused ? 'visible' : 'hidden';
|
|
26
26
|
|
|
27
27
|
/**
|
|
28
28
|
* Activity has 2 modes, visible and hidden - hidden unmounts effects
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Activity","useCallback","useEffect","useState","Platform","Container","jsx","_jsx","ActivityView","mode","visible","delay","style","children","
|
|
1
|
+
{"version":3,"names":["Activity","useCallback","useEffect","useState","Platform","Container","jsx","_jsx","ActivityView","mode","visible","delay","style","children","delayedPaused","setDelayedPaused","timer","setTimeout","clearTimeout","display","activityMode","onRef","node","OS","HTMLElement","observers","observe","forEach","o","disconnect","length","childNodes","child","MutationObserver","attributes","attributeFilter","push","observer","childList","ref","inert"],"sourceRoot":"../../src","sources":["ActivityView.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -14,18 +14,18 @@ export function ActivityView({
|
|
|
14
14
|
style,
|
|
15
15
|
children
|
|
16
16
|
}) {
|
|
17
|
-
const [
|
|
17
|
+
const [delayedPaused, setDelayedPaused] = useState(mode === 'paused');
|
|
18
18
|
useEffect(() => {
|
|
19
19
|
if (!delay) {
|
|
20
20
|
return;
|
|
21
21
|
}
|
|
22
22
|
const timer = setTimeout(() => {
|
|
23
|
-
|
|
23
|
+
setDelayedPaused(mode === 'paused');
|
|
24
24
|
}, delay);
|
|
25
25
|
return () => clearTimeout(timer);
|
|
26
26
|
}, [delay, mode]);
|
|
27
27
|
const display = visible ? 'flex' : 'none';
|
|
28
|
-
const activityMode = mode !== 'paused' || delay &&
|
|
28
|
+
const activityMode = mode !== 'paused' || delay && !delayedPaused ? 'visible' : 'hidden';
|
|
29
29
|
return /*#__PURE__*/_jsx(Activity, {
|
|
30
30
|
mode: activityMode,
|
|
31
31
|
children: /*#__PURE__*/_jsx(ActivityContentView, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["Activity","useEffect","useState","NativeComponentRegistry","Container","jsx","_jsx","ActivityView","mode","visible","delay","style","children","
|
|
1
|
+
{"version":3,"names":["Activity","useEffect","useState","NativeComponentRegistry","Container","jsx","_jsx","ActivityView","mode","visible","delay","style","children","delayedPaused","setDelayedPaused","timer","setTimeout","clearTimeout","display","activityMode","ActivityContentView","inert","STYLE","process","VIEW_CONFIG","uiViewClassName","validAttributes","get"],"sourceRoot":"../../src","sources":["ActivityView.native.tsx"],"mappings":";;AAAA,SAASA,QAAQ,EAAEC,SAAS,EAAEC,QAAQ,QAAQ,OAAO;AACrD,SAEEC,uBAAuB,QAElB,cAAc;;AAErB;;AAEA,SAASC,SAAS,QAAQ,gBAAa;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAExC,OAAO,SAASC,YAAYA,CAAC;EAC3BC,IAAI;EACJC,OAAO;EACPC,KAAK,GAAG,GAAG;EACXC,KAAK;EACLC;AACK,CAAC,EAAE;EACR,MAAM,CAACC,aAAa,EAAEC,gBAAgB,CAAC,GAAGZ,QAAQ,CAACM,IAAI,KAAK,QAAQ,CAAC;EAErEP,SAAS,CAAC,MAAM;IACd,IAAI,CAACS,KAAK,EAAE;MACV;IACF;IAEA,MAAMK,KAAK,GAAGC,UAAU,CAAC,MAAM;MAC7BF,gBAAgB,CAACN,IAAI,KAAK,QAAQ,CAAC;IACrC,CAAC,EAAEE,KAAK,CAAC;IAET,OAAO,MAAMO,YAAY,CAACF,KAAK,CAAC;EAClC,CAAC,EAAE,CAACL,KAAK,EAAEF,IAAI,CAAC,CAAC;EAEjB,MAAMU,OAAO,GAAGT,OAAO,GAAG,MAAM,GAAG,MAAM;EACzC,MAAMU,YAAY,GAChBX,IAAI,KAAK,QAAQ,IAAKE,KAAK,IAAI,CAACG,aAAc,GAAG,SAAS,GAAG,QAAQ;EAEvE,oBACEP,IAAA,CAACN,QAAQ;IAACQ,IAAI,EAAEW,YAAa;IAAAP,QAAA,eAC3BN,IAAA,CAACc,mBAAmB;MAACT,KAAK,EAAE;QAAEO,OAAO,EAAE;MAAW,CAAE;MAAAN,QAAA,eAClDN,IAAA,CAACF,SAAS;QACRiB,KAAK,EAAEb,IAAI,KAAK,QAAS;QACzBG,KAAK,EAAE;UACL,GAAGA,KAAK;UACR;AACZ;AACA;AACA;AACA;UACYO;QACF,CAAE;QAAAN,QAAA,EAEDA;MAAQ,CACA;IAAC,CACO;EAAC,CACd,CAAC;AAEf;AAEA,MAAMU,KAA8D,GAAG;EACrEJ,OAAO,EAAE;IACP;AACJ;AACA;AACA;IACIK,OAAO,EAAEA,CAAA,KAAM;EACjB;AACF,CAAC;AAED,MAAMC,WAAW,GAAG;EAClBC,eAAe,EAAE,SAAS;EAC1BC,eAAe,EAAE;IACff,KAAK,EAAEW;EACT;AACF,CAAC;AAUD,MAAMF,mBAA4D,GAChEjB,uBAAuB,CAACwB,GAAG,CACzB,oCAAoC,EACpC,MAAMH,WACR,CAAC","ignoreList":[]}
|
package/lib/module/Container.js
CHANGED
|
@@ -12,6 +12,7 @@ export function Container({
|
|
|
12
12
|
if (Platform.OS === 'web') {
|
|
13
13
|
const {
|
|
14
14
|
backgroundColor,
|
|
15
|
+
flex,
|
|
15
16
|
...rest
|
|
16
17
|
} = style ?? {};
|
|
17
18
|
return /*#__PURE__*/_jsx("div", {
|
|
@@ -20,6 +21,16 @@ export function Container({
|
|
|
20
21
|
"aria-hidden": inert,
|
|
21
22
|
style: {
|
|
22
23
|
...DEFAULT_STYLE,
|
|
24
|
+
// FIXME: A numeric flex shorthand uses a percentage basis in browsers.
|
|
25
|
+
// With nested containers, it slows down layout in Safari on iOS 27.
|
|
26
|
+
// So we explicitly set it to `0` without percentage, which renders 0px.
|
|
27
|
+
...(flex !== undefined && flex > 0 ? {
|
|
28
|
+
flexGrow: flex,
|
|
29
|
+
flexShrink: 1,
|
|
30
|
+
flexBasis: 0
|
|
31
|
+
} : {
|
|
32
|
+
flex
|
|
33
|
+
}),
|
|
23
34
|
...rest,
|
|
24
35
|
backgroundColor:
|
|
25
36
|
// In practice we only get string on web instead of OpaqueValue
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Platform","View","jsx","_jsx","Container","ref","inert","children","style","OS","backgroundColor","rest","DEFAULT_STYLE","undefined","pointerEvents","collapsable","display","alignContent","alignItems","boxSizing","
|
|
1
|
+
{"version":3,"names":["React","Platform","View","jsx","_jsx","Container","ref","inert","children","style","OS","backgroundColor","flex","rest","DEFAULT_STYLE","undefined","flexGrow","flexShrink","flexBasis","pointerEvents","collapsable","display","alignContent","alignItems","boxSizing","flexDirection","minHeight","minWidth","position"],"sourceRoot":"../../src","sources":["Container.tsx"],"mappings":";;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,QAAQ,EAAEC,IAAI,QAAwB,cAAc;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAc9D,OAAO,SAASC,SAASA,CAAC;EAAEC,GAAG;EAAEC,KAAK;EAAEC,QAAQ;EAAEC;AAAa,CAAC,EAAE;EAChE,IAAIR,QAAQ,CAACS,EAAE,KAAK,KAAK,EAAE;IACzB,MAAM;MAAEC,eAAe;MAAEC,IAAI;MAAE,GAAGC;IAAK,CAAC,GAAGJ,KAAK,IAAI,CAAC,CAAC;IAEtD,oBACEL,IAAA;MACEE,GAAG,EAAEA,GAA6C;MAClDC,KAAK,EAAEA,KAAM;MACb,eAAaA,KAAM;MACnBE,KAAK,EAAE;QACL,GAAGK,aAAa;QAChB;QACA;QACA;QACA,IAAIF,IAAI,KAAKG,SAAS,IAAIH,IAAI,GAAG,CAAC,GAC9B;UAAEI,QAAQ,EAAEJ,IAAI;UAAEK,UAAU,EAAE,CAAC;UAAEC,SAAS,EAAE;QAAE,CAAC,GAC/C;UAAEN;QAAK,CAAC,CAAC;QACb,GAAGC,IAAI;QACPF,eAAe;QACb;QACA,OAAOA,eAAe,KAAK,QAAQ,GAAGA,eAAe,GAAGI;MAC5D,CAAE;MAAAP,QAAA,EAEDA;IAAQ,CACN,CAAC;EAEV;EAEA,oBACEJ,IAAA,CAACF,IAAI;IACHI,GAAG,EAAEA,GAAmC;IACxC,eAAaC,KAAM;IACnBE,KAAK,EAAE,CAAC;MAAEU,aAAa,EAAEZ,KAAK,GAAG,MAAM,GAAG;IAAW,CAAC,EAAEE,KAAK,CAAE;IAC/DW,WAAW,EAAE,KAAM;IAAAZ,QAAA,EAElBA;EAAQ,CACL,CAAC;AAEX;AAEA,MAAMM,aAAa,GAAG;EACpBO,OAAO,EAAE,MAAM;EACfC,YAAY,EAAE,YAAY;EAC1BC,UAAU,EAAE,SAAS;EACrBC,SAAS,EAAE,YAAY;EACvBN,SAAS,EAAE,MAAM;EACjBO,aAAa,EAAE,QAAQ;EACvBR,UAAU,EAAE,CAAC;EACbS,SAAS,EAAE,CAAC;EACZC,QAAQ,EAAE,CAAC;EACXC,QAAQ,EAAE;AACZ,CAAwC","ignoreList":[]}
|
|
@@ -49,10 +49,8 @@ export function SafeAreaProviderCompat({
|
|
|
49
49
|
children: children
|
|
50
50
|
});
|
|
51
51
|
}
|
|
52
|
-
|
|
53
|
-
// SafeAreaProvider doesn't forward ref
|
|
54
|
-
// So we only pass onLayout to it
|
|
55
52
|
return /*#__PURE__*/_jsx(SafeAreaProvider, {
|
|
53
|
+
ref: ref,
|
|
56
54
|
initialMetrics: initialMetrics,
|
|
57
55
|
style: style,
|
|
58
56
|
onLayout: onLayout,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Dimensions","Platform","StyleSheet","View","initialWindowMetrics","SafeAreaInsetsContext","SafeAreaProvider","FrameSizeProvider","jsx","_jsx","width","height","get","initialMetrics","OS","frame","x","y","insets","top","left","right","bottom","SafeAreaProviderCompat","children","style","use","initialFrame","render","ref","onLayout","styles","container","create","flex"],"sourceRoot":"../../src","sources":["SafeAreaProviderCompat.tsx"],"mappings":";;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SACEC,UAAU,EACVC,QAAQ,EAERC,UAAU,EACVC,IAAI,QAEC,cAAc;AACrB,SACEC,oBAAoB,EACpBC,qBAAqB,EACrBC,gBAAgB,QACX,gCAAgC;AAEvC,SAASC,iBAAiB,QAAQ,mBAAgB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAOnD,MAAM;EAAEC,KAAK,GAAG,CAAC;EAAEC,MAAM,GAAG;AAAE,CAAC,GAAGX,UAAU,CAACY,GAAG,CAAC,QAAQ,CAAC;;AAE1D;AACA;AACA;AACA,MAAMC,cAAc,GAClBZ,QAAQ,CAACa,EAAE,KAAK,KAAK,IAAIV,oBAAoB,IAAI,IAAI,GACjD;EACEW,KAAK,EAAE;IAAEC,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE,CAAC;IAAEP,KAAK;IAAEC;EAAO,CAAC;EACpCO,MAAM,EAAE;IAAEC,GAAG,EAAE,CAAC;IAAEC,IAAI,EAAE,CAAC;IAAEC,KAAK,EAAE,CAAC;IAAEC,MAAM,EAAE;EAAE;AACjD,CAAC,GACDlB,oBAAoB;AAE1B,OAAO,SAASmB,sBAAsBA,CAAC;EAAEC,QAAQ;EAAEC;AAAa,CAAC,EAAE;EACjE,MAAMP,MAAM,GAAGnB,KAAK,CAAC2B,GAAG,CAACrB,qBAAqB,CAAC;EAE/C,oBACEI,IAAA,CAACF,iBAAiB;IAChBoB,YAAY,EAAEd,cAAc,CAACE,KAAM;IACnCa,MAAM,EAAEA,CAAC;MAAEC,GAAG;MAAEC;IAAS,CAAC,KAAK;MAC7B,IAAIZ,MAAM,EAAE;QACV;QACA;QACA;QACA,oBACET,IAAA,CAACN,IAAI;UACH0B,GAAG,EAAEA,GAAI;UACTC,QAAQ,EAAEA,QAAS;UACnBL,KAAK,EAAE,CAACM,MAAM,CAACC,SAAS,EAAEP,KAAK,CAAE;UAAAD,QAAA,EAEhCA;QAAQ,CACL,CAAC;MAEX
|
|
1
|
+
{"version":3,"names":["React","Dimensions","Platform","StyleSheet","View","initialWindowMetrics","SafeAreaInsetsContext","SafeAreaProvider","FrameSizeProvider","jsx","_jsx","width","height","get","initialMetrics","OS","frame","x","y","insets","top","left","right","bottom","SafeAreaProviderCompat","children","style","use","initialFrame","render","ref","onLayout","styles","container","create","flex"],"sourceRoot":"../../src","sources":["SafeAreaProviderCompat.tsx"],"mappings":";;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SACEC,UAAU,EACVC,QAAQ,EAERC,UAAU,EACVC,IAAI,QAEC,cAAc;AACrB,SACEC,oBAAoB,EACpBC,qBAAqB,EACrBC,gBAAgB,QACX,gCAAgC;AAEvC,SAASC,iBAAiB,QAAQ,mBAAgB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAOnD,MAAM;EAAEC,KAAK,GAAG,CAAC;EAAEC,MAAM,GAAG;AAAE,CAAC,GAAGX,UAAU,CAACY,GAAG,CAAC,QAAQ,CAAC;;AAE1D;AACA;AACA;AACA,MAAMC,cAAc,GAClBZ,QAAQ,CAACa,EAAE,KAAK,KAAK,IAAIV,oBAAoB,IAAI,IAAI,GACjD;EACEW,KAAK,EAAE;IAAEC,CAAC,EAAE,CAAC;IAAEC,CAAC,EAAE,CAAC;IAAEP,KAAK;IAAEC;EAAO,CAAC;EACpCO,MAAM,EAAE;IAAEC,GAAG,EAAE,CAAC;IAAEC,IAAI,EAAE,CAAC;IAAEC,KAAK,EAAE,CAAC;IAAEC,MAAM,EAAE;EAAE;AACjD,CAAC,GACDlB,oBAAoB;AAE1B,OAAO,SAASmB,sBAAsBA,CAAC;EAAEC,QAAQ;EAAEC;AAAa,CAAC,EAAE;EACjE,MAAMP,MAAM,GAAGnB,KAAK,CAAC2B,GAAG,CAACrB,qBAAqB,CAAC;EAE/C,oBACEI,IAAA,CAACF,iBAAiB;IAChBoB,YAAY,EAAEd,cAAc,CAACE,KAAM;IACnCa,MAAM,EAAEA,CAAC;MAAEC,GAAG;MAAEC;IAAS,CAAC,KAAK;MAC7B,IAAIZ,MAAM,EAAE;QACV;QACA;QACA;QACA,oBACET,IAAA,CAACN,IAAI;UACH0B,GAAG,EAAEA,GAAI;UACTC,QAAQ,EAAEA,QAAS;UACnBL,KAAK,EAAE,CAACM,MAAM,CAACC,SAAS,EAAEP,KAAK,CAAE;UAAAD,QAAA,EAEhCA;QAAQ,CACL,CAAC;MAEX;MAEA,oBACEf,IAAA,CAACH,gBAAgB;QACfuB,GAAG,EAAEA,GAAI;QACThB,cAAc,EAAEA,cAAe;QAC/BY,KAAK,EAAEA,KAAM;QACbK,QAAQ,EAAEA,QAAS;QAAAN,QAAA,EAElBA;MAAQ,CACO,CAAC;IAEvB;EAAE,CACH,CAAC;AAEN;AAEAD,sBAAsB,CAACV,cAAc,GAAGA,cAAc;AAEtD,MAAMkB,MAAM,GAAG7B,UAAU,CAAC+B,MAAM,CAAC;EAC/BD,SAAS,EAAE;IACTE,IAAI,EAAE;EACR;AACF,CAAC,CAAC","ignoreList":[]}
|
package/lib/module/Screen.js
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import { NavigationProvider, useTheme } from '@react-navigation/native';
|
|
4
4
|
import * as React from 'react';
|
|
5
|
-
import { StyleSheet, View } from 'react-native';
|
|
5
|
+
import { Platform, StyleSheet, View } from 'react-native';
|
|
6
6
|
import { useSafeAreaInsets } from 'react-native-safe-area-context';
|
|
7
7
|
import { Container } from "./Container.js";
|
|
8
8
|
import { getDefaultHeaderHeight } from "./Header/getDefaultHeaderHeight.js";
|
|
@@ -27,13 +27,35 @@ export function Screen(props) {
|
|
|
27
27
|
navigation,
|
|
28
28
|
route,
|
|
29
29
|
children,
|
|
30
|
-
style
|
|
30
|
+
style,
|
|
31
|
+
contentStyle,
|
|
32
|
+
pageOverflowEnabled = false
|
|
31
33
|
} = props;
|
|
32
34
|
const defaultHeaderHeight = useFrameSize(size => getDefaultHeaderHeight({
|
|
33
35
|
landscape: size.width > size.height,
|
|
34
36
|
modalPresentation: modal,
|
|
35
37
|
topInset: headerStatusBarHeight
|
|
36
38
|
}));
|
|
39
|
+
|
|
40
|
+
// If the container fills the body, we consider it to be a "page" that can overflow the screen
|
|
41
|
+
// So we adjust the style accordingly to let the content take more space if needed
|
|
42
|
+
// This lets the document.body handle scrolling of the content
|
|
43
|
+
// This is necessary for mobile browsers to be able to hide the address bar on scroll
|
|
44
|
+
const [fill, setFill] = React.useState(false);
|
|
45
|
+
const onRef = React.useCallback(node => {
|
|
46
|
+
if (Platform.OS !== 'web' || !pageOverflowEnabled || !(node instanceof HTMLElement)) {
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
const updateFill = () => {
|
|
50
|
+
setFill(node.clientWidth === document.body.clientWidth && node.clientHeight === document.body.clientHeight);
|
|
51
|
+
};
|
|
52
|
+
updateFill();
|
|
53
|
+
const observer = new ResizeObserver(updateFill);
|
|
54
|
+
observer.observe(node);
|
|
55
|
+
observer.observe(document.body);
|
|
56
|
+
return () => observer.disconnect();
|
|
57
|
+
}, [pageOverflowEnabled]);
|
|
58
|
+
const page = pageOverflowEnabled && focused && fill;
|
|
37
59
|
const headerRef = React.useRef(null);
|
|
38
60
|
const [headerHeight, setHeaderHeight] = React.useState(defaultHeaderHeight);
|
|
39
61
|
React.useLayoutEffect(() => {
|
|
@@ -42,6 +64,7 @@ export function Screen(props) {
|
|
|
42
64
|
});
|
|
43
65
|
}, [route.name]);
|
|
44
66
|
return /*#__PURE__*/_jsxs(Container, {
|
|
67
|
+
ref: onRef,
|
|
45
68
|
inert: !focused,
|
|
46
69
|
style: {
|
|
47
70
|
...styles.container,
|
|
@@ -77,7 +100,7 @@ export function Screen(props) {
|
|
|
77
100
|
})
|
|
78
101
|
})
|
|
79
102
|
}) : null, /*#__PURE__*/_jsx(View, {
|
|
80
|
-
style: styles.content,
|
|
103
|
+
style: [page ? styles.page : styles.content, contentStyle],
|
|
81
104
|
children: /*#__PURE__*/_jsx(HeaderShownContext.Provider, {
|
|
82
105
|
value: isParentHeaderShown || headerShown !== false,
|
|
83
106
|
children: /*#__PURE__*/_jsx(HeaderHeightContext.Provider, {
|
|
@@ -95,6 +118,9 @@ const styles = StyleSheet.create({
|
|
|
95
118
|
content: {
|
|
96
119
|
flex: 1
|
|
97
120
|
},
|
|
121
|
+
page: {
|
|
122
|
+
flexGrow: 1
|
|
123
|
+
},
|
|
98
124
|
header: {
|
|
99
125
|
zIndex: 1,
|
|
100
126
|
pointerEvents: 'box-none'
|
package/lib/module/Screen.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NavigationProvider","useTheme","React","StyleSheet","View","useSafeAreaInsets","Container","getDefaultHeaderHeight","HeaderHeightContext","HeaderShownContext","useFrameSize","jsx","_jsx","jsxs","_jsxs","Screen","props","insets","colors","isParentHeaderShown","use","parentHeaderHeight","focused","modal","header","headerShown","headerTransparent","headerStatusBarHeight","top","navigation","route","children","style","defaultHeaderHeight","size","landscape","width","height","modalPresentation","topInset","headerRef","useRef","headerHeight","setHeaderHeight","
|
|
1
|
+
{"version":3,"names":["NavigationProvider","useTheme","React","Platform","StyleSheet","View","useSafeAreaInsets","Container","getDefaultHeaderHeight","HeaderHeightContext","HeaderShownContext","useFrameSize","jsx","_jsx","jsxs","_jsxs","Screen","props","insets","colors","isParentHeaderShown","use","parentHeaderHeight","focused","modal","header","headerShown","headerTransparent","headerStatusBarHeight","top","navigation","route","children","style","contentStyle","pageOverflowEnabled","defaultHeaderHeight","size","landscape","width","height","modalPresentation","topInset","fill","setFill","useState","onRef","useCallback","node","OS","HTMLElement","updateFill","clientWidth","document","body","clientHeight","observer","ResizeObserver","observe","disconnect","page","headerRef","useRef","headerHeight","setHeaderHeight","useLayoutEffect","current","measure","_x","_y","_width","name","ref","inert","styles","container","backgroundColor","background","absolute","minHeight","onLayout","e","nativeEvent","layout","pointerEvents","content","Provider","value","create","flex","flexGrow","zIndex","position","start","end"],"sourceRoot":"../../src","sources":["Screen.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -12,7 +12,53 @@ export function useFrameSize(selector, throttle) {
|
|
|
12
12
|
if (context == null) {
|
|
13
13
|
throw new Error('useFrameSize must be used within a FrameSizeProvider');
|
|
14
14
|
}
|
|
15
|
-
const
|
|
15
|
+
const subscribe = throttle ? context.subscribeThrottled : context.subscribe;
|
|
16
|
+
const value = useSyncExternalStoreWithSelector(subscribe, context.getCurrent, context.getCurrent, selector);
|
|
17
|
+
|
|
18
|
+
// Record the frame at render time to compare in the layout effect.
|
|
19
|
+
const frame = context.getCurrent();
|
|
20
|
+
const [, forceUpdate] = React.useReducer(value => value + 1, 0);
|
|
21
|
+
const subscriptionRef = React.useRef(null);
|
|
22
|
+
const subscribedBeforeRef = React.useRef(false);
|
|
23
|
+
React.useLayoutEffect(() => {
|
|
24
|
+
// We have empty dependency array, but `Suspense` can replay the layout effect,
|
|
25
|
+
// So we need to explicitly check if we've subscribed before.
|
|
26
|
+
// Subsequent updates are handled by `useSyncExternalStoreWithSelector`.
|
|
27
|
+
// So we don't need to subscribe again.
|
|
28
|
+
if (subscribedBeforeRef.current) {
|
|
29
|
+
return;
|
|
30
|
+
}
|
|
31
|
+
const check = () => {
|
|
32
|
+
const nextFrame = context.getCurrent();
|
|
33
|
+
if (nextFrame !== frame && !Object.is(selector(nextFrame), value)) {
|
|
34
|
+
forceUpdate();
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
|
|
38
|
+
// The sync external store subscription starts in a passive effect.
|
|
39
|
+
// So if layout was measured, we may not get it here before paint.
|
|
40
|
+
// We use a layout effect to check if it has changed since the last render,
|
|
41
|
+
// and force an update so it reflects the latest frame before the next paint.
|
|
42
|
+
const unsubscribe = subscribe(check);
|
|
43
|
+
subscriptionRef.current = unsubscribe;
|
|
44
|
+
check();
|
|
45
|
+
return unsubscribe;
|
|
46
|
+
|
|
47
|
+
// We only need to check for changes on initial render.
|
|
48
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
49
|
+
}, []);
|
|
50
|
+
React.useEffect(() => {
|
|
51
|
+
// We don't need to keep the subscription after passive effects run.
|
|
52
|
+
// At this point, `useSyncExternalStoreWithSelector` has already subscribed.
|
|
53
|
+
subscriptionRef.current?.();
|
|
54
|
+
subscriptionRef.current = null;
|
|
55
|
+
subscribedBeforeRef.current = true;
|
|
56
|
+
return () => {
|
|
57
|
+
// The layout effect should recheck when `Activity` becomes visible.
|
|
58
|
+
// So we clean this up when `Activity` becomes hidden.
|
|
59
|
+
subscribedBeforeRef.current = false;
|
|
60
|
+
};
|
|
61
|
+
}, []);
|
|
16
62
|
return value;
|
|
17
63
|
}
|
|
18
64
|
export function FrameSizeProvider({
|
|
@@ -81,7 +127,7 @@ export function FrameSizeProvider({
|
|
|
81
127
|
listeners.forEach(listener => listener());
|
|
82
128
|
});
|
|
83
129
|
const viewRef = React.useRef(null);
|
|
84
|
-
React.
|
|
130
|
+
React.useLayoutEffect(() => {
|
|
85
131
|
if (Platform.OS === 'web') {
|
|
86
132
|
// We use ResizeObserver on web
|
|
87
133
|
return;
|
|
@@ -120,7 +166,7 @@ function FrameSizeListenerWeb({
|
|
|
120
166
|
onChange
|
|
121
167
|
}) {
|
|
122
168
|
const elementRef = React.useRef(null);
|
|
123
|
-
React.
|
|
169
|
+
React.useLayoutEffect(() => {
|
|
124
170
|
if (elementRef.current == null) {
|
|
125
171
|
return;
|
|
126
172
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","Platform","useLatestCallback","useSyncExternalStoreWithSelector","getNamedContext","jsx","_jsx","jsxs","_jsxs","FrameContext","undefined","useFrameSize","selector","throttle","context","use","Error","
|
|
1
|
+
{"version":3,"names":["React","Platform","useLatestCallback","useSyncExternalStoreWithSelector","getNamedContext","jsx","_jsx","jsxs","_jsxs","FrameContext","undefined","useFrameSize","selector","throttle","context","use","Error","subscribe","subscribeThrottled","value","getCurrent","frame","forceUpdate","useReducer","subscriptionRef","useRef","subscribedBeforeRef","useLayoutEffect","current","check","nextFrame","Object","is","unsubscribe","useEffect","FrameSizeProvider","initialFrame","render","frameRef","width","height","listeners","Set","listener","add","delete","delay","timer","updated","waiting","throttledListener","clearTimeout","setTimeout","useMemo","onChange","forEach","viewRef","OS","measure","_x","_y","onLayout","event","nativeEvent","layout","Provider","children","FrameSizeListenerWeb","ref","elementRef","getBoundingClientRect","rect","observer","ResizeObserver","entries","entry","contentRect","observe","disconnect","style","position","left","right","top","bottom","pointerEvents","visibility"],"sourceRoot":"../../src","sources":["useFrameSize.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActivityView.d.ts","sourceRoot":"","sources":["../../../src/ActivityView.tsx"],"names":[],"mappings":"AACA,OAAO,EAAkB,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAI9D,MAAM,MAAM,KAAK,GAAG;IAClB;;;;;OAKG;IACH,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;IACpC;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B;;OAEG;IACH,KAAK,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,SAAS,EAAE,SAAS,CAAC,GAAG,SAAS,CAAC;IACrE;;OAEG;IACH,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAEF,wBAAgB,YAAY,CAAC,EAC3B,IAAI,EACJ,OAAO,EACP,KAAW,EACX,KAAK,EACL,QAAQ,GACT,EAAE,KAAK,+
|
|
1
|
+
{"version":3,"file":"ActivityView.d.ts","sourceRoot":"","sources":["../../../src/ActivityView.tsx"],"names":[],"mappings":"AACA,OAAO,EAAkB,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAI9D,MAAM,MAAM,KAAK,GAAG;IAClB;;;;;OAKG;IACH,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,QAAQ,CAAC;IACpC;;OAEG;IACH,OAAO,EAAE,OAAO,CAAC;IACjB;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B;;OAEG;IACH,KAAK,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,aAAa,GAAG,SAAS,EAAE,SAAS,CAAC,GAAG,SAAS,CAAC;IACrE;;OAEG;IACH,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAEF,wBAAgB,YAAY,CAAC,EAC3B,IAAI,EACJ,OAAO,EACP,KAAW,EACX,KAAK,EACL,QAAQ,GACT,EAAE,KAAK,+BAsFP"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ActivityView.native.d.ts","sourceRoot":"","sources":["../../../src/ActivityView.native.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAoB,CAAC;AAGhD,wBAAgB,YAAY,CAAC,EAC3B,IAAI,EACJ,OAAO,EACP,KAAW,EACX,KAAK,EACL,QAAQ,GACT,EAAE,KAAK,+
|
|
1
|
+
{"version":3,"file":"ActivityView.native.d.ts","sourceRoot":"","sources":["../../../src/ActivityView.native.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAoB,CAAC;AAGhD,wBAAgB,YAAY,CAAC,EAC3B,IAAI,EACJ,OAAO,EACP,KAAW,EACX,KAAK,EACL,QAAQ,GACT,EAAE,KAAK,+BAuCP"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Container.d.ts","sourceRoot":"","sources":["../../../src/Container.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAY,IAAI,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9D,MAAM,MAAM,KAAK,GAAG;IAClB,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,GAAG,KAAK,CAAC,YAAY,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;IAC9E,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5B,KAAK,CAAC,EACF,CAAC,SAAS,GACR,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,iBAAiB,CAAC,GAAG;QAC7C,eAAe,CAAC,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAAG,SAAS,CAAC;KAC5D,CAAC,GACJ,SAAS,CAAC;IACd,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAEF,wBAAgB,SAAS,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"Container.d.ts","sourceRoot":"","sources":["../../../src/Container.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAY,IAAI,EAAE,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAE9D,MAAM,MAAM,KAAK,GAAG;IAClB,GAAG,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,cAAc,GAAG,KAAK,CAAC,YAAY,CAAC,OAAO,IAAI,CAAC,CAAC,GAAG,SAAS,CAAC;IAC9E,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5B,KAAK,CAAC,EACF,CAAC,SAAS,GACR,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,iBAAiB,CAAC,GAAG;QAC7C,eAAe,CAAC,EAAE,SAAS,CAAC,iBAAiB,CAAC,GAAG,SAAS,CAAC;KAC5D,CAAC,GACJ,SAAS,CAAC;IACd,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAEF,wBAAgB,SAAS,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,KAAK,qBAsC/D"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"SafeAreaProviderCompat.d.ts","sourceRoot":"","sources":["../../../src/SafeAreaProviderCompat.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAGL,KAAK,SAAS,EAGd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAStB,KAAK,KAAK,GAAG;IACX,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B,CAAC;AAeF,wBAAgB,sBAAsB,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,KAAK,
|
|
1
|
+
{"version":3,"file":"SafeAreaProviderCompat.d.ts","sourceRoot":"","sources":["../../../src/SafeAreaProviderCompat.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAGL,KAAK,SAAS,EAGd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAStB,KAAK,KAAK,GAAG;IACX,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;IAC1B,KAAK,CAAC,EAAE,SAAS,CAAC,SAAS,CAAC,CAAC;CAC9B,CAAC;AAeF,wBAAgB,sBAAsB,CAAC,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,KAAK,qBAmChE;yBAnCe,sBAAsB"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { type NavigationProp, type ParamListBase, type RouteProp } from '@react-navigation/native';
|
|
2
2
|
import * as React from 'react';
|
|
3
|
+
import { type ViewProps } from 'react-native';
|
|
3
4
|
import { type Props as ContainerProps } from './Container.js';
|
|
4
5
|
type Props = {
|
|
5
6
|
focused: boolean;
|
|
@@ -10,6 +11,8 @@ type Props = {
|
|
|
10
11
|
headerShown?: boolean | undefined;
|
|
11
12
|
headerStatusBarHeight?: number | undefined;
|
|
12
13
|
headerTransparent?: boolean | undefined;
|
|
14
|
+
pageOverflowEnabled?: boolean | undefined;
|
|
15
|
+
contentStyle?: ViewProps['style'] | undefined;
|
|
13
16
|
style?: ContainerProps['style'] | undefined;
|
|
14
17
|
children: React.ReactNode;
|
|
15
18
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Screen.d.ts","sourceRoot":"","sources":["../../../src/Screen.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EAEnB,KAAK,aAAa,EAClB,KAAK,SAAS,EAEf,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"Screen.d.ts","sourceRoot":"","sources":["../../../src/Screen.tsx"],"names":[],"mappings":"AAAA,OAAO,EACL,KAAK,cAAc,EAEnB,KAAK,aAAa,EAClB,KAAK,SAAS,EAEf,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAA8B,KAAK,SAAS,EAAE,MAAM,cAAc,CAAC;AAG1E,OAAO,EAAa,KAAK,KAAK,IAAI,cAAc,EAAE,MAAM,gBAAa,CAAC;AAMtE,KAAK,KAAK,GAAG;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC5B,UAAU,EAAE,cAAc,CAAC,aAAa,CAAC,CAAC;IAC1C,KAAK,EAAE,SAAS,CAAC,aAAa,CAAC,CAAC;IAChC,MAAM,EAAE,KAAK,CAAC,SAAS,CAAC;IACxB,WAAW,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAClC,qBAAqB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3C,iBAAiB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IACxC,mBAAmB,CAAC,EAAE,OAAO,GAAG,SAAS,CAAC;IAC1C,YAAY,CAAC,EAAE,SAAS,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;IAC9C,KAAK,CAAC,EAAE,cAAc,CAAC,OAAO,CAAC,GAAG,SAAS,CAAC;IAC5C,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAEF,wBAAgB,MAAM,CAAC,KAAK,EAAE,KAAK,qBAoIlC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useFrameSize.d.ts","sourceRoot":"","sources":["../../../src/useFrameSize.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,iBAAiB,EAAY,IAAI,EAAE,MAAM,cAAc,CAAC;AAMtE,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAiBF,wBAAgB,YAAY,CAAC,CAAC,EAC5B,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,CAAC,EAC7B,QAAQ,CAAC,EAAE,OAAO,GACjB,CAAC,
|
|
1
|
+
{"version":3,"file":"useFrameSize.d.ts","sourceRoot":"","sources":["../../../src/useFrameSize.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EAAE,KAAK,iBAAiB,EAAY,IAAI,EAAE,MAAM,cAAc,CAAC;AAMtE,KAAK,KAAK,GAAG;IACX,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAiBF,wBAAgB,YAAY,CAAC,CAAC,EAC5B,QAAQ,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,CAAC,EAC7B,QAAQ,CAAC,EAAE,OAAO,GACjB,CAAC,CAwEH;AAED,KAAK,sBAAsB,GAAG;IAC5B,YAAY,EAAE,KAAK,CAAC;IACpB,MAAM,EAAE,CAAC,KAAK,EAAE;QACd,GAAG,EAAE,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QAC7D,QAAQ,EAAE,CAAC,KAAK,EAAE,iBAAiB,KAAK,IAAI,CAAC;KAC9C,KAAK,KAAK,CAAC,SAAS,CAAC;CACvB,CAAC;AAEF,wBAAgB,iBAAiB,CAAC,EAChC,YAAY,EACZ,MAAM,GACP,EAAE,sBAAsB,qBA4GxB"}
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@react-navigation/elements",
|
|
3
3
|
"description": "UI Components for React Navigation",
|
|
4
|
-
"version": "3.0.0-alpha.
|
|
4
|
+
"version": "3.0.0-alpha.52",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"react-native",
|
|
7
7
|
"react-navigation",
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"devDependencies": {
|
|
55
55
|
"@callstack/liquid-glass": "^0.8.0",
|
|
56
56
|
"@jest/globals": "^30.4.1",
|
|
57
|
-
"@react-navigation/native": "^8.0.0-alpha.
|
|
57
|
+
"@react-navigation/native": "^8.0.0-alpha.48",
|
|
58
58
|
"@testing-library/jest-dom": "^7.0.0",
|
|
59
59
|
"@testing-library/react": "^16.3.2",
|
|
60
60
|
"@testing-library/react-native": "^14.0.0",
|
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
"react": "19.2.3",
|
|
66
66
|
"react-native": "0.85.3",
|
|
67
67
|
"react-native-builder-bob": "^0.43.0",
|
|
68
|
-
"react-native-safe-area-context": "~5.
|
|
68
|
+
"react-native-safe-area-context": "~5.10.0",
|
|
69
69
|
"react-native-screens": "^4.26.2",
|
|
70
70
|
"react-native-web": "~0.21.2",
|
|
71
71
|
"test-renderer": "1.2.0",
|
|
@@ -73,7 +73,7 @@
|
|
|
73
73
|
},
|
|
74
74
|
"peerDependencies": {
|
|
75
75
|
"@callstack/liquid-glass": ">= 0.6.0",
|
|
76
|
-
"@react-navigation/native": "^8.0.0-alpha.
|
|
76
|
+
"@react-navigation/native": "^8.0.0-alpha.48",
|
|
77
77
|
"react": ">= 19.2.0",
|
|
78
78
|
"react-native": "*",
|
|
79
79
|
"react-native-safe-area-context": ">= 5.5.0",
|
|
@@ -97,5 +97,5 @@
|
|
|
97
97
|
]
|
|
98
98
|
]
|
|
99
99
|
},
|
|
100
|
-
"gitHead": "
|
|
100
|
+
"gitHead": "904ba65a2938924d87658b7009a95698f93c7731"
|
|
101
101
|
}
|
|
@@ -16,7 +16,7 @@ export function ActivityView({
|
|
|
16
16
|
style,
|
|
17
17
|
children,
|
|
18
18
|
}: Props) {
|
|
19
|
-
const [
|
|
19
|
+
const [delayedPaused, setDelayedPaused] = useState(mode === 'paused');
|
|
20
20
|
|
|
21
21
|
useEffect(() => {
|
|
22
22
|
if (!delay) {
|
|
@@ -24,7 +24,7 @@ export function ActivityView({
|
|
|
24
24
|
}
|
|
25
25
|
|
|
26
26
|
const timer = setTimeout(() => {
|
|
27
|
-
|
|
27
|
+
setDelayedPaused(mode === 'paused');
|
|
28
28
|
}, delay);
|
|
29
29
|
|
|
30
30
|
return () => clearTimeout(timer);
|
|
@@ -32,9 +32,7 @@ export function ActivityView({
|
|
|
32
32
|
|
|
33
33
|
const display = visible ? 'flex' : 'none';
|
|
34
34
|
const activityMode =
|
|
35
|
-
mode !== 'paused' || (delay &&
|
|
36
|
-
? 'visible'
|
|
37
|
-
: 'hidden';
|
|
35
|
+
mode !== 'paused' || (delay && !delayedPaused) ? 'visible' : 'hidden';
|
|
38
36
|
|
|
39
37
|
return (
|
|
40
38
|
<Activity mode={activityMode}>
|
package/src/ActivityView.tsx
CHANGED
|
@@ -39,7 +39,7 @@ export function ActivityView({
|
|
|
39
39
|
style,
|
|
40
40
|
children,
|
|
41
41
|
}: Props) {
|
|
42
|
-
const [
|
|
42
|
+
const [delayedPaused, setDelayedPaused] = useState(mode === 'paused');
|
|
43
43
|
|
|
44
44
|
useEffect(() => {
|
|
45
45
|
if (!delay) {
|
|
@@ -47,7 +47,7 @@ export function ActivityView({
|
|
|
47
47
|
}
|
|
48
48
|
|
|
49
49
|
const timer = setTimeout(() => {
|
|
50
|
-
|
|
50
|
+
setDelayedPaused(mode === 'paused');
|
|
51
51
|
}, delay);
|
|
52
52
|
|
|
53
53
|
return () => clearTimeout(timer);
|
|
@@ -55,9 +55,7 @@ export function ActivityView({
|
|
|
55
55
|
|
|
56
56
|
const display = visible ? 'flex' : 'none';
|
|
57
57
|
const activityMode =
|
|
58
|
-
mode !== 'paused' || (delay &&
|
|
59
|
-
? 'visible'
|
|
60
|
-
: 'hidden';
|
|
58
|
+
mode !== 'paused' || (delay && !delayedPaused) ? 'visible' : 'hidden';
|
|
61
59
|
|
|
62
60
|
/**
|
|
63
61
|
* Activity has 2 modes, visible and hidden - hidden unmounts effects
|
package/src/Container.tsx
CHANGED
|
@@ -15,7 +15,7 @@ export type Props = {
|
|
|
15
15
|
|
|
16
16
|
export function Container({ ref, inert, children, style }: Props) {
|
|
17
17
|
if (Platform.OS === 'web') {
|
|
18
|
-
const { backgroundColor, ...rest } = style ?? {};
|
|
18
|
+
const { backgroundColor, flex, ...rest } = style ?? {};
|
|
19
19
|
|
|
20
20
|
return (
|
|
21
21
|
<div
|
|
@@ -24,6 +24,12 @@ export function Container({ ref, inert, children, style }: Props) {
|
|
|
24
24
|
aria-hidden={inert}
|
|
25
25
|
style={{
|
|
26
26
|
...DEFAULT_STYLE,
|
|
27
|
+
// FIXME: A numeric flex shorthand uses a percentage basis in browsers.
|
|
28
|
+
// With nested containers, it slows down layout in Safari on iOS 27.
|
|
29
|
+
// So we explicitly set it to `0` without percentage, which renders 0px.
|
|
30
|
+
...(flex !== undefined && flex > 0
|
|
31
|
+
? { flexGrow: flex, flexShrink: 1, flexBasis: 0 }
|
|
32
|
+
: { flex }),
|
|
27
33
|
...rest,
|
|
28
34
|
backgroundColor:
|
|
29
35
|
// In practice we only get string on web instead of OpaqueValue
|
|
@@ -55,10 +55,9 @@ export function SafeAreaProviderCompat({ children, style }: Props) {
|
|
|
55
55
|
);
|
|
56
56
|
}
|
|
57
57
|
|
|
58
|
-
// SafeAreaProvider doesn't forward ref
|
|
59
|
-
// So we only pass onLayout to it
|
|
60
58
|
return (
|
|
61
59
|
<SafeAreaProvider
|
|
60
|
+
ref={ref}
|
|
62
61
|
initialMetrics={initialMetrics}
|
|
63
62
|
style={style}
|
|
64
63
|
onLayout={onLayout}
|
package/src/Screen.tsx
CHANGED
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
useTheme,
|
|
7
7
|
} from '@react-navigation/native';
|
|
8
8
|
import * as React from 'react';
|
|
9
|
-
import { StyleSheet, View } from 'react-native';
|
|
9
|
+
import { Platform, StyleSheet, View, type ViewProps } from 'react-native';
|
|
10
10
|
import { useSafeAreaInsets } from 'react-native-safe-area-context';
|
|
11
11
|
|
|
12
12
|
import { Container, type Props as ContainerProps } from './Container';
|
|
@@ -24,6 +24,8 @@ type Props = {
|
|
|
24
24
|
headerShown?: boolean | undefined;
|
|
25
25
|
headerStatusBarHeight?: number | undefined;
|
|
26
26
|
headerTransparent?: boolean | undefined;
|
|
27
|
+
pageOverflowEnabled?: boolean | undefined;
|
|
28
|
+
contentStyle?: ViewProps['style'] | undefined;
|
|
27
29
|
style?: ContainerProps['style'] | undefined;
|
|
28
30
|
children: React.ReactNode;
|
|
29
31
|
};
|
|
@@ -46,6 +48,8 @@ export function Screen(props: Props) {
|
|
|
46
48
|
route,
|
|
47
49
|
children,
|
|
48
50
|
style,
|
|
51
|
+
contentStyle,
|
|
52
|
+
pageOverflowEnabled = false,
|
|
49
53
|
} = props;
|
|
50
54
|
|
|
51
55
|
const defaultHeaderHeight = useFrameSize((size) =>
|
|
@@ -56,6 +60,43 @@ export function Screen(props: Props) {
|
|
|
56
60
|
})
|
|
57
61
|
);
|
|
58
62
|
|
|
63
|
+
// If the container fills the body, we consider it to be a "page" that can overflow the screen
|
|
64
|
+
// So we adjust the style accordingly to let the content take more space if needed
|
|
65
|
+
// This lets the document.body handle scrolling of the content
|
|
66
|
+
// This is necessary for mobile browsers to be able to hide the address bar on scroll
|
|
67
|
+
const [fill, setFill] = React.useState(false);
|
|
68
|
+
|
|
69
|
+
const onRef = React.useCallback(
|
|
70
|
+
(node: HTMLDivElement | React.ComponentRef<typeof View> | null) => {
|
|
71
|
+
if (
|
|
72
|
+
Platform.OS !== 'web' ||
|
|
73
|
+
!pageOverflowEnabled ||
|
|
74
|
+
!(node instanceof HTMLElement)
|
|
75
|
+
) {
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
const updateFill = () => {
|
|
80
|
+
setFill(
|
|
81
|
+
node.clientWidth === document.body.clientWidth &&
|
|
82
|
+
node.clientHeight === document.body.clientHeight
|
|
83
|
+
);
|
|
84
|
+
};
|
|
85
|
+
|
|
86
|
+
updateFill();
|
|
87
|
+
|
|
88
|
+
const observer = new ResizeObserver(updateFill);
|
|
89
|
+
|
|
90
|
+
observer.observe(node);
|
|
91
|
+
observer.observe(document.body);
|
|
92
|
+
|
|
93
|
+
return () => observer.disconnect();
|
|
94
|
+
},
|
|
95
|
+
[pageOverflowEnabled]
|
|
96
|
+
);
|
|
97
|
+
|
|
98
|
+
const page = pageOverflowEnabled && focused && fill;
|
|
99
|
+
|
|
59
100
|
const headerRef = React.useRef<React.ComponentRef<typeof View>>(null);
|
|
60
101
|
|
|
61
102
|
const [headerHeight, setHeaderHeight] = React.useState(defaultHeaderHeight);
|
|
@@ -68,6 +109,7 @@ export function Screen(props: Props) {
|
|
|
68
109
|
|
|
69
110
|
return (
|
|
70
111
|
<Container
|
|
112
|
+
ref={onRef}
|
|
71
113
|
inert={!focused}
|
|
72
114
|
style={{
|
|
73
115
|
...styles.container,
|
|
@@ -107,7 +149,7 @@ export function Screen(props: Props) {
|
|
|
107
149
|
</View>
|
|
108
150
|
</NavigationProvider>
|
|
109
151
|
) : null}
|
|
110
|
-
<View style={styles.content}>
|
|
152
|
+
<View style={[page ? styles.page : styles.content, contentStyle]}>
|
|
111
153
|
<HeaderShownContext.Provider
|
|
112
154
|
value={isParentHeaderShown || headerShown !== false}
|
|
113
155
|
>
|
|
@@ -129,6 +171,9 @@ const styles = StyleSheet.create({
|
|
|
129
171
|
content: {
|
|
130
172
|
flex: 1,
|
|
131
173
|
},
|
|
174
|
+
page: {
|
|
175
|
+
flexGrow: 1,
|
|
176
|
+
},
|
|
132
177
|
header: {
|
|
133
178
|
zIndex: 1,
|
|
134
179
|
pointerEvents: 'box-none',
|
package/src/useFrameSize.tsx
CHANGED
|
@@ -35,13 +35,70 @@ export function useFrameSize<T>(
|
|
|
35
35
|
throw new Error('useFrameSize must be used within a FrameSizeProvider');
|
|
36
36
|
}
|
|
37
37
|
|
|
38
|
+
const subscribe = throttle ? context.subscribeThrottled : context.subscribe;
|
|
39
|
+
|
|
38
40
|
const value = useSyncExternalStoreWithSelector(
|
|
39
|
-
|
|
41
|
+
subscribe,
|
|
40
42
|
context.getCurrent,
|
|
41
43
|
context.getCurrent,
|
|
42
44
|
selector
|
|
43
45
|
);
|
|
44
46
|
|
|
47
|
+
// Record the frame at render time to compare in the layout effect.
|
|
48
|
+
const frame = context.getCurrent();
|
|
49
|
+
|
|
50
|
+
const [, forceUpdate] = React.useReducer((value: number) => value + 1, 0);
|
|
51
|
+
|
|
52
|
+
const subscriptionRef = React.useRef<RemoveListener | null>(null);
|
|
53
|
+
const subscribedBeforeRef = React.useRef(false);
|
|
54
|
+
|
|
55
|
+
React.useLayoutEffect(() => {
|
|
56
|
+
// We have empty dependency array, but `Suspense` can replay the layout effect,
|
|
57
|
+
// So we need to explicitly check if we've subscribed before.
|
|
58
|
+
// Subsequent updates are handled by `useSyncExternalStoreWithSelector`.
|
|
59
|
+
// So we don't need to subscribe again.
|
|
60
|
+
if (subscribedBeforeRef.current) {
|
|
61
|
+
return;
|
|
62
|
+
}
|
|
63
|
+
|
|
64
|
+
const check = () => {
|
|
65
|
+
const nextFrame = context.getCurrent();
|
|
66
|
+
|
|
67
|
+
if (nextFrame !== frame && !Object.is(selector(nextFrame), value)) {
|
|
68
|
+
forceUpdate();
|
|
69
|
+
}
|
|
70
|
+
};
|
|
71
|
+
|
|
72
|
+
// The sync external store subscription starts in a passive effect.
|
|
73
|
+
// So if layout was measured, we may not get it here before paint.
|
|
74
|
+
// We use a layout effect to check if it has changed since the last render,
|
|
75
|
+
// and force an update so it reflects the latest frame before the next paint.
|
|
76
|
+
const unsubscribe = subscribe(check);
|
|
77
|
+
|
|
78
|
+
subscriptionRef.current = unsubscribe;
|
|
79
|
+
|
|
80
|
+
check();
|
|
81
|
+
|
|
82
|
+
return unsubscribe;
|
|
83
|
+
|
|
84
|
+
// We only need to check for changes on initial render.
|
|
85
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
86
|
+
}, []);
|
|
87
|
+
|
|
88
|
+
React.useEffect(() => {
|
|
89
|
+
// We don't need to keep the subscription after passive effects run.
|
|
90
|
+
// At this point, `useSyncExternalStoreWithSelector` has already subscribed.
|
|
91
|
+
subscriptionRef.current?.();
|
|
92
|
+
subscriptionRef.current = null;
|
|
93
|
+
subscribedBeforeRef.current = true;
|
|
94
|
+
|
|
95
|
+
return () => {
|
|
96
|
+
// The layout effect should recheck when `Activity` becomes visible.
|
|
97
|
+
// So we clean this up when `Activity` becomes hidden.
|
|
98
|
+
subscribedBeforeRef.current = false;
|
|
99
|
+
};
|
|
100
|
+
}, []);
|
|
101
|
+
|
|
45
102
|
return value;
|
|
46
103
|
}
|
|
47
104
|
|
|
@@ -139,7 +196,7 @@ export function FrameSizeProvider({
|
|
|
139
196
|
|
|
140
197
|
const viewRef = React.useRef<React.ComponentRef<typeof View>>(null);
|
|
141
198
|
|
|
142
|
-
React.
|
|
199
|
+
React.useLayoutEffect(() => {
|
|
143
200
|
if (Platform.OS === 'web') {
|
|
144
201
|
// We use ResizeObserver on web
|
|
145
202
|
return;
|
|
@@ -175,7 +232,7 @@ function FrameSizeListenerWeb({
|
|
|
175
232
|
}) {
|
|
176
233
|
const elementRef = React.useRef<HTMLDivElement>(null);
|
|
177
234
|
|
|
178
|
-
React.
|
|
235
|
+
React.useLayoutEffect(() => {
|
|
179
236
|
if (elementRef.current == null) {
|
|
180
237
|
return;
|
|
181
238
|
}
|