react-native-xenon 0.4.0 → 0.5.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.
Files changed (156) hide show
  1. package/LICENSE +1 -1
  2. package/lib/commonjs/assets/icons/arrow-left.png +0 -0
  3. package/lib/commonjs/assets/icons/beautify.png +0 -0
  4. package/lib/commonjs/assets/icons/share.png +0 -0
  5. package/lib/commonjs/core/utils.js +49 -14
  6. package/lib/commonjs/core/utils.js.map +1 -1
  7. package/lib/commonjs/hooks/useNetworkInterceptor.js +5 -4
  8. package/lib/commonjs/hooks/useNetworkInterceptor.js.map +1 -1
  9. package/lib/commonjs/interceptors/FetchInterceptor.js +1 -1
  10. package/lib/commonjs/interceptors/FetchInterceptor.js.map +1 -1
  11. package/lib/commonjs/theme/colors.js +1 -0
  12. package/lib/commonjs/theme/colors.js.map +1 -1
  13. package/lib/commonjs/theme/icons.js +4 -1
  14. package/lib/commonjs/theme/icons.js.map +1 -1
  15. package/lib/commonjs/types/common.js.map +1 -1
  16. package/lib/commonjs/ui/Xenon.js +92 -110
  17. package/lib/commonjs/ui/Xenon.js.map +1 -1
  18. package/lib/commonjs/ui/components/details/DetailsViewer.js +11 -7
  19. package/lib/commonjs/ui/components/details/DetailsViewer.js.map +1 -1
  20. package/lib/commonjs/ui/components/details/NetworkRequestDetails.js +55 -60
  21. package/lib/commonjs/ui/components/details/NetworkRequestDetails.js.map +1 -1
  22. package/lib/commonjs/ui/components/headers/DebuggerHeader.js +139 -73
  23. package/lib/commonjs/ui/components/headers/DebuggerHeader.js.map +1 -1
  24. package/lib/commonjs/ui/components/headers/NetworkPanelHeader.js +3 -3
  25. package/lib/commonjs/ui/components/headers/NetworkPanelHeader.js.map +1 -1
  26. package/lib/commonjs/ui/components/items/DebuggerHeaderItem.js +4 -4
  27. package/lib/commonjs/ui/components/items/DebuggerHeaderItem.js.map +1 -1
  28. package/lib/commonjs/ui/components/items/NetworkPanelItem.js +4 -4
  29. package/lib/commonjs/ui/components/items/NetworkPanelItem.js.map +1 -1
  30. package/lib/commonjs/ui/components/panels/ConsolePanel.js +9 -6
  31. package/lib/commonjs/ui/components/panels/ConsolePanel.js.map +1 -1
  32. package/lib/commonjs/ui/components/panels/NetworkPanel.js +6 -4
  33. package/lib/commonjs/ui/components/panels/NetworkPanel.js.map +1 -1
  34. package/lib/module/assets/icons/arrow-left.png +0 -0
  35. package/lib/module/assets/icons/beautify.png +0 -0
  36. package/lib/module/assets/icons/share.png +0 -0
  37. package/lib/module/core/utils.js +49 -14
  38. package/lib/module/core/utils.js.map +1 -1
  39. package/lib/module/hooks/useNetworkInterceptor.js +5 -4
  40. package/lib/module/hooks/useNetworkInterceptor.js.map +1 -1
  41. package/lib/module/interceptors/FetchInterceptor.js +1 -1
  42. package/lib/module/interceptors/FetchInterceptor.js.map +1 -1
  43. package/lib/module/theme/colors.js +1 -0
  44. package/lib/module/theme/colors.js.map +1 -1
  45. package/lib/module/theme/icons.js +4 -1
  46. package/lib/module/theme/icons.js.map +1 -1
  47. package/lib/module/types/common.js.map +1 -1
  48. package/lib/module/ui/Xenon.js +92 -110
  49. package/lib/module/ui/Xenon.js.map +1 -1
  50. package/lib/module/ui/components/details/DetailsViewer.js +11 -7
  51. package/lib/module/ui/components/details/DetailsViewer.js.map +1 -1
  52. package/lib/module/ui/components/details/NetworkRequestDetails.js +55 -60
  53. package/lib/module/ui/components/details/NetworkRequestDetails.js.map +1 -1
  54. package/lib/module/ui/components/headers/DebuggerHeader.js +139 -73
  55. package/lib/module/ui/components/headers/DebuggerHeader.js.map +1 -1
  56. package/lib/module/ui/components/headers/NetworkPanelHeader.js +3 -3
  57. package/lib/module/ui/components/headers/NetworkPanelHeader.js.map +1 -1
  58. package/lib/module/ui/components/items/DebuggerHeaderItem.js +4 -4
  59. package/lib/module/ui/components/items/DebuggerHeaderItem.js.map +1 -1
  60. package/lib/module/ui/components/items/NetworkPanelItem.js +4 -4
  61. package/lib/module/ui/components/items/NetworkPanelItem.js.map +1 -1
  62. package/lib/module/ui/components/panels/ConsolePanel.js +9 -6
  63. package/lib/module/ui/components/panels/ConsolePanel.js.map +1 -1
  64. package/lib/module/ui/components/panels/NetworkPanel.js +6 -4
  65. package/lib/module/ui/components/panels/NetworkPanel.js.map +1 -1
  66. package/lib/typescript/commonjs/src/contexts/MainContext.d.ts +1 -1
  67. package/lib/typescript/commonjs/src/contexts/MainContext.d.ts.map +1 -1
  68. package/lib/typescript/commonjs/src/core/utils.d.ts +14 -4
  69. package/lib/typescript/commonjs/src/core/utils.d.ts.map +1 -1
  70. package/lib/typescript/commonjs/src/hooks/useNetworkInterceptor.d.ts.map +1 -1
  71. package/lib/typescript/commonjs/src/interceptors/FetchInterceptor.d.ts.map +1 -1
  72. package/lib/typescript/commonjs/src/theme/colors.d.ts +1 -0
  73. package/lib/typescript/commonjs/src/theme/colors.d.ts.map +1 -1
  74. package/lib/typescript/commonjs/src/theme/icons.d.ts +3 -0
  75. package/lib/typescript/commonjs/src/theme/icons.d.ts.map +1 -1
  76. package/lib/typescript/commonjs/src/types/common.d.ts +13 -1
  77. package/lib/typescript/commonjs/src/types/common.d.ts.map +1 -1
  78. package/lib/typescript/commonjs/src/ui/Xenon.d.ts +12 -15
  79. package/lib/typescript/commonjs/src/ui/Xenon.d.ts.map +1 -1
  80. package/lib/typescript/commonjs/src/ui/components/details/DetailsViewer.d.ts.map +1 -1
  81. package/lib/typescript/commonjs/src/ui/components/details/NetworkRequestDetails.d.ts.map +1 -1
  82. package/lib/typescript/commonjs/src/ui/components/headers/DebuggerHeader.d.ts +1 -5
  83. package/lib/typescript/commonjs/src/ui/components/headers/DebuggerHeader.d.ts.map +1 -1
  84. package/lib/typescript/commonjs/src/ui/components/items/DebuggerHeaderItem.d.ts +2 -1
  85. package/lib/typescript/commonjs/src/ui/components/items/DebuggerHeaderItem.d.ts.map +1 -1
  86. package/lib/typescript/commonjs/src/ui/components/panels/ConsolePanel.d.ts.map +1 -1
  87. package/lib/typescript/commonjs/src/ui/components/panels/NetworkPanel.d.ts.map +1 -1
  88. package/lib/typescript/module/src/contexts/MainContext.d.ts +1 -1
  89. package/lib/typescript/module/src/contexts/MainContext.d.ts.map +1 -1
  90. package/lib/typescript/module/src/core/utils.d.ts +14 -4
  91. package/lib/typescript/module/src/core/utils.d.ts.map +1 -1
  92. package/lib/typescript/module/src/hooks/useNetworkInterceptor.d.ts.map +1 -1
  93. package/lib/typescript/module/src/interceptors/FetchInterceptor.d.ts.map +1 -1
  94. package/lib/typescript/module/src/theme/colors.d.ts +1 -0
  95. package/lib/typescript/module/src/theme/colors.d.ts.map +1 -1
  96. package/lib/typescript/module/src/theme/icons.d.ts +3 -0
  97. package/lib/typescript/module/src/theme/icons.d.ts.map +1 -1
  98. package/lib/typescript/module/src/types/common.d.ts +13 -1
  99. package/lib/typescript/module/src/types/common.d.ts.map +1 -1
  100. package/lib/typescript/module/src/ui/Xenon.d.ts +12 -15
  101. package/lib/typescript/module/src/ui/Xenon.d.ts.map +1 -1
  102. package/lib/typescript/module/src/ui/components/details/DetailsViewer.d.ts.map +1 -1
  103. package/lib/typescript/module/src/ui/components/details/NetworkRequestDetails.d.ts.map +1 -1
  104. package/lib/typescript/module/src/ui/components/headers/DebuggerHeader.d.ts +1 -5
  105. package/lib/typescript/module/src/ui/components/headers/DebuggerHeader.d.ts.map +1 -1
  106. package/lib/typescript/module/src/ui/components/items/DebuggerHeaderItem.d.ts +2 -1
  107. package/lib/typescript/module/src/ui/components/items/DebuggerHeaderItem.d.ts.map +1 -1
  108. package/lib/typescript/module/src/ui/components/panels/ConsolePanel.d.ts.map +1 -1
  109. package/lib/typescript/module/src/ui/components/panels/NetworkPanel.d.ts.map +1 -1
  110. package/package.json +1 -1
  111. package/src/assets/icons/arrow-left.png +0 -0
  112. package/src/assets/icons/beautify.png +0 -0
  113. package/src/assets/icons/share.png +0 -0
  114. package/src/contexts/MainContext.ts +1 -1
  115. package/src/core/utils.ts +56 -17
  116. package/src/hooks/useNetworkInterceptor.ts +17 -4
  117. package/src/interceptors/FetchInterceptor.ts +5 -1
  118. package/src/theme/colors.ts +1 -0
  119. package/src/theme/icons.ts +3 -0
  120. package/src/types/common.ts +17 -1
  121. package/src/ui/Xenon.tsx +78 -107
  122. package/src/ui/components/details/DetailsViewer.tsx +9 -7
  123. package/src/ui/components/details/NetworkRequestDetails.tsx +87 -74
  124. package/src/ui/components/headers/DebuggerHeader.tsx +199 -91
  125. package/src/ui/components/headers/NetworkPanelHeader.tsx +3 -3
  126. package/src/ui/components/items/DebuggerHeaderItem.tsx +3 -4
  127. package/src/ui/components/items/NetworkPanelItem.tsx +4 -4
  128. package/src/ui/components/panels/ConsolePanel.tsx +9 -5
  129. package/src/ui/components/panels/NetworkPanel.tsx +13 -3
  130. package/lib/commonjs/core/data.js +0 -10
  131. package/lib/commonjs/core/data.js.map +0 -1
  132. package/lib/commonjs/ui/components/headers/NetworkRequestDetailsHeader.js +0 -64
  133. package/lib/commonjs/ui/components/headers/NetworkRequestDetailsHeader.js.map +0 -1
  134. package/lib/commonjs/ui/components/items/NetworkRequestDetailsHeaderItem.js +0 -48
  135. package/lib/commonjs/ui/components/items/NetworkRequestDetailsHeaderItem.js.map +0 -1
  136. package/lib/module/core/data.js +0 -10
  137. package/lib/module/core/data.js.map +0 -1
  138. package/lib/module/ui/components/headers/NetworkRequestDetailsHeader.js +0 -64
  139. package/lib/module/ui/components/headers/NetworkRequestDetailsHeader.js.map +0 -1
  140. package/lib/module/ui/components/items/NetworkRequestDetailsHeaderItem.js +0 -48
  141. package/lib/module/ui/components/items/NetworkRequestDetailsHeaderItem.js.map +0 -1
  142. package/lib/typescript/commonjs/src/core/data.d.ts +0 -10
  143. package/lib/typescript/commonjs/src/core/data.d.ts.map +0 -1
  144. package/lib/typescript/commonjs/src/ui/components/headers/NetworkRequestDetailsHeader.d.ts +0 -13
  145. package/lib/typescript/commonjs/src/ui/components/headers/NetworkRequestDetailsHeader.d.ts.map +0 -1
  146. package/lib/typescript/commonjs/src/ui/components/items/NetworkRequestDetailsHeaderItem.d.ts +0 -9
  147. package/lib/typescript/commonjs/src/ui/components/items/NetworkRequestDetailsHeaderItem.d.ts.map +0 -1
  148. package/lib/typescript/module/src/core/data.d.ts +0 -10
  149. package/lib/typescript/module/src/core/data.d.ts.map +0 -1
  150. package/lib/typescript/module/src/ui/components/headers/NetworkRequestDetailsHeader.d.ts +0 -13
  151. package/lib/typescript/module/src/ui/components/headers/NetworkRequestDetailsHeader.d.ts.map +0 -1
  152. package/lib/typescript/module/src/ui/components/items/NetworkRequestDetailsHeaderItem.d.ts +0 -9
  153. package/lib/typescript/module/src/ui/components/items/NetworkRequestDetailsHeaderItem.d.ts.map +0 -1
  154. package/src/core/data.ts +0 -12
  155. package/src/ui/components/headers/NetworkRequestDetailsHeader.tsx +0 -90
  156. package/src/ui/components/items/NetworkRequestDetailsHeaderItem.tsx +0 -49
