@react-native-ohos/react-native-tab-view 4.0.11-rc.1
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 +21 -0
- package/README.OpenSource +11 -0
- package/README.md +9 -0
- package/lib/module/Pager.android.js +4 -0
- package/lib/module/Pager.android.js.map +1 -0
- package/lib/module/Pager.ios.js +4 -0
- package/lib/module/Pager.ios.js.map +1 -0
- package/lib/module/Pager.js +4 -0
- package/lib/module/Pager.js.map +1 -0
- package/lib/module/PagerViewAdapter.js +126 -0
- package/lib/module/PagerViewAdapter.js.map +1 -0
- package/lib/module/PanResponderAdapter.js +200 -0
- package/lib/module/PanResponderAdapter.js.map +1 -0
- package/lib/module/PlatformPressable.js +59 -0
- package/lib/module/PlatformPressable.js.map +1 -0
- package/lib/module/SceneMap.js +24 -0
- package/lib/module/SceneMap.js.map +1 -0
- package/lib/module/SceneView.js +73 -0
- package/lib/module/SceneView.js.map +1 -0
- package/lib/module/TabBar.js +472 -0
- package/lib/module/TabBar.js.map +1 -0
- package/lib/module/TabBarIndicator.js +122 -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/TabBarItemLabel.js +33 -0
- package/lib/module/TabBarItemLabel.js.map +1 -0
- package/lib/module/TabView.js +140 -0
- package/lib/module/TabView.js.map +1 -0
- package/lib/module/index.js +8 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/module/types.js +4 -0
- package/lib/module/types.js.map +1 -0
- package/lib/module/useAnimatedValue.js +12 -0
- package/lib/module/useAnimatedValue.js.map +1 -0
- package/lib/typescript/package.json +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 +13 -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 +32 -0
- package/lib/typescript/src/TabBar.d.ts.map +1 -0
- package/lib/typescript/src/TabBarIndicator.d.ts +15 -0
- package/lib/typescript/src/TabBarIndicator.d.ts.map +1 -0
- package/lib/typescript/src/TabBarItem.d.ts +19 -0
- package/lib/typescript/src/TabBarItem.d.ts.map +1 -0
- package/lib/typescript/src/TabBarItemLabel.d.ts +11 -0
- package/lib/typescript/src/TabBarItemLabel.d.ts.map +1 -0
- package/lib/typescript/src/TabView.d.ts +30 -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 +70 -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 +79 -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 +182 -0
- package/src/PanResponderAdapter.tsx +339 -0
- package/src/PlatformPressable.tsx +75 -0
- package/src/SceneMap.tsx +30 -0
- package/src/SceneView.tsx +107 -0
- package/src/TabBar.tsx +729 -0
- package/src/TabBarIndicator.tsx +190 -0
- package/src/TabBarItem.tsx +305 -0
- package/src/TabBarItemLabel.tsx +42 -0
- package/src/TabView.tsx +195 -0
- package/src/index.tsx +15 -0
- package/src/types.tsx +87 -0
- package/src/useAnimatedValue.tsx +12 -0
package/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2017 React Navigation Contributors
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
[
|
|
2
|
+
{
|
|
3
|
+
"Name": "react-native-tab-view",
|
|
4
|
+
"License": "MIT License",
|
|
5
|
+
"License File": " LICENSE ",
|
|
6
|
+
"Version Number": "4.0.10",
|
|
7
|
+
"Owner" : "xiafeng@huawei.com",
|
|
8
|
+
"Upstream URL": "https://github.com/react-navigation/react-navigation/tree/main/packages/react-native-tab-view",
|
|
9
|
+
"Description": "Tab view component for React Native"
|
|
10
|
+
}
|
|
11
|
+
]
|
package/README.md
ADDED
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
# @react-native-ohos/react-native-tab-view
|
|
2
|
+
This project is based on [react-native-tab-view](https://github.com/react-navigation/react-navigation/tree/main/packages/react-native-tab-view)
|
|
3
|
+
## Documentation
|
|
4
|
+
[中文](https://gitee.com/react-native-oh-library/usage-docs/blob/master/zh-cn/react-native-tab-view.md)
|
|
5
|
+
|
|
6
|
+
[English](https://gitee.com/react-native-oh-library/usage-docs/blob/master/en/react-native-tab-view.md)
|
|
7
|
+
|
|
8
|
+
## License
|
|
9
|
+
This library is licensed under [The MIT License (MIT)](https://opensource.org/license/MIT).
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["PagerViewAdapter","Pager"],"sourceRoot":"..\\..\\src","sources":["Pager.android.tsx"],"mappings":";;AAAA,SAASA,gBAAgB,IAAIC,KAAK,QAAQ,uBAAoB","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["PagerViewAdapter","Pager"],"sourceRoot":"..\\..\\src","sources":["Pager.ios.tsx"],"mappings":";;AAAA,SAASA,gBAAgB,IAAIC,KAAK,QAAQ,uBAAoB","ignoreList":[]}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["PanResponderAdapter","Pager"],"sourceRoot":"..\\..\\src","sources":["Pager.tsx"],"mappings":";;AAAA,SAASA,mBAAmB,IAAIC,KAAK,QAAQ,0BAAuB","ignoreList":[]}
|
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { Animated, Keyboard, Platform, StyleSheet } from 'react-native';
|
|
5
|
+
import ViewPager from 'react-native-pager-view';
|
|
6
|
+
import useLatestCallback from 'use-latest-callback';
|
|
7
|
+
import { useAnimatedValue } from "./useAnimatedValue.js";
|
|
8
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
9
|
+
const AnimatedViewPager = Animated.createAnimatedComponent(ViewPager);
|
|
10
|
+
const useNativeDriver = Platform.OS !== 'web';
|
|
11
|
+
export function PagerViewAdapter({
|
|
12
|
+
keyboardDismissMode = 'auto',
|
|
13
|
+
swipeEnabled = true,
|
|
14
|
+
navigationState,
|
|
15
|
+
onIndexChange,
|
|
16
|
+
onSwipeStart,
|
|
17
|
+
onSwipeEnd,
|
|
18
|
+
children,
|
|
19
|
+
style,
|
|
20
|
+
animationEnabled,
|
|
21
|
+
...rest
|
|
22
|
+
}) {
|
|
23
|
+
const {
|
|
24
|
+
index
|
|
25
|
+
} = navigationState;
|
|
26
|
+
const listenersRef = React.useRef([]);
|
|
27
|
+
const pagerRef = React.useRef(null);
|
|
28
|
+
const indexRef = React.useRef(index);
|
|
29
|
+
const navigationStateRef = React.useRef(navigationState);
|
|
30
|
+
const position = useAnimatedValue(index);
|
|
31
|
+
const offset = useAnimatedValue(0);
|
|
32
|
+
React.useEffect(() => {
|
|
33
|
+
navigationStateRef.current = navigationState;
|
|
34
|
+
});
|
|
35
|
+
const jumpTo = useLatestCallback(key => {
|
|
36
|
+
const index = navigationStateRef.current.routes.findIndex(route => route.key === key);
|
|
37
|
+
if (animationEnabled) {
|
|
38
|
+
pagerRef.current?.setPage(index);
|
|
39
|
+
} else {
|
|
40
|
+
pagerRef.current?.setPageWithoutAnimation(index);
|
|
41
|
+
position.setValue(index);
|
|
42
|
+
}
|
|
43
|
+
onIndexChange(index);
|
|
44
|
+
});
|
|
45
|
+
React.useEffect(() => {
|
|
46
|
+
if (keyboardDismissMode === 'auto') {
|
|
47
|
+
Keyboard.dismiss();
|
|
48
|
+
}
|
|
49
|
+
if (indexRef.current !== index) {
|
|
50
|
+
if (animationEnabled) {
|
|
51
|
+
pagerRef.current?.setPage(index);
|
|
52
|
+
} else {
|
|
53
|
+
pagerRef.current?.setPageWithoutAnimation(index);
|
|
54
|
+
position.setValue(index);
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
}, [keyboardDismissMode, index, animationEnabled, position]);
|
|
58
|
+
const onPageScrollStateChanged = state => {
|
|
59
|
+
const {
|
|
60
|
+
pageScrollState
|
|
61
|
+
} = state.nativeEvent;
|
|
62
|
+
switch (pageScrollState) {
|
|
63
|
+
case 'idle':
|
|
64
|
+
onSwipeEnd?.();
|
|
65
|
+
return;
|
|
66
|
+
case 'dragging':
|
|
67
|
+
{
|
|
68
|
+
const subscription = offset.addListener(({
|
|
69
|
+
value
|
|
70
|
+
}) => {
|
|
71
|
+
const next = index + (value > 0 ? Math.ceil(value) : Math.floor(value));
|
|
72
|
+
if (next !== index) {
|
|
73
|
+
listenersRef.current.forEach(listener => listener(next));
|
|
74
|
+
}
|
|
75
|
+
offset.removeListener(subscription);
|
|
76
|
+
});
|
|
77
|
+
onSwipeStart?.();
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
};
|
|
82
|
+
const addEnterListener = useLatestCallback(listener => {
|
|
83
|
+
listenersRef.current.push(listener);
|
|
84
|
+
return () => {
|
|
85
|
+
const index = listenersRef.current.indexOf(listener);
|
|
86
|
+
if (index > -1) {
|
|
87
|
+
listenersRef.current.splice(index, 1);
|
|
88
|
+
}
|
|
89
|
+
};
|
|
90
|
+
});
|
|
91
|
+
const memoizedPosition = React.useMemo(() => Animated.add(position, offset), [offset, position]);
|
|
92
|
+
return children({
|
|
93
|
+
position: memoizedPosition,
|
|
94
|
+
addEnterListener,
|
|
95
|
+
jumpTo,
|
|
96
|
+
render: children => /*#__PURE__*/_jsx(AnimatedViewPager, {
|
|
97
|
+
...rest,
|
|
98
|
+
ref: pagerRef,
|
|
99
|
+
style: [styles.container, style],
|
|
100
|
+
initialPage: index,
|
|
101
|
+
keyboardDismissMode: keyboardDismissMode === 'auto' ? 'on-drag' : keyboardDismissMode,
|
|
102
|
+
onPageScroll: Animated.event([{
|
|
103
|
+
nativeEvent: {
|
|
104
|
+
position: position,
|
|
105
|
+
offset: offset
|
|
106
|
+
}
|
|
107
|
+
}], {
|
|
108
|
+
useNativeDriver
|
|
109
|
+
}),
|
|
110
|
+
onPageSelected: e => {
|
|
111
|
+
const index = e.nativeEvent.position;
|
|
112
|
+
indexRef.current = index;
|
|
113
|
+
onIndexChange(index);
|
|
114
|
+
},
|
|
115
|
+
onPageScrollStateChanged: onPageScrollStateChanged,
|
|
116
|
+
scrollEnabled: swipeEnabled,
|
|
117
|
+
children: children
|
|
118
|
+
})
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
const styles = StyleSheet.create({
|
|
122
|
+
container: {
|
|
123
|
+
flex: 1
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
//# sourceMappingURL=PagerViewAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","Animated","Keyboard","Platform","StyleSheet","ViewPager","useLatestCallback","useAnimatedValue","jsx","_jsx","AnimatedViewPager","createAnimatedComponent","useNativeDriver","OS","PagerViewAdapter","keyboardDismissMode","swipeEnabled","navigationState","onIndexChange","onSwipeStart","onSwipeEnd","children","style","animationEnabled","rest","index","listenersRef","useRef","pagerRef","indexRef","navigationStateRef","position","offset","useEffect","current","jumpTo","key","routes","findIndex","route","setPage","setPageWithoutAnimation","setValue","dismiss","onPageScrollStateChanged","state","pageScrollState","nativeEvent","subscription","addListener","value","next","Math","ceil","floor","forEach","listener","removeListener","addEnterListener","push","indexOf","splice","memoizedPosition","useMemo","add","render","ref","styles","container","initialPage","onPageScroll","event","onPageSelected","e","scrollEnabled","create","flex"],"sourceRoot":"..\\..\\src","sources":["PagerViewAdapter.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,200 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { Animated, Keyboard, PanResponder, StyleSheet, View } from 'react-native';
|
|
5
|
+
import useLatestCallback from 'use-latest-callback';
|
|
6
|
+
import { useAnimatedValue } from "./useAnimatedValue.js";
|
|
7
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
8
|
+
const DEAD_ZONE = 12;
|
|
9
|
+
const DefaultTransitionSpec = {
|
|
10
|
+
timing: Animated.spring,
|
|
11
|
+
stiffness: 1000,
|
|
12
|
+
damping: 500,
|
|
13
|
+
mass: 3,
|
|
14
|
+
overshootClamping: true
|
|
15
|
+
};
|
|
16
|
+
export function PanResponderAdapter({
|
|
17
|
+
layout,
|
|
18
|
+
keyboardDismissMode = 'auto',
|
|
19
|
+
swipeEnabled = true,
|
|
20
|
+
navigationState,
|
|
21
|
+
onIndexChange,
|
|
22
|
+
onSwipeStart,
|
|
23
|
+
onSwipeEnd,
|
|
24
|
+
children,
|
|
25
|
+
style,
|
|
26
|
+
animationEnabled = false,
|
|
27
|
+
layoutDirection = 'ltr'
|
|
28
|
+
}) {
|
|
29
|
+
const {
|
|
30
|
+
routes,
|
|
31
|
+
index
|
|
32
|
+
} = navigationState;
|
|
33
|
+
const panX = useAnimatedValue(0);
|
|
34
|
+
const listenersRef = React.useRef([]);
|
|
35
|
+
const navigationStateRef = React.useRef(navigationState);
|
|
36
|
+
const layoutRef = React.useRef(layout);
|
|
37
|
+
const onIndexChangeRef = React.useRef(onIndexChange);
|
|
38
|
+
const currentIndexRef = React.useRef(index);
|
|
39
|
+
const pendingIndexRef = React.useRef();
|
|
40
|
+
const swipeVelocityThreshold = 0.15;
|
|
41
|
+
const swipeDistanceThreshold = layout.width / 1.75;
|
|
42
|
+
const jumpToIndex = useLatestCallback((index, animate = animationEnabled) => {
|
|
43
|
+
const offset = -index * layoutRef.current.width;
|
|
44
|
+
const {
|
|
45
|
+
timing,
|
|
46
|
+
...transitionConfig
|
|
47
|
+
} = DefaultTransitionSpec;
|
|
48
|
+
if (animate) {
|
|
49
|
+
Animated.parallel([timing(panX, {
|
|
50
|
+
...transitionConfig,
|
|
51
|
+
toValue: offset,
|
|
52
|
+
useNativeDriver: false
|
|
53
|
+
})]).start(({
|
|
54
|
+
finished
|
|
55
|
+
}) => {
|
|
56
|
+
if (finished) {
|
|
57
|
+
onIndexChangeRef.current(index);
|
|
58
|
+
pendingIndexRef.current = undefined;
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
pendingIndexRef.current = index;
|
|
62
|
+
} else {
|
|
63
|
+
panX.setValue(offset);
|
|
64
|
+
onIndexChangeRef.current(index);
|
|
65
|
+
pendingIndexRef.current = undefined;
|
|
66
|
+
}
|
|
67
|
+
});
|
|
68
|
+
React.useEffect(() => {
|
|
69
|
+
navigationStateRef.current = navigationState;
|
|
70
|
+
layoutRef.current = layout;
|
|
71
|
+
onIndexChangeRef.current = onIndexChange;
|
|
72
|
+
});
|
|
73
|
+
React.useEffect(() => {
|
|
74
|
+
const offset = -navigationStateRef.current.index * layout.width;
|
|
75
|
+
panX.setValue(offset);
|
|
76
|
+
}, [layout.width, panX]);
|
|
77
|
+
React.useEffect(() => {
|
|
78
|
+
if (keyboardDismissMode === 'auto') {
|
|
79
|
+
Keyboard.dismiss();
|
|
80
|
+
}
|
|
81
|
+
if (layout.width && currentIndexRef.current !== index) {
|
|
82
|
+
currentIndexRef.current = index;
|
|
83
|
+
jumpToIndex(index);
|
|
84
|
+
}
|
|
85
|
+
}, [jumpToIndex, keyboardDismissMode, layout.width, index]);
|
|
86
|
+
const isMovingHorizontally = (_, gestureState) => {
|
|
87
|
+
return Math.abs(gestureState.dx) > Math.abs(gestureState.dy * 2) && Math.abs(gestureState.vx) > Math.abs(gestureState.vy * 2);
|
|
88
|
+
};
|
|
89
|
+
const canMoveScreen = (event, gestureState) => {
|
|
90
|
+
if (swipeEnabled === false) {
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
const diffX = layoutDirection === 'rtl' ? -gestureState.dx : gestureState.dx;
|
|
94
|
+
return isMovingHorizontally(event, gestureState) && (diffX >= DEAD_ZONE && currentIndexRef.current > 0 || diffX <= -DEAD_ZONE && currentIndexRef.current < routes.length - 1);
|
|
95
|
+
};
|
|
96
|
+
const startGesture = () => {
|
|
97
|
+
onSwipeStart?.();
|
|
98
|
+
if (keyboardDismissMode === 'on-drag') {
|
|
99
|
+
Keyboard.dismiss();
|
|
100
|
+
}
|
|
101
|
+
panX.stopAnimation();
|
|
102
|
+
// @ts-expect-error: _value is private, but docs use it as well
|
|
103
|
+
panX.setOffset(panX._value);
|
|
104
|
+
};
|
|
105
|
+
const respondToGesture = (_, gestureState) => {
|
|
106
|
+
const diffX = layoutDirection === 'rtl' ? -gestureState.dx : gestureState.dx;
|
|
107
|
+
if (
|
|
108
|
+
// swiping left
|
|
109
|
+
diffX > 0 && index <= 0 ||
|
|
110
|
+
// swiping right
|
|
111
|
+
diffX < 0 && index >= routes.length - 1) {
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
if (layout.width) {
|
|
115
|
+
// @ts-expect-error: _offset is private, but docs use it as well
|
|
116
|
+
const position = (panX._offset + diffX) / -layout.width;
|
|
117
|
+
const next = position > index ? Math.ceil(position) : Math.floor(position);
|
|
118
|
+
if (next !== index) {
|
|
119
|
+
listenersRef.current.forEach(listener => listener(next));
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
panX.setValue(diffX);
|
|
123
|
+
};
|
|
124
|
+
const finishGesture = (_, gestureState) => {
|
|
125
|
+
panX.flattenOffset();
|
|
126
|
+
onSwipeEnd?.();
|
|
127
|
+
const currentIndex = typeof pendingIndexRef.current === 'number' ? pendingIndexRef.current : currentIndexRef.current;
|
|
128
|
+
let nextIndex = currentIndex;
|
|
129
|
+
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)) {
|
|
130
|
+
nextIndex = Math.round(Math.min(Math.max(0, layoutDirection === 'rtl' ? currentIndex + gestureState.dx / Math.abs(gestureState.dx) : currentIndex - gestureState.dx / Math.abs(gestureState.dx)), routes.length - 1));
|
|
131
|
+
currentIndexRef.current = nextIndex;
|
|
132
|
+
}
|
|
133
|
+
if (!isFinite(nextIndex)) {
|
|
134
|
+
nextIndex = currentIndex;
|
|
135
|
+
}
|
|
136
|
+
jumpToIndex(nextIndex, true);
|
|
137
|
+
};
|
|
138
|
+
const addEnterListener = useLatestCallback(listener => {
|
|
139
|
+
listenersRef.current.push(listener);
|
|
140
|
+
return () => {
|
|
141
|
+
const index = listenersRef.current.indexOf(listener);
|
|
142
|
+
if (index > -1) {
|
|
143
|
+
listenersRef.current.splice(index, 1);
|
|
144
|
+
}
|
|
145
|
+
};
|
|
146
|
+
});
|
|
147
|
+
const jumpTo = useLatestCallback(key => {
|
|
148
|
+
const index = navigationStateRef.current.routes.findIndex(route => route.key === key);
|
|
149
|
+
jumpToIndex(index);
|
|
150
|
+
onIndexChange(index);
|
|
151
|
+
});
|
|
152
|
+
const panResponder = PanResponder.create({
|
|
153
|
+
onMoveShouldSetPanResponder: canMoveScreen,
|
|
154
|
+
onMoveShouldSetPanResponderCapture: canMoveScreen,
|
|
155
|
+
onPanResponderGrant: startGesture,
|
|
156
|
+
onPanResponderMove: respondToGesture,
|
|
157
|
+
onPanResponderTerminate: finishGesture,
|
|
158
|
+
onPanResponderRelease: finishGesture,
|
|
159
|
+
onPanResponderTerminationRequest: () => true
|
|
160
|
+
});
|
|
161
|
+
const maxTranslate = layout.width * (routes.length - 1);
|
|
162
|
+
const translateX = Animated.multiply(panX.interpolate({
|
|
163
|
+
inputRange: [-maxTranslate, 0],
|
|
164
|
+
outputRange: [-maxTranslate, 0],
|
|
165
|
+
extrapolate: 'clamp'
|
|
166
|
+
}), layoutDirection === 'rtl' ? -1 : 1);
|
|
167
|
+
const position = React.useMemo(() => layout.width ? Animated.divide(panX, -layout.width) : null, [layout.width, panX]);
|
|
168
|
+
return children({
|
|
169
|
+
position: position ?? new Animated.Value(index),
|
|
170
|
+
addEnterListener,
|
|
171
|
+
jumpTo,
|
|
172
|
+
render: children => /*#__PURE__*/_jsx(Animated.View, {
|
|
173
|
+
style: [styles.sheet, layout.width ? {
|
|
174
|
+
width: routes.length * layout.width,
|
|
175
|
+
transform: [{
|
|
176
|
+
translateX
|
|
177
|
+
}]
|
|
178
|
+
} : null, style],
|
|
179
|
+
...panResponder.panHandlers,
|
|
180
|
+
children: React.Children.map(children, (child, i) => {
|
|
181
|
+
const route = routes[i];
|
|
182
|
+
const focused = i === index;
|
|
183
|
+
return /*#__PURE__*/_jsx(View, {
|
|
184
|
+
style: layout.width ? {
|
|
185
|
+
width: layout.width
|
|
186
|
+
} : focused ? StyleSheet.absoluteFill : null,
|
|
187
|
+
children: focused || layout.width ? child : null
|
|
188
|
+
}, route.key);
|
|
189
|
+
})
|
|
190
|
+
})
|
|
191
|
+
});
|
|
192
|
+
}
|
|
193
|
+
const styles = StyleSheet.create({
|
|
194
|
+
sheet: {
|
|
195
|
+
flex: 1,
|
|
196
|
+
flexDirection: 'row',
|
|
197
|
+
alignItems: 'stretch'
|
|
198
|
+
}
|
|
199
|
+
});
|
|
200
|
+
//# sourceMappingURL=PanResponderAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","Animated","Keyboard","PanResponder","StyleSheet","View","useLatestCallback","useAnimatedValue","jsx","_jsx","DEAD_ZONE","DefaultTransitionSpec","timing","spring","stiffness","damping","mass","overshootClamping","PanResponderAdapter","layout","keyboardDismissMode","swipeEnabled","navigationState","onIndexChange","onSwipeStart","onSwipeEnd","children","style","animationEnabled","layoutDirection","routes","index","panX","listenersRef","useRef","navigationStateRef","layoutRef","onIndexChangeRef","currentIndexRef","pendingIndexRef","swipeVelocityThreshold","swipeDistanceThreshold","width","jumpToIndex","animate","offset","current","transitionConfig","parallel","toValue","useNativeDriver","start","finished","undefined","setValue","useEffect","dismiss","isMovingHorizontally","_","gestureState","Math","abs","dx","dy","vx","vy","canMoveScreen","event","diffX","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","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,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { Platform, Pressable } from 'react-native';
|
|
5
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
6
|
+
const ANDROID_VERSION_LOLLIPOP = 21;
|
|
7
|
+
const ANDROID_SUPPORTS_RIPPLE = Platform.OS === 'android' && Platform.Version >= ANDROID_VERSION_LOLLIPOP;
|
|
8
|
+
|
|
9
|
+
/**
|
|
10
|
+
* PlatformPressable provides an abstraction on top of Pressable to handle platform differences.
|
|
11
|
+
*/
|
|
12
|
+
export function PlatformPressable({
|
|
13
|
+
disabled,
|
|
14
|
+
android_ripple,
|
|
15
|
+
pressColor = 'rgba(0, 0, 0, .32)',
|
|
16
|
+
pressOpacity,
|
|
17
|
+
style,
|
|
18
|
+
onPress,
|
|
19
|
+
...rest
|
|
20
|
+
}) {
|
|
21
|
+
const handlePress = e => {
|
|
22
|
+
if (Platform.OS === 'web' && rest.href !== null) {
|
|
23
|
+
// @ts-expect-error: these properties exist on web, but not in React Native
|
|
24
|
+
const hasModifierKey = e.metaKey || e.altKey || e.ctrlKey || e.shiftKey; // ignore clicks with modifier keys
|
|
25
|
+
// @ts-expect-error: these properties exist on web, but not in React Native
|
|
26
|
+
const isLeftClick = e.button === null || e.button === 0; // only handle left clicks
|
|
27
|
+
const isSelfTarget = [undefined, null, '', 'self'].includes(
|
|
28
|
+
// @ts-expect-error: these properties exist on web, but not in React Native
|
|
29
|
+
e.currentTarget?.target); // let browser handle "target=_blank" etc.
|
|
30
|
+
|
|
31
|
+
if (!hasModifierKey && isLeftClick && isSelfTarget) {
|
|
32
|
+
e.preventDefault();
|
|
33
|
+
onPress?.(e);
|
|
34
|
+
}
|
|
35
|
+
} else {
|
|
36
|
+
onPress?.(e);
|
|
37
|
+
}
|
|
38
|
+
};
|
|
39
|
+
return /*#__PURE__*/_jsx(Pressable, {
|
|
40
|
+
android_ripple: ANDROID_SUPPORTS_RIPPLE ? {
|
|
41
|
+
color: pressColor,
|
|
42
|
+
...android_ripple
|
|
43
|
+
} : undefined,
|
|
44
|
+
style: ({
|
|
45
|
+
pressed
|
|
46
|
+
}) => [{
|
|
47
|
+
cursor: Platform.OS === 'web' || Platform.OS === 'ios' ?
|
|
48
|
+
// Pointer cursor on web
|
|
49
|
+
// Hover effect on iPad and visionOS
|
|
50
|
+
'pointer' : 'auto',
|
|
51
|
+
opacity: pressed && !ANDROID_SUPPORTS_RIPPLE ? pressOpacity : 1
|
|
52
|
+
}, typeof style === 'function' ? style({
|
|
53
|
+
pressed
|
|
54
|
+
}) : style],
|
|
55
|
+
onPress: disabled ? undefined : handlePress,
|
|
56
|
+
...rest
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=PlatformPressable.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","Platform","Pressable","jsx","_jsx","ANDROID_VERSION_LOLLIPOP","ANDROID_SUPPORTS_RIPPLE","OS","Version","PlatformPressable","disabled","android_ripple","pressColor","pressOpacity","style","onPress","rest","handlePress","e","href","hasModifierKey","metaKey","altKey","ctrlKey","shiftKey","isLeftClick","button","isSelfTarget","undefined","includes","currentTarget","target","preventDefault","color","pressed","cursor","opacity"],"sourceRoot":"..\\..\\src","sources":["PlatformPressable.tsx"],"mappings":";;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAEEC,QAAQ,EACRC,SAAS,QAEJ,cAAc;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAStB,MAAMC,wBAAwB,GAAG,EAAE;AACnC,MAAMC,uBAAuB,GAC3BL,QAAQ,CAACM,EAAE,KAAK,SAAS,IAAIN,QAAQ,CAACO,OAAO,IAAIH,wBAAwB;;AAE3E;AACA;AACA;AACA,OAAO,SAASI,iBAAiBA,CAAC;EAChCC,QAAQ;EACRC,cAAc;EACdC,UAAU,GAAG,oBAAoB;EACjCC,YAAY;EACZC,KAAK;EACLC,OAAO;EACP,GAAGC;AACE,CAAC,EAAE;EACR,MAAMC,WAAW,GAAIC,CAAwB,IAAK;IAChD,IAAIjB,QAAQ,CAACM,EAAE,KAAK,KAAK,IAAIS,IAAI,CAACG,IAAI,KAAK,IAAI,EAAE;MAC/C;MACA,MAAMC,cAAc,GAAGF,CAAC,CAACG,OAAO,IAAIH,CAAC,CAACI,MAAM,IAAIJ,CAAC,CAACK,OAAO,IAAIL,CAAC,CAACM,QAAQ,CAAC,CAAC;MACzE;MACA,MAAMC,WAAW,GAAGP,CAAC,CAACQ,MAAM,KAAK,IAAI,IAAIR,CAAC,CAACQ,MAAM,KAAK,CAAC,CAAC,CAAC;MACzD,MAAMC,YAAY,GAAG,CAACC,SAAS,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,CAACC,QAAQ;MACzD;MACAX,CAAC,CAACY,aAAa,EAAEC,MACnB,CAAC,CAAC,CAAC;;MAEH,IAAI,CAACX,cAAc,IAAIK,WAAW,IAAIE,YAAY,EAAE;QAClDT,CAAC,CAACc,cAAc,CAAC,CAAC;QAClBjB,OAAO,GAAGG,CAAC,CAAC;MACd;IACF,CAAC,MAAM;MACLH,OAAO,GAAGG,CAAC,CAAC;IACd;EACF,CAAC;EAED,oBACEd,IAAA,CAACF,SAAS;IACRS,cAAc,EACZL,uBAAuB,GACnB;MAAE2B,KAAK,EAAErB,UAAU;MAAE,GAAGD;IAAe,CAAC,GACxCiB,SACL;IACDd,KAAK,EAAEA,CAAC;MAAEoB;IAAQ,CAAC,KAAK,CACtB;MACEC,MAAM,EACJlC,QAAQ,CAACM,EAAE,KAAK,KAAK,IAAIN,QAAQ,CAACM,EAAE,KAAK,KAAK;MAC1C;MACA;MACA,SAAS,GACT,MAAM;MACZ6B,OAAO,EAAEF,OAAO,IAAI,CAAC5B,uBAAuB,GAAGO,YAAY,GAAG;IAChE,CAAC,EACD,OAAOC,KAAK,KAAK,UAAU,GAAGA,KAAK,CAAC;MAAEoB;IAAQ,CAAC,CAAC,GAAGpB,KAAK,CACxD;IACFC,OAAO,EAAEL,QAAQ,GAAGkB,SAAS,GAAGX,WAAY;IAAA,GACxCD;EAAI,CACT,CAAC;AAEN","ignoreList":[]}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
5
|
+
const SceneComponent = /*#__PURE__*/React.memo(({
|
|
6
|
+
component,
|
|
7
|
+
...rest
|
|
8
|
+
}) => {
|
|
9
|
+
return /*#__PURE__*/React.createElement(component, rest);
|
|
10
|
+
});
|
|
11
|
+
SceneComponent.displayName = 'SceneComponent';
|
|
12
|
+
export function SceneMap(scenes) {
|
|
13
|
+
return ({
|
|
14
|
+
route,
|
|
15
|
+
jumpTo,
|
|
16
|
+
position
|
|
17
|
+
}) => /*#__PURE__*/_jsx(SceneComponent, {
|
|
18
|
+
component: scenes[route.key],
|
|
19
|
+
route: route,
|
|
20
|
+
jumpTo: jumpTo,
|
|
21
|
+
position: position
|
|
22
|
+
}, route.key);
|
|
23
|
+
}
|
|
24
|
+
//# sourceMappingURL=SceneMap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","jsx","_jsx","SceneComponent","memo","component","rest","createElement","displayName","SceneMap","scenes","route","jumpTo","position","key"],"sourceRoot":"..\\..\\src","sources":["SceneMap.tsx"],"mappings":";;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAQ/B,MAAMC,cAAc,gBAAGH,KAAK,CAACI,IAAI,CAC/B,CAAiE;EAC/DC,SAAS;EACT,GAAGC;AACF,CAAC,KAAK;EACP,oBAAON,KAAK,CAACO,aAAa,CAACF,SAAS,EAAEC,IAAI,CAAC;AAC7C,CACF,CAAC;AAEDH,cAAc,CAACK,WAAW,GAAG,gBAAgB;AAE7C,OAAO,SAASC,QAAQA,CAAIC,MAAiD,EAAE;EAC7E,OAAO,CAAC;IAAEC,KAAK;IAAEC,MAAM;IAAEC;EAAqB,CAAC,kBAC7CX,IAAA,CAACC,cAAc;IAEbE,SAAS,EAAEK,MAAM,CAACC,KAAK,CAACG,GAAG,CAAE;IAC7BH,KAAK,EAAEA,KAAM;IACbC,MAAM,EAAEA,MAAO;IACfC,QAAQ,EAAEA;EAAS,GAJdF,KAAK,CAACG,GAKZ,CACF;AACH","ignoreList":[]}
|
|
@@ -0,0 +1,73 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import * as React from 'react';
|
|
4
|
+
import { StyleSheet, View } from 'react-native';
|
|
5
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
6
|
+
export function SceneView({
|
|
7
|
+
children,
|
|
8
|
+
navigationState,
|
|
9
|
+
lazy,
|
|
10
|
+
layout,
|
|
11
|
+
index,
|
|
12
|
+
lazyPreloadDistance,
|
|
13
|
+
addEnterListener,
|
|
14
|
+
style
|
|
15
|
+
}) {
|
|
16
|
+
const [isLoading, setIsLoading] = React.useState(Math.abs(navigationState.index - index) > lazyPreloadDistance);
|
|
17
|
+
if (isLoading && Math.abs(navigationState.index - index) <= lazyPreloadDistance) {
|
|
18
|
+
// Always render the route when it becomes focused
|
|
19
|
+
setIsLoading(false);
|
|
20
|
+
}
|
|
21
|
+
React.useEffect(() => {
|
|
22
|
+
const handleEnter = value => {
|
|
23
|
+
// If we're entering the current route, we need to load it
|
|
24
|
+
if (value === index) {
|
|
25
|
+
setIsLoading(prevState => {
|
|
26
|
+
if (prevState) {
|
|
27
|
+
return false;
|
|
28
|
+
}
|
|
29
|
+
return prevState;
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
};
|
|
33
|
+
let unsubscribe;
|
|
34
|
+
let timer;
|
|
35
|
+
if (lazy && isLoading) {
|
|
36
|
+
// If lazy mode is enabled, listen to when we enter screens
|
|
37
|
+
unsubscribe = addEnterListener(handleEnter);
|
|
38
|
+
} else if (isLoading) {
|
|
39
|
+
// If lazy mode is not enabled, render the scene with a delay if not loaded already
|
|
40
|
+
// This improves the initial startup time as the scene is no longer blocking
|
|
41
|
+
timer = setTimeout(() => setIsLoading(false), 0);
|
|
42
|
+
}
|
|
43
|
+
return () => {
|
|
44
|
+
unsubscribe?.();
|
|
45
|
+
clearTimeout(timer);
|
|
46
|
+
};
|
|
47
|
+
}, [addEnterListener, index, isLoading, lazy]);
|
|
48
|
+
const focused = navigationState.index === index;
|
|
49
|
+
return /*#__PURE__*/_jsx(View, {
|
|
50
|
+
accessibilityElementsHidden: !focused,
|
|
51
|
+
importantForAccessibility: focused ? 'auto' : 'no-hide-descendants',
|
|
52
|
+
style: [styles.route,
|
|
53
|
+
// If we don't have the layout yet, make the focused screen fill the container
|
|
54
|
+
// This avoids delay before we are able to render pages side by side
|
|
55
|
+
layout.width ? {
|
|
56
|
+
width: layout.width
|
|
57
|
+
} : focused ? StyleSheet.absoluteFill : null, style],
|
|
58
|
+
children:
|
|
59
|
+
// Only render the route only if it's either focused or layout is available
|
|
60
|
+
// When layout is not available, we must not render unfocused routes
|
|
61
|
+
// so that the focused route can fill the screen
|
|
62
|
+
focused || layout.width ? children({
|
|
63
|
+
loading: isLoading
|
|
64
|
+
}) : null
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
const styles = StyleSheet.create({
|
|
68
|
+
route: {
|
|
69
|
+
flex: 1,
|
|
70
|
+
overflow: 'hidden'
|
|
71
|
+
}
|
|
72
|
+
});
|
|
73
|
+
//# sourceMappingURL=SceneView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","StyleSheet","View","jsx","_jsx","SceneView","children","navigationState","lazy","layout","index","lazyPreloadDistance","addEnterListener","style","isLoading","setIsLoading","useState","Math","abs","useEffect","handleEnter","value","prevState","unsubscribe","timer","setTimeout","clearTimeout","focused","accessibilityElementsHidden","importantForAccessibility","styles","route","width","absoluteFill","loading","create","flex","overflow"],"sourceRoot":"..\\..\\src","sources":["SceneView.tsx"],"mappings":";;AAAA,OAAO,KAAKA,KAAK,MAAM,OAAO;AAC9B,SAAyBC,UAAU,EAAEC,IAAI,QAAwB,cAAc;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAmBhF,OAAO,SAASC,SAASA,CAAkB;EACzCC,QAAQ;EACRC,eAAe;EACfC,IAAI;EACJC,MAAM;EACNC,KAAK;EACLC,mBAAmB;EACnBC,gBAAgB;EAChBC;AACQ,CAAC,EAAE;EACX,MAAM,CAACC,SAAS,EAAEC,YAAY,CAAC,GAAGf,KAAK,CAACgB,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;EAEAf,KAAK,CAACmB,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,KAAgD;IAEpD,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;MACXQ,WAAW,GAAG,CAAC;MACfG,YAAY,CAACF,KAAK,CAAC;IACrB,CAAC;EACH,CAAC,EAAE,CAACZ,gBAAgB,EAAEF,KAAK,EAAEI,SAAS,EAAEN,IAAI,CAAC,CAAC;EAE9C,MAAMmB,OAAO,GAAGpB,eAAe,CAACG,KAAK,KAAKA,KAAK;EAE/C,oBACEN,IAAA,CAACF,IAAI;IACH0B,2BAA2B,EAAE,CAACD,OAAQ;IACtCE,yBAAyB,EAAEF,OAAO,GAAG,MAAM,GAAG,qBAAsB;IACpEd,KAAK,EAAE,CACLiB,MAAM,CAACC,KAAK;IACZ;IACA;IACAtB,MAAM,CAACuB,KAAK,GACR;MAAEA,KAAK,EAAEvB,MAAM,CAACuB;IAAM,CAAC,GACvBL,OAAO,GACL1B,UAAU,CAACgC,YAAY,GACvB,IAAI,EACVpB,KAAK,CACL;IAAAP,QAAA;IAGA;IACA;IACA;IACAqB,OAAO,IAAIlB,MAAM,CAACuB,KAAK,GAAG1B,QAAQ,CAAC;MAAE4B,OAAO,EAAEpB;IAAU,CAAC,CAAC,GAAG;EAAI,CAE/D,CAAC;AAEX;AAEA,MAAMgB,MAAM,GAAG7B,UAAU,CAACkC,MAAM,CAAC;EAC/BJ,KAAK,EAAE;IACLK,IAAI,EAAE,CAAC;IACPC,QAAQ,EAAE;EACZ;AACF,CAAC,CAAC","ignoreList":[]}
|