@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.
@@ -11,18 +11,18 @@ export function ActivityView({
11
11
  style,
12
12
  children
13
13
  }) {
14
- const [delayedMode, setDelayedMode] = useState(mode);
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
- setDelayedMode(mode);
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 && delayedMode !== 'paused' ? 'visible' : 'hidden';
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","delayedMode","setDelayedMode","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":[]}
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 [delayedMode, setDelayedMode] = useState(mode);
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
- setDelayedMode(mode);
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 && delayedMode !== 'paused' ? 'visible' : 'hidden';
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","delayedMode","setDelayedMode","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,WAAW,EAAEC,cAAc,CAAC,GAAGZ,QAAQ,CAACM,IAAI,CAAC;EAEpDP,SAAS,CAAC,MAAM;IACd,IAAI,CAACS,KAAK,EAAE;MACV;IACF;IAEA,MAAMK,KAAK,GAAGC,UAAU,CAAC,MAAM;MAC7BF,cAAc,CAACN,IAAI,CAAC;IACtB,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,IAAIG,WAAW,KAAK,QAAS,GACpD,SAAS,GACT,QAAQ;EAEd,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":[]}
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":[]}
@@ -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","flexBasis","flexDirection","flexShrink","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;MAAE,GAAGC;IAAK,CAAC,GAAGH,KAAK,IAAI,CAAC,CAAC;IAEhD,oBACEL,IAAA;MACEE,GAAG,EAAEA,GAA6C;MAClDC,KAAK,EAAEA,KAAM;MACb,eAAaA,KAAM;MACnBE,KAAK,EAAE;QACL,GAAGI,aAAa;QAChB,GAAGD,IAAI;QACPD,eAAe;QACb;QACA,OAAOA,eAAe,KAAK,QAAQ,GAAGA,eAAe,GAAGG;MAC5D,CAAE;MAAAN,QAAA,EAEDA;IAAQ,CACN,CAAC;EAEV;EAEA,oBACEJ,IAAA,CAACF,IAAI;IACHI,GAAG,EAAEA,GAAmC;IACxC,eAAaC,KAAM;IACnBE,KAAK,EAAE,CAAC;MAAEM,aAAa,EAAER,KAAK,GAAG,MAAM,GAAG;IAAW,CAAC,EAAEE,KAAK,CAAE;IAC/DO,WAAW,EAAE,KAAM;IAAAR,QAAA,EAElBA;EAAQ,CACL,CAAC;AAEX;AAEA,MAAMK,aAAa,GAAG;EACpBI,OAAO,EAAE,MAAM;EACfC,YAAY,EAAE,YAAY;EAC1BC,UAAU,EAAE,SAAS;EACrBC,SAAS,EAAE,YAAY;EACvBC,SAAS,EAAE,MAAM;EACjBC,aAAa,EAAE,QAAQ;EACvBC,UAAU,EAAE,CAAC;EACbC,SAAS,EAAE,CAAC;EACZC,QAAQ,EAAE,CAAC;EACXC,QAAQ,EAAE;AACZ,CAAwC","ignoreList":[]}
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;;MAEA;MACA;MACA,oBACEf,IAAA,CAACH,gBAAgB;QACfO,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":[]}
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":[]}
@@ -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'
@@ -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","useState","useLayoutEffect","current","measure","_x","_y","_width","name","inert","styles","container","backgroundColor","background","absolute","minHeight","ref","onLayout","e","nativeEvent","layout","pointerEvents","content","Provider","value","create","flex","zIndex","position","start","end"],"sourceRoot":"../../src","sources":["Screen.tsx"],"mappings":"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","ignoreList":[]}
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 value = useSyncExternalStoreWithSelector(throttle ? context.subscribeThrottled : context.subscribe, context.getCurrent, context.getCurrent, selector);
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.useEffect(() => {
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.useEffect(() => {
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","value","subscribeThrottled","subscribe","getCurrent","FrameSizeProvider","initialFrame","render","frameRef","useRef","width","height","listeners","Set","current","listener","add","delete","delay","timer","updated","waiting","throttledListener","clearTimeout","setTimeout","unsubscribe","useMemo","onChange","frame","forEach","viewRef","useEffect","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
+ {"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,+BAwFP"}
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,+BAyCP"}
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,qBAgC/D"}
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,qBAoChE;yBApCe,sBAAsB"}
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;AAI/B,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,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,qBA4FlC"}
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,CAeH;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"}
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.50",
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.46",
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.7.0",
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.46",
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": "ac6baf188f7a456429a87b644053e765233f0151"
100
+ "gitHead": "904ba65a2938924d87658b7009a95698f93c7731"
101
101
  }
@@ -16,7 +16,7 @@ export function ActivityView({
16
16
  style,
17
17
  children,
18
18
  }: Props) {
19
- const [delayedMode, setDelayedMode] = useState(mode);
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
- setDelayedMode(mode);
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 && delayedMode !== 'paused')
36
- ? 'visible'
37
- : 'hidden';
35
+ mode !== 'paused' || (delay && !delayedPaused) ? 'visible' : 'hidden';
38
36
 
39
37
  return (
40
38
  <Activity mode={activityMode}>
@@ -39,7 +39,7 @@ export function ActivityView({
39
39
  style,
40
40
  children,
41
41
  }: Props) {
42
- const [delayedMode, setDelayedMode] = useState(mode);
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
- setDelayedMode(mode);
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 && delayedMode !== 'paused')
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',
@@ -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
- throttle ? context.subscribeThrottled : context.subscribe,
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.useEffect(() => {
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.useEffect(() => {
235
+ React.useLayoutEffect(() => {
179
236
  if (elementRef.current == null) {
180
237
  return;
181
238
  }