@@ -1,70 +1,206 @@
1
- import { useContext, useRef } from 'react';
2
- import { ScrollView, StyleSheet, View } from 'react-native';
1
+ import { useCallback, useContext, useMemo, useRef } from 'react';
2
+ import { ScrollView, Share, StyleSheet, View } from 'react-native';
3
3
  import { MainContext } from '../../../contexts';
4
+ import { convertToCurl, getNetworkUtils } from '../../../core/utils';
4
5
  import colors from '../../../theme/colors';
5
6
  import icons from '../../../theme/icons';
6
- import { DebuggerPanel } from '../../../types';
7
+ import { DebuggerPanel, NetworkType, type DetailTab } from '../../../types';
7
8
  import DebuggerHeaderItem from '../items/DebuggerHeaderItem';
8
9
 
9
- interface DebuggerHeaderProps {
10
- detailsShown: boolean;
11
- }
10
+ export default function DebuggerHeader() {
11
+ const {
12
+ debuggerState: { detailsData, selectedPanel },
13
+ setDebuggerState,
14
+ networkInterceptor,
15
+ consoleInterceptor,
16
+ } = useContext(MainContext)!;
17
+
18
+ const lastSelectedPanel = useRef<DebuggerPanel>(selectedPanel ?? DebuggerPanel.Network);
12
19
 
13
- export default function DebuggerHeader({ detailsShown }: DebuggerHeaderProps) {
14
- const { debuggerState, setDebuggerState, networkInterceptor, logInterceptor } =
15
- useContext(MainContext)!;
20
+ const backButton = useMemo(
21
+ () => (
22
+ <DebuggerHeaderItem
23
+ content={icons.arrowLeft}
24
+ onPress={() => {
25
+ setDebuggerState(draft => {
26
+ draft.selectedPanel = lastSelectedPanel.current;
27
+ draft.detailsData = null;
28
+ });
29
+ }}
30
+ />
31
+ ),
32
+ [setDebuggerState],
33
+ );
16
34
 
17
- const lastSelectedPanel = useRef<DebuggerPanel>(
18
- debuggerState.selectedPanel ?? DebuggerPanel.Network,
35
+ const renderTabItem = useCallback(
36
+ (tab: DetailTab, label: string) => (
37
+ <DebuggerHeaderItem
38
+ isLabel
39
+ isActive={detailsData?.selectedTab === tab}
40
+ content={label}
41
+ onPress={() => {
42
+ setDebuggerState(draft => {
43
+ draft.detailsData!.selectedTab = tab;
44
+ });
45
+ }}
46
+ />
47
+ ),
48
+ [detailsData?.selectedTab, setDebuggerState],
19
49
  );
20
50
 
21
- const hideDebugger = () => {
22
- setDebuggerState(draft => {
23
- draft.visibility = 'bubble';
24
- });
25
- };
26
-
27
- const toggleNetworkInterception = () => {
28
- networkInterceptor.isInterceptorEnabled
29
- ? networkInterceptor.disableInterception()
30
- : networkInterceptor.enableInterception();
31
- };
32
-
33
- const toggleLogInterception = () => {
34
- logInterceptor.isInterceptorEnabled
35
- ? logInterceptor.disableInterception()
36
- : logInterceptor.enableInterception();
37
- };
38
-
39
- const toggleDebuggerPosition = () => {
40
- setDebuggerState(draft => {
41
- draft.position = draft.position === 'bottom' ? 'top' : 'bottom';
42
- });
43
- };
44
-
45
- const switchTo = (debuggerPanel: DebuggerPanel) => {
46
- setDebuggerState(draft => {
47
- draft.selectedPanel = debuggerPanel;
48
- lastSelectedPanel.current = debuggerPanel;
49
- });
50
- };
51
-
52
- if (detailsShown) {
51
+ const networkHeader = useMemo(() => {
52
+ if (detailsData?.type !== DebuggerPanel.Network) return null;
53
+
54
+ const { isHttp, overviewShown, headersShown, requestShown, responseShown, messagesShown } =
55
+ getNetworkUtils(detailsData.data);
56
+
53
57
  return (
54
- <View style={styles.contentContainer}>
58
+ <>
59
+ {backButton}
60
+
61
+ {isHttp && (
62
+ <>
63
+ <DebuggerHeaderItem
64
+ content={icons.share}
65
+ onPress={() => {
66
+ if (detailsData.data.type === NetworkType.WS) return;
67
+ Share.share({
68
+ message: convertToCurl(
69
+ detailsData.data.method,
70
+ detailsData.data.url,
71
+ detailsData.data.requestHeaders,
72
+ detailsData.data.body,
73
+ ),
74
+ });
75
+ }}
76
+ />
77
+
78
+ <DebuggerHeaderItem
79
+ content={icons.beautify}
80
+ isActive={detailsData.beautified}
81
+ activeColor={colors.green}
82
+ onPress={() => {
83
+ setDebuggerState(draft => {
84
+ draft.detailsData!.beautified = !draft.detailsData?.beautified;
85
+ });
86
+ }}
87
+ />
88
+ </>
89
+ )}
90
+
91
+ <View style={styles.divider} />
92
+
93
+ {overviewShown && renderTabItem('overview', 'Overview')}
94
+ {headersShown && renderTabItem('headers', 'Headers')}
95
+ {requestShown && renderTabItem('request', 'Request')}
96
+ {responseShown && renderTabItem('response', 'Response')}
97
+ {messagesShown && renderTabItem('messages', 'Messages')}
98
+ </>
99
+ );
100
+ }, [
101
+ detailsData?.type,
102
+ detailsData?.data,
103
+ detailsData?.beautified,
104
+ backButton,
105
+ renderTabItem,
106
+ setDebuggerState,
107
+ ]);
108
+
109
+ const consoleHeader = useMemo(() => {
110
+ if (detailsData?.type !== DebuggerPanel.Console) return null;
111
+
112
+ return (
113
+ <>
114
+ {backButton}
115
+
116
+ <View style={styles.divider} />
117
+
118
+ {renderTabItem('logMessage', 'Log Message')}
119
+ </>
120
+ );
121
+ }, [detailsData?.type, backButton, renderTabItem]);
122
+
123
+ const mainHeader = useMemo(() => {
124
+ const onHide = () => {
125
+ setDebuggerState(draft => {
126
+ draft.visibility = 'bubble';
127
+ });
128
+ };
129
+
130
+ const onMove = () => {
131
+ setDebuggerState(draft => {
132
+ draft.position = draft.position === 'bottom' ? 'top' : 'bottom';
133
+ });
134
+ };
135
+
136
+ const switchTo = (debuggerPanel: DebuggerPanel) => {
137
+ setDebuggerState(draft => {
138
+ draft.selectedPanel = debuggerPanel;
139
+ draft.detailsData = null;
140
+ lastSelectedPanel.current = debuggerPanel;
141
+ });
142
+ };
143
+
144
+ const toggleNetworkInterception = () => {
145
+ networkInterceptor.isInterceptorEnabled
146
+ ? networkInterceptor.disableInterception()
147
+ : networkInterceptor.enableInterception();
148
+ };
149
+
150
+ const toggleConsoleInterception = () => {
151
+ consoleInterceptor.isInterceptorEnabled
152
+ ? consoleInterceptor.disableInterception()
153
+ : consoleInterceptor.enableInterception();
154
+ };
155
+
156
+ return (
157
+ <>
158
+ <DebuggerHeaderItem onPress={onHide} content={icons.hide} />
159
+
160
+ <DebuggerHeaderItem onPress={onMove} content={icons.move} />
161
+
162
+ <View style={styles.divider} />
163
+
164
+ <DebuggerHeaderItem
165
+ isLabel
166
+ isActive={selectedPanel === DebuggerPanel.Network}
167
+ content="Network Panel"
168
+ onPress={() => switchTo(DebuggerPanel.Network)}
169
+ />
170
+
171
+ <DebuggerHeaderItem
172
+ onPress={toggleNetworkInterception}
173
+ isActive={networkInterceptor.isInterceptorEnabled}
174
+ content={icons.record}
175
+ />
176
+
177
+ <DebuggerHeaderItem
178
+ onPress={networkInterceptor.clearAllNetworkRequests}
179
+ content={icons.delete}
180
+ />
181
+
182
+ <View style={styles.divider} />
183
+
55
184
  <DebuggerHeaderItem
56
185
  isLabel
57
- isActive
58
- content="Go Back"
59
- onPress={() => {
60
- setDebuggerState(draft => {
61
- draft.selectedPanel = lastSelectedPanel.current;
62
- });
63
- }}
186
+ isActive={selectedPanel === DebuggerPanel.Console}
187
+ content="Console Panel"
188
+ onPress={() => switchTo(DebuggerPanel.Console)}
189
+ />
190
+
191
+ <DebuggerHeaderItem
192
+ onPress={toggleConsoleInterception}
193
+ isActive={consoleInterceptor.isInterceptorEnabled}
194
+ content={icons.record}
64
195
  />
65
- </View>
196
+
197
+ <DebuggerHeaderItem
198
+ onPress={consoleInterceptor.clearAllLogMessages}
199
+ content={icons.delete}
200
+ />
201
+ </>
66
202
  );
67
- }
203
+ }, [selectedPanel, consoleInterceptor, networkInterceptor, setDebuggerState]);
68
204
 
69
205
  return (
70
206
  <ScrollView
@@ -73,44 +209,16 @@ export default function DebuggerHeader({ detailsShown }: DebuggerHeaderProps) {
73
209
  contentContainerStyle={styles.contentContainer}
74
210
  showsHorizontalScrollIndicator={false}
75
211
  >
76
- <DebuggerHeaderItem onPress={hideDebugger} content={icons.hide} />
77
-
78
- <DebuggerHeaderItem onPress={toggleDebuggerPosition} content={icons.move} />
79
-
80
- <DebuggerHeaderItem
81
- isLabel
82
- isActive={debuggerState.selectedPanel === DebuggerPanel.Network}
83
- content="Network Panel"
84
- onPress={() => switchTo(DebuggerPanel.Network)}
85
- />
86
-
87
- <DebuggerHeaderItem
88
- onPress={toggleNetworkInterception}
89
- isActive={networkInterceptor.isInterceptorEnabled}
90
- content={icons.record}
91
- />
92
-
93
- <DebuggerHeaderItem
94
- onPress={networkInterceptor.clearAllNetworkRequests}
95
- content={icons.delete}
96
- />
97
-
98
- <View style={styles.divider} />
99
-
100
- <DebuggerHeaderItem
101
- isLabel
102
- isActive={debuggerState.selectedPanel === DebuggerPanel.Console}
103
- content="Log Panel"
104
- onPress={() => switchTo(DebuggerPanel.Console)}
105
- />
106
-
107
- <DebuggerHeaderItem
108
- onPress={toggleLogInterception}
109
- isActive={logInterceptor.isInterceptorEnabled}
110
- content={icons.record}
111
- />
112
-
113
- <DebuggerHeaderItem onPress={logInterceptor.clearAllLogMessages} content={icons.delete} />
212
+ {(() => {
213
+ switch (detailsData?.type) {
214
+ case DebuggerPanel.Network:
215
+ return networkHeader;
216
+ case DebuggerPanel.Console:
217
+ return consoleHeader;
218
+ default:
219
+ return mainHeader;
220
+ }
221
+ })()}
114
222
  </ScrollView>
115
223
  );
116
224
  }
@@ -12,9 +12,9 @@ export default function NetworkPanelHeader() {
12
12
 
13
13
  <View style={styles.divider} />
14
14
 
15
- <View style={[styles.headerColumn, styles.headerNameColumn]}>
15
+ <View style={[styles.headerColumn, styles.headerPathColumn]}>
16
16
  <Text numberOfLines={1} style={styles.itemText}>
17
- Name
17
+ Path
18
18
  </Text>
19
19
  </View>
20
20
 
@@ -45,7 +45,7 @@ const styles = StyleSheet.create({
45
45
  backgroundColor: colors.gray,
46
46
  borderRadius: 4,
47
47
  },
48
- headerNameColumn: {
48
+ headerPathColumn: {
49
49
  flex: 5,
50
50
  },
51
51
  headerDurationColumn: {
@@ -5,6 +5,7 @@ interface DebuggerHeaderItemProps {
5
5
  content?: ImageRequireSource | string;
6
6
  isLabel?: boolean;
7
7
  isActive?: boolean;
8
+ activeColor?: string;
8
9
  onPress: () => void;
9
10
  }
10
11
 
@@ -12,6 +13,7 @@ export default function DebuggerHeaderItem({
12
13
  content,
13
14
  isLabel,
14
15
  isActive,
16
+ activeColor = colors.red,
15
17
  onPress,
16
18
  }: DebuggerHeaderItemProps) {
17
19
  return (
@@ -25,7 +27,7 @@ export default function DebuggerHeaderItem({
25
27
  ? styles.activeLabelContainer
26
28
  : styles.labelContainer
27
29
  : isActive
28
- ? styles.activeContainer
30
+ ? { backgroundColor: activeColor }
29
31
  : undefined,
30
32
  ]}
31
33
  >
@@ -57,9 +59,6 @@ const styles = StyleSheet.create({
57
59
  borderWidth: 1,
58
60
  borderColor: colors.black,
59
61
  },
60
- activeContainer: {
61
- backgroundColor: colors.red,
62
- },
63
62
  title: {
64
63
  fontSize: 14,
65
64
  lineHeight: 17,
@@ -24,7 +24,7 @@ export default function NetworkPanelItem({
24
24
  status,
25
25
  onPress,
26
26
  }: NetworkPanelItemProps) {
27
- const requestName = useMemo(() => {
27
+ const requestPath = useMemo(() => {
28
28
  if (!name) return '[failed]';
29
29
 
30
30
  try {
@@ -46,9 +46,9 @@ export default function NetworkPanelItem({
46
46
  </Text>
47
47
  </View>
48
48
 
49
- <View style={[styles.column, styles.nameColumn]}>
49
+ <View style={[styles.column, styles.pathColumn]}>
50
50
  <Text numberOfLines={1} style={styles.text}>
51
- {requestName}
51
+ {requestPath}
52
52
  </Text>
53
53
  </View>
54
54
 
@@ -72,7 +72,7 @@ const styles = StyleSheet.create({
72
72
  flex: 1,
73
73
  flexDirection: 'row',
74
74
  },
75
- nameColumn: {
75
+ pathColumn: {
76
76
  flex: 5,
77
77
  },
78
78
  durationColumn: {
@@ -2,15 +2,14 @@ import { useCallback, useContext } from 'react';
2
2
  import { FlatList, StyleSheet, View, type ListRenderItem } from 'react-native';
3
3
  import colors from '../../../theme/colors';
4
4
  import { MainContext } from '../../../contexts';
5
- import type { LogMessage } from '../../../types';
5
+ import { DebuggerPanel, type LogMessage } from '../../../types';
6
6
  import ConsolePanelItem from '../items/ConsolePanelItem';
7
- import { detailsData } from '../../../core/data';
8
7
 
9
8
  const Separator = () => <View style={styles.divider} />;
10
9
 
11
10
  export default function ConsolePanel() {
12
11
  const {
13
- logInterceptor: { logMessages },
12
+ consoleInterceptor: { logMessages },
14
13
  setDebuggerState,
15
14
  } = useContext(MainContext)!;
16
15
 
@@ -19,9 +18,14 @@ export default function ConsolePanel() {
19
18
  <ConsolePanelItem
20
19
  {...item}
21
20
  onPress={() => {
22
- detailsData.value = { console: item };
23
21
  setDebuggerState(draft => {
24
22
  draft.selectedPanel = null;
23
+ draft.detailsData = {
24
+ type: DebuggerPanel.Console,
25
+ data: item,
26
+ selectedTab: 'logMessage',
27
+ beautified: false,
28
+ };
25
29
  });
26
30
  }}
27
31
  />
@@ -32,7 +36,7 @@ export default function ConsolePanel() {
32
36
  return (
33
37
  <FlatList
34
38
  inverted
35
- data={logMessages.toReversed()}
39
+ data={[...logMessages].reverse()}
36
40
  renderItem={renderItem}
37
41
  keyExtractor={(_, index) => index.toString()}
38
42
  ItemSeparatorComponent={Separator}
@@ -2,10 +2,15 @@ import { useCallback, useContext, useMemo } from 'react';
2
2
  import { FlatList, StyleSheet, View, type ListRenderItem } from 'react-native';
3
3
  import colors from '../../../theme/colors';
4
4
  import { MainContext } from '../../../contexts';
5
- import { NetworkType, type HttpRequest, type ID, type WebSocketRequest } from '../../../types';
5
+ import {
6
+ DebuggerPanel,
7
+ NetworkType,
8
+ type HttpRequest,
9
+ type ID,
10
+ type WebSocketRequest,
11
+ } from '../../../types';
6
12
  import NetworkPanelHeader from '../headers/NetworkPanelHeader';
7
13
  import NetworkPanelItem from '../items/NetworkPanelItem';
8
- import { detailsData } from '../../../core/data';
9
14
 
10
15
  const Separator = () => <View style={styles.divider} />;
11
16
 
@@ -25,9 +30,14 @@ export default function NetworkPanel() {
25
30
  duration={item.duration}
26
31
  status={item.status}
27
32
  onPress={() => {
28
- detailsData.value = { network: item };
29
33
  setDebuggerState(draft => {
30
34
  draft.selectedPanel = null;
35
+ draft.detailsData = {
36
+ type: DebuggerPanel.Network,
37
+ data: item,
38
+ selectedTab: 'overview',
39
+ beautified: false,
40
+ };
31
41
  });
32
42
  }}
33
43
  />
@@ -1,10 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.detailsData = void 0;
7
- const detailsData = exports.detailsData = {
8
- value: null
9
- };
10
- //# sourceMappingURL=data.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["detailsData","exports","value"],"sourceRoot":"../../../src","sources":["core/data.ts"],"mappings":";;;;;;AAEA,MAAMA,WAKL,GAAAC,OAAA,CAAAD,WAAA,GAAG;EACFE,KAAK,EAAE;AACT,CAAC","ignoreList":[]}
@@ -1,64 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = NetworkDetailsHeader;
7
- var _react = require("react");
8
- var _reactNative = require("react-native");
9
- var _NetworkRequestDetailsHeaderItem = _interopRequireDefault(require("../items/NetworkRequestDetailsHeaderItem"));
10
- var _jsxRuntime = require("react/jsx-runtime");
11
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
12
- function NetworkDetailsHeader({
13
- selectedTab,
14
- onChangeTab,
15
- headersShown = true,
16
- queryStringParametersShown = true,
17
- bodyShown = true,
18
- responseShown = true,
19
- messagesShown = true
20
- }) {
21
- const data = (0, _react.useMemo)(() => [{
22
- visible: headersShown,
23
- name: 'headers',
24
- label: 'Headers'
25
- }, {
26
- visible: queryStringParametersShown,
27
- name: 'queryStringParameters',
28
- label: 'Query String Parameters'
29
- }, {
30
- visible: bodyShown,
31
- name: 'body',
32
- label: 'Body'
33
- }, {
34
- visible: responseShown,
35
- name: 'response',
36
- label: 'Response'
37
- }, {
38
- visible: messagesShown,
39
- name: 'messages',
40
- label: 'Messages'
41
- }], [bodyShown, headersShown, messagesShown, queryStringParametersShown, responseShown]);
42
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ScrollView, {
43
- horizontal: true,
44
- style: styles.container,
45
- contentContainerStyle: styles.contentContainer,
46
- showsHorizontalScrollIndicator: false,
47
- children: data.map(item => /*#__PURE__*/(0, _jsxRuntime.jsx)(_NetworkRequestDetailsHeaderItem.default, {
48
- onPress: () => onChangeTab(item.name),
49
- isSelected: item.name === selectedTab,
50
- visible: item.visible,
51
- label: item.label
52
- }, item.name))
53
- });
54
- }
55
- const styles = _reactNative.StyleSheet.create({
56
- container: {
57
- flexGrow: 0
58
- },
59
- contentContainer: {
60
- paddingHorizontal: 8,
61
- columnGap: 8
62
- }
63
- });
64
- //# sourceMappingURL=NetworkRequestDetailsHeader.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_react","require","_reactNative","_NetworkRequestDetailsHeaderItem","_interopRequireDefault","_jsxRuntime","e","__esModule","default","NetworkDetailsHeader","selectedTab","onChangeTab","headersShown","queryStringParametersShown","bodyShown","responseShown","messagesShown","data","useMemo","visible","name","label","jsx","ScrollView","horizontal","style","styles","container","contentContainerStyle","contentContainer","showsHorizontalScrollIndicator","children","map","item","onPress","isSelected","StyleSheet","create","flexGrow","paddingHorizontal","columnGap"],"sourceRoot":"../../../../../src","sources":["ui/components/headers/NetworkRequestDetailsHeader.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEA,IAAAE,gCAAA,GAAAC,sBAAA,CAAAH,OAAA;AAAuF,IAAAI,WAAA,GAAAJ,OAAA;AAAA,SAAAG,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAkBxE,SAASG,oBAAoBA,CAAC;EAC3CC,WAAW;EACXC,WAAW;EACXC,YAAY,GAAG,IAAI;EACnBC,0BAA0B,GAAG,IAAI;EACjCC,SAAS,GAAG,IAAI;EAChBC,aAAa,GAAG,IAAI;EACpBC,aAAa,GAAG;AACS,CAAC,EAAE;EAC5B,MAAMC,IAAI,GAAG,IAAAC,cAAO,EAClB,MAAM,CACJ;IACEC,OAAO,EAAEP,YAAY;IACrBQ,IAAI,EAAE,SAAS;IACfC,KAAK,EAAE;EACT,CAAC,EACD;IACEF,OAAO,EAAEN,0BAA0B;IACnCO,IAAI,EAAE,uBAAuB;IAC7BC,KAAK,EAAE;EACT,CAAC,EACD;IACEF,OAAO,EAAEL,SAAS;IAClBM,IAAI,EAAE,MAAM;IACZC,KAAK,EAAE;EACT,CAAC,EACD;IACEF,OAAO,EAAEJ,aAAa;IACtBK,IAAI,EAAE,UAAU;IAChBC,KAAK,EAAE;EACT,CAAC,EACD;IACEF,OAAO,EAAEH,aAAa;IACtBI,IAAI,EAAE,UAAU;IAChBC,KAAK,EAAE;EACT,CAAC,CACF,EACD,CAACP,SAAS,EAAEF,YAAY,EAAEI,aAAa,EAAEH,0BAA0B,EAAEE,aAAa,CACpF,CAAC;EAED,oBACE,IAAAV,WAAA,CAAAiB,GAAA,EAACpB,YAAA,CAAAqB,UAAU;IACTC,UAAU;IACVC,KAAK,EAAEC,MAAM,CAACC,SAAU;IACxBC,qBAAqB,EAAEF,MAAM,CAACG,gBAAiB;IAC/CC,8BAA8B,EAAE,KAAM;IAAAC,QAAA,EAErCd,IAAI,CAACe,GAAG,CAACC,IAAI,iBACZ,IAAA5B,WAAA,CAAAiB,GAAA,EAACnB,gCAAA,CAAAK,OAA+B;MAE9B0B,OAAO,EAAEA,CAAA,KAAMvB,WAAW,CAACsB,IAAI,CAACb,IAAI,CAAE;MACtCe,UAAU,EAAEF,IAAI,CAACb,IAAI,KAAKV,WAAY;MACtCS,OAAO,EAAEc,IAAI,CAACd,OAAQ;MACtBE,KAAK,EAAEY,IAAI,CAACZ;IAAM,GAJbY,IAAI,CAACb,IAKX,CACF;EAAC,CACQ,CAAC;AAEjB;AAEA,MAAMM,MAAM,GAAGU,uBAAU,CAACC,MAAM,CAAC;EAC/BV,SAAS,EAAE;IACTW,QAAQ,EAAE;EACZ,CAAC;EACDT,gBAAgB,EAAE;IAChBU,iBAAiB,EAAE,CAAC;IACpBC,SAAS,EAAE;EACb;AACF,CAAC,CAAC","ignoreList":[]}
@@ -1,48 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = NetworkRequestDetailsHeaderItem;
7
- var _reactNative = require("react-native");
8
- var _colors = _interopRequireDefault(require("../../../theme/colors"));
9
- var _jsxRuntime = require("react/jsx-runtime");
10
- function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
11
- function NetworkRequestDetailsHeaderItem({
12
- visible,
13
- isSelected,
14
- label,
15
- onPress
16
- }) {
17
- if (!visible) return null;
18
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
19
- activeOpacity: 0.8,
20
- onPress: onPress,
21
- style: [styles.item, isSelected && styles.activeItem],
22
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
23
- style: styles.itemText,
24
- children: label
25
- })
26
- });
27
- }
28
- const styles = _reactNative.StyleSheet.create({
29
- item: {
30
- flex: 1,
31
- paddingHorizontal: 8,
32
- paddingVertical: 4,
33
- borderRadius: 4,
34
- backgroundColor: 'transparent',
35
- borderWidth: 1,
36
- borderColor: 'transparent'
37
- },
38
- activeItem: {
39
- backgroundColor: 'transparent',
40
- borderWidth: 1,
41
- borderColor: _colors.default.black
42
- },
43
- itemText: {
44
- fontSize: 14,
45
- color: _colors.default.black
46
- }
47
- });
48
- //# sourceMappingURL=NetworkRequestDetailsHeaderItem.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_reactNative","require","_colors","_interopRequireDefault","_jsxRuntime","e","__esModule","default","NetworkRequestDetailsHeaderItem","visible","isSelected","label","onPress","jsx","TouchableOpacity","activeOpacity","style","styles","item","activeItem","children","Text","itemText","StyleSheet","create","flex","paddingHorizontal","paddingVertical","borderRadius","backgroundColor","borderWidth","borderColor","colors","black","fontSize","color"],"sourceRoot":"../../../../../src","sources":["ui/components/items/NetworkRequestDetailsHeaderItem.tsx"],"mappings":";;;;;;AAAA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,OAAA,GAAAC,sBAAA,CAAAF,OAAA;AAA2C,IAAAG,WAAA,GAAAH,OAAA;AAAA,SAAAE,uBAAAE,CAAA,WAAAA,CAAA,IAAAA,CAAA,CAAAC,UAAA,GAAAD,CAAA,KAAAE,OAAA,EAAAF,CAAA;AAS5B,SAASG,+BAA+BA,CAAC;EACtDC,OAAO;EACPC,UAAU;EACVC,KAAK;EACLC;AACoC,CAAC,EAAE;EACvC,IAAI,CAACH,OAAO,EAAE,OAAO,IAAI;EAEzB,oBACE,IAAAL,WAAA,CAAAS,GAAA,EAACb,YAAA,CAAAc,gBAAgB;IACfC,aAAa,EAAE,GAAI;IACnBH,OAAO,EAAEA,OAAQ;IACjBI,KAAK,EAAE,CAACC,MAAM,CAACC,IAAI,EAAER,UAAU,IAAIO,MAAM,CAACE,UAAU,CAAE;IAAAC,QAAA,eAEtD,IAAAhB,WAAA,CAAAS,GAAA,EAACb,YAAA,CAAAqB,IAAI;MAACL,KAAK,EAAEC,MAAM,CAACK,QAAS;MAAAF,QAAA,EAAET;IAAK,CAAO;EAAC,CAC5B,CAAC;AAEvB;AAEA,MAAMM,MAAM,GAAGM,uBAAU,CAACC,MAAM,CAAC;EAC/BN,IAAI,EAAE;IACJO,IAAI,EAAE,CAAC;IACPC,iBAAiB,EAAE,CAAC;IACpBC,eAAe,EAAE,CAAC;IAClBC,YAAY,EAAE,CAAC;IACfC,eAAe,EAAE,aAAa;IAC9BC,WAAW,EAAE,CAAC;IACdC,WAAW,EAAE;EACf,CAAC;EACDZ,UAAU,EAAE;IACVU,eAAe,EAAE,aAAa;IAC9BC,WAAW,EAAE,CAAC;IACdC,WAAW,EAAEC,eAAM,CAACC;EACtB,CAAC;EACDX,QAAQ,EAAE;IACRY,QAAQ,EAAE,EAAE;IACZC,KAAK,EAAEH,eAAM,CAACC;EAChB;AACF,CAAC,CAAC","ignoreList":[]}
@@ -1,10 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.detailsData = void 0;
7
- const detailsData = exports.detailsData = {
8
- value: null
9
- };
10
- //# sourceMappingURL=data.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["detailsData","exports","value"],"sourceRoot":"../../../src","sources":["core/data.ts"],"mappings":";;;;;;AAEA,MAAMA,WAKL,GAAAC,OAAA,CAAAD,WAAA,GAAG;EACFE,KAAK,EAAE;AACT,CAAC","ignoreList":[]}