@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.
Files changed (116) hide show
  1. package/LICENSE +7 -0
  2. package/README.md +649 -0
  3. package/SystemBundles/c5889b273a6efc2a3c30241851055c37630fbf3381df86d403967369775f0536.bundle +14497 -0
  4. package/SystemBundles/c5889b273a6efc2a3c30241851055c37630fbf3381df86d403967369775f0536.map +1 -0
  5. package/SystemModules/amzn__react-navigation__react-native-tab-view-2.modules.txt +41 -0
  6. package/SystemModules/amzn__react-navigation__react-native-tab-view-2.private.modules.txt +98 -0
  7. package/SystemModules/keplerscript-system-bundle-config.json +7 -0
  8. package/THIRD_PARTY_NOTICES.txt +24 -0
  9. package/kepler-compatibility.json +8 -0
  10. package/kepler-transformed-package-info.json +3 -0
  11. package/lib/commonjs/Pager.android.js +14 -0
  12. package/lib/commonjs/Pager.android.js.map +1 -0
  13. package/lib/commonjs/Pager.ios.js +14 -0
  14. package/lib/commonjs/Pager.ios.js.map +1 -0
  15. package/lib/commonjs/Pager.js +14 -0
  16. package/lib/commonjs/Pager.js.map +1 -0
  17. package/lib/commonjs/PagerViewAdapter.js +132 -0
  18. package/lib/commonjs/PagerViewAdapter.js.map +1 -0
  19. package/lib/commonjs/PanResponderAdapter.js +204 -0
  20. package/lib/commonjs/PanResponderAdapter.js.map +1 -0
  21. package/lib/commonjs/PlatformPressable.js +43 -0
  22. package/lib/commonjs/PlatformPressable.js.map +1 -0
  23. package/lib/commonjs/SceneMap.js +29 -0
  24. package/lib/commonjs/SceneMap.js.map +1 -0
  25. package/lib/commonjs/SceneView.js +78 -0
  26. package/lib/commonjs/SceneView.js.map +1 -0
  27. package/lib/commonjs/TabBar.js +405 -0
  28. package/lib/commonjs/TabBar.js.map +1 -0
  29. package/lib/commonjs/TabBarIndicator.js +110 -0
  30. package/lib/commonjs/TabBarIndicator.js.map +1 -0
  31. package/lib/commonjs/TabBarItem.js +227 -0
  32. package/lib/commonjs/TabBarItem.js.map +1 -0
  33. package/lib/commonjs/TabView.js +122 -0
  34. package/lib/commonjs/TabView.js.map +1 -0
  35. package/lib/commonjs/index.js +42 -0
  36. package/lib/commonjs/index.js.map +1 -0
  37. package/lib/commonjs/types.js +6 -0
  38. package/lib/commonjs/types.js.map +1 -0
  39. package/lib/commonjs/useAnimatedValue.js +18 -0
  40. package/lib/commonjs/useAnimatedValue.js.map +1 -0
  41. package/lib/module/Pager.android.js +2 -0
  42. package/lib/module/Pager.android.js.map +1 -0
  43. package/lib/module/Pager.ios.js +2 -0
  44. package/lib/module/Pager.ios.js.map +1 -0
  45. package/lib/module/Pager.js +2 -0
  46. package/lib/module/Pager.js.map +1 -0
  47. package/lib/module/PagerViewAdapter.js +123 -0
  48. package/lib/module/PagerViewAdapter.js.map +1 -0
  49. package/lib/module/PanResponderAdapter.js +195 -0
  50. package/lib/module/PanResponderAdapter.js.map +1 -0
  51. package/lib/module/PlatformPressable.js +35 -0
  52. package/lib/module/PlatformPressable.js.map +1 -0
  53. package/lib/module/SceneMap.js +21 -0
  54. package/lib/module/SceneMap.js.map +1 -0
  55. package/lib/module/SceneView.js +70 -0
  56. package/lib/module/SceneView.js.map +1 -0
  57. package/lib/module/TabBar.js +396 -0
  58. package/lib/module/TabBar.js.map +1 -0
  59. package/lib/module/TabBarIndicator.js +101 -0
  60. package/lib/module/TabBarIndicator.js.map +1 -0
  61. package/lib/module/TabBarItem.js +218 -0
  62. package/lib/module/TabBarItem.js.map +1 -0
  63. package/lib/module/TabView.js +113 -0
  64. package/lib/module/TabView.js.map +1 -0
  65. package/lib/module/index.js +6 -0
  66. package/lib/module/index.js.map +1 -0
  67. package/lib/module/types.js +2 -0
  68. package/lib/module/types.js.map +1 -0
  69. package/lib/module/useAnimatedValue.js +10 -0
  70. package/lib/module/useAnimatedValue.js.map +1 -0
  71. package/lib/typescript/src/Pager.android.d.ts +2 -0
  72. package/lib/typescript/src/Pager.android.d.ts.map +1 -0
  73. package/lib/typescript/src/Pager.d.ts +2 -0
  74. package/lib/typescript/src/Pager.d.ts.map +1 -0
  75. package/lib/typescript/src/Pager.ios.d.ts +2 -0
  76. package/lib/typescript/src/Pager.ios.d.ts.map +1 -0
  77. package/lib/typescript/src/PagerViewAdapter.d.ts +15 -0
  78. package/lib/typescript/src/PagerViewAdapter.d.ts.map +1 -0
  79. package/lib/typescript/src/PanResponderAdapter.d.ts +16 -0
  80. package/lib/typescript/src/PanResponderAdapter.d.ts.map +1 -0
  81. package/lib/typescript/src/PlatformPressable.d.ts +16 -0
  82. package/lib/typescript/src/PlatformPressable.d.ts.map +1 -0
  83. package/lib/typescript/src/SceneMap.d.ts +10 -0
  84. package/lib/typescript/src/SceneMap.d.ts.map +1 -0
  85. package/lib/typescript/src/SceneView.d.ts +16 -0
  86. package/lib/typescript/src/SceneView.d.ts.map +1 -0
  87. package/lib/typescript/src/TabBar.d.ts +44 -0
  88. package/lib/typescript/src/TabBar.d.ts.map +1 -0
  89. package/lib/typescript/src/TabBarIndicator.d.ts +13 -0
  90. package/lib/typescript/src/TabBarIndicator.d.ts.map +1 -0
  91. package/lib/typescript/src/TabBarItem.d.ts +37 -0
  92. package/lib/typescript/src/TabBarItem.d.ts.map +1 -0
  93. package/lib/typescript/src/TabView.d.ts +27 -0
  94. package/lib/typescript/src/TabView.d.ts.map +1 -0
  95. package/lib/typescript/src/index.d.ts +11 -0
  96. package/lib/typescript/src/index.d.ts.map +1 -0
  97. package/lib/typescript/src/types.d.ts +42 -0
  98. package/lib/typescript/src/types.d.ts.map +1 -0
  99. package/lib/typescript/src/useAnimatedValue.d.ts +3 -0
  100. package/lib/typescript/src/useAnimatedValue.d.ts.map +1 -0
  101. package/package.json +1 -0
  102. package/src/Pager.android.tsx +1 -0
  103. package/src/Pager.ios.tsx +1 -0
  104. package/src/Pager.tsx +1 -0
  105. package/src/PagerViewAdapter.tsx +180 -0
  106. package/src/PanResponderAdapter.tsx +340 -0
  107. package/src/PlatformPressable.tsx +42 -0
  108. package/src/SceneMap.tsx +30 -0
  109. package/src/SceneView.tsx +107 -0
  110. package/src/TabBar.tsx +639 -0
  111. package/src/TabBarIndicator.tsx +153 -0
  112. package/src/TabBarItem.tsx +319 -0
  113. package/src/TabView.tsx +155 -0
  114. package/src/index.tsx +10 -0
  115. package/src/types.tsx +59 -0
  116. 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":"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","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":[]}