@amazon-devices/react-navigation__react-native-tab-view 2.0.1758683737
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/LICENSE +7 -0
- package/README.md +649 -0
- package/SystemBundles/c5889b273a6efc2a3c30241851055c37630fbf3381df86d403967369775f0536.bundle +14497 -0
- package/SystemBundles/c5889b273a6efc2a3c30241851055c37630fbf3381df86d403967369775f0536.map +1 -0
- package/SystemModules/amzn__react-navigation__react-native-tab-view-2.modules.txt +41 -0
- package/SystemModules/amzn__react-navigation__react-native-tab-view-2.private.modules.txt +98 -0
- package/SystemModules/keplerscript-system-bundle-config.json +7 -0
- package/THIRD_PARTY_NOTICES.txt +24 -0
- package/kepler-compatibility.json +8 -0
- package/kepler-transformed-package-info.json +3 -0
- package/lib/commonjs/Pager.android.js +14 -0
- package/lib/commonjs/Pager.android.js.map +1 -0
- package/lib/commonjs/Pager.ios.js +14 -0
- package/lib/commonjs/Pager.ios.js.map +1 -0
- package/lib/commonjs/Pager.js +14 -0
- package/lib/commonjs/Pager.js.map +1 -0
- package/lib/commonjs/PagerViewAdapter.js +132 -0
- package/lib/commonjs/PagerViewAdapter.js.map +1 -0
- package/lib/commonjs/PanResponderAdapter.js +204 -0
- package/lib/commonjs/PanResponderAdapter.js.map +1 -0
- package/lib/commonjs/PlatformPressable.js +43 -0
- package/lib/commonjs/PlatformPressable.js.map +1 -0
- package/lib/commonjs/SceneMap.js +29 -0
- package/lib/commonjs/SceneMap.js.map +1 -0
- package/lib/commonjs/SceneView.js +78 -0
- package/lib/commonjs/SceneView.js.map +1 -0
- package/lib/commonjs/TabBar.js +405 -0
- package/lib/commonjs/TabBar.js.map +1 -0
- package/lib/commonjs/TabBarIndicator.js +110 -0
- package/lib/commonjs/TabBarIndicator.js.map +1 -0
- package/lib/commonjs/TabBarItem.js +227 -0
- package/lib/commonjs/TabBarItem.js.map +1 -0
- package/lib/commonjs/TabView.js +122 -0
- package/lib/commonjs/TabView.js.map +1 -0
- package/lib/commonjs/index.js +42 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/types.js +6 -0
- package/lib/commonjs/types.js.map +1 -0
- package/lib/commonjs/useAnimatedValue.js +18 -0
- package/lib/commonjs/useAnimatedValue.js.map +1 -0
- package/lib/module/Pager.android.js +2 -0
- package/lib/module/Pager.android.js.map +1 -0
- package/lib/module/Pager.ios.js +2 -0
- package/lib/module/Pager.ios.js.map +1 -0
- package/lib/module/Pager.js +2 -0
- package/lib/module/Pager.js.map +1 -0
- package/lib/module/PagerViewAdapter.js +123 -0
- package/lib/module/PagerViewAdapter.js.map +1 -0
- package/lib/module/PanResponderAdapter.js +195 -0
- package/lib/module/PanResponderAdapter.js.map +1 -0
- package/lib/module/PlatformPressable.js +35 -0
- package/lib/module/PlatformPressable.js.map +1 -0
- package/lib/module/SceneMap.js +21 -0
- package/lib/module/SceneMap.js.map +1 -0
- package/lib/module/SceneView.js +70 -0
- package/lib/module/SceneView.js.map +1 -0
- package/lib/module/TabBar.js +396 -0
- package/lib/module/TabBar.js.map +1 -0
- package/lib/module/TabBarIndicator.js +101 -0
- package/lib/module/TabBarIndicator.js.map +1 -0
- package/lib/module/TabBarItem.js +218 -0
- package/lib/module/TabBarItem.js.map +1 -0
- package/lib/module/TabView.js +113 -0
- package/lib/module/TabView.js.map +1 -0
- package/lib/module/index.js +6 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/types.js +2 -0
- package/lib/module/types.js.map +1 -0
- package/lib/module/useAnimatedValue.js +10 -0
- package/lib/module/useAnimatedValue.js.map +1 -0
- package/lib/typescript/src/Pager.android.d.ts +2 -0
- package/lib/typescript/src/Pager.android.d.ts.map +1 -0
- package/lib/typescript/src/Pager.d.ts +2 -0
- package/lib/typescript/src/Pager.d.ts.map +1 -0
- package/lib/typescript/src/Pager.ios.d.ts +2 -0
- package/lib/typescript/src/Pager.ios.d.ts.map +1 -0
- package/lib/typescript/src/PagerViewAdapter.d.ts +15 -0
- package/lib/typescript/src/PagerViewAdapter.d.ts.map +1 -0
- package/lib/typescript/src/PanResponderAdapter.d.ts +16 -0
- package/lib/typescript/src/PanResponderAdapter.d.ts.map +1 -0
- package/lib/typescript/src/PlatformPressable.d.ts +16 -0
- package/lib/typescript/src/PlatformPressable.d.ts.map +1 -0
- package/lib/typescript/src/SceneMap.d.ts +10 -0
- package/lib/typescript/src/SceneMap.d.ts.map +1 -0
- package/lib/typescript/src/SceneView.d.ts +16 -0
- package/lib/typescript/src/SceneView.d.ts.map +1 -0
- package/lib/typescript/src/TabBar.d.ts +44 -0
- package/lib/typescript/src/TabBar.d.ts.map +1 -0
- package/lib/typescript/src/TabBarIndicator.d.ts +13 -0
- package/lib/typescript/src/TabBarIndicator.d.ts.map +1 -0
- package/lib/typescript/src/TabBarItem.d.ts +37 -0
- package/lib/typescript/src/TabBarItem.d.ts.map +1 -0
- package/lib/typescript/src/TabView.d.ts +27 -0
- package/lib/typescript/src/TabView.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +11 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/types.d.ts +42 -0
- package/lib/typescript/src/types.d.ts.map +1 -0
- package/lib/typescript/src/useAnimatedValue.d.ts +3 -0
- package/lib/typescript/src/useAnimatedValue.d.ts.map +1 -0
- package/package.json +1 -0
- package/src/Pager.android.tsx +1 -0
- package/src/Pager.ios.tsx +1 -0
- package/src/Pager.tsx +1 -0
- package/src/PagerViewAdapter.tsx +180 -0
- package/src/PanResponderAdapter.tsx +340 -0
- package/src/PlatformPressable.tsx +42 -0
- package/src/SceneMap.tsx +30 -0
- package/src/SceneView.tsx +107 -0
- package/src/TabBar.tsx +639 -0
- package/src/TabBarIndicator.tsx +153 -0
- package/src/TabBarItem.tsx +319 -0
- package/src/TabView.tsx +155 -0
- package/src/index.tsx +10 -0
- package/src/types.tsx +59 -0
- package/src/useAnimatedValue.tsx +12 -0
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { Animated, Keyboard, StyleSheet } from 'react-native';
|
|
4
|
+
import ViewPager from 'react-native-pager-view';
|
|
5
|
+
import useAnimatedValue from './useAnimatedValue';
|
|
6
|
+
const AnimatedViewPager = Animated.createAnimatedComponent(ViewPager);
|
|
7
|
+
export default function PagerViewAdapter({
|
|
8
|
+
keyboardDismissMode = 'auto',
|
|
9
|
+
swipeEnabled = true,
|
|
10
|
+
navigationState,
|
|
11
|
+
onIndexChange,
|
|
12
|
+
onSwipeStart,
|
|
13
|
+
onSwipeEnd,
|
|
14
|
+
children,
|
|
15
|
+
style,
|
|
16
|
+
animationEnabled,
|
|
17
|
+
...rest
|
|
18
|
+
}) {
|
|
19
|
+
const {
|
|
20
|
+
index
|
|
21
|
+
} = navigationState;
|
|
22
|
+
const listenersRef = React.useRef([]);
|
|
23
|
+
const pagerRef = React.useRef(null);
|
|
24
|
+
const indexRef = React.useRef(index);
|
|
25
|
+
const navigationStateRef = React.useRef(navigationState);
|
|
26
|
+
const position = useAnimatedValue(index);
|
|
27
|
+
const offset = useAnimatedValue(0);
|
|
28
|
+
React.useEffect(() => {
|
|
29
|
+
navigationStateRef.current = navigationState;
|
|
30
|
+
});
|
|
31
|
+
const jumpTo = React.useCallback(key => {
|
|
32
|
+
const index = navigationStateRef.current.routes.findIndex(route => route.key === key);
|
|
33
|
+
if (animationEnabled) {
|
|
34
|
+
var _pagerRef$current;
|
|
35
|
+
(_pagerRef$current = pagerRef.current) === null || _pagerRef$current === void 0 || _pagerRef$current.setPage(index);
|
|
36
|
+
} else {
|
|
37
|
+
var _pagerRef$current2;
|
|
38
|
+
(_pagerRef$current2 = pagerRef.current) === null || _pagerRef$current2 === void 0 || _pagerRef$current2.setPageWithoutAnimation(index);
|
|
39
|
+
position.setValue(index);
|
|
40
|
+
}
|
|
41
|
+
}, [animationEnabled, position]);
|
|
42
|
+
React.useEffect(() => {
|
|
43
|
+
if (keyboardDismissMode === 'auto') {
|
|
44
|
+
Keyboard.dismiss();
|
|
45
|
+
}
|
|
46
|
+
if (indexRef.current !== index) {
|
|
47
|
+
if (animationEnabled) {
|
|
48
|
+
var _pagerRef$current3;
|
|
49
|
+
(_pagerRef$current3 = pagerRef.current) === null || _pagerRef$current3 === void 0 || _pagerRef$current3.setPage(index);
|
|
50
|
+
} else {
|
|
51
|
+
var _pagerRef$current4;
|
|
52
|
+
(_pagerRef$current4 = pagerRef.current) === null || _pagerRef$current4 === void 0 || _pagerRef$current4.setPageWithoutAnimation(index);
|
|
53
|
+
position.setValue(index);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
}, [keyboardDismissMode, index, animationEnabled, position]);
|
|
57
|
+
const onPageScrollStateChanged = state => {
|
|
58
|
+
const {
|
|
59
|
+
pageScrollState
|
|
60
|
+
} = state.nativeEvent;
|
|
61
|
+
switch (pageScrollState) {
|
|
62
|
+
case 'idle':
|
|
63
|
+
onSwipeEnd === null || onSwipeEnd === void 0 || onSwipeEnd();
|
|
64
|
+
return;
|
|
65
|
+
case 'dragging':
|
|
66
|
+
{
|
|
67
|
+
const subscription = offset.addListener(({
|
|
68
|
+
value
|
|
69
|
+
}) => {
|
|
70
|
+
const next = index + (value > 0 ? Math.ceil(value) : Math.floor(value));
|
|
71
|
+
if (next !== index) {
|
|
72
|
+
listenersRef.current.forEach(listener => listener(next));
|
|
73
|
+
}
|
|
74
|
+
offset.removeListener(subscription);
|
|
75
|
+
});
|
|
76
|
+
onSwipeStart === null || onSwipeStart === void 0 || onSwipeStart();
|
|
77
|
+
return;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
};
|
|
81
|
+
const addEnterListener = React.useCallback(listener => {
|
|
82
|
+
listenersRef.current.push(listener);
|
|
83
|
+
return () => {
|
|
84
|
+
const index = listenersRef.current.indexOf(listener);
|
|
85
|
+
if (index > -1) {
|
|
86
|
+
listenersRef.current.splice(index, 1);
|
|
87
|
+
}
|
|
88
|
+
};
|
|
89
|
+
}, []);
|
|
90
|
+
const memoizedPosition = React.useMemo(() => Animated.add(position, offset), [offset, position]);
|
|
91
|
+
return children({
|
|
92
|
+
position: memoizedPosition,
|
|
93
|
+
addEnterListener,
|
|
94
|
+
jumpTo,
|
|
95
|
+
render: children => /*#__PURE__*/React.createElement(AnimatedViewPager, _extends({}, rest, {
|
|
96
|
+
ref: pagerRef,
|
|
97
|
+
style: [styles.container, style],
|
|
98
|
+
initialPage: index,
|
|
99
|
+
keyboardDismissMode: keyboardDismissMode === 'auto' ? 'on-drag' : keyboardDismissMode,
|
|
100
|
+
onPageScroll: Animated.event([{
|
|
101
|
+
nativeEvent: {
|
|
102
|
+
position: position,
|
|
103
|
+
offset: offset
|
|
104
|
+
}
|
|
105
|
+
}], {
|
|
106
|
+
useNativeDriver: true
|
|
107
|
+
}),
|
|
108
|
+
onPageSelected: e => {
|
|
109
|
+
const index = e.nativeEvent.position;
|
|
110
|
+
indexRef.current = index;
|
|
111
|
+
onIndexChange(index);
|
|
112
|
+
},
|
|
113
|
+
onPageScrollStateChanged: onPageScrollStateChanged,
|
|
114
|
+
scrollEnabled: swipeEnabled
|
|
115
|
+
}), children)
|
|
116
|
+
});
|
|
117
|
+
}
|
|
118
|
+
const styles = StyleSheet.create({
|
|
119
|
+
container: {
|
|
120
|
+
flex: 1
|
|
121
|
+
}
|
|
122
|
+
});
|
|
123
|
+
//# sourceMappingURL=PagerViewAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","Animated","Keyboard","StyleSheet","ViewPager","useAnimatedValue","AnimatedViewPager","createAnimatedComponent","PagerViewAdapter","keyboardDismissMode","swipeEnabled","navigationState","onIndexChange","onSwipeStart","onSwipeEnd","children","style","animationEnabled","rest","index","listenersRef","useRef","pagerRef","indexRef","navigationStateRef","position","offset","useEffect","current","jumpTo","useCallback","key","routes","findIndex","route","_pagerRef$current","setPage","_pagerRef$current2","setPageWithoutAnimation","setValue","dismiss","_pagerRef$current3","_pagerRef$current4","onPageScrollStateChanged","state","pageScrollState","nativeEvent","subscription","addListener","value","next","Math","ceil","floor","forEach","listener","removeListener","addEnterListener","push","indexOf","splice","memoizedPosition","useMemo","add","render","createElement","_extends","ref","styles","container","initialPage","onPageScroll","event","useNativeDriver","onPageSelected","e","scrollEnabled","create","flex"],"sourceRoot":"../../src","sources":["PagerViewAdapter.tsx"],"mappings":";AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,QAAQ,EAAEC,QAAQ,EAAEC,UAAU,QAAQ,cAAc;AAC7D,OAAOC,SAAS,MAET,yBAAyB;AAShC,OAAOC,gBAAgB,MAAM,oBAAoB;AAEjD,MAAMC,iBAAiB,GAAGL,QAAQ,CAACM,uBAAuB,CAACH,SAAS,CAAC;AAoBrE,eAAe,SAASI,gBAAgBA,CAAkB;EACxDC,mBAAmB,GAAG,MAAM;EAC5BC,YAAY,GAAG,IAAI;EACnBC,eAAe;EACfC,aAAa;EACbC,YAAY;EACZC,UAAU;EACVC,QAAQ;EACRC,KAAK;EACLC,gBAAgB;EAChB,GAAGC;AACK,CAAC,EAAE;EACX,MAAM;IAAEC;EAAM,CAAC,GAAGR,eAAe;EAEjC,MAAMS,YAAY,GAAGpB,KAAK,CAACqB,MAAM,CAAa,EAAE,CAAC;EAEjD,MAAMC,QAAQ,GAAGtB,KAAK,CAACqB,MAAM,CAAY,IAAI,CAAC;EAC9C,MAAME,QAAQ,GAAGvB,KAAK,CAACqB,MAAM,CAASF,KAAK,CAAC;EAC5C,MAAMK,kBAAkB,GAAGxB,KAAK,CAACqB,MAAM,CAACV,eAAe,CAAC;EAExD,MAAMc,QAAQ,GAAGpB,gBAAgB,CAACc,KAAK,CAAC;EACxC,MAAMO,MAAM,GAAGrB,gBAAgB,CAAC,CAAC,CAAC;EAElCL,KAAK,CAAC2B,SAAS,CAAC,MAAM;IACpBH,kBAAkB,CAACI,OAAO,GAAGjB,eAAe;EAC9C,CAAC,CAAC;EAEF,MAAMkB,MAAM,GAAG7B,KAAK,CAAC8B,WAAW,CAC7BC,GAAW,IAAK;IACf,MAAMZ,KAAK,GAAGK,kBAAkB,CAACI,OAAO,CAACI,MAAM,CAACC,SAAS,CACtDC,KAAsB,IAAKA,KAAK,CAACH,GAAG,KAAKA,GAC5C,CAAC;IAED,IAAId,gBAAgB,EAAE;MAAA,IAAAkB,iBAAA;MACpB,CAAAA,iBAAA,GAAAb,QAAQ,CAACM,OAAO,cAAAO,iBAAA,eAAhBA,iBAAA,CAAkBC,OAAO,CAACjB,KAAK,CAAC;IAClC,CAAC,MAAM;MAAA,IAAAkB,kBAAA;MACL,CAAAA,kBAAA,GAAAf,QAAQ,CAACM,OAAO,cAAAS,kBAAA,eAAhBA,kBAAA,CAAkBC,uBAAuB,CAACnB,KAAK,CAAC;MAChDM,QAAQ,CAACc,QAAQ,CAACpB,KAAK,CAAC;IAC1B;EACF,CAAC,EACD,CAACF,gBAAgB,EAAEQ,QAAQ,CAC7B,CAAC;EAEDzB,KAAK,CAAC2B,SAAS,CAAC,MAAM;IACpB,IAAIlB,mBAAmB,KAAK,MAAM,EAAE;MAClCP,QAAQ,CAACsC,OAAO,CAAC,CAAC;IACpB;IAEA,IAAIjB,QAAQ,CAACK,OAAO,KAAKT,KAAK,EAAE;MAC9B,IAAIF,gBAAgB,EAAE;QAAA,IAAAwB,kBAAA;QACpB,CAAAA,kBAAA,GAAAnB,QAAQ,CAACM,OAAO,cAAAa,kBAAA,eAAhBA,kBAAA,CAAkBL,OAAO,CAACjB,KAAK,CAAC;MAClC,CAAC,MAAM;QAAA,IAAAuB,kBAAA;QACL,CAAAA,kBAAA,GAAApB,QAAQ,CAACM,OAAO,cAAAc,kBAAA,eAAhBA,kBAAA,CAAkBJ,uBAAuB,CAACnB,KAAK,CAAC;QAChDM,QAAQ,CAACc,QAAQ,CAACpB,KAAK,CAAC;MAC1B;IACF;EACF,CAAC,EAAE,CAACV,mBAAmB,EAAEU,KAAK,EAAEF,gBAAgB,EAAEQ,QAAQ,CAAC,CAAC;EAE5D,MAAMkB,wBAAwB,GAC5BC,KAAwC,IACrC;IACH,MAAM;MAAEC;IAAgB,CAAC,GAAGD,KAAK,CAACE,WAAW;IAE7C,QAAQD,eAAe;MACrB,KAAK,MAAM;QACT/B,UAAU,aAAVA,UAAU,eAAVA,UAAU,CAAG,CAAC;QACd;MACF,KAAK,UAAU;QAAE;UACf,MAAMiC,YAAY,GAAGrB,MAAM,CAACsB,WAAW,CAAC,CAAC;YAAEC;UAAM,CAAC,KAAK;YACrD,MAAMC,IAAI,GACR/B,KAAK,IAAI8B,KAAK,GAAG,CAAC,GAAGE,IAAI,CAACC,IAAI,CAACH,KAAK,CAAC,GAAGE,IAAI,CAACE,KAAK,CAACJ,KAAK,CAAC,CAAC;YAE5D,IAAIC,IAAI,KAAK/B,KAAK,EAAE;cAClBC,YAAY,CAACQ,OAAO,CAAC0B,OAAO,CAAEC,QAAQ,IAAKA,QAAQ,CAACL,IAAI,CAAC,CAAC;YAC5D;YAEAxB,MAAM,CAAC8B,cAAc,CAACT,YAAY,CAAC;UACrC,CAAC,CAAC;UAEFlC,YAAY,aAAZA,YAAY,eAAZA,YAAY,CAAG,CAAC;UAChB;QACF;IACF;EACF,CAAC;EAED,MAAM4C,gBAAgB,GAAGzD,KAAK,CAAC8B,WAAW,CAAEyB,QAAkB,IAAK;IACjEnC,YAAY,CAACQ,OAAO,CAAC8B,IAAI,CAACH,QAAQ,CAAC;IAEnC,OAAO,MAAM;MACX,MAAMpC,KAAK,GAAGC,YAAY,CAACQ,OAAO,CAAC+B,OAAO,CAACJ,QAAQ,CAAC;MAEpD,IAAIpC,KAAK,GAAG,CAAC,CAAC,EAAE;QACdC,YAAY,CAACQ,OAAO,CAACgC,MAAM,CAACzC,KAAK,EAAE,CAAC,CAAC;MACvC;IACF,CAAC;EACH,CAAC,EAAE,EAAE,CAAC;EAEN,MAAM0C,gBAAgB,GAAG7D,KAAK,CAAC8D,OAAO,CACpC,MAAM7D,QAAQ,CAAC8D,GAAG,CAACtC,QAAQ,EAAEC,MAAM,CAAC,EACpC,CAACA,MAAM,EAAED,QAAQ,CACnB,CAAC;EAED,OAAOV,QAAQ,CAAC;IACdU,QAAQ,EAAEoC,gBAAgB;IAC1BJ,gBAAgB;IAChB5B,MAAM;IACNmC,MAAM,EAAGjD,QAAQ,iBACff,KAAA,CAAAiE,aAAA,CAAC3D,iBAAiB,EAAA4D,QAAA,KACZhD,IAAI;MACRiD,GAAG,EAAE7C,QAAS;MACdN,KAAK,EAAE,CAACoD,MAAM,CAACC,SAAS,EAAErD,KAAK,CAAE;MACjCsD,WAAW,EAAEnD,KAAM;MACnBV,mBAAmB,EACjBA,mBAAmB,KAAK,MAAM,GAAG,SAAS,GAAGA,mBAC9C;MACD8D,YAAY,EAAEtE,QAAQ,CAACuE,KAAK,CAC1B,CACE;QACE1B,WAAW,EAAE;UACXrB,QAAQ,EAAEA,QAAQ;UAClBC,MAAM,EAAEA;QACV;MACF,CAAC,CACF,EACD;QAAE+C,eAAe,EAAE;MAAK,CAC1B,CAAE;MACFC,cAAc,EAAGC,CAAC,IAAK;QACrB,MAAMxD,KAAK,GAAGwD,CAAC,CAAC7B,WAAW,CAACrB,QAAQ;QACpCF,QAAQ,CAACK,OAAO,GAAGT,KAAK;QACxBP,aAAa,CAACO,KAAK,CAAC;MACtB,CAAE;MACFwB,wBAAwB,EAAEA,wBAAyB;MACnDiC,aAAa,EAAElE;IAAa,IAE3BK,QACgB;EAEvB,CAAC,CAAC;AACJ;AAEA,MAAMqD,MAAM,GAAGjE,UAAU,CAAC0E,MAAM,CAAC;EAC/BR,SAAS,EAAE;IACTS,IAAI,EAAE;EACR;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,195 @@
|
|
|
1
|
+
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { Animated, I18nManager, Keyboard, PanResponder, StyleSheet, View } from 'react-native';
|
|
4
|
+
import useAnimatedValue from './useAnimatedValue';
|
|
5
|
+
const DEAD_ZONE = 12;
|
|
6
|
+
const DefaultTransitionSpec = {
|
|
7
|
+
timing: Animated.spring,
|
|
8
|
+
stiffness: 1000,
|
|
9
|
+
damping: 500,
|
|
10
|
+
mass: 3,
|
|
11
|
+
overshootClamping: true
|
|
12
|
+
};
|
|
13
|
+
export default function PanResponderAdapter({
|
|
14
|
+
layout,
|
|
15
|
+
keyboardDismissMode = 'auto',
|
|
16
|
+
swipeEnabled = true,
|
|
17
|
+
navigationState,
|
|
18
|
+
onIndexChange,
|
|
19
|
+
onSwipeStart,
|
|
20
|
+
onSwipeEnd,
|
|
21
|
+
children,
|
|
22
|
+
style,
|
|
23
|
+
animationEnabled = false
|
|
24
|
+
}) {
|
|
25
|
+
const {
|
|
26
|
+
routes,
|
|
27
|
+
index
|
|
28
|
+
} = navigationState;
|
|
29
|
+
const panX = useAnimatedValue(0);
|
|
30
|
+
const listenersRef = React.useRef([]);
|
|
31
|
+
const navigationStateRef = React.useRef(navigationState);
|
|
32
|
+
const layoutRef = React.useRef(layout);
|
|
33
|
+
const onIndexChangeRef = React.useRef(onIndexChange);
|
|
34
|
+
const currentIndexRef = React.useRef(index);
|
|
35
|
+
const pendingIndexRef = React.useRef();
|
|
36
|
+
const swipeVelocityThreshold = 0.15;
|
|
37
|
+
const swipeDistanceThreshold = layout.width / 1.75;
|
|
38
|
+
const jumpToIndex = React.useCallback((index, animate = animationEnabled) => {
|
|
39
|
+
const offset = -index * layoutRef.current.width;
|
|
40
|
+
const {
|
|
41
|
+
timing,
|
|
42
|
+
...transitionConfig
|
|
43
|
+
} = DefaultTransitionSpec;
|
|
44
|
+
if (animate) {
|
|
45
|
+
Animated.parallel([timing(panX, {
|
|
46
|
+
...transitionConfig,
|
|
47
|
+
toValue: offset,
|
|
48
|
+
useNativeDriver: false
|
|
49
|
+
})]).start(({
|
|
50
|
+
finished
|
|
51
|
+
}) => {
|
|
52
|
+
if (finished) {
|
|
53
|
+
onIndexChangeRef.current(index);
|
|
54
|
+
pendingIndexRef.current = undefined;
|
|
55
|
+
}
|
|
56
|
+
});
|
|
57
|
+
pendingIndexRef.current = index;
|
|
58
|
+
} else {
|
|
59
|
+
panX.setValue(offset);
|
|
60
|
+
onIndexChangeRef.current(index);
|
|
61
|
+
pendingIndexRef.current = undefined;
|
|
62
|
+
}
|
|
63
|
+
}, [animationEnabled, panX]);
|
|
64
|
+
React.useEffect(() => {
|
|
65
|
+
navigationStateRef.current = navigationState;
|
|
66
|
+
layoutRef.current = layout;
|
|
67
|
+
onIndexChangeRef.current = onIndexChange;
|
|
68
|
+
});
|
|
69
|
+
React.useEffect(() => {
|
|
70
|
+
const offset = -navigationStateRef.current.index * layout.width;
|
|
71
|
+
panX.setValue(offset);
|
|
72
|
+
}, [layout.width, panX]);
|
|
73
|
+
React.useEffect(() => {
|
|
74
|
+
if (keyboardDismissMode === 'auto') {
|
|
75
|
+
Keyboard.dismiss();
|
|
76
|
+
}
|
|
77
|
+
if (layout.width && currentIndexRef.current !== index) {
|
|
78
|
+
currentIndexRef.current = index;
|
|
79
|
+
jumpToIndex(index);
|
|
80
|
+
}
|
|
81
|
+
}, [jumpToIndex, keyboardDismissMode, layout.width, index]);
|
|
82
|
+
const isMovingHorizontally = (_, gestureState) => {
|
|
83
|
+
return Math.abs(gestureState.dx) > Math.abs(gestureState.dy * 2) && Math.abs(gestureState.vx) > Math.abs(gestureState.vy * 2);
|
|
84
|
+
};
|
|
85
|
+
const canMoveScreen = (event, gestureState) => {
|
|
86
|
+
if (swipeEnabled === false) {
|
|
87
|
+
return false;
|
|
88
|
+
}
|
|
89
|
+
const diffX = I18nManager.isRTL ? -gestureState.dx : gestureState.dx;
|
|
90
|
+
return isMovingHorizontally(event, gestureState) && (diffX >= DEAD_ZONE && currentIndexRef.current > 0 || diffX <= -DEAD_ZONE && currentIndexRef.current < routes.length - 1);
|
|
91
|
+
};
|
|
92
|
+
const startGesture = () => {
|
|
93
|
+
onSwipeStart === null || onSwipeStart === void 0 || onSwipeStart();
|
|
94
|
+
if (keyboardDismissMode === 'on-drag') {
|
|
95
|
+
Keyboard.dismiss();
|
|
96
|
+
}
|
|
97
|
+
panX.stopAnimation();
|
|
98
|
+
// @ts-expect-error: _value is private, but docs use it as well
|
|
99
|
+
panX.setOffset(panX._value);
|
|
100
|
+
};
|
|
101
|
+
const respondToGesture = (_, gestureState) => {
|
|
102
|
+
const diffX = I18nManager.isRTL ? -gestureState.dx : gestureState.dx;
|
|
103
|
+
if (
|
|
104
|
+
// swiping left
|
|
105
|
+
diffX > 0 && index <= 0 ||
|
|
106
|
+
// swiping right
|
|
107
|
+
diffX < 0 && index >= routes.length - 1) {
|
|
108
|
+
return;
|
|
109
|
+
}
|
|
110
|
+
if (layout.width) {
|
|
111
|
+
// @ts-expect-error: _offset is private, but docs use it as well
|
|
112
|
+
const position = (panX._offset + diffX) / -layout.width;
|
|
113
|
+
const next = position > index ? Math.ceil(position) : Math.floor(position);
|
|
114
|
+
if (next !== index) {
|
|
115
|
+
listenersRef.current.forEach(listener => listener(next));
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
panX.setValue(diffX);
|
|
119
|
+
};
|
|
120
|
+
const finishGesture = (_, gestureState) => {
|
|
121
|
+
panX.flattenOffset();
|
|
122
|
+
onSwipeEnd === null || onSwipeEnd === void 0 || onSwipeEnd();
|
|
123
|
+
const currentIndex = typeof pendingIndexRef.current === 'number' ? pendingIndexRef.current : currentIndexRef.current;
|
|
124
|
+
let nextIndex = currentIndex;
|
|
125
|
+
if (Math.abs(gestureState.dx) > Math.abs(gestureState.dy) && Math.abs(gestureState.vx) > Math.abs(gestureState.vy) && (Math.abs(gestureState.dx) > swipeDistanceThreshold || Math.abs(gestureState.vx) > swipeVelocityThreshold)) {
|
|
126
|
+
nextIndex = Math.round(Math.min(Math.max(0, I18nManager.isRTL ? currentIndex + gestureState.dx / Math.abs(gestureState.dx) : currentIndex - gestureState.dx / Math.abs(gestureState.dx)), routes.length - 1));
|
|
127
|
+
currentIndexRef.current = nextIndex;
|
|
128
|
+
}
|
|
129
|
+
if (!isFinite(nextIndex)) {
|
|
130
|
+
nextIndex = currentIndex;
|
|
131
|
+
}
|
|
132
|
+
jumpToIndex(nextIndex, true);
|
|
133
|
+
};
|
|
134
|
+
|
|
135
|
+
// TODO: use the listeners
|
|
136
|
+
const addEnterListener = React.useCallback(listener => {
|
|
137
|
+
listenersRef.current.push(listener);
|
|
138
|
+
return () => {
|
|
139
|
+
const index = listenersRef.current.indexOf(listener);
|
|
140
|
+
if (index > -1) {
|
|
141
|
+
listenersRef.current.splice(index, 1);
|
|
142
|
+
}
|
|
143
|
+
};
|
|
144
|
+
}, []);
|
|
145
|
+
const jumpTo = React.useCallback(key => {
|
|
146
|
+
const index = navigationStateRef.current.routes.findIndex(route => route.key === key);
|
|
147
|
+
jumpToIndex(index);
|
|
148
|
+
}, [jumpToIndex]);
|
|
149
|
+
const panResponder = PanResponder.create({
|
|
150
|
+
onMoveShouldSetPanResponder: canMoveScreen,
|
|
151
|
+
onMoveShouldSetPanResponderCapture: canMoveScreen,
|
|
152
|
+
onPanResponderGrant: startGesture,
|
|
153
|
+
onPanResponderMove: respondToGesture,
|
|
154
|
+
onPanResponderTerminate: finishGesture,
|
|
155
|
+
onPanResponderRelease: finishGesture,
|
|
156
|
+
onPanResponderTerminationRequest: () => true
|
|
157
|
+
});
|
|
158
|
+
const maxTranslate = layout.width * (routes.length - 1);
|
|
159
|
+
const translateX = Animated.multiply(panX.interpolate({
|
|
160
|
+
inputRange: [-maxTranslate, 0],
|
|
161
|
+
outputRange: [-maxTranslate, 0],
|
|
162
|
+
extrapolate: 'clamp'
|
|
163
|
+
}), I18nManager.isRTL ? -1 : 1);
|
|
164
|
+
const position = React.useMemo(() => layout.width ? Animated.divide(panX, -layout.width) : null, [layout.width, panX]);
|
|
165
|
+
return children({
|
|
166
|
+
position: position ?? new Animated.Value(index),
|
|
167
|
+
addEnterListener,
|
|
168
|
+
jumpTo,
|
|
169
|
+
render: children => /*#__PURE__*/React.createElement(Animated.View, _extends({
|
|
170
|
+
style: [styles.sheet, layout.width ? {
|
|
171
|
+
width: routes.length * layout.width,
|
|
172
|
+
transform: [{
|
|
173
|
+
translateX
|
|
174
|
+
}]
|
|
175
|
+
} : null, style]
|
|
176
|
+
}, panResponder.panHandlers), React.Children.map(children, (child, i) => {
|
|
177
|
+
const route = routes[i];
|
|
178
|
+
const focused = i === index;
|
|
179
|
+
return /*#__PURE__*/React.createElement(View, {
|
|
180
|
+
key: route.key,
|
|
181
|
+
style: layout.width ? {
|
|
182
|
+
width: layout.width
|
|
183
|
+
} : focused ? StyleSheet.absoluteFill : null
|
|
184
|
+
}, focused || layout.width ? child : null);
|
|
185
|
+
}))
|
|
186
|
+
});
|
|
187
|
+
}
|
|
188
|
+
const styles = StyleSheet.create({
|
|
189
|
+
sheet: {
|
|
190
|
+
flex: 1,
|
|
191
|
+
flexDirection: 'row',
|
|
192
|
+
alignItems: 'stretch'
|
|
193
|
+
}
|
|
194
|
+
});
|
|
195
|
+
//# sourceMappingURL=PanResponderAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","Animated","I18nManager","Keyboard","PanResponder","StyleSheet","View","useAnimatedValue","DEAD_ZONE","DefaultTransitionSpec","timing","spring","stiffness","damping","mass","overshootClamping","PanResponderAdapter","layout","keyboardDismissMode","swipeEnabled","navigationState","onIndexChange","onSwipeStart","onSwipeEnd","children","style","animationEnabled","routes","index","panX","listenersRef","useRef","navigationStateRef","layoutRef","onIndexChangeRef","currentIndexRef","pendingIndexRef","swipeVelocityThreshold","swipeDistanceThreshold","width","jumpToIndex","useCallback","animate","offset","current","transitionConfig","parallel","toValue","useNativeDriver","start","finished","undefined","setValue","useEffect","dismiss","isMovingHorizontally","_","gestureState","Math","abs","dx","dy","vx","vy","canMoveScreen","event","diffX","isRTL","length","startGesture","stopAnimation","setOffset","_value","respondToGesture","position","_offset","next","ceil","floor","forEach","listener","finishGesture","flattenOffset","currentIndex","nextIndex","round","min","max","isFinite","addEnterListener","push","indexOf","splice","jumpTo","key","findIndex","route","panResponder","create","onMoveShouldSetPanResponder","onMoveShouldSetPanResponderCapture","onPanResponderGrant","onPanResponderMove","onPanResponderTerminate","onPanResponderRelease","onPanResponderTerminationRequest","maxTranslate","translateX","multiply","interpolate","inputRange","outputRange","extrapolate","useMemo","divide","Value","render","createElement","_extends","styles","sheet","transform","panHandlers","Children","map","child","i","focused","absoluteFill","flex","flexDirection","alignItems"],"sourceRoot":"../../src","sources":["PanResponderAdapter.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
function _extends() { return _extends = Object.assign ? Object.assign.bind() : function (n) { for (var e = 1; e < arguments.length; e++) { var t = arguments[e]; for (var r in t) ({}).hasOwnProperty.call(t, r) && (n[r] = t[r]); } return n; }, _extends.apply(null, arguments); }
|
|
2
|
+
import * as React from 'react';
|
|
3
|
+
import { Platform, Pressable } from 'react-native';
|
|
4
|
+
const ANDROID_VERSION_LOLLIPOP = 21;
|
|
5
|
+
const ANDROID_SUPPORTS_RIPPLE = Platform.OS === 'android' && Platform.Version >= ANDROID_VERSION_LOLLIPOP;
|
|
6
|
+
|
|
7
|
+
/**
|
|
8
|
+
* PlatformPressable provides an abstraction on top of TouchableNativeFeedback and
|
|
9
|
+
* TouchableOpacity to handle platform differences.
|
|
10
|
+
*
|
|
11
|
+
* On Android, you can pass the props of TouchableNativeFeedback.
|
|
12
|
+
* On other platforms, you can pass the props of TouchableOpacity.
|
|
13
|
+
*/
|
|
14
|
+
export default function PlatformPressable({
|
|
15
|
+
android_ripple,
|
|
16
|
+
pressColor = 'rgba(0, 0, 0, .32)',
|
|
17
|
+
pressOpacity,
|
|
18
|
+
style,
|
|
19
|
+
...rest
|
|
20
|
+
}) {
|
|
21
|
+
return /*#__PURE__*/React.createElement(Pressable, _extends({
|
|
22
|
+
android_ripple: ANDROID_SUPPORTS_RIPPLE ? {
|
|
23
|
+
color: pressColor,
|
|
24
|
+
...android_ripple
|
|
25
|
+
} : undefined,
|
|
26
|
+
style: ({
|
|
27
|
+
pressed
|
|
28
|
+
}) => [{
|
|
29
|
+
opacity: pressed && !ANDROID_SUPPORTS_RIPPLE ? pressOpacity : 1
|
|
30
|
+
}, typeof style === 'function' ? style({
|
|
31
|
+
pressed
|
|
32
|
+
}) : style]
|
|
33
|
+
}, rest));
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=PlatformPressable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","Platform","Pressable","ANDROID_VERSION_LOLLIPOP","ANDROID_SUPPORTS_RIPPLE","OS","Version","PlatformPressable","android_ripple","pressColor","pressOpacity","style","rest","createElement","_extends","color","undefined","pressed","opacity"],"sourceRoot":"../../src","sources":["PlatformPressable.tsx"],"mappings":";AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAASC,QAAQ,EAAEC,SAAS,QAAwB,cAAc;AAQlE,MAAMC,wBAAwB,GAAG,EAAE;AACnC,MAAMC,uBAAuB,GAC3BH,QAAQ,CAACI,EAAE,KAAK,SAAS,IAAIJ,QAAQ,CAACK,OAAO,IAAIH,wBAAwB;;AAE3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,SAASI,iBAAiBA,CAAC;EACxCC,cAAc;EACdC,UAAU,GAAG,oBAAoB;EACjCC,YAAY;EACZC,KAAK;EACL,GAAGC;AACE,CAAC,EAAE;EACR,oBACEZ,KAAA,CAAAa,aAAA,CAACX,SAAS,EAAAY,QAAA;IACRN,cAAc,EACZJ,uBAAuB,GACnB;MAAEW,KAAK,EAAEN,UAAU;MAAE,GAAGD;IAAe,CAAC,GACxCQ,SACL;IACDL,KAAK,EAAEA,CAAC;MAAEM;IAAQ,CAAC,KAAK,CACtB;MAAEC,OAAO,EAAED,OAAO,IAAI,CAACb,uBAAuB,GAAGM,YAAY,GAAG;IAAE,CAAC,EACnE,OAAOC,KAAK,KAAK,UAAU,GAAGA,KAAK,CAAC;MAAEM;IAAQ,CAAC,CAAC,GAAGN,KAAK;EACxD,GACEC,IAAI,CACT,CAAC;AAEN","ignoreList":[]}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
const SceneComponent = /*#__PURE__*/React.memo(({
|
|
3
|
+
component,
|
|
4
|
+
...rest
|
|
5
|
+
}) => {
|
|
6
|
+
return /*#__PURE__*/React.createElement(component, rest);
|
|
7
|
+
});
|
|
8
|
+
export default function SceneMap(scenes) {
|
|
9
|
+
return ({
|
|
10
|
+
route,
|
|
11
|
+
jumpTo,
|
|
12
|
+
position
|
|
13
|
+
}) => /*#__PURE__*/React.createElement(SceneComponent, {
|
|
14
|
+
key: route.key,
|
|
15
|
+
component: scenes[route.key],
|
|
16
|
+
route: route,
|
|
17
|
+
jumpTo: jumpTo,
|
|
18
|
+
position: position
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=SceneMap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","SceneComponent","memo","component","rest","createElement","SceneMap","scenes","route","jumpTo","position","key"],"sourceRoot":"../../src","sources":["SceneMap.tsx"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAQ9B,MAAMC,cAAc,gBAAGD,KAAK,CAACE,IAAI,CAC/B,CAAiE;EAC/DC,SAAS;EACT,GAAGC;AACF,CAAC,KAAK;EACP,oBAAOJ,KAAK,CAACK,aAAa,CAACF,SAAS,EAAEC,IAAI,CAAC;AAC7C,CACF,CAAC;AAED,eAAe,SAASE,QAAQA,CAAgBC,MAE/C,EAAE;EACD,OAAO,CAAC;IAAEC,KAAK;IAAEC,MAAM;IAAEC;EAAqB,CAAC,kBAC7CV,KAAA,CAAAK,aAAA,CAACJ,cAAc;IACbU,GAAG,EAAEH,KAAK,CAACG,GAAI;IACfR,SAAS,EAAEI,MAAM,CAACC,KAAK,CAACG,GAAG,CAAE;IAC7BH,KAAK,EAAEA,KAAM;IACbC,MAAM,EAAEA,MAAO;IACfC,QAAQ,EAAEA;EAAS,CACpB,CACF;AACH","ignoreList":[]}
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
import * as React from 'react';
|
|
2
|
+
import { StyleSheet, View } from 'react-native';
|
|
3
|
+
export default function SceneView({
|
|
4
|
+
children,
|
|
5
|
+
navigationState,
|
|
6
|
+
lazy,
|
|
7
|
+
layout,
|
|
8
|
+
index,
|
|
9
|
+
lazyPreloadDistance,
|
|
10
|
+
addEnterListener,
|
|
11
|
+
style
|
|
12
|
+
}) {
|
|
13
|
+
const [isLoading, setIsLoading] = React.useState(Math.abs(navigationState.index - index) > lazyPreloadDistance);
|
|
14
|
+
if (isLoading && Math.abs(navigationState.index - index) <= lazyPreloadDistance) {
|
|
15
|
+
// Always render the route when it becomes focused
|
|
16
|
+
setIsLoading(false);
|
|
17
|
+
}
|
|
18
|
+
React.useEffect(() => {
|
|
19
|
+
const handleEnter = value => {
|
|
20
|
+
// If we're entering the current route, we need to load it
|
|
21
|
+
if (value === index) {
|
|
22
|
+
setIsLoading(prevState => {
|
|
23
|
+
if (prevState) {
|
|
24
|
+
return false;
|
|
25
|
+
}
|
|
26
|
+
return prevState;
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
};
|
|
30
|
+
let unsubscribe;
|
|
31
|
+
let timer;
|
|
32
|
+
if (lazy && isLoading) {
|
|
33
|
+
// If lazy mode is enabled, listen to when we enter screens
|
|
34
|
+
unsubscribe = addEnterListener(handleEnter);
|
|
35
|
+
} else if (isLoading) {
|
|
36
|
+
// If lazy mode is not enabled, render the scene with a delay if not loaded already
|
|
37
|
+
// This improves the initial startup time as the scene is no longer blocking
|
|
38
|
+
timer = setTimeout(() => setIsLoading(false), 0);
|
|
39
|
+
}
|
|
40
|
+
return () => {
|
|
41
|
+
var _unsubscribe;
|
|
42
|
+
(_unsubscribe = unsubscribe) === null || _unsubscribe === void 0 || _unsubscribe();
|
|
43
|
+
clearTimeout(timer);
|
|
44
|
+
};
|
|
45
|
+
}, [addEnterListener, index, isLoading, lazy]);
|
|
46
|
+
const focused = navigationState.index === index;
|
|
47
|
+
return /*#__PURE__*/React.createElement(View, {
|
|
48
|
+
accessibilityElementsHidden: !focused,
|
|
49
|
+
importantForAccessibility: focused ? 'auto' : 'no-hide-descendants',
|
|
50
|
+
style: [styles.route,
|
|
51
|
+
// If we don't have the layout yet, make the focused screen fill the container
|
|
52
|
+
// This avoids delay before we are able to render pages side by side
|
|
53
|
+
layout.width ? {
|
|
54
|
+
width: layout.width
|
|
55
|
+
} : focused ? StyleSheet.absoluteFill : null, style]
|
|
56
|
+
},
|
|
57
|
+
// Only render the route only if it's either focused or layout is available
|
|
58
|
+
// When layout is not available, we must not render unfocused routes
|
|
59
|
+
// so that the focused route can fill the screen
|
|
60
|
+
focused || layout.width ? children({
|
|
61
|
+
loading: isLoading
|
|
62
|
+
}) : null);
|
|
63
|
+
}
|
|
64
|
+
const styles = StyleSheet.create({
|
|
65
|
+
route: {
|
|
66
|
+
flex: 1,
|
|
67
|
+
overflow: 'hidden'
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
//# sourceMappingURL=SceneView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","StyleSheet","View","SceneView","children","navigationState","lazy","layout","index","lazyPreloadDistance","addEnterListener","style","isLoading","setIsLoading","useState","Math","abs","useEffect","handleEnter","value","prevState","unsubscribe","timer","setTimeout","_unsubscribe","clearTimeout","focused","createElement","accessibilityElementsHidden","importantForAccessibility","styles","route","width","absoluteFill","loading","create","flex","overflow"],"sourceRoot":"../../src","sources":["SceneView.tsx"],"mappings":"AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAAoBC,UAAU,EAAEC,IAAI,QAAmB,cAAc;AAmBrE,eAAe,SAASC,SAASA,CAAkB;EACjDC,QAAQ;EACRC,eAAe;EACfC,IAAI;EACJC,MAAM;EACNC,KAAK;EACLC,mBAAmB;EACnBC,gBAAgB;EAChBC;AACQ,CAAC,EAAE;EACX,MAAM,CAACC,SAAS,EAAEC,YAAY,CAAC,GAAGb,KAAK,CAACc,QAAQ,CAC9CC,IAAI,CAACC,GAAG,CAACX,eAAe,CAACG,KAAK,GAAGA,KAAK,CAAC,GAAGC,mBAC5C,CAAC;EAED,IACEG,SAAS,IACTG,IAAI,CAACC,GAAG,CAACX,eAAe,CAACG,KAAK,GAAGA,KAAK,CAAC,IAAIC,mBAAmB,EAC9D;IACA;IACAI,YAAY,CAAC,KAAK,CAAC;EACrB;EAEAb,KAAK,CAACiB,SAAS,CAAC,MAAM;IACpB,MAAMC,WAAW,GAAIC,KAAa,IAAK;MACrC;MACA,IAAIA,KAAK,KAAKX,KAAK,EAAE;QACnBK,YAAY,CAAEO,SAAS,IAAK;UAC1B,IAAIA,SAAS,EAAE;YACb,OAAO,KAAK;UACd;UACA,OAAOA,SAAS;QAClB,CAAC,CAAC;MACJ;IACF,CAAC;IAED,IAAIC,WAAqC;IACzC,IAAIC,KAAqB;IAEzB,IAAIhB,IAAI,IAAIM,SAAS,EAAE;MACrB;MACAS,WAAW,GAAGX,gBAAgB,CAACQ,WAAW,CAAC;IAC7C,CAAC,MAAM,IAAIN,SAAS,EAAE;MACpB;MACA;MACAU,KAAK,GAAGC,UAAU,CAAC,MAAMV,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAClD;IAEA,OAAO,MAAM;MAAA,IAAAW,YAAA;MACX,CAAAA,YAAA,GAAAH,WAAW,cAAAG,YAAA,eAAXA,YAAA,CAAc,CAAC;MACfC,YAAY,CAACH,KAAK,CAAC;IACrB,CAAC;EACH,CAAC,EAAE,CAACZ,gBAAgB,EAAEF,KAAK,EAAEI,SAAS,EAAEN,IAAI,CAAC,CAAC;EAE9C,MAAMoB,OAAO,GAAGrB,eAAe,CAACG,KAAK,KAAKA,KAAK;EAE/C,oBACER,KAAA,CAAA2B,aAAA,CAACzB,IAAI;IACH0B,2BAA2B,EAAE,CAACF,OAAQ;IACtCG,yBAAyB,EAAEH,OAAO,GAAG,MAAM,GAAG,qBAAsB;IACpEf,KAAK,EAAE,CACLmB,MAAM,CAACC,KAAK;IACZ;IACA;IACAxB,MAAM,CAACyB,KAAK,GACR;MAAEA,KAAK,EAAEzB,MAAM,CAACyB;IAAM,CAAC,GACvBN,OAAO,GACPzB,UAAU,CAACgC,YAAY,GACvB,IAAI,EACRtB,KAAK;EACL;EAGA;EACA;EACA;EACAe,OAAO,IAAInB,MAAM,CAACyB,KAAK,GAAG5B,QAAQ,CAAC;IAAE8B,OAAO,EAAEtB;EAAU,CAAC,CAAC,GAAG,IAE3D,CAAC;AAEX;AAEA,MAAMkB,MAAM,GAAG7B,UAAU,CAACkC,MAAM,CAAC;EAC/BJ,KAAK,EAAE;IACLK,IAAI,EAAE,CAAC;IACPC,QAAQ,EAAE;EACZ;AACF,CAAC,CAAC","ignoreList":[]}
|