@react-navigation/elements 2.4.3 → 2.4.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/module/Header/Header.js +3 -2
- package/lib/module/Header/Header.js.map +1 -1
- package/lib/module/SafeAreaProviderCompat.js +6 -71
- package/lib/module/SafeAreaProviderCompat.js.map +1 -1
- package/lib/module/Screen.js +4 -3
- package/lib/module/Screen.js.map +1 -1
- package/lib/module/getNamedContext.js.map +1 -1
- package/lib/module/index.js +1 -0
- package/lib/module/index.js.map +1 -1
- package/lib/module/useFrameSize.js +142 -0
- package/lib/module/useFrameSize.js.map +1 -0
- package/lib/typescript/src/Header/Header.d.ts.map +1 -1
- package/lib/typescript/src/SafeAreaProviderCompat.d.ts +1 -2
- package/lib/typescript/src/SafeAreaProviderCompat.d.ts.map +1 -1
- package/lib/typescript/src/Screen.d.ts.map +1 -1
- package/lib/typescript/src/getNamedContext.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +1 -0
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/useFrameSize.d.ts +11 -0
- package/lib/typescript/src/useFrameSize.d.ts.map +1 -0
- package/package.json +10 -9
- package/src/Header/Header.tsx +3 -5
- package/src/SafeAreaProviderCompat.tsx +4 -76
- package/src/Screen.tsx +6 -7
- package/src/getNamedContext.tsx +0 -1
- package/src/index.tsx +1 -0
- package/src/useFrameSize.tsx +198 -0
|
@@ -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 {
|
|
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 =
|
|
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,
|
|
6
|
-
import {
|
|
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","
|
|
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":[]}
|
package/lib/module/Screen.js
CHANGED
|
@@ -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 {
|
|
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
|
|
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]
|
package/lib/module/Screen.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["NavigationContext","NavigationRouteContext","React","StyleSheet","View","
|
|
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":";;AAAA,SACEA,iBAAiB,EAEjBC,sBAAsB,QAGjB,0BAA0B;AACjC,OAAO,KAAKC,KAAK,MAAM,OAAO;AAC9B,SAGEC,UAAU,EACVC,IAAI,QAEC,cAAc;AACrB,SAASC,iBAAiB,QAAQ,gCAAgC;AAElE,SAASC,UAAU,QAAQ,iBAAc;AACzC,SAASC,sBAAsB,QAAQ,oCAAiC;AACxE,SAASC,mBAAmB,QAAQ,iCAA8B;AAClE,SAASC,kBAAkB,QAAQ,gCAA6B;AAChE,SAASC,YAAY,QAAQ,mBAAgB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAe9C,OAAO,SAASC,MAAMA,CAACC,KAAY,EAAE;EACnC,MAAMC,MAAM,GAAGZ,iBAAiB,CAAC,CAAC;EAElC,MAAMa,mBAAmB,GAAGhB,KAAK,CAACiB,UAAU,CAACV,kBAAkB,CAAC;EAChE,MAAMW,kBAAkB,GAAGlB,KAAK,CAACiB,UAAU,CAACX,mBAAmB,CAAC;EAEhE,MAAM;IACJa,OAAO;IACPC,KAAK,GAAG,KAAK;IACbC,MAAM;IACNC,WAAW,GAAG,IAAI;IAClBC,iBAAiB;IACjBC,qBAAqB,GAAGR,mBAAmB,GAAG,CAAC,GAAGD,MAAM,CAACU,GAAG;IAC5DC,UAAU;IACVC,KAAK;IACLC,QAAQ;IACRC;EACF,CAAC,GAAGf,KAAK;EAET,MAAMgB,mBAAmB,GAAGtB,YAAY,CAAEuB,IAAI,IAC5C1B,sBAAsB,CAAC0B,IAAI,EAAEX,KAAK,EAAEI,qBAAqB,CAC3D,CAAC;EAED,MAAM,CAACQ,YAAY,EAAEC,eAAe,CAAC,GAAGjC,KAAK,CAACkC,QAAQ,CAACJ,mBAAmB,CAAC;EAE3E,oBACElB,KAAA,CAACR,UAAU;IACT,eAAa,CAACe,OAAQ;IACtBU,KAAK,EAAE,CAACM,MAAM,CAACC,SAAS,EAAEP,KAAK;IAC/B;IACA;IAAA;IACAQ,WAAW,EAAE,KAAM;IAAAT,QAAA,GAElBN,WAAW,gBACVZ,IAAA,CAACZ,iBAAiB,CAACwC,QAAQ;MAACC,KAAK,EAAEb,UAAW;MAAAE,QAAA,eAC5ClB,IAAA,CAACX,sBAAsB,CAACuC,QAAQ;QAACC,KAAK,EAAEZ,KAAM;QAAAC,QAAA,eAC5ClB,IAAA,CAACR,IAAI;UACHsC,aAAa,EAAC,UAAU;UACxBC,QAAQ,EAAGC,CAAC,IAAK;YACf,MAAM;cAAEC;YAAO,CAAC,GAAGD,CAAC,CAACE,WAAW,CAACC,MAAM;YAEvCZ,eAAe,CAACU,MAAM,CAAC;UACzB,CAAE;UACFd,KAAK,EAAE,CACLM,MAAM,CAACd,MAAM,EACbE,iBAAiB,GAAGY,MAAM,CAACW,QAAQ,GAAG,IAAI,CAC1C;UAAAlB,QAAA,EAEDP;QAAM,CACH;MAAC,CACwB;IAAC,CACR,CAAC,GAC3B,IAAI,eACRX,IAAA,CAACR,IAAI;MAAC2B,KAAK,EAAEM,MAAM,CAACY,OAAQ;MAAAnB,QAAA,eAC1BlB,IAAA,CAACH,kBAAkB,CAAC+B,QAAQ;QAC1BC,KAAK,EAAEvB,mBAAmB,IAAIM,WAAW,KAAK,KAAM;QAAAM,QAAA,eAEpDlB,IAAA,CAACJ,mBAAmB,CAACgC,QAAQ;UAC3BC,KAAK,EAAEjB,WAAW,GAAGU,YAAY,GAAId,kBAAkB,IAAI,CAAG;UAAAU,QAAA,EAE7DA;QAAQ,CACmB;MAAC,CACJ;IAAC,CAC1B,CAAC;EAAA,CACG,CAAC;AAEjB;AAEA,MAAMO,MAAM,GAAGlC,UAAU,CAAC+C,MAAM,CAAC;EAC/BZ,SAAS,EAAE;IACTa,IAAI,EAAE;EACR,CAAC;EACDF,OAAO,EAAE;IACPE,IAAI,EAAE;EACR,CAAC;EACD5B,MAAM,EAAE;IACN6B,MAAM,EAAE;EACV,CAAC;EACDJ,QAAQ,EAAE;IACRK,QAAQ,EAAE,UAAU;IACpB1B,GAAG,EAAE,CAAC;IACN2B,KAAK,EAAE,CAAC;IACRC,GAAG,EAAE;EACP;AACF,CAAC,CAAC","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;
|
|
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":[]}
|
package/lib/module/index.js
CHANGED
|
@@ -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
|
package/lib/module/index.js.map
CHANGED
|
@@ -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;
|
|
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":"
|
|
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;
|
|
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;
|
|
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;
|
|
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;
|
|
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.
|
|
4
|
+
"version": "2.4.5",
|
|
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": "^
|
|
49
|
+
"@jest/globals": "^30.0.0",
|
|
49
50
|
"@react-native-masked-view/masked-view": "0.3.2",
|
|
50
|
-
"@react-navigation/native": "^7.1.
|
|
51
|
+
"@react-navigation/native": "^7.1.12",
|
|
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.
|
|
56
|
-
"react-native-builder-bob": "^0.40.
|
|
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.
|
|
63
|
+
"@react-navigation/native": "^7.1.12",
|
|
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": "
|
|
91
|
+
"gitHead": "a4fc85ea5ddadd6320b634c0ef1f1acc9893e77e"
|
|
91
92
|
}
|
package/src/Header/Header.tsx
CHANGED
|
@@ -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 =
|
|
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
|
|
60
|
-
getDefaultHeaderHeight(
|
|
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}
|
package/src/getNamedContext.tsx
CHANGED
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
|
+
}
|