react-native-debug-toolkit 2.0.0 → 2.1.0
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/README.md +72 -72
- package/README.zh-CN.md +209 -0
- package/lib/commonjs/components/ClipboardTab.js +15 -16
- package/lib/commonjs/components/ClipboardTab.js.map +1 -1
- package/lib/commonjs/components/ConsoleLogTab.js +69 -202
- package/lib/commonjs/components/ConsoleLogTab.js.map +1 -1
- package/lib/commonjs/components/DebugPanel.js +230 -0
- package/lib/commonjs/components/DebugPanel.js.map +1 -0
- package/lib/commonjs/components/DebugView.js +66 -0
- package/lib/commonjs/components/DebugView.js.map +1 -0
- package/lib/commonjs/components/EnvironmentTab.js +22 -23
- package/lib/commonjs/components/EnvironmentTab.js.map +1 -1
- package/lib/commonjs/components/FeatureTabBar.js +182 -0
- package/lib/commonjs/components/FeatureTabBar.js.map +1 -0
- package/lib/commonjs/components/FloatIcon.js +187 -0
- package/lib/commonjs/components/FloatIcon.js.map +1 -0
- package/lib/commonjs/components/FloatPanelView.js +140 -723
- package/lib/commonjs/components/FloatPanelView.js.map +1 -1
- package/lib/commonjs/components/NavigationLogTab.js +8 -8
- package/lib/commonjs/components/NavigationLogTab.js.map +1 -1
- package/lib/commonjs/components/NetworkLogTab.js +179 -350
- package/lib/commonjs/components/NetworkLogTab.js.map +1 -1
- package/lib/commonjs/components/ThirdPartyLibsTab.js +8 -8
- package/lib/commonjs/components/ThirdPartyLibsTab.js.map +1 -1
- package/lib/commonjs/components/TrackLogTab.js +106 -248
- package/lib/commonjs/components/TrackLogTab.js.map +1 -1
- package/lib/commonjs/components/ZustandLogTab.js +148 -288
- package/lib/commonjs/components/ZustandLogTab.js.map +1 -1
- package/lib/commonjs/components/shared/CollapsibleSection.js +4 -4
- package/lib/commonjs/components/shared/CollapsibleSection.js.map +1 -1
- package/lib/commonjs/components/shared/CopyButton.js +3 -3
- package/lib/commonjs/components/shared/CopyButton.js.map +1 -1
- package/lib/commonjs/components/shared/LogListScreen.js +174 -0
- package/lib/commonjs/components/shared/LogListScreen.js.map +1 -0
- package/lib/commonjs/core/DebugToolkit.js +92 -112
- package/lib/commonjs/core/DebugToolkit.js.map +1 -1
- package/lib/commonjs/core/DebugToolkitProvider.js +30 -28
- package/lib/commonjs/core/DebugToolkitProvider.js.map +1 -1
- package/lib/commonjs/features/ClipboardFeature.js +6 -2
- package/lib/commonjs/features/ClipboardFeature.js.map +1 -1
- package/lib/commonjs/features/ConsoleLogFeature.js +66 -49
- package/lib/commonjs/features/ConsoleLogFeature.js.map +1 -1
- package/lib/commonjs/features/EnvironmentFeature.js +5 -13
- package/lib/commonjs/features/EnvironmentFeature.js.map +1 -1
- package/lib/commonjs/features/NavigationLogFeature.js +17 -38
- package/lib/commonjs/features/NavigationLogFeature.js.map +1 -1
- package/lib/commonjs/features/NetworkFeature.js +35 -256
- package/lib/commonjs/features/NetworkFeature.js.map +1 -1
- package/lib/commonjs/features/TrackFeature.js +17 -38
- package/lib/commonjs/features/TrackFeature.js.map +1 -1
- package/lib/commonjs/features/ZustandLogFeature.js +21 -38
- package/lib/commonjs/features/ZustandLogFeature.js.map +1 -1
- package/lib/commonjs/hooks/useNavigationLogger.js.map +1 -1
- package/lib/commonjs/index.js +7 -20
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/initialize.js +19 -96
- package/lib/commonjs/initialize.js.map +1 -1
- package/lib/commonjs/interceptors/networkInterceptor.js +466 -0
- package/lib/commonjs/interceptors/networkInterceptor.js.map +1 -0
- package/lib/commonjs/utils/colors.js +48 -0
- package/lib/commonjs/utils/colors.js.map +1 -0
- package/lib/commonjs/utils/createChannelFeature.js +48 -0
- package/lib/commonjs/utils/createChannelFeature.js.map +1 -0
- package/lib/commonjs/utils/layout.js +8 -0
- package/lib/commonjs/utils/layout.js.map +1 -0
- package/lib/commonjs/utils/urlRewriterRegistry.js +14 -0
- package/lib/commonjs/utils/urlRewriterRegistry.js.map +1 -0
- package/lib/module/components/ClipboardTab.js +8 -8
- package/lib/module/components/ClipboardTab.js.map +1 -1
- package/lib/module/components/ConsoleLogTab.js +66 -199
- package/lib/module/components/ConsoleLogTab.js.map +1 -1
- package/lib/module/components/DebugPanel.js +225 -0
- package/lib/module/components/DebugPanel.js.map +1 -0
- package/lib/module/components/DebugView.js +61 -0
- package/lib/module/components/DebugView.js.map +1 -0
- package/lib/module/components/EnvironmentTab.js +3 -3
- package/lib/module/components/EnvironmentTab.js.map +1 -1
- package/lib/module/components/FeatureTabBar.js +177 -0
- package/lib/module/components/FeatureTabBar.js.map +1 -0
- package/lib/module/components/FloatIcon.js +182 -0
- package/lib/module/components/FloatIcon.js.map +1 -0
- package/lib/module/components/FloatPanelView.js +141 -723
- package/lib/module/components/FloatPanelView.js.map +1 -1
- package/lib/module/components/NavigationLogTab.js +1 -1
- package/lib/module/components/NavigationLogTab.js.map +1 -1
- package/lib/module/components/NetworkLogTab.js +167 -338
- package/lib/module/components/NetworkLogTab.js.map +1 -1
- package/lib/module/components/ThirdPartyLibsTab.js +1 -1
- package/lib/module/components/ThirdPartyLibsTab.js.map +1 -1
- package/lib/module/components/TrackLogTab.js +94 -236
- package/lib/module/components/TrackLogTab.js.map +1 -1
- package/lib/module/components/ZustandLogTab.js +136 -276
- package/lib/module/components/ZustandLogTab.js.map +1 -1
- package/lib/module/components/shared/CollapsibleSection.js +1 -1
- package/lib/module/components/shared/CollapsibleSection.js.map +1 -1
- package/lib/module/components/shared/CopyButton.js +1 -1
- package/lib/module/components/shared/CopyButton.js.map +1 -1
- package/lib/module/components/shared/LogListScreen.js +169 -0
- package/lib/module/components/shared/LogListScreen.js.map +1 -0
- package/lib/module/core/DebugToolkit.js +92 -111
- package/lib/module/core/DebugToolkit.js.map +1 -1
- package/lib/module/core/DebugToolkitProvider.js +31 -29
- package/lib/module/core/DebugToolkitProvider.js.map +1 -1
- package/lib/module/features/ClipboardFeature.js +6 -2
- package/lib/module/features/ClipboardFeature.js.map +1 -1
- package/lib/module/features/ConsoleLogFeature.js +65 -49
- package/lib/module/features/ConsoleLogFeature.js.map +1 -1
- package/lib/module/features/EnvironmentFeature.js +5 -13
- package/lib/module/features/EnvironmentFeature.js.map +1 -1
- package/lib/module/features/NavigationLogFeature.js +16 -38
- package/lib/module/features/NavigationLogFeature.js.map +1 -1
- package/lib/module/features/NetworkFeature.js +34 -255
- package/lib/module/features/NetworkFeature.js.map +1 -1
- package/lib/module/features/TrackFeature.js +16 -38
- package/lib/module/features/TrackFeature.js.map +1 -1
- package/lib/module/features/ZustandLogFeature.js +22 -38
- package/lib/module/features/ZustandLogFeature.js.map +1 -1
- package/lib/module/hooks/useNavigationLogger.js.map +1 -1
- package/lib/module/index.js +2 -3
- package/lib/module/index.js.map +1 -1
- package/lib/module/initialize.js +19 -95
- package/lib/module/initialize.js.map +1 -1
- package/lib/module/interceptors/networkInterceptor.js +460 -0
- package/lib/module/interceptors/networkInterceptor.js.map +1 -0
- package/lib/module/utils/colors.js +43 -0
- package/lib/module/utils/colors.js.map +1 -0
- package/lib/module/utils/createChannelFeature.js +44 -0
- package/lib/module/utils/createChannelFeature.js.map +1 -0
- package/lib/module/utils/layout.js +4 -0
- package/lib/module/utils/layout.js.map +1 -0
- package/lib/module/utils/urlRewriterRegistry.js +10 -0
- package/lib/module/utils/urlRewriterRegistry.js.map +1 -0
- package/lib/typescript/src/components/ClipboardTab.d.ts.map +1 -1
- package/lib/typescript/src/components/ConsoleLogTab.d.ts.map +1 -1
- package/lib/typescript/src/components/DebugPanel.d.ts +9 -0
- package/lib/typescript/src/components/DebugPanel.d.ts.map +1 -0
- package/lib/typescript/src/components/DebugView.d.ts +19 -0
- package/lib/typescript/src/components/DebugView.d.ts.map +1 -0
- package/lib/typescript/src/components/EnvironmentTab.d.ts.map +1 -1
- package/lib/typescript/src/components/FeatureTabBar.d.ts +13 -0
- package/lib/typescript/src/components/FeatureTabBar.d.ts.map +1 -0
- package/lib/typescript/src/components/FloatIcon.d.ts +12 -0
- package/lib/typescript/src/components/FloatIcon.d.ts.map +1 -0
- package/lib/typescript/src/components/FloatPanelView.d.ts +4 -59
- package/lib/typescript/src/components/FloatPanelView.d.ts.map +1 -1
- package/lib/typescript/src/components/NetworkLogTab.d.ts.map +1 -1
- package/lib/typescript/src/components/ThirdPartyLibsTab.d.ts.map +1 -1
- package/lib/typescript/src/components/TrackLogTab.d.ts.map +1 -1
- package/lib/typescript/src/components/ZustandLogTab.d.ts.map +1 -1
- package/lib/typescript/src/components/shared/LogListScreen.d.ts +21 -0
- package/lib/typescript/src/components/shared/LogListScreen.d.ts.map +1 -0
- package/lib/typescript/src/core/DebugToolkit.d.ts +11 -18
- package/lib/typescript/src/core/DebugToolkit.d.ts.map +1 -1
- package/lib/typescript/src/core/DebugToolkitProvider.d.ts +2 -5
- package/lib/typescript/src/core/DebugToolkitProvider.d.ts.map +1 -1
- package/lib/typescript/src/features/ClipboardFeature.d.ts +4 -0
- package/lib/typescript/src/features/ClipboardFeature.d.ts.map +1 -1
- package/lib/typescript/src/features/ConsoleLogFeature.d.ts +2 -0
- package/lib/typescript/src/features/ConsoleLogFeature.d.ts.map +1 -1
- package/lib/typescript/src/features/EnvironmentFeature.d.ts.map +1 -1
- package/lib/typescript/src/features/NavigationLogFeature.d.ts +2 -0
- package/lib/typescript/src/features/NavigationLogFeature.d.ts.map +1 -1
- package/lib/typescript/src/features/NetworkFeature.d.ts +7 -20
- package/lib/typescript/src/features/NetworkFeature.d.ts.map +1 -1
- package/lib/typescript/src/features/TrackFeature.d.ts +2 -0
- package/lib/typescript/src/features/TrackFeature.d.ts.map +1 -1
- package/lib/typescript/src/features/ZustandLogFeature.d.ts +2 -0
- package/lib/typescript/src/features/ZustandLogFeature.d.ts.map +1 -1
- package/lib/typescript/src/hooks/useNavigationLogger.d.ts +1 -8
- package/lib/typescript/src/hooks/useNavigationLogger.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +5 -5
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/initialize.d.ts +3 -22
- package/lib/typescript/src/initialize.d.ts.map +1 -1
- package/lib/typescript/src/interceptors/networkInterceptor.d.ts +18 -0
- package/lib/typescript/src/interceptors/networkInterceptor.d.ts.map +1 -0
- package/lib/typescript/src/types/index.d.ts +26 -29
- package/lib/typescript/src/types/index.d.ts.map +1 -1
- package/lib/typescript/src/utils/colors.d.ts +21 -0
- package/lib/typescript/src/utils/colors.d.ts.map +1 -0
- package/lib/typescript/src/utils/createChannelFeature.d.ts +18 -0
- package/lib/typescript/src/utils/createChannelFeature.d.ts.map +1 -0
- package/lib/typescript/src/utils/layout.d.ts +2 -0
- package/lib/typescript/src/utils/layout.d.ts.map +1 -0
- package/lib/typescript/src/utils/urlRewriterRegistry.d.ts +7 -0
- package/lib/typescript/src/utils/urlRewriterRegistry.d.ts.map +1 -0
- package/package.json +5 -1
- package/src/components/ClipboardTab.tsx +8 -8
- package/src/components/ConsoleLogTab.tsx +49 -163
- package/src/components/DebugPanel.tsx +215 -0
- package/src/components/DebugView.tsx +80 -0
- package/src/components/EnvironmentTab.tsx +3 -3
- package/src/components/FeatureTabBar.tsx +204 -0
- package/src/components/FloatIcon.tsx +171 -0
- package/src/components/FloatPanelView.tsx +135 -647
- package/src/components/NavigationLogTab.tsx +1 -1
- package/src/components/NetworkLogTab.tsx +128 -269
- package/src/components/ThirdPartyLibsTab.tsx +3 -3
- package/src/components/TrackLogTab.tsx +53 -188
- package/src/components/ZustandLogTab.tsx +79 -181
- package/src/components/shared/CollapsibleSection.tsx +1 -1
- package/src/components/shared/CopyButton.tsx +1 -1
- package/src/components/shared/LogListScreen.tsx +164 -0
- package/src/core/DebugToolkit.tsx +114 -138
- package/src/core/DebugToolkitProvider.tsx +32 -38
- package/src/features/ClipboardFeature.ts +6 -2
- package/src/features/ConsoleLogFeature.ts +66 -68
- package/src/features/EnvironmentFeature.ts +5 -13
- package/src/features/NavigationLogFeature.ts +12 -42
- package/src/features/NetworkFeature.ts +43 -405
- package/src/features/TrackFeature.ts +14 -49
- package/src/features/ZustandLogFeature.ts +16 -42
- package/src/hooks/useNavigationLogger.ts +1 -6
- package/src/index.ts +5 -9
- package/src/initialize.ts +28 -120
- package/src/interceptors/networkInterceptor.ts +646 -0
- package/src/types/index.ts +25 -36
- package/src/utils/colors.ts +38 -0
- package/src/utils/createChannelFeature.ts +55 -0
- package/src/utils/layout.ts +1 -0
- package/src/utils/urlRewriterRegistry.ts +10 -0
- package/lib/commonjs/utils/constants.js +0 -135
- package/lib/commonjs/utils/constants.js.map +0 -1
- package/lib/module/utils/constants.js +0 -130
- package/lib/module/utils/constants.js.map +0 -1
- package/lib/typescript/src/utils/constants.d.ts +0 -96
- package/lib/typescript/src/utils/constants.d.ts.map +0 -1
- package/src/utils/constants.ts +0 -91
|
@@ -0,0 +1,225 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React, { useCallback, useEffect, useRef } from 'react';
|
|
4
|
+
import { View, Text, StyleSheet, Animated, PanResponder, Pressable, TouchableOpacity, useWindowDimensions } from 'react-native';
|
|
5
|
+
import { Colors } from '../utils/colors';
|
|
6
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
7
|
+
export function DebugPanel({
|
|
8
|
+
onClose,
|
|
9
|
+
onClearAll,
|
|
10
|
+
children
|
|
11
|
+
}) {
|
|
12
|
+
const {
|
|
13
|
+
height: screenHeight
|
|
14
|
+
} = useWindowDimensions();
|
|
15
|
+
const panelTranslateY = useRef(new Animated.Value(screenHeight)).current;
|
|
16
|
+
const backdropOpacity = useRef(new Animated.Value(0)).current;
|
|
17
|
+
useEffect(() => {
|
|
18
|
+
requestAnimationFrame(() => {
|
|
19
|
+
Animated.parallel([Animated.spring(panelTranslateY, {
|
|
20
|
+
toValue: 0,
|
|
21
|
+
friction: 8,
|
|
22
|
+
tension: 65,
|
|
23
|
+
useNativeDriver: true
|
|
24
|
+
}), Animated.timing(backdropOpacity, {
|
|
25
|
+
toValue: 1,
|
|
26
|
+
duration: 250,
|
|
27
|
+
useNativeDriver: true
|
|
28
|
+
})]).start();
|
|
29
|
+
});
|
|
30
|
+
}, [panelTranslateY, backdropOpacity]);
|
|
31
|
+
const closePanel = useCallback(() => {
|
|
32
|
+
Animated.parallel([Animated.spring(panelTranslateY, {
|
|
33
|
+
toValue: screenHeight,
|
|
34
|
+
friction: 8,
|
|
35
|
+
tension: 65,
|
|
36
|
+
useNativeDriver: true
|
|
37
|
+
}), Animated.timing(backdropOpacity, {
|
|
38
|
+
toValue: 0,
|
|
39
|
+
duration: 200,
|
|
40
|
+
useNativeDriver: true
|
|
41
|
+
})]).start(() => onClose());
|
|
42
|
+
}, [panelTranslateY, backdropOpacity, onClose, screenHeight]);
|
|
43
|
+
const panelResponder = useRef(PanResponder.create({
|
|
44
|
+
onStartShouldSetPanResponder: () => true,
|
|
45
|
+
onMoveShouldSetPanResponder: (_, gs) => gs.dy > 5,
|
|
46
|
+
onPanResponderMove: (_, gs) => {
|
|
47
|
+
if (gs.dy > 0) {
|
|
48
|
+
panelTranslateY.setValue(gs.dy);
|
|
49
|
+
backdropOpacity.setValue(Math.max(0, 1 - gs.dy / 200));
|
|
50
|
+
}
|
|
51
|
+
},
|
|
52
|
+
onPanResponderRelease: (_, gs) => {
|
|
53
|
+
if (gs.dy > 100) {
|
|
54
|
+
closePanel();
|
|
55
|
+
} else {
|
|
56
|
+
Animated.spring(panelTranslateY, {
|
|
57
|
+
toValue: 0,
|
|
58
|
+
friction: 8,
|
|
59
|
+
tension: 50,
|
|
60
|
+
useNativeDriver: true
|
|
61
|
+
}).start();
|
|
62
|
+
Animated.timing(backdropOpacity, {
|
|
63
|
+
toValue: 1,
|
|
64
|
+
duration: 200,
|
|
65
|
+
useNativeDriver: true
|
|
66
|
+
}).start();
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
})).current;
|
|
70
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
71
|
+
style: styles.container,
|
|
72
|
+
children: [/*#__PURE__*/_jsx(Animated.View, {
|
|
73
|
+
style: [styles.backdrop, {
|
|
74
|
+
opacity: backdropOpacity
|
|
75
|
+
}],
|
|
76
|
+
children: /*#__PURE__*/_jsx(Pressable, {
|
|
77
|
+
style: styles.backdropPressable,
|
|
78
|
+
onPress: closePanel
|
|
79
|
+
})
|
|
80
|
+
}), /*#__PURE__*/_jsxs(Animated.View, {
|
|
81
|
+
style: [styles.panel, {
|
|
82
|
+
transform: [{
|
|
83
|
+
translateY: panelTranslateY
|
|
84
|
+
}]
|
|
85
|
+
}],
|
|
86
|
+
children: [/*#__PURE__*/_jsxs(View, {
|
|
87
|
+
...panelResponder.panHandlers,
|
|
88
|
+
children: [/*#__PURE__*/_jsx(View, {
|
|
89
|
+
style: styles.dragHandle,
|
|
90
|
+
children: /*#__PURE__*/_jsx(View, {
|
|
91
|
+
style: styles.dragIndicator
|
|
92
|
+
})
|
|
93
|
+
}), /*#__PURE__*/_jsxs(View, {
|
|
94
|
+
style: styles.header,
|
|
95
|
+
children: [/*#__PURE__*/_jsx(Text, {
|
|
96
|
+
style: styles.headerTitle,
|
|
97
|
+
children: "Debug Toolkit"
|
|
98
|
+
}), /*#__PURE__*/_jsxs(View, {
|
|
99
|
+
style: styles.headerButtons,
|
|
100
|
+
children: [/*#__PURE__*/_jsx(TouchableOpacity, {
|
|
101
|
+
onPress: () => {
|
|
102
|
+
onClearAll();
|
|
103
|
+
closePanel();
|
|
104
|
+
},
|
|
105
|
+
style: styles.clearButton,
|
|
106
|
+
activeOpacity: 0.6,
|
|
107
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
108
|
+
style: styles.clearButtonText,
|
|
109
|
+
children: "Clear"
|
|
110
|
+
})
|
|
111
|
+
}), /*#__PURE__*/_jsx(Pressable, {
|
|
112
|
+
onPress: closePanel,
|
|
113
|
+
style: styles.closeButton,
|
|
114
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
115
|
+
style: styles.closeButtonText,
|
|
116
|
+
children: "\u2715"
|
|
117
|
+
})
|
|
118
|
+
})]
|
|
119
|
+
})]
|
|
120
|
+
})]
|
|
121
|
+
}), /*#__PURE__*/_jsx(View, {
|
|
122
|
+
style: styles.panelContent,
|
|
123
|
+
children: children
|
|
124
|
+
})]
|
|
125
|
+
})]
|
|
126
|
+
});
|
|
127
|
+
}
|
|
128
|
+
const styles = StyleSheet.create({
|
|
129
|
+
container: {
|
|
130
|
+
position: 'absolute',
|
|
131
|
+
top: 0,
|
|
132
|
+
left: 0,
|
|
133
|
+
right: 0,
|
|
134
|
+
bottom: 0,
|
|
135
|
+
justifyContent: 'flex-end'
|
|
136
|
+
},
|
|
137
|
+
backdrop: {
|
|
138
|
+
position: 'absolute',
|
|
139
|
+
top: 0,
|
|
140
|
+
left: 0,
|
|
141
|
+
right: 0,
|
|
142
|
+
bottom: 0,
|
|
143
|
+
backgroundColor: 'rgba(0,0,0,0.35)'
|
|
144
|
+
},
|
|
145
|
+
backdropPressable: {
|
|
146
|
+
flex: 1
|
|
147
|
+
},
|
|
148
|
+
panel: {
|
|
149
|
+
width: '100%',
|
|
150
|
+
height: '90%',
|
|
151
|
+
backgroundColor: Colors.background,
|
|
152
|
+
borderTopLeftRadius: 28,
|
|
153
|
+
borderTopRightRadius: 28,
|
|
154
|
+
overflow: 'hidden',
|
|
155
|
+
elevation: 24,
|
|
156
|
+
shadowColor: '#000',
|
|
157
|
+
shadowOffset: {
|
|
158
|
+
width: 0,
|
|
159
|
+
height: -4
|
|
160
|
+
},
|
|
161
|
+
shadowOpacity: 0.08,
|
|
162
|
+
shadowRadius: 12
|
|
163
|
+
},
|
|
164
|
+
dragHandle: {
|
|
165
|
+
width: '100%',
|
|
166
|
+
height: 20,
|
|
167
|
+
alignItems: 'center',
|
|
168
|
+
justifyContent: 'center',
|
|
169
|
+
backgroundColor: Colors.surface
|
|
170
|
+
},
|
|
171
|
+
dragIndicator: {
|
|
172
|
+
width: 40,
|
|
173
|
+
height: 4,
|
|
174
|
+
borderRadius: 2,
|
|
175
|
+
backgroundColor: '#D1D1D6'
|
|
176
|
+
},
|
|
177
|
+
panelContent: {
|
|
178
|
+
flex: 1
|
|
179
|
+
},
|
|
180
|
+
header: {
|
|
181
|
+
flexDirection: 'row',
|
|
182
|
+
justifyContent: 'space-between',
|
|
183
|
+
alignItems: 'center',
|
|
184
|
+
paddingHorizontal: 20,
|
|
185
|
+
paddingTop: 6,
|
|
186
|
+
paddingBottom: 10,
|
|
187
|
+
backgroundColor: Colors.surface
|
|
188
|
+
},
|
|
189
|
+
headerTitle: {
|
|
190
|
+
fontSize: 17,
|
|
191
|
+
fontWeight: '600',
|
|
192
|
+
color: Colors.text
|
|
193
|
+
},
|
|
194
|
+
headerButtons: {
|
|
195
|
+
flexDirection: 'row',
|
|
196
|
+
alignItems: 'center',
|
|
197
|
+
gap: 12
|
|
198
|
+
},
|
|
199
|
+
clearButton: {
|
|
200
|
+
paddingHorizontal: 12,
|
|
201
|
+
paddingVertical: 6,
|
|
202
|
+
borderRadius: 8,
|
|
203
|
+
backgroundColor: 'rgba(255,59,48,0.06)'
|
|
204
|
+
},
|
|
205
|
+
clearButtonText: {
|
|
206
|
+
color: Colors.error,
|
|
207
|
+
fontSize: 14,
|
|
208
|
+
fontWeight: '500'
|
|
209
|
+
},
|
|
210
|
+
closeButton: {
|
|
211
|
+
width: 30,
|
|
212
|
+
height: 30,
|
|
213
|
+
borderRadius: 15,
|
|
214
|
+
backgroundColor: Colors.background,
|
|
215
|
+
alignItems: 'center',
|
|
216
|
+
justifyContent: 'center'
|
|
217
|
+
},
|
|
218
|
+
closeButtonText: {
|
|
219
|
+
fontSize: 16,
|
|
220
|
+
fontWeight: '400',
|
|
221
|
+
color: Colors.textSecondary,
|
|
222
|
+
lineHeight: 16
|
|
223
|
+
}
|
|
224
|
+
});
|
|
225
|
+
//# sourceMappingURL=DebugPanel.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useCallback","useEffect","useRef","View","Text","StyleSheet","Animated","PanResponder","Pressable","TouchableOpacity","useWindowDimensions","Colors","jsx","_jsx","jsxs","_jsxs","DebugPanel","onClose","onClearAll","children","height","screenHeight","panelTranslateY","Value","current","backdropOpacity","requestAnimationFrame","parallel","spring","toValue","friction","tension","useNativeDriver","timing","duration","start","closePanel","panelResponder","create","onStartShouldSetPanResponder","onMoveShouldSetPanResponder","_","gs","dy","onPanResponderMove","setValue","Math","max","onPanResponderRelease","style","styles","container","backdrop","opacity","backdropPressable","onPress","panel","transform","translateY","panHandlers","dragHandle","dragIndicator","header","headerTitle","headerButtons","clearButton","activeOpacity","clearButtonText","closeButton","closeButtonText","panelContent","position","top","left","right","bottom","justifyContent","backgroundColor","flex","width","background","borderTopLeftRadius","borderTopRightRadius","overflow","elevation","shadowColor","shadowOffset","shadowOpacity","shadowRadius","alignItems","surface","borderRadius","flexDirection","paddingHorizontal","paddingTop","paddingBottom","fontSize","fontWeight","color","text","gap","paddingVertical","error","textSecondary","lineHeight"],"sourceRoot":"../../../src","sources":["components/DebugPanel.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React, { useEffect } from 'react';
|
|
4
|
+
import { DebugToolkitProvider } from '../core/DebugToolkitProvider';
|
|
5
|
+
import { initializeDebugToolkit } from '../initialize';
|
|
6
|
+
import { useNavigationLogger } from '../hooks/useNavigationLogger';
|
|
7
|
+
|
|
8
|
+
// --- Types ---
|
|
9
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
10
|
+
// --- Inner component for navigation hook (satisfies rules of hooks) ---
|
|
11
|
+
|
|
12
|
+
function NavigationLoggerInner({
|
|
13
|
+
navigationRef
|
|
14
|
+
}) {
|
|
15
|
+
useNavigationLogger(navigationRef);
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
|
|
19
|
+
// --- Main component ---
|
|
20
|
+
|
|
21
|
+
export function DebugView({
|
|
22
|
+
children,
|
|
23
|
+
features,
|
|
24
|
+
navigationRef,
|
|
25
|
+
environments,
|
|
26
|
+
enabled
|
|
27
|
+
}) {
|
|
28
|
+
useEffect(() => {
|
|
29
|
+
// Build feature config: all enabled by default, user overrides take precedence
|
|
30
|
+
const resolvedFeatures = {
|
|
31
|
+
network: true,
|
|
32
|
+
console: true,
|
|
33
|
+
zustand: true,
|
|
34
|
+
navigation: true,
|
|
35
|
+
track: true,
|
|
36
|
+
clipboard: true,
|
|
37
|
+
...features
|
|
38
|
+
};
|
|
39
|
+
|
|
40
|
+
// Apply environments prop
|
|
41
|
+
if (environments) {
|
|
42
|
+
resolvedFeatures.environment = environments;
|
|
43
|
+
}
|
|
44
|
+
|
|
45
|
+
// Initialize toolkit
|
|
46
|
+
const toolkit = initializeDebugToolkit({
|
|
47
|
+
features: resolvedFeatures,
|
|
48
|
+
enabled
|
|
49
|
+
});
|
|
50
|
+
return () => {
|
|
51
|
+
toolkit.destroy();
|
|
52
|
+
};
|
|
53
|
+
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
54
|
+
}, []);
|
|
55
|
+
return /*#__PURE__*/_jsxs(DebugToolkitProvider, {
|
|
56
|
+
children: [navigationRef && /*#__PURE__*/_jsx(NavigationLoggerInner, {
|
|
57
|
+
navigationRef: navigationRef
|
|
58
|
+
}), children]
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=DebugView.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useEffect","DebugToolkitProvider","initializeDebugToolkit","useNavigationLogger","jsx","_jsx","jsxs","_jsxs","NavigationLoggerInner","navigationRef","DebugView","children","features","environments","enabled","resolvedFeatures","network","console","zustand","navigation","track","clipboard","environment","toolkit","destroy"],"sourceRoot":"../../../src","sources":["components/DebugView.tsx"],"mappings":";;AAAA,OAAOA,KAAK,IAAIC,SAAS,QAAQ,OAAO;AACxC,SAASC,oBAAoB,QAAQ,8BAA8B;AACnE,SAASC,sBAAsB,QAAQ,eAAe;AAEtD,SAASC,mBAAmB,QAAQ,8BAA8B;;AAGlE;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAiBA;;AAEA,SAASC,qBAAqBA,CAAC;EAC7BC;AAGF,CAAC,EAAE;EACDN,mBAAmB,CAACM,aAAa,CAAC;EAClC,OAAO,IAAI;AACb;;AAEA;;AAEA,OAAO,SAASC,SAASA,CAAC;EACxBC,QAAQ;EACRC,QAAQ;EACRH,aAAa;EACbI,YAAY;EACZC;AACc,CAAC,EAAE;EACjBd,SAAS,CAAC,MAAM;IACd;IACA,MAAMe,gBAAgC,GAAG;MACvCC,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE,IAAI;MACbC,OAAO,EAAE,IAAI;MACbC,UAAU,EAAE,IAAI;MAChBC,KAAK,EAAE,IAAI;MACXC,SAAS,EAAE,IAAI;MACf,GAAGT;IACL,CAAC;;IAED;IACA,IAAIC,YAAY,EAAE;MAChBE,gBAAgB,CAACO,WAAW,GAAGT,YAAY;IAC7C;;IAEA;IACA,MAAMU,OAAO,GAAGrB,sBAAsB,CAAC;MACrCU,QAAQ,EAAEG,gBAAgB;MAC1BD;IACF,CAAC,CAAC;IAEF,OAAO,MAAM;MACXS,OAAO,CAACC,OAAO,CAAC,CAAC;IACnB,CAAC;IACD;EACF,CAAC,EAAE,EAAE,CAAC;EAEN,oBACEjB,KAAA,CAACN,oBAAoB;IAAAU,QAAA,GAClBF,aAAa,iBAAIJ,IAAA,CAACG,qBAAqB;MAACC,aAAa,EAAEA;IAAc,CAAE,CAAC,EACxEE,QAAQ;EAAA,CACW,CAAC;AAE3B","ignoreList":[]}
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import React from 'react';
|
|
4
4
|
import { View, Text, TouchableOpacity, StyleSheet, ScrollView } from 'react-native';
|
|
5
|
-
import { Colors } from '../utils/
|
|
5
|
+
import { Colors } from '../utils/colors';
|
|
6
6
|
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
7
7
|
const DEFAULT_COLORS = {
|
|
8
8
|
dev: '#34C759',
|
|
@@ -12,7 +12,7 @@ const DEFAULT_COLORS = {
|
|
|
12
12
|
production: '#FF3B30',
|
|
13
13
|
prod: '#FF3B30'
|
|
14
14
|
};
|
|
15
|
-
export const EnvironmentTab = ({
|
|
15
|
+
export const EnvironmentTab = /*#__PURE__*/React.memo(({
|
|
16
16
|
data,
|
|
17
17
|
feature
|
|
18
18
|
}) => {
|
|
@@ -124,7 +124,7 @@ export const EnvironmentTab = ({
|
|
|
124
124
|
})]
|
|
125
125
|
}) : null]
|
|
126
126
|
});
|
|
127
|
-
};
|
|
127
|
+
});
|
|
128
128
|
const styles = StyleSheet.create({
|
|
129
129
|
container: {
|
|
130
130
|
flex: 1,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["React","View","Text","TouchableOpacity","StyleSheet","ScrollView","Colors","jsx","_jsx","jsxs","_jsxs","DEFAULT_COLORS","dev","development","staging","stage","production","prod","EnvironmentTab","data","feature","state","environments","length","style","styles","container","children","emptyContainer","emptyIcon","emptyTitle","emptyDesc","code","currentEnvironmentId","envFeature","handleSelect","envId","nextId","switchEnvironment","activeEnv","find","e","id","headerSection","sectionTitle","sectionDesc","list","contentContainerStyle","listContent","groupedCard","map","env","index","isActive","color","toLowerCase","primary","envItem","envItemActive","envItemSeparator","onPress","activeOpacity","envRow","colorDot","backgroundColor","envInfo","envLabel","label","envHost","numberOfLines","host","checkmark","footer","footerInfo","footerActiveIndicator","footerDot","footerLabel","footerValue","resetButton","resetButtonText","create","flex","background","alignItems","justifyContent","paddingHorizontal","fontSize","textLight","marginBottom","fontWeight","text","textSecondary","textAlign","lineHeight","fontFamily","paddingTop","paddingBottom","textTransform","surface","borderRadius","overflow","paddingVertical","borderBottomWidth","hairlineWidth","borderBottomColor","border","marginLeft","flexDirection","width","height","marginRight","marginTop","borderTopWidth","borderTopColor","gap","error"],"sourceRoot":"../../../src","sources":["components/EnvironmentTab.tsx"],"mappings":";;AAAA,OAAOA,KAAK,MAAM,OAAO;AACzB,SACEC,IAAI,EACJC,IAAI,EACJC,gBAAgB,EAChBC,UAAU,EACVC,UAAU,QACL,cAAc;AACrB,SAASC,MAAM,QAAQ,
|
|
1
|
+
{"version":3,"names":["React","View","Text","TouchableOpacity","StyleSheet","ScrollView","Colors","jsx","_jsx","jsxs","_jsxs","DEFAULT_COLORS","dev","development","staging","stage","production","prod","EnvironmentTab","memo","data","feature","state","environments","length","style","styles","container","children","emptyContainer","emptyIcon","emptyTitle","emptyDesc","code","currentEnvironmentId","envFeature","handleSelect","envId","nextId","switchEnvironment","activeEnv","find","e","id","headerSection","sectionTitle","sectionDesc","list","contentContainerStyle","listContent","groupedCard","map","env","index","isActive","color","toLowerCase","primary","envItem","envItemActive","envItemSeparator","onPress","activeOpacity","envRow","colorDot","backgroundColor","envInfo","envLabel","label","envHost","numberOfLines","host","checkmark","footer","footerInfo","footerActiveIndicator","footerDot","footerLabel","footerValue","resetButton","resetButtonText","create","flex","background","alignItems","justifyContent","paddingHorizontal","fontSize","textLight","marginBottom","fontWeight","text","textSecondary","textAlign","lineHeight","fontFamily","paddingTop","paddingBottom","textTransform","surface","borderRadius","overflow","paddingVertical","borderBottomWidth","hairlineWidth","borderBottomColor","border","marginLeft","flexDirection","width","height","marginRight","marginTop","borderTopWidth","borderTopColor","gap","error"],"sourceRoot":"../../../src","sources":["components/EnvironmentTab.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React, { useCallback, useEffect, useRef, useState } from 'react';
|
|
4
|
+
import { View, Text, StyleSheet, Animated, ScrollView, TouchableOpacity } from 'react-native';
|
|
5
|
+
import { Colors } from '../utils/colors';
|
|
6
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
7
|
+
export function FeatureTabBar({
|
|
8
|
+
tabs,
|
|
9
|
+
activeIndex,
|
|
10
|
+
onSelectTab
|
|
11
|
+
}) {
|
|
12
|
+
const [underlineWidth, setUnderlineWidth] = useState(0);
|
|
13
|
+
const underlineTranslateX = useRef(new Animated.Value(0)).current;
|
|
14
|
+
const tabScrollViewRef = useRef(null);
|
|
15
|
+
const tabLayouts = useRef([]);
|
|
16
|
+
const tabScrollOffset = useRef(0);
|
|
17
|
+
const tabViewportWidth = useRef(0);
|
|
18
|
+
const tabContentWidth = useRef(0);
|
|
19
|
+
const underlineInit = useRef(false);
|
|
20
|
+
const isSwitching = useRef(false);
|
|
21
|
+
const maxTabScroll = useCallback(() => Math.max(0, tabContentWidth.current - tabViewportWidth.current), []);
|
|
22
|
+
const clampScroll = useCallback(offset => Math.min(Math.max(0, offset), maxTabScroll()), [maxTabScroll]);
|
|
23
|
+
const getTabScrollTarget = useCallback(index => {
|
|
24
|
+
const layout = tabLayouts.current[index];
|
|
25
|
+
return layout ? clampScroll(layout.x - 60) : clampScroll(tabScrollOffset.current);
|
|
26
|
+
}, [clampScroll]);
|
|
27
|
+
const animateUnderline = useCallback((index, scrollOffset) => {
|
|
28
|
+
const layout = tabLayouts.current[index];
|
|
29
|
+
if (!layout) return;
|
|
30
|
+
const offsetX = clampScroll(scrollOffset ?? tabScrollOffset.current);
|
|
31
|
+
setUnderlineWidth(layout.width);
|
|
32
|
+
Animated.spring(underlineTranslateX, {
|
|
33
|
+
toValue: layout.x - offsetX,
|
|
34
|
+
friction: 7,
|
|
35
|
+
tension: 50,
|
|
36
|
+
useNativeDriver: true
|
|
37
|
+
}).start();
|
|
38
|
+
}, [clampScroll, underlineTranslateX]);
|
|
39
|
+
const syncUnderlineToActiveTab = useCallback(() => {
|
|
40
|
+
const layout = tabLayouts.current[activeIndex];
|
|
41
|
+
if (!layout) return;
|
|
42
|
+
const clamped = clampScroll(tabScrollOffset.current);
|
|
43
|
+
if (clamped !== tabScrollOffset.current) tabScrollOffset.current = clamped;
|
|
44
|
+
underlineTranslateX.setValue(layout.x - clamped);
|
|
45
|
+
setUnderlineWidth(layout.width);
|
|
46
|
+
}, [activeIndex, clampScroll, underlineTranslateX]);
|
|
47
|
+
const tryInit = useCallback(() => {
|
|
48
|
+
if (underlineInit.current || tabViewportWidth.current <= 0 || tabContentWidth.current <= 0) return;
|
|
49
|
+
const layout = tabLayouts.current[activeIndex];
|
|
50
|
+
if (!layout) return;
|
|
51
|
+
const target = getTabScrollTarget(activeIndex);
|
|
52
|
+
tabScrollOffset.current = target;
|
|
53
|
+
tabScrollViewRef.current?.scrollTo({
|
|
54
|
+
x: target,
|
|
55
|
+
animated: false
|
|
56
|
+
});
|
|
57
|
+
underlineTranslateX.setValue(layout.x - target);
|
|
58
|
+
setUnderlineWidth(layout.width);
|
|
59
|
+
underlineInit.current = true;
|
|
60
|
+
}, [activeIndex, getTabScrollTarget, underlineTranslateX]);
|
|
61
|
+
const handleSelectTab = useCallback(index => {
|
|
62
|
+
if (isSwitching.current || index === activeIndex) return;
|
|
63
|
+
isSwitching.current = true;
|
|
64
|
+
const layout = tabLayouts.current[index];
|
|
65
|
+
if (layout) {
|
|
66
|
+
const target = getTabScrollTarget(index);
|
|
67
|
+
tabScrollOffset.current = target;
|
|
68
|
+
tabScrollViewRef.current?.scrollTo({
|
|
69
|
+
x: target,
|
|
70
|
+
animated: true
|
|
71
|
+
});
|
|
72
|
+
animateUnderline(index, target);
|
|
73
|
+
}
|
|
74
|
+
onSelectTab(index);
|
|
75
|
+
setTimeout(() => {
|
|
76
|
+
isSwitching.current = false;
|
|
77
|
+
}, 350);
|
|
78
|
+
}, [activeIndex, animateUnderline, getTabScrollTarget, onSelectTab]);
|
|
79
|
+
|
|
80
|
+
// React to external activeIndex changes (e.g. swipe-to-switch)
|
|
81
|
+
useEffect(() => {
|
|
82
|
+
if (!underlineInit.current) return;
|
|
83
|
+
const layout = tabLayouts.current[activeIndex];
|
|
84
|
+
if (!layout) return;
|
|
85
|
+
const target = getTabScrollTarget(activeIndex);
|
|
86
|
+
tabScrollOffset.current = target;
|
|
87
|
+
tabScrollViewRef.current?.scrollTo({
|
|
88
|
+
x: target,
|
|
89
|
+
animated: true
|
|
90
|
+
});
|
|
91
|
+
animateUnderline(activeIndex, target);
|
|
92
|
+
}, [activeIndex, animateUnderline, getTabScrollTarget]);
|
|
93
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
94
|
+
style: styles.container,
|
|
95
|
+
children: [/*#__PURE__*/_jsx(ScrollView, {
|
|
96
|
+
ref: tabScrollViewRef,
|
|
97
|
+
horizontal: true,
|
|
98
|
+
showsHorizontalScrollIndicator: false,
|
|
99
|
+
contentContainerStyle: styles.scrollContent,
|
|
100
|
+
onLayout: e => {
|
|
101
|
+
tabViewportWidth.current = e.nativeEvent.layout.width;
|
|
102
|
+
tryInit();
|
|
103
|
+
},
|
|
104
|
+
onContentSizeChange: width => {
|
|
105
|
+
tabContentWidth.current = width;
|
|
106
|
+
tryInit();
|
|
107
|
+
},
|
|
108
|
+
onScroll: e => {
|
|
109
|
+
tabScrollOffset.current = clampScroll(e.nativeEvent.contentOffset.x);
|
|
110
|
+
if (!isSwitching.current) syncUnderlineToActiveTab();
|
|
111
|
+
},
|
|
112
|
+
scrollEventThrottle: 16,
|
|
113
|
+
children: tabs.map((tab, index) => /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
114
|
+
style: styles.tab,
|
|
115
|
+
onPress: () => handleSelectTab(index),
|
|
116
|
+
activeOpacity: 0.7,
|
|
117
|
+
onLayout: e => {
|
|
118
|
+
const {
|
|
119
|
+
x,
|
|
120
|
+
width
|
|
121
|
+
} = e.nativeEvent.layout;
|
|
122
|
+
tabLayouts.current[index] = {
|
|
123
|
+
x,
|
|
124
|
+
width
|
|
125
|
+
};
|
|
126
|
+
if (index === activeIndex) tryInit();
|
|
127
|
+
},
|
|
128
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
129
|
+
style: [styles.tabText, activeIndex === index && styles.activeTabText],
|
|
130
|
+
numberOfLines: 1,
|
|
131
|
+
children: tab.label
|
|
132
|
+
})
|
|
133
|
+
}, tab.id))
|
|
134
|
+
}), /*#__PURE__*/_jsx(Animated.View, {
|
|
135
|
+
style: [styles.underline, {
|
|
136
|
+
width: underlineWidth,
|
|
137
|
+
transform: [{
|
|
138
|
+
translateX: underlineTranslateX
|
|
139
|
+
}]
|
|
140
|
+
}]
|
|
141
|
+
})]
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
const styles = StyleSheet.create({
|
|
145
|
+
container: {
|
|
146
|
+
backgroundColor: Colors.surface,
|
|
147
|
+
borderBottomWidth: StyleSheet.hairlineWidth,
|
|
148
|
+
borderBottomColor: Colors.border
|
|
149
|
+
},
|
|
150
|
+
scrollContent: {
|
|
151
|
+
paddingHorizontal: 20,
|
|
152
|
+
flexDirection: 'row'
|
|
153
|
+
},
|
|
154
|
+
tab: {
|
|
155
|
+
paddingVertical: 10,
|
|
156
|
+
paddingHorizontal: 14,
|
|
157
|
+
marginRight: 8
|
|
158
|
+
},
|
|
159
|
+
tabText: {
|
|
160
|
+
fontSize: 14,
|
|
161
|
+
fontWeight: '500',
|
|
162
|
+
color: Colors.textLight
|
|
163
|
+
},
|
|
164
|
+
activeTabText: {
|
|
165
|
+
color: Colors.primary,
|
|
166
|
+
fontWeight: '600'
|
|
167
|
+
},
|
|
168
|
+
underline: {
|
|
169
|
+
position: 'absolute',
|
|
170
|
+
bottom: 0,
|
|
171
|
+
left: 0,
|
|
172
|
+
height: 2.5,
|
|
173
|
+
borderRadius: 1.25,
|
|
174
|
+
backgroundColor: Colors.primary
|
|
175
|
+
}
|
|
176
|
+
});
|
|
177
|
+
//# sourceMappingURL=FeatureTabBar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useCallback","useEffect","useRef","useState","View","Text","StyleSheet","Animated","ScrollView","TouchableOpacity","Colors","jsx","_jsx","jsxs","_jsxs","FeatureTabBar","tabs","activeIndex","onSelectTab","underlineWidth","setUnderlineWidth","underlineTranslateX","Value","current","tabScrollViewRef","tabLayouts","tabScrollOffset","tabViewportWidth","tabContentWidth","underlineInit","isSwitching","maxTabScroll","Math","max","clampScroll","offset","min","getTabScrollTarget","index","layout","x","animateUnderline","scrollOffset","offsetX","width","spring","toValue","friction","tension","useNativeDriver","start","syncUnderlineToActiveTab","clamped","setValue","tryInit","target","scrollTo","animated","handleSelectTab","setTimeout","style","styles","container","children","ref","horizontal","showsHorizontalScrollIndicator","contentContainerStyle","scrollContent","onLayout","e","nativeEvent","onContentSizeChange","onScroll","contentOffset","scrollEventThrottle","map","tab","onPress","activeOpacity","tabText","activeTabText","numberOfLines","label","id","underline","transform","translateX","create","backgroundColor","surface","borderBottomWidth","hairlineWidth","borderBottomColor","border","paddingHorizontal","flexDirection","paddingVertical","marginRight","fontSize","fontWeight","color","textLight","primary","position","bottom","left","height","borderRadius"],"sourceRoot":"../../../src","sources":["components/FeatureTabBar.tsx"],"mappings":"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","ignoreList":[]}
|