@react-navigation/elements 2.4.2 → 2.4.4

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.
@@ -4,8 +4,9 @@ import { useNavigation, useTheme } from '@react-navigation/native';
4
4
  import Color from 'color';
5
5
  import * as React from 'react';
6
6
  import { Animated, Platform, StyleSheet, View } from 'react-native';
7
- import { useSafeAreaFrame, useSafeAreaInsets } from 'react-native-safe-area-context';
7
+ import { useSafeAreaInsets } from 'react-native-safe-area-context';
8
8
  import searchIcon from '../assets/search-icon.png';
9
+ import { useFrameSize } from "../useFrameSize.js";
9
10
  import { getDefaultHeaderHeight } from "./getDefaultHeaderHeight.js";
10
11
  import { HeaderBackButton } from "./HeaderBackButton.js";
11
12
  import { HeaderBackground } from "./HeaderBackground.js";
@@ -30,7 +31,7 @@ const warnIfHeaderStylesDefined = styles => {
30
31
  };
31
32
  export function Header(props) {
32
33
  const insets = useSafeAreaInsets();
33
- const frame = useSafeAreaFrame();
34
+ const frame = useFrameSize(size => size, true);
34
35
  const {
35
36
  colors
36
37
  } = useTheme();
@@ -1 +1 @@
1
- {"version":3,"names":["useNavigation","useTheme","Color","React","Animated","Platform","StyleSheet","View","useSafeAreaFrame","useSafeAreaInsets","searchIcon","getDefaultHeaderHeight","HeaderBackButton","HeaderBackground","HeaderButton","HeaderIcon","HeaderSearchBar","HeaderShownContext","HeaderTitle","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","IPAD_MINI_MEDIUM_WIDTH","warnIfHeaderStylesDefined","styles","Object","keys","forEach","styleProp","value","console","warn","undefined","Header","props","insets","frame","colors","navigation","isParentHeaderShown","useContext","searchBarVisible","setSearchBarVisible","useState","titleLayout","setTitleLayout","onTitleLayout","e","height","width","nativeEvent","layout","modal","back","title","headerTitle","customTitle","headerTitleAlign","OS","headerLeft","headerSearchBarOptions","headerTransparent","headerTintColor","headerBackground","headerRight","headerTitleAllowFontScaling","titleAllowFontScaling","headerTitleStyle","titleStyle","headerLeftContainerStyle","leftContainerStyle","headerRightContainerStyle","rightContainerStyle","headerTitleContainerStyle","titleContainerStyle","headerBackButtonDisplayMode","headerBackTitleStyle","headerBackgroundContainerStyle","backgroundContainerStyle","headerStyle","customHeaderStyle","headerShadowVisible","headerPressColor","headerPressOpacity","headerStatusBarHeight","top","defaultHeight","minHeight","maxHeight","backgroundColor","borderBottomColor","borderBottomEndRadius","borderBottomLeftRadius","borderBottomRightRadius","borderBottomStartRadius","borderBottomWidth","borderColor","borderEndColor","borderEndWidth","borderLeftColor","borderLeftWidth","borderRadius","borderRightColor","borderRightWidth","borderStartColor","borderStartWidth","borderStyle","borderTopColor","borderTopEndRadius","borderTopLeftRadius","borderTopRightRadius","borderTopStartRadius","borderTopWidth","borderWidth","boxShadow","elevation","shadowColor","shadowOffset","shadowOpacity","shadowRadius","opacity","transform","unsafeStyles","flatten","process","env","NODE_ENV","safeStyles","backgroundStyle","select","android","web","default","iconTintColor","ios","primary","text","leftButton","tintColor","pressColor","pressOpacity","displayMode","screenLayout","canGoBack","Boolean","onPress","goBack","label","labelStyle","href","rightButton","pointerEvents","style","children","absoluteFill","alpha","content","large","start","expand","marginStart","left","maxWidth","Math","max","right","marginHorizontal","allowFontScaling","onLayout","end","marginEnd","onOpen","source","visible","onClose","paddingTop","card","create","flex","flexDirection","alignItems","justifyContent","flexGrow","flexBasis"],"sourceRoot":"../../../src","sources":["Header/Header.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["useNavigation","useTheme","Color","React","Animated","Platform","StyleSheet","View","useSafeAreaInsets","searchIcon","useFrameSize","getDefaultHeaderHeight","HeaderBackButton","HeaderBackground","HeaderButton","HeaderIcon","HeaderSearchBar","HeaderShownContext","HeaderTitle","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","IPAD_MINI_MEDIUM_WIDTH","warnIfHeaderStylesDefined","styles","Object","keys","forEach","styleProp","value","console","warn","undefined","Header","props","insets","frame","size","colors","navigation","isParentHeaderShown","useContext","searchBarVisible","setSearchBarVisible","useState","titleLayout","setTitleLayout","onTitleLayout","e","height","width","nativeEvent","layout","modal","back","title","headerTitle","customTitle","headerTitleAlign","OS","headerLeft","headerSearchBarOptions","headerTransparent","headerTintColor","headerBackground","headerRight","headerTitleAllowFontScaling","titleAllowFontScaling","headerTitleStyle","titleStyle","headerLeftContainerStyle","leftContainerStyle","headerRightContainerStyle","rightContainerStyle","headerTitleContainerStyle","titleContainerStyle","headerBackButtonDisplayMode","headerBackTitleStyle","headerBackgroundContainerStyle","backgroundContainerStyle","headerStyle","customHeaderStyle","headerShadowVisible","headerPressColor","headerPressOpacity","headerStatusBarHeight","top","defaultHeight","minHeight","maxHeight","backgroundColor","borderBottomColor","borderBottomEndRadius","borderBottomLeftRadius","borderBottomRightRadius","borderBottomStartRadius","borderBottomWidth","borderColor","borderEndColor","borderEndWidth","borderLeftColor","borderLeftWidth","borderRadius","borderRightColor","borderRightWidth","borderStartColor","borderStartWidth","borderStyle","borderTopColor","borderTopEndRadius","borderTopLeftRadius","borderTopRightRadius","borderTopStartRadius","borderTopWidth","borderWidth","boxShadow","elevation","shadowColor","shadowOffset","shadowOpacity","shadowRadius","opacity","transform","unsafeStyles","flatten","process","env","NODE_ENV","safeStyles","backgroundStyle","select","android","web","default","iconTintColor","ios","primary","text","leftButton","tintColor","pressColor","pressOpacity","displayMode","screenLayout","canGoBack","Boolean","onPress","goBack","label","labelStyle","href","rightButton","pointerEvents","style","children","absoluteFill","alpha","content","large","start","expand","marginStart","left","maxWidth","Math","max","right","marginHorizontal","allowFontScaling","onLayout","end","marginEnd","onOpen","source","visible","onClose","paddingTop","card","create","flex","flexDirection","alignItems","justifyContent","flexGrow","flexBasis"],"sourceRoot":"../../../src","sources":["Header/Header.tsx"],"mappings":"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","ignoreList":[]}
@@ -2,8 +2,9 @@
2
2
 
3
3
  import * as React from 'react';
4
4
  import { Dimensions, Platform, StyleSheet, View } from 'react-native';
5
- import { initialWindowMetrics, SafeAreaFrameContext, SafeAreaInsetsContext, SafeAreaProvider } from 'react-native-safe-area-context';
6
- import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
5
+ import { initialWindowMetrics, SafeAreaInsetsContext, SafeAreaProvider } from 'react-native-safe-area-context';
6
+ import { FrameSizeProvider } from "./useFrameSize.js";
7
+ import { jsx as _jsx } from "react/jsx-runtime";
7
8
  const {
8
9
  width = 0,
9
10
  height = 0
@@ -31,6 +32,9 @@ export function SafeAreaProviderCompat({
31
32
  style
32
33
  }) {
33
34
  const insets = React.useContext(SafeAreaInsetsContext);
35
+ children = /*#__PURE__*/_jsx(FrameSizeProvider, {
36
+ children: children
37
+ });
34
38
  if (insets) {
35
39
  // If we already have insets, don't wrap the stack in another safe area provider
36
40
  // This avoids an issue with updates at the cost of potentially incorrect values
@@ -40,81 +44,12 @@ export function SafeAreaProviderCompat({
40
44
  children: children
41
45
  });
42
46
  }
43
- if (Platform.OS === 'web') {
44
- children = /*#__PURE__*/_jsx(SafeAreaFrameProvider, {
45
- initialMetrics: initialMetrics,
46
- children: children
47
- });
48
- }
49
47
  return /*#__PURE__*/_jsx(SafeAreaProvider, {
50
48
  initialMetrics: initialMetrics,
51
49
  style: style,
52
50
  children: children
53
51
  });
54
52
  }
55
-
56
- // FIXME: On the Web, the safe area frame value doesn't update on resize
57
- // So we workaround this by measuring the frame on resize
58
- const SafeAreaFrameProvider = ({
59
- initialMetrics,
60
- children
61
- }) => {
62
- const element = React.useRef(null);
63
- const [frame, setFrame] = React.useState(initialMetrics.frame);
64
- React.useEffect(() => {
65
- if (element.current == null) {
66
- return;
67
- }
68
- const rect = element.current.getBoundingClientRect();
69
-
70
- // eslint-disable-next-line @eslint-react/hooks-extra/no-direct-set-state-in-use-effect
71
- setFrame({
72
- x: rect.x,
73
- y: rect.y,
74
- width: rect.width,
75
- height: rect.height
76
- });
77
- let timeout;
78
- const observer = new ResizeObserver(entries => {
79
- const entry = entries[0];
80
- if (entry) {
81
- const {
82
- x,
83
- y,
84
- width,
85
- height
86
- } = entry.contentRect;
87
-
88
- // Debounce the frame updates to avoid too many updates in a short time
89
- clearTimeout(timeout);
90
- timeout = setTimeout(() => {
91
- setFrame({
92
- x,
93
- y,
94
- width,
95
- height
96
- });
97
- }, 100);
98
- }
99
- });
100
- observer.observe(element.current);
101
- return () => {
102
- observer.disconnect();
103
- clearTimeout(timeout);
104
- };
105
- }, []);
106
- return /*#__PURE__*/_jsxs(SafeAreaFrameContext.Provider, {
107
- value: frame,
108
- children: [/*#__PURE__*/_jsx("div", {
109
- ref: element,
110
- style: {
111
- ...StyleSheet.absoluteFillObject,
112
- pointerEvents: 'none',
113
- visibility: 'hidden'
114
- }
115
- }), children]
116
- });
117
- };
118
53
  SafeAreaProviderCompat.initialMetrics = initialMetrics;
119
54
  const styles = StyleSheet.create({
120
55
  container: {
@@ -1 +1 @@
1
- {"version":3,"names":["React","Dimensions","Platform","StyleSheet","View","initialWindowMetrics","SafeAreaFrameContext","SafeAreaInsetsContext","SafeAreaProvider","jsx","_jsx","jsxs","_jsxs","width","height","get","initialMetrics","OS","frame","x","y","insets","top","left","right","bottom","SafeAreaProviderCompat","children","style","useContext","styles","container","SafeAreaFrameProvider","element","useRef","setFrame","useState","useEffect","current","rect","getBoundingClientRect","timeout","observer","ResizeObserver","entries","entry","contentRect","clearTimeout","setTimeout","observe","disconnect","Provider","value","ref","absoluteFillObject","pointerEvents","visibility","create","flex"],"sourceRoot":"../../src","sources":["SafeAreaProviderCompat.tsx"],"mappings":"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","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","useContext","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,UAAU,CAACrB,qBAAqB,CAAC;EAEtDmB,QAAQ,gBAAGf,IAAA,CAACF,iBAAiB;IAAAiB,QAAA,EAAEA;EAAQ,CAAoB,CAAC;EAE5D,IAAIN,MAAM,EAAE;IACV;IACA;IACA;IACA,oBAAOT,IAAA,CAACN,IAAI;MAACsB,KAAK,EAAE,CAACE,MAAM,CAACC,SAAS,EAAEH,KAAK,CAAE;MAAAD,QAAA,EAAEA;IAAQ,CAAO,CAAC;EAClE;EAEA,oBACEf,IAAA,CAACH,gBAAgB;IAACO,cAAc,EAAEA,cAAe;IAACY,KAAK,EAAEA,KAAM;IAAAD,QAAA,EAC5DA;EAAQ,CACO,CAAC;AAEvB;AAEAD,sBAAsB,CAACV,cAAc,GAAGA,cAAc;AAEtD,MAAMc,MAAM,GAAGzB,UAAU,CAAC2B,MAAM,CAAC;EAC/BD,SAAS,EAAE;IACTE,IAAI,EAAE;EACR;AACF,CAAC,CAAC","ignoreList":[]}
@@ -3,14 +3,14 @@
3
3
  import { NavigationContext, NavigationRouteContext } from '@react-navigation/native';
4
4
  import * as React from 'react';
5
5
  import { StyleSheet, View } from 'react-native';
6
- import { useSafeAreaFrame, useSafeAreaInsets } from 'react-native-safe-area-context';
6
+ import { useSafeAreaInsets } from 'react-native-safe-area-context';
7
7
  import { Background } from "./Background.js";
8
8
  import { getDefaultHeaderHeight } from "./Header/getDefaultHeaderHeight.js";
9
9
  import { HeaderHeightContext } from "./Header/HeaderHeightContext.js";
10
10
  import { HeaderShownContext } from "./Header/HeaderShownContext.js";
11
+ import { useFrameSize } from "./useFrameSize.js";
11
12
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
12
13
  export function Screen(props) {
13
- const dimensions = useSafeAreaFrame();
14
14
  const insets = useSafeAreaInsets();
15
15
  const isParentHeaderShown = React.useContext(HeaderShownContext);
16
16
  const parentHeaderHeight = React.useContext(HeaderHeightContext);
@@ -26,7 +26,8 @@ export function Screen(props) {
26
26
  children,
27
27
  style
28
28
  } = props;
29
- const [headerHeight, setHeaderHeight] = React.useState(() => getDefaultHeaderHeight(dimensions, modal, headerStatusBarHeight));
29
+ const defaultHeaderHeight = useFrameSize(size => getDefaultHeaderHeight(size, modal, headerStatusBarHeight));
30
+ const [headerHeight, setHeaderHeight] = React.useState(defaultHeaderHeight);
30
31
  return /*#__PURE__*/_jsxs(Background, {
31
32
  "aria-hidden": !focused,
32
33
  style: [styles.container, style]
@@ -1 +1 @@
1
- {"version":3,"names":["NavigationContext","NavigationRouteContext","React","StyleSheet","View","useSafeAreaFrame","useSafeAreaInsets","Background","getDefaultHeaderHeight","HeaderHeightContext","HeaderShownContext","jsx","_jsx","jsxs","_jsxs","Screen","props","dimensions","insets","isParentHeaderShown","useContext","parentHeaderHeight","focused","modal","header","headerShown","headerTransparent","headerStatusBarHeight","top","navigation","route","children","style","headerHeight","setHeaderHeight","useState","styles","container","collapsable","Provider","value","pointerEvents","onLayout","e","height","nativeEvent","layout","absolute","content","create","flex","zIndex","position","start","end"],"sourceRoot":"../../src","sources":["Screen.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["NavigationContext","NavigationRouteContext","React","StyleSheet","View","useSafeAreaInsets","Background","getDefaultHeaderHeight","HeaderHeightContext","HeaderShownContext","useFrameSize","jsx","_jsx","jsxs","_jsxs","Screen","props","insets","isParentHeaderShown","useContext","parentHeaderHeight","focused","modal","header","headerShown","headerTransparent","headerStatusBarHeight","top","navigation","route","children","style","defaultHeaderHeight","size","headerHeight","setHeaderHeight","useState","styles","container","collapsable","Provider","value","pointerEvents","onLayout","e","height","nativeEvent","layout","absolute","content","create","flex","zIndex","position","start","end"],"sourceRoot":"../../src","sources":["Screen.tsx"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"names":["React","contexts","globalThis","Map","getNamedContext","name","initialValue","context","get","createContext","displayName","set"],"sourceRoot":"../../src","sources":["getNamedContext.tsx"],"mappings":";;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,MAAMC,QAAQ,GAAG,uCAAuC;AAOxD;AACAC,UAAU,CAACD,QAAQ,CAAC,GAClBC,UAAU,CAACD,QAAQ,CAAC,IAAI,IAAIE,GAAG,CAA6B,CAAC;AAE/D,OAAO,SAASC,eAAeA,CAC7BC,IAAY,EACZC,YAAe,EACG;EAClB,IAAIC,OAAO,GAAGL,UAAU,CAACD,QAAQ,CAAC,CAACO,GAAG,CAACH,IAAI,CAAC;EAE5C,IAAIE,OAAO,EAAE;IACX,OAAOA,OAAO;EAChB;EAEAA,OAAO,gBAAGP,KAAK,CAACS,aAAa,CAAIH,YAAY,CAAC;EAC9CC,OAAO,CAACG,WAAW,GAAGL,IAAI;EAE1BH,UAAU,CAACD,QAAQ,CAAC,CAACU,GAAG,CAACN,IAAI,EAAEE,OAAO,CAAC;EAEvC,OAAOA,OAAO;AAChB","ignoreList":[]}
1
+ {"version":3,"names":["React","contexts","globalThis","Map","getNamedContext","name","initialValue","context","get","createContext","displayName","set"],"sourceRoot":"../../src","sources":["getNamedContext.tsx"],"mappings":";;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAE9B,MAAMC,QAAQ,GAAG,uCAAuC;AAMxD;AACAC,UAAU,CAACD,QAAQ,CAAC,GAClBC,UAAU,CAACD,QAAQ,CAAC,IAAI,IAAIE,GAAG,CAA6B,CAAC;AAE/D,OAAO,SAASC,eAAeA,CAC7BC,IAAY,EACZC,YAAe,EACG;EAClB,IAAIC,OAAO,GAAGL,UAAU,CAACD,QAAQ,CAAC,CAACO,GAAG,CAACH,IAAI,CAAC;EAE5C,IAAIE,OAAO,EAAE;IACX,OAAOA,OAAO;EAChB;EAEAA,OAAO,gBAAGP,KAAK,CAACS,aAAa,CAAIH,YAAY,CAAC;EAC9CC,OAAO,CAACG,WAAW,GAAGL,IAAI;EAE1BH,UAAU,CAACD,QAAQ,CAAC,CAACU,GAAG,CAACN,IAAI,EAAEE,OAAO,CAAC;EAEvC,OAAOA,OAAO;AAChB","ignoreList":[]}
@@ -27,6 +27,7 @@ export { ResourceSavingView } from "./ResourceSavingView.js";
27
27
  export { SafeAreaProviderCompat } from "./SafeAreaProviderCompat.js";
28
28
  export { Screen } from "./Screen.js";
29
29
  export { Text } from "./Text.js";
30
+ export { useFrameSize } from "./useFrameSize.js";
30
31
  export const Assets = [backIcon, backIconMask, searchIcon, closeIcon, clearIcon];
31
32
  export * from "./types.js";
32
33
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"names":["backIcon","backIconMask","clearIcon","closeIcon","searchIcon","Background","Button","getDefaultSidebarWidth","getDefaultHeaderHeight","getHeaderTitle","Header","HeaderBackButton","HeaderBackContext","HeaderBackground","HeaderButton","HeaderHeightContext","HeaderShownContext","HeaderTitle","useHeaderHeight","getLabel","Label","MissingIcon","PlatformPressable","ResourceSavingView","SafeAreaProviderCompat","Screen","Text","Assets"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,OAAOA,QAAQ,MAAM,wBAAwB;AAC7C,OAAOC,YAAY,MAAM,6BAA6B;AACtD,OAAOC,SAAS,MAAM,yBAAyB;AAC/C,OAAOC,SAAS,MAAM,yBAAyB;AAC/C,OAAOC,UAAU,MAAM,0BAA0B;AAEjD,SAASC,UAAU,QAAQ,iBAAc;AACzC,SAASC,MAAM,QAAQ,aAAU;AACjC,SAASC,sBAAsB,QAAQ,6BAA0B;AACjE,SAASC,sBAAsB,QAAQ,oCAAiC;AACxE,SAASC,cAAc,QAAQ,4BAAyB;AACxD,SAASC,MAAM,QAAQ,oBAAiB;AACxC,SAASC,gBAAgB,QAAQ,8BAA2B;AAC5D,SAASC,iBAAiB,QAAQ,+BAA4B;AAC9D,SAASC,gBAAgB,QAAQ,8BAA2B;AAC5D,SAASC,YAAY,QAAQ,0BAAuB;AACpD,SAASC,mBAAmB,QAAQ,iCAA8B;AAClE,SAASC,kBAAkB,QAAQ,gCAA6B;AAChE,SAASC,WAAW,QAAQ,yBAAsB;AAClD,SAASC,eAAe,QAAQ,6BAA0B;AAC1D,SAASC,QAAQ,QAAQ,qBAAkB;AAC3C,SAASC,KAAK,QAAQ,kBAAe;AACrC,SAASC,WAAW,QAAQ,kBAAe;AAC3C,SAASC,iBAAiB,QAAQ,wBAAqB;AACvD,SAASC,kBAAkB,QAAQ,yBAAsB;AACzD,SAASC,sBAAsB,QAAQ,6BAA0B;AACjE,SAASC,MAAM,QAAQ,aAAU;AACjC,SAASC,IAAI,QAAQ,WAAQ;AAE7B,OAAO,MAAMC,MAAM,GAAG,CACpB3B,QAAQ,EACRC,YAAY,EACZG,UAAU,EACVD,SAAS,EACTD,SAAS,CACV;AAED,cAAc,YAAS","ignoreList":[]}
1
+ {"version":3,"names":["backIcon","backIconMask","clearIcon","closeIcon","searchIcon","Background","Button","getDefaultSidebarWidth","getDefaultHeaderHeight","getHeaderTitle","Header","HeaderBackButton","HeaderBackContext","HeaderBackground","HeaderButton","HeaderHeightContext","HeaderShownContext","HeaderTitle","useHeaderHeight","getLabel","Label","MissingIcon","PlatformPressable","ResourceSavingView","SafeAreaProviderCompat","Screen","Text","useFrameSize","Assets"],"sourceRoot":"../../src","sources":["index.tsx"],"mappings":";;AAAA,OAAOA,QAAQ,MAAM,wBAAwB;AAC7C,OAAOC,YAAY,MAAM,6BAA6B;AACtD,OAAOC,SAAS,MAAM,yBAAyB;AAC/C,OAAOC,SAAS,MAAM,yBAAyB;AAC/C,OAAOC,UAAU,MAAM,0BAA0B;AAEjD,SAASC,UAAU,QAAQ,iBAAc;AACzC,SAASC,MAAM,QAAQ,aAAU;AACjC,SAASC,sBAAsB,QAAQ,6BAA0B;AACjE,SAASC,sBAAsB,QAAQ,oCAAiC;AACxE,SAASC,cAAc,QAAQ,4BAAyB;AACxD,SAASC,MAAM,QAAQ,oBAAiB;AACxC,SAASC,gBAAgB,QAAQ,8BAA2B;AAC5D,SAASC,iBAAiB,QAAQ,+BAA4B;AAC9D,SAASC,gBAAgB,QAAQ,8BAA2B;AAC5D,SAASC,YAAY,QAAQ,0BAAuB;AACpD,SAASC,mBAAmB,QAAQ,iCAA8B;AAClE,SAASC,kBAAkB,QAAQ,gCAA6B;AAChE,SAASC,WAAW,QAAQ,yBAAsB;AAClD,SAASC,eAAe,QAAQ,6BAA0B;AAC1D,SAASC,QAAQ,QAAQ,qBAAkB;AAC3C,SAASC,KAAK,QAAQ,kBAAe;AACrC,SAASC,WAAW,QAAQ,kBAAe;AAC3C,SAASC,iBAAiB,QAAQ,wBAAqB;AACvD,SAASC,kBAAkB,QAAQ,yBAAsB;AACzD,SAASC,sBAAsB,QAAQ,6BAA0B;AACjE,SAASC,MAAM,QAAQ,aAAU;AACjC,SAASC,IAAI,QAAQ,WAAQ;AAC7B,SAASC,YAAY,QAAQ,mBAAgB;AAE7C,OAAO,MAAMC,MAAM,GAAG,CACpB5B,QAAQ,EACRC,YAAY,EACZG,UAAU,EACVD,SAAS,EACTD,SAAS,CACV;AAED,cAAc,YAAS","ignoreList":[]}
@@ -0,0 +1,142 @@
1
+ "use strict";
2
+
3
+ import * as React from 'react';
4
+ import { Dimensions, Platform, StyleSheet } from 'react-native';
5
+ // eslint-disable-next-line no-restricted-imports
6
+ import { useSafeAreaFrame } from 'react-native-safe-area-context';
7
+ import useLatestCallback from 'use-latest-callback';
8
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
+ const FrameContext = /*#__PURE__*/React.createContext(undefined);
10
+ export function useFrameSize(selector, debounce) {
11
+ const context = React.useContext(FrameContext);
12
+ if (context == null) {
13
+ throw new Error('useFrameSize must be used within a FrameSizeProvider');
14
+ }
15
+ const value = React.useSyncExternalStore(debounce ? context.subscribeDebounced : context.subscribe, () => selector(context.getCurrent()), () => selector(context.getCurrent()));
16
+ return value;
17
+ }
18
+ export function FrameSizeProvider({
19
+ children
20
+ }) {
21
+ const context = React.useContext(FrameContext);
22
+ if (context != null) {
23
+ // If the context is already present, don't wrap again
24
+ return children;
25
+ }
26
+ return /*#__PURE__*/_jsx(FrameSizeProviderInner, {
27
+ children: children
28
+ });
29
+ }
30
+ function FrameSizeProviderInner({
31
+ children
32
+ }) {
33
+ const listeners = React.useRef(new Set());
34
+ const {
35
+ element,
36
+ get
37
+ } = useResizeListener(size => {
38
+ listeners.current.forEach(listener => listener(size));
39
+ });
40
+ const getCurrent = useLatestCallback(get);
41
+ const subscribe = useLatestCallback(listener => {
42
+ listeners.current.add(listener);
43
+ return () => {
44
+ listeners.current.delete(listener);
45
+ };
46
+ });
47
+ const subscribeDebounced = useLatestCallback(listener => {
48
+ let timer;
49
+ const debouncedListener = size => {
50
+ clearTimeout(timer);
51
+ timer = setTimeout(() => {
52
+ listener(size);
53
+ }, 100);
54
+ };
55
+ listeners.current.add(debouncedListener);
56
+ return () => {
57
+ clearTimeout(timer);
58
+ listeners.current.delete(debouncedListener);
59
+ };
60
+ });
61
+ const context = React.useMemo(() => ({
62
+ getCurrent,
63
+ subscribe,
64
+ subscribeDebounced
65
+ }), [subscribe, subscribeDebounced, getCurrent]);
66
+ return /*#__PURE__*/_jsxs(FrameContext.Provider, {
67
+ value: context,
68
+ children: [element, children]
69
+ });
70
+ }
71
+ const useResizeListener = Platform.OS === 'web' ? useResizeListenerWeb : useResizeListenerNative;
72
+ function useResizeListenerNative(onChange) {
73
+ const frame = useSafeAreaFrame();
74
+ React.useLayoutEffect(() => {
75
+ onChange(frame);
76
+ }, [frame, onChange]);
77
+ return {
78
+ element: null,
79
+ get: () => frame
80
+ };
81
+ }
82
+ const {
83
+ width = 0,
84
+ height = 0
85
+ } = Dimensions.get('window');
86
+
87
+ // FIXME: On the Web, the safe area frame value doesn't update on resize
88
+ // So we workaround this by measuring the frame on resize
89
+ function useResizeListenerWeb(onChange) {
90
+ const frameRef = React.useRef({
91
+ width,
92
+ height
93
+ });
94
+ const elementRef = React.useRef(null);
95
+ React.useEffect(() => {
96
+ if (elementRef.current == null) {
97
+ return;
98
+ }
99
+ const update = size => {
100
+ if (frameRef.current.width === size.width && frameRef.current.height === size.height) {
101
+ return;
102
+ }
103
+ frameRef.current = size;
104
+ onChange(size);
105
+ };
106
+ const rect = elementRef.current.getBoundingClientRect();
107
+ update({
108
+ width: rect.width,
109
+ height: rect.height
110
+ });
111
+ const observer = new ResizeObserver(entries => {
112
+ const entry = entries[0];
113
+ if (entry) {
114
+ const {
115
+ width,
116
+ height
117
+ } = entry.contentRect;
118
+ update({
119
+ width,
120
+ height
121
+ });
122
+ }
123
+ });
124
+ observer.observe(elementRef.current);
125
+ return () => {
126
+ observer.disconnect();
127
+ };
128
+ }, [onChange]);
129
+ const element = /*#__PURE__*/_jsx("div", {
130
+ ref: elementRef,
131
+ style: {
132
+ ...StyleSheet.absoluteFillObject,
133
+ pointerEvents: 'none',
134
+ visibility: 'hidden'
135
+ }
136
+ });
137
+ return {
138
+ element,
139
+ get: () => frameRef.current
140
+ };
141
+ }
142
+ //# sourceMappingURL=useFrameSize.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","Dimensions","Platform","StyleSheet","useSafeAreaFrame","useLatestCallback","jsx","_jsx","jsxs","_jsxs","FrameContext","createContext","undefined","useFrameSize","selector","debounce","context","useContext","Error","value","useSyncExternalStore","subscribeDebounced","subscribe","getCurrent","FrameSizeProvider","children","FrameSizeProviderInner","listeners","useRef","Set","element","get","useResizeListener","size","current","forEach","listener","add","delete","timer","debouncedListener","clearTimeout","setTimeout","useMemo","Provider","OS","useResizeListenerWeb","useResizeListenerNative","onChange","frame","useLayoutEffect","width","height","frameRef","elementRef","useEffect","update","rect","getBoundingClientRect","observer","ResizeObserver","entries","entry","contentRect","observe","disconnect","ref","style","absoluteFillObject","pointerEvents","visibility"],"sourceRoot":"../../src","sources":["useFrameSize.tsx"],"mappings":"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","ignoreList":[]}
@@ -1 +1 @@
1
- {"version":3,"file":"Header.d.ts","sourceRoot":"","sources":["../../../../src/Header/Header.tsx"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAatD,KAAK,KAAK,GAAG,aAAa,GAAG;IAC3B;;OAEG;IACH,IAAI,CAAC,EAAE;QACL;;WAEG;QACH,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;QAC1B;;WAEG;QACH,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;KAC1B,CAAC;IACF;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAkBF,wBAAgB,MAAM,CAAC,KAAK,EAAE,KAAK,2CA2VlC"}
1
+ {"version":3,"file":"Header.d.ts","sourceRoot":"","sources":["../../../../src/Header/Header.tsx"],"names":[],"mappings":"AAcA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AActD,KAAK,KAAK,GAAG,aAAa,GAAG;IAC3B;;OAEG;IACH,IAAI,CAAC,EAAE;QACL;;WAEG;QACH,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;QAC1B;;WAEG;QACH,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;KAC1B,CAAC;IACF;;OAEG;IACH,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;CACf,CAAC;AAkBF,wBAAgB,MAAM,CAAC,KAAK,EAAE,KAAK,2CA2VlC"}
@@ -1,13 +1,12 @@
1
1
  import * as React from 'react';
2
2
  import { type StyleProp, type ViewStyle } from 'react-native';
3
- import { type Metrics } from 'react-native-safe-area-context';
4
3
  type Props = {
5
4
  children: React.ReactNode;
6
5
  style?: StyleProp<ViewStyle>;
7
6
  };
8
7
  export declare function SafeAreaProviderCompat({ children, style }: Props): import("react/jsx-runtime").JSX.Element;
9
8
  export declare namespace SafeAreaProviderCompat {
10
- var initialMetrics: Metrics;
9
+ var initialMetrics: import("react-native-safe-area-context").Metrics;
11
10
  }
12
11
  export {};
13
12
  //# sourceMappingURL=SafeAreaProviderCompat.d.ts.map
@@ -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;AACtB,OAAO,EAEL,KAAK,OAAO,EAIb,MAAM,gCAAgC,CAAC;AAExC,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,2CAuBhE;yBAvBe,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,2CAiBhE;yBAjBe,sBAAsB"}
@@ -1 +1 @@
1
- {"version":3,"file":"Screen.d.ts","sourceRoot":"","sources":["../../../src/Screen.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EAEnB,KAAK,aAAa,EAClB,KAAK,SAAS,EACf,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EACL,QAAQ,EACR,KAAK,SAAS,EAGd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAWtB,KAAK,KAAK,GAAG;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,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,CAAC;IACtB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,KAAK,CAAC,EAAE,QAAQ,CAAC,iBAAiB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;IACzD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAEF,wBAAgB,MAAM,CAAC,KAAK,EAAE,KAAK,2CAiElC"}
1
+ {"version":3,"file":"Screen.d.ts","sourceRoot":"","sources":["../../../src/Screen.tsx"],"names":[],"mappings":"AAAA,OAAO,EAEL,KAAK,cAAc,EAEnB,KAAK,aAAa,EAClB,KAAK,SAAS,EACf,MAAM,0BAA0B,CAAC;AAClC,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAC/B,OAAO,EACL,QAAQ,EACR,KAAK,SAAS,EAGd,KAAK,SAAS,EACf,MAAM,cAAc,CAAC;AAStB,KAAK,KAAK,GAAG;IACX,OAAO,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,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,CAAC;IACtB,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAC/B,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,KAAK,CAAC,EAAE,QAAQ,CAAC,iBAAiB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;IACzD,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B,CAAC;AAEF,wBAAgB,MAAM,CAAC,KAAK,EAAE,KAAK,2CAkElC"}
@@ -1 +1 @@
1
- {"version":3,"file":"getNamedContext.d.ts","sourceRoot":"","sources":["../../../src/getNamedContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,CAAC,MAAM,CAAC;IAEb,IAAI,qCAAqC,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;CAC5E;AAMD,wBAAgB,eAAe,CAAC,CAAC,EAC/B,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,CAAC,GACd,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAalB"}
1
+ {"version":3,"file":"getNamedContext.d.ts","sourceRoot":"","sources":["../../../src/getNamedContext.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAI/B,OAAO,CAAC,MAAM,CAAC;IACb,IAAI,qCAAqC,EAAE,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC;CAC5E;AAMD,wBAAgB,eAAe,CAAC,CAAC,EAC/B,IAAI,EAAE,MAAM,EACZ,YAAY,EAAE,CAAC,GACd,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAalB"}
@@ -20,6 +20,7 @@ export { ResourceSavingView } from './ResourceSavingView';
20
20
  export { SafeAreaProviderCompat } from './SafeAreaProviderCompat';
21
21
  export { Screen } from './Screen';
22
22
  export { Text } from './Text';
23
+ export { useFrameSize } from './useFrameSize';
23
24
  export declare const Assets: any[];
24
25
  export * from './types';
25
26
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAE9B,eAAO,MAAM,MAAM,OAMlB,CAAC;AAEF,cAAc,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/index.tsx"],"names":[],"mappings":"AAMA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACzE,OAAO,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,4BAA4B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,EAAE,mBAAmB,EAAE,MAAM,8BAA8B,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AACjE,OAAO,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AACnD,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,MAAM,eAAe,CAAC;AACtC,OAAO,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AAC5C,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAC1D,OAAO,EAAE,sBAAsB,EAAE,MAAM,0BAA0B,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,UAAU,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,QAAQ,CAAC;AAC9B,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9C,eAAO,MAAM,MAAM,OAMlB,CAAC;AAEF,cAAc,SAAS,CAAC"}
@@ -0,0 +1,11 @@
1
+ import * as React from 'react';
2
+ type Size = {
3
+ width: number;
4
+ height: number;
5
+ };
6
+ export declare function useFrameSize<T>(selector: (size: Size) => T, debounce?: boolean): T;
7
+ export declare function FrameSizeProvider({ children }: {
8
+ children: React.ReactNode;
9
+ }): string | number | bigint | boolean | Iterable<React.ReactNode> | Promise<string | number | bigint | boolean | React.ReactPortal | React.ReactElement<unknown, string | React.JSXElementConstructor<any>> | Iterable<React.ReactNode> | null | undefined> | import("react/jsx-runtime").JSX.Element | null | undefined;
10
+ export {};
11
+ //# sourceMappingURL=useFrameSize.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useFrameSize.d.ts","sourceRoot":"","sources":["../../../src/useFrameSize.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,KAAK,MAAM,OAAO,CAAC;AAM/B,KAAK,IAAI,GAAG;IACV,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAgBF,wBAAgB,YAAY,CAAC,CAAC,EAC5B,QAAQ,EAAE,CAAC,IAAI,EAAE,IAAI,KAAK,CAAC,EAC3B,QAAQ,CAAC,EAAE,OAAO,GACjB,CAAC,CAcH;AAED,wBAAgB,iBAAiB,CAAC,EAAE,QAAQ,EAAE,EAAE;IAAE,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAA;CAAE,yTAS5E"}
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": "2.4.2",
4
+ "version": "2.4.4",
5
5
  "keywords": [
6
6
  "react-native",
7
7
  "react-navigation",
@@ -18,11 +18,11 @@
18
18
  "url": "https://github.com/react-navigation/react-navigation/issues"
19
19
  },
20
20
  "homepage": "https://reactnavigation.org",
21
- "source": "./src/index.tsx",
22
21
  "main": "./lib/module/index.js",
23
22
  "types": "./lib/typescript/src/index.d.ts",
24
23
  "exports": {
25
24
  ".": {
25
+ "source": "./src/index.tsx",
26
26
  "types": "./lib/typescript/src/index.d.ts",
27
27
  "default": "./lib/module/index.js"
28
28
  },
@@ -42,24 +42,25 @@
42
42
  "clean": "del lib"
43
43
  },
44
44
  "dependencies": {
45
- "color": "^4.2.3"
45
+ "color": "^4.2.3",
46
+ "use-latest-callback": "^0.2.4"
46
47
  },
47
48
  "devDependencies": {
48
- "@jest/globals": "^29.7.0",
49
+ "@jest/globals": "^30.0.0",
49
50
  "@react-native-masked-view/masked-view": "0.3.2",
50
- "@react-navigation/native": "^7.1.9",
51
+ "@react-navigation/native": "^7.1.11",
51
52
  "@testing-library/react-native": "^13.2.0",
52
53
  "@types/react": "~19.0.10",
53
54
  "del-cli": "^6.0.0",
54
55
  "react": "19.0.0",
55
- "react-native": "0.79.2",
56
- "react-native-builder-bob": "^0.40.9",
56
+ "react-native": "0.79.3",
57
+ "react-native-builder-bob": "^0.40.12",
57
58
  "react-test-renderer": "19.0.0",
58
59
  "typescript": "^5.8.3"
59
60
  },
60
61
  "peerDependencies": {
61
62
  "@react-native-masked-view/masked-view": ">= 0.2.0",
62
- "@react-navigation/native": "^7.1.9",
63
+ "@react-navigation/native": "^7.1.11",
63
64
  "react": ">= 18.2.0",
64
65
  "react-native": "*",
65
66
  "react-native-safe-area-context": ">= 4.0.0"
@@ -87,5 +88,5 @@
87
88
  ]
88
89
  ]
89
90
  },
90
- "gitHead": "9805f3b244eab19148a61bc888fc58e3d674cd2b"
91
+ "gitHead": "27560ad2fc55987654a2f9419a016225387e78fe"
91
92
  }
@@ -9,13 +9,11 @@ import {
9
9
  View,
10
10
  type ViewStyle,
11
11
  } from 'react-native';
12
- import {
13
- useSafeAreaFrame,
14
- useSafeAreaInsets,
15
- } from 'react-native-safe-area-context';
12
+ import { useSafeAreaInsets } from 'react-native-safe-area-context';
16
13
 
17
14
  import searchIcon from '../assets/search-icon.png';
18
15
  import type { HeaderOptions, Layout } from '../types';
16
+ import { useFrameSize } from '../useFrameSize';
19
17
  import { getDefaultHeaderHeight } from './getDefaultHeaderHeight';
20
18
  import { HeaderBackButton } from './HeaderBackButton';
21
19
  import { HeaderBackground } from './HeaderBackground';
@@ -74,7 +72,7 @@ const warnIfHeaderStylesDefined = (styles: Record<string, any>) => {
74
72
 
75
73
  export function Header(props: Props) {
76
74
  const insets = useSafeAreaInsets();
77
- const frame = useSafeAreaFrame();
75
+ const frame = useFrameSize((size) => size, true);
78
76
  const { colors } = useTheme();
79
77
 
80
78
  const navigation = useNavigation();
@@ -9,12 +9,12 @@ import {
9
9
  } from 'react-native';
10
10
  import {
11
11
  initialWindowMetrics,
12
- type Metrics,
13
- SafeAreaFrameContext,
14
12
  SafeAreaInsetsContext,
15
13
  SafeAreaProvider,
16
14
  } from 'react-native-safe-area-context';
17
15
 
16
+ import { FrameSizeProvider } from './useFrameSize';
17
+
18
18
  type Props = {
19
19
  children: React.ReactNode;
20
20
  style?: StyleProp<ViewStyle>;
@@ -36,6 +36,8 @@ const initialMetrics =
36
36
  export function SafeAreaProviderCompat({ children, style }: Props) {
37
37
  const insets = React.useContext(SafeAreaInsetsContext);
38
38
 
39
+ children = <FrameSizeProvider>{children}</FrameSizeProvider>;
40
+
39
41
  if (insets) {
40
42
  // If we already have insets, don't wrap the stack in another safe area provider
41
43
  // This avoids an issue with updates at the cost of potentially incorrect values
@@ -43,14 +45,6 @@ export function SafeAreaProviderCompat({ children, style }: Props) {
43
45
  return <View style={[styles.container, style]}>{children}</View>;
44
46
  }
45
47
 
46
- if (Platform.OS === 'web') {
47
- children = (
48
- <SafeAreaFrameProvider initialMetrics={initialMetrics}>
49
- {children}
50
- </SafeAreaFrameProvider>
51
- );
52
- }
53
-
54
48
  return (
55
49
  <SafeAreaProvider initialMetrics={initialMetrics} style={style}>
56
50
  {children}
@@ -58,72 +52,6 @@ export function SafeAreaProviderCompat({ children, style }: Props) {
58
52
  );
59
53
  }
60
54
 
61
- // FIXME: On the Web, the safe area frame value doesn't update on resize
62
- // So we workaround this by measuring the frame on resize
63
- const SafeAreaFrameProvider = ({
64
- initialMetrics,
65
- children,
66
- }: {
67
- initialMetrics: Metrics;
68
- children: React.ReactNode;
69
- }) => {
70
- const element = React.useRef<HTMLDivElement>(null);
71
- const [frame, setFrame] = React.useState(initialMetrics.frame);
72
-
73
- React.useEffect(() => {
74
- if (element.current == null) {
75
- return;
76
- }
77
-
78
- const rect = element.current.getBoundingClientRect();
79
-
80
- // eslint-disable-next-line @eslint-react/hooks-extra/no-direct-set-state-in-use-effect
81
- setFrame({
82
- x: rect.x,
83
- y: rect.y,
84
- width: rect.width,
85
- height: rect.height,
86
- });
87
-
88
- let timeout: ReturnType<typeof setTimeout>;
89
-
90
- const observer = new ResizeObserver((entries) => {
91
- const entry = entries[0];
92
-
93
- if (entry) {
94
- const { x, y, width, height } = entry.contentRect;
95
-
96
- // Debounce the frame updates to avoid too many updates in a short time
97
- clearTimeout(timeout);
98
- timeout = setTimeout(() => {
99
- setFrame({ x, y, width, height });
100
- }, 100);
101
- }
102
- });
103
-
104
- observer.observe(element.current);
105
-
106
- return () => {
107
- observer.disconnect();
108
- clearTimeout(timeout);
109
- };
110
- }, []);
111
-
112
- return (
113
- <SafeAreaFrameContext.Provider value={frame}>
114
- <div
115
- ref={element}
116
- style={{
117
- ...StyleSheet.absoluteFillObject,
118
- pointerEvents: 'none',
119
- visibility: 'hidden',
120
- }}
121
- />
122
- {children}
123
- </SafeAreaFrameContext.Provider>
124
- );
125
- };
126
-
127
55
  SafeAreaProviderCompat.initialMetrics = initialMetrics;
128
56
 
129
57
  const styles = StyleSheet.create({
package/src/Screen.tsx CHANGED
@@ -13,15 +13,13 @@ import {
13
13
  View,
14
14
  type ViewStyle,
15
15
  } from 'react-native';
16
- import {
17
- useSafeAreaFrame,
18
- useSafeAreaInsets,
19
- } from 'react-native-safe-area-context';
16
+ import { useSafeAreaInsets } from 'react-native-safe-area-context';
20
17
 
21
18
  import { Background } from './Background';
22
19
  import { getDefaultHeaderHeight } from './Header/getDefaultHeaderHeight';
23
20
  import { HeaderHeightContext } from './Header/HeaderHeightContext';
24
21
  import { HeaderShownContext } from './Header/HeaderShownContext';
22
+ import { useFrameSize } from './useFrameSize';
25
23
 
26
24
  type Props = {
27
25
  focused: boolean;
@@ -37,7 +35,6 @@ type Props = {
37
35
  };
38
36
 
39
37
  export function Screen(props: Props) {
40
- const dimensions = useSafeAreaFrame();
41
38
  const insets = useSafeAreaInsets();
42
39
 
43
40
  const isParentHeaderShown = React.useContext(HeaderShownContext);
@@ -56,10 +53,12 @@ export function Screen(props: Props) {
56
53
  style,
57
54
  } = props;
58
55
 
59
- const [headerHeight, setHeaderHeight] = React.useState(() =>
60
- getDefaultHeaderHeight(dimensions, modal, headerStatusBarHeight)
56
+ const defaultHeaderHeight = useFrameSize((size) =>
57
+ getDefaultHeaderHeight(size, modal, headerStatusBarHeight)
61
58
  );
62
59
 
60
+ const [headerHeight, setHeaderHeight] = React.useState(defaultHeaderHeight);
61
+
63
62
  return (
64
63
  <Background
65
64
  aria-hidden={!focused}
@@ -3,7 +3,6 @@ import * as React from 'react';
3
3
  const contexts = '__react_navigation__elements_contexts';
4
4
 
5
5
  declare global {
6
- // eslint-disable-next-line no-var
7
6
  var __react_navigation__elements_contexts: Map<string, React.Context<any>>;
8
7
  }
9
8
 
package/src/index.tsx CHANGED
@@ -26,6 +26,7 @@ export { ResourceSavingView } from './ResourceSavingView';
26
26
  export { SafeAreaProviderCompat } from './SafeAreaProviderCompat';
27
27
  export { Screen } from './Screen';
28
28
  export { Text } from './Text';
29
+ export { useFrameSize } from './useFrameSize';
29
30
 
30
31
  export const Assets = [
31
32
  backIcon,
@@ -0,0 +1,198 @@
1
+ import * as React from 'react';
2
+ import { Dimensions, Platform, StyleSheet } from 'react-native';
3
+ // eslint-disable-next-line no-restricted-imports
4
+ import { useSafeAreaFrame } from 'react-native-safe-area-context';
5
+ import useLatestCallback from 'use-latest-callback';
6
+
7
+ type Size = {
8
+ width: number;
9
+ height: number;
10
+ };
11
+
12
+ type Listener = (size: Size) => void;
13
+
14
+ type RemoveListener = () => void;
15
+
16
+ type FrameContextType = {
17
+ getCurrent: () => Size;
18
+ subscribe: (listener: Listener, debounce?: boolean) => RemoveListener;
19
+ subscribeDebounced: (listener: Listener) => RemoveListener;
20
+ };
21
+
22
+ const FrameContext = React.createContext<FrameContextType | undefined>(
23
+ undefined
24
+ );
25
+
26
+ export function useFrameSize<T>(
27
+ selector: (size: Size) => T,
28
+ debounce?: boolean
29
+ ): T {
30
+ const context = React.useContext(FrameContext);
31
+
32
+ if (context == null) {
33
+ throw new Error('useFrameSize must be used within a FrameSizeProvider');
34
+ }
35
+
36
+ const value = React.useSyncExternalStore(
37
+ debounce ? context.subscribeDebounced : context.subscribe,
38
+ () => selector(context.getCurrent()),
39
+ () => selector(context.getCurrent())
40
+ );
41
+
42
+ return value;
43
+ }
44
+
45
+ export function FrameSizeProvider({ children }: { children: React.ReactNode }) {
46
+ const context = React.useContext(FrameContext);
47
+
48
+ if (context != null) {
49
+ // If the context is already present, don't wrap again
50
+ return children;
51
+ }
52
+
53
+ return <FrameSizeProviderInner>{children}</FrameSizeProviderInner>;
54
+ }
55
+
56
+ function FrameSizeProviderInner({
57
+ children,
58
+ }: {
59
+ children: React.ReactNode;
60
+ }): React.JSX.Element {
61
+ const listeners = React.useRef<Set<Listener>>(new Set());
62
+
63
+ const { element, get } = useResizeListener((size) => {
64
+ listeners.current.forEach((listener) => listener(size));
65
+ });
66
+
67
+ const getCurrent = useLatestCallback(get);
68
+
69
+ const subscribe = useLatestCallback((listener: Listener): RemoveListener => {
70
+ listeners.current.add(listener);
71
+
72
+ return () => {
73
+ listeners.current.delete(listener);
74
+ };
75
+ });
76
+
77
+ const subscribeDebounced = useLatestCallback(
78
+ (listener: Listener): RemoveListener => {
79
+ let timer: ReturnType<typeof setTimeout>;
80
+
81
+ const debouncedListener = (size: Size) => {
82
+ clearTimeout(timer);
83
+ timer = setTimeout(() => {
84
+ listener(size);
85
+ }, 100);
86
+ };
87
+
88
+ listeners.current.add(debouncedListener);
89
+
90
+ return () => {
91
+ clearTimeout(timer);
92
+ listeners.current.delete(debouncedListener);
93
+ };
94
+ }
95
+ );
96
+
97
+ const context = React.useMemo<FrameContextType>(
98
+ () => ({
99
+ getCurrent,
100
+ subscribe,
101
+ subscribeDebounced,
102
+ }),
103
+ [subscribe, subscribeDebounced, getCurrent]
104
+ );
105
+
106
+ return (
107
+ <FrameContext.Provider value={context}>
108
+ {element}
109
+ {children}
110
+ </FrameContext.Provider>
111
+ );
112
+ }
113
+
114
+ const useResizeListener =
115
+ Platform.OS === 'web' ? useResizeListenerWeb : useResizeListenerNative;
116
+
117
+ function useResizeListenerNative(onChange: (size: Size) => void) {
118
+ const frame = useSafeAreaFrame();
119
+
120
+ React.useLayoutEffect(() => {
121
+ onChange(frame);
122
+ }, [frame, onChange]);
123
+
124
+ return {
125
+ element: null,
126
+ get: () => frame,
127
+ };
128
+ }
129
+
130
+ const { width = 0, height = 0 } = Dimensions.get('window');
131
+
132
+ // FIXME: On the Web, the safe area frame value doesn't update on resize
133
+ // So we workaround this by measuring the frame on resize
134
+ function useResizeListenerWeb(onChange: (size: Size) => void) {
135
+ const frameRef = React.useRef<Size>({
136
+ width,
137
+ height,
138
+ });
139
+
140
+ const elementRef = React.useRef<HTMLDivElement>(null);
141
+
142
+ React.useEffect(() => {
143
+ if (elementRef.current == null) {
144
+ return;
145
+ }
146
+
147
+ const update = (size: Size) => {
148
+ if (
149
+ frameRef.current.width === size.width &&
150
+ frameRef.current.height === size.height
151
+ ) {
152
+ return;
153
+ }
154
+
155
+ frameRef.current = size;
156
+ onChange(size);
157
+ };
158
+
159
+ const rect = elementRef.current.getBoundingClientRect();
160
+
161
+ update({
162
+ width: rect.width,
163
+ height: rect.height,
164
+ });
165
+
166
+ const observer = new ResizeObserver((entries) => {
167
+ const entry = entries[0];
168
+
169
+ if (entry) {
170
+ const { width, height } = entry.contentRect;
171
+
172
+ update({ width, height });
173
+ }
174
+ });
175
+
176
+ observer.observe(elementRef.current);
177
+
178
+ return () => {
179
+ observer.disconnect();
180
+ };
181
+ }, [onChange]);
182
+
183
+ const element = (
184
+ <div
185
+ ref={elementRef}
186
+ style={{
187
+ ...StyleSheet.absoluteFillObject,
188
+ pointerEvents: 'none',
189
+ visibility: 'hidden',
190
+ }}
191
+ />
192
+ );
193
+
194
+ return {
195
+ element,
196
+ get: () => frameRef.current,
197
+ };
198
+ }