react-native-xenon 0.2.1 → 0.3.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 (221) hide show
  1. package/README.md +8 -0
  2. package/lib/commonjs/assets/icons/bug.png +0 -0
  3. package/lib/commonjs/contexts/index.js +1 -1
  4. package/lib/commonjs/hooks/index.js +2 -9
  5. package/lib/commonjs/hooks/index.js.map +1 -1
  6. package/lib/commonjs/hooks/useConsoleInterceptor.js +4 -4
  7. package/lib/commonjs/hooks/useConsoleInterceptor.js.map +1 -1
  8. package/lib/commonjs/hooks/useNetworkInterceptor.js +14 -14
  9. package/lib/commonjs/hooks/useNetworkInterceptor.js.map +1 -1
  10. package/lib/commonjs/icons.js +1 -1
  11. package/lib/commonjs/icons.js.map +1 -1
  12. package/lib/commonjs/index.js +1 -1
  13. package/lib/commonjs/interceptors/ConsoleInterceptor.js +12 -13
  14. package/lib/commonjs/interceptors/ConsoleInterceptor.js.map +1 -1
  15. package/lib/commonjs/interceptors/FetchInterceptor.js +12 -13
  16. package/lib/commonjs/interceptors/FetchInterceptor.js.map +1 -1
  17. package/lib/commonjs/interceptors/HttpInterceptor.js +18 -36
  18. package/lib/commonjs/interceptors/HttpInterceptor.js.map +1 -1
  19. package/lib/commonjs/interceptors/Interceptor.js +9 -3
  20. package/lib/commonjs/interceptors/Interceptor.js.map +1 -1
  21. package/lib/commonjs/interceptors/NetworkInterceptor.js +1 -1
  22. package/lib/commonjs/interceptors/NetworkInterceptor.js.map +1 -1
  23. package/lib/commonjs/interceptors/WebSocketInterceptor.js +40 -64
  24. package/lib/commonjs/interceptors/WebSocketInterceptor.js.map +1 -1
  25. package/lib/commonjs/interceptors/XHRInterceptor.js +10 -11
  26. package/lib/commonjs/interceptors/XHRInterceptor.js.map +1 -1
  27. package/lib/commonjs/interceptors/index.js +4 -4
  28. package/lib/commonjs/types/index.js +4 -4
  29. package/lib/commonjs/ui/Xenon.js +19 -13
  30. package/lib/commonjs/ui/Xenon.js.map +1 -1
  31. package/lib/commonjs/ui/components/bubble/Bubble.js +8 -7
  32. package/lib/commonjs/ui/components/bubble/Bubble.js.map +1 -1
  33. package/lib/commonjs/ui/components/details/DetailsViewer.js +7 -7
  34. package/lib/commonjs/ui/components/details/DetailsViewer.js.map +1 -1
  35. package/lib/commonjs/ui/components/details/LogMessageDetails.js +2 -2
  36. package/lib/commonjs/ui/components/details/NetworkRequestDetails.js +6 -6
  37. package/lib/commonjs/ui/components/details/NetworkRequestDetails.js.map +1 -1
  38. package/lib/commonjs/ui/components/headers/DebuggerHeader.js +10 -10
  39. package/lib/commonjs/ui/components/headers/DebuggerHeader.js.map +1 -1
  40. package/lib/commonjs/ui/components/headers/NetworkPanelHeader.js +2 -2
  41. package/lib/commonjs/ui/components/headers/NetworkPanelHeader.js.map +1 -1
  42. package/lib/commonjs/ui/components/headers/NetworkRequestDetailsHeader.js +1 -1
  43. package/lib/commonjs/ui/components/index.js +5 -5
  44. package/lib/commonjs/ui/components/items/ConsolePanelItem.js +2 -2
  45. package/lib/commonjs/ui/components/items/DebuggerHeaderItem.js +1 -1
  46. package/lib/commonjs/ui/components/items/NetworkPanelItem.js +2 -2
  47. package/lib/commonjs/ui/components/items/NetworkRequestDetailsHeaderItem.js +1 -1
  48. package/lib/commonjs/ui/components/items/NetworkRequestDetailsItem.js +1 -1
  49. package/lib/commonjs/ui/components/panels/ConsolePanel.js +8 -10
  50. package/lib/commonjs/ui/components/panels/ConsolePanel.js.map +1 -1
  51. package/lib/commonjs/ui/components/panels/NetworkPanel.js +17 -18
  52. package/lib/commonjs/ui/components/panels/NetworkPanel.js.map +1 -1
  53. package/lib/commonjs/utils.js +8 -1
  54. package/lib/commonjs/utils.js.map +1 -1
  55. package/lib/module/assets/icons/bug.png +0 -0
  56. package/lib/module/colors.js +5 -1
  57. package/lib/module/colors.js.map +1 -1
  58. package/lib/module/constants.js +5 -1
  59. package/lib/module/constants.js.map +1 -1
  60. package/lib/module/contexts/MainContext.js +7 -3
  61. package/lib/module/contexts/MainContext.js.map +1 -1
  62. package/lib/module/contexts/index.js +11 -1
  63. package/lib/module/contexts/index.js.map +1 -1
  64. package/lib/module/hooks/index.js +18 -3
  65. package/lib/module/hooks/index.js.map +1 -1
  66. package/lib/module/hooks/useConsoleInterceptor.js +16 -12
  67. package/lib/module/hooks/useConsoleInterceptor.js.map +1 -1
  68. package/lib/module/hooks/useNetworkInterceptor.js +31 -27
  69. package/lib/module/hooks/useNetworkInterceptor.js.map +1 -1
  70. package/lib/module/icons.js +6 -2
  71. package/lib/module/icons.js.map +1 -1
  72. package/lib/module/index.js +11 -1
  73. package/lib/module/index.js.map +1 -1
  74. package/lib/module/interceptors/ConsoleInterceptor.js +16 -10
  75. package/lib/module/interceptors/ConsoleInterceptor.js.map +1 -1
  76. package/lib/module/interceptors/FetchInterceptor.js +20 -15
  77. package/lib/module/interceptors/FetchInterceptor.js.map +1 -1
  78. package/lib/module/interceptors/HttpInterceptor.js +24 -37
  79. package/lib/module/interceptors/HttpInterceptor.js.map +1 -1
  80. package/lib/module/interceptors/Interceptor.js +13 -2
  81. package/lib/module/interceptors/Interceptor.js.map +1 -1
  82. package/lib/module/interceptors/NetworkInterceptor.js +8 -2
  83. package/lib/module/interceptors/NetworkInterceptor.js.map +1 -1
  84. package/lib/module/interceptors/WebSocketInterceptor.js +60 -78
  85. package/lib/module/interceptors/WebSocketInterceptor.js.map +1 -1
  86. package/lib/module/interceptors/XHRInterceptor.js +16 -11
  87. package/lib/module/interceptors/XHRInterceptor.js.map +1 -1
  88. package/lib/module/interceptors/index.js +32 -4
  89. package/lib/module/interceptors/index.js.map +1 -1
  90. package/lib/module/types/common.js +6 -2
  91. package/lib/module/types/common.js.map +1 -1
  92. package/lib/module/types/http.js +3 -1
  93. package/lib/module/types/index.js +47 -4
  94. package/lib/module/types/index.js.map +1 -1
  95. package/lib/module/types/websocket.js +3 -1
  96. package/lib/module/ui/Xenon.js +45 -34
  97. package/lib/module/ui/Xenon.js.map +1 -1
  98. package/lib/module/ui/components/bubble/Bubble.js +24 -18
  99. package/lib/module/ui/components/bubble/Bubble.js.map +1 -1
  100. package/lib/module/ui/components/details/DetailsViewer.js +17 -12
  101. package/lib/module/ui/components/details/DetailsViewer.js.map +1 -1
  102. package/lib/module/ui/components/details/LogMessageDetails.js +15 -10
  103. package/lib/module/ui/components/details/LogMessageDetails.js.map +1 -1
  104. package/lib/module/ui/components/details/NetworkRequestDetails.js +48 -43
  105. package/lib/module/ui/components/details/NetworkRequestDetails.js.map +1 -1
  106. package/lib/module/ui/components/headers/DebuggerHeader.js +37 -32
  107. package/lib/module/ui/components/headers/DebuggerHeader.js.map +1 -1
  108. package/lib/module/ui/components/headers/NetworkPanelHeader.js +26 -21
  109. package/lib/module/ui/components/headers/NetworkPanelHeader.js.map +1 -1
  110. package/lib/module/ui/components/headers/NetworkRequestDetailsHeader.js +14 -9
  111. package/lib/module/ui/components/headers/NetworkRequestDetailsHeader.js.map +1 -1
  112. package/lib/module/ui/components/index.js +39 -5
  113. package/lib/module/ui/components/index.js.map +1 -1
  114. package/lib/module/ui/components/items/ConsolePanelItem.js +15 -10
  115. package/lib/module/ui/components/items/ConsolePanelItem.js.map +1 -1
  116. package/lib/module/ui/components/items/DebuggerHeaderItem.js +17 -12
  117. package/lib/module/ui/components/items/DebuggerHeaderItem.js.map +1 -1
  118. package/lib/module/ui/components/items/NetworkPanelItem.js +28 -23
  119. package/lib/module/ui/components/items/NetworkPanelItem.js.map +1 -1
  120. package/lib/module/ui/components/items/NetworkRequestDetailsHeaderItem.js +14 -9
  121. package/lib/module/ui/components/items/NetworkRequestDetailsHeaderItem.js.map +1 -1
  122. package/lib/module/ui/components/items/NetworkRequestDetailsItem.js +15 -10
  123. package/lib/module/ui/components/items/NetworkRequestDetailsItem.js.map +1 -1
  124. package/lib/module/ui/components/panels/ConsolePanel.js +23 -20
  125. package/lib/module/ui/components/panels/ConsolePanel.js.map +1 -1
  126. package/lib/module/ui/components/panels/NetworkPanel.js +31 -27
  127. package/lib/module/ui/components/panels/NetworkPanel.js.map +1 -1
  128. package/lib/module/utils.js +27 -8
  129. package/lib/module/utils.js.map +1 -1
  130. package/lib/typescript/commonjs/src/hooks/index.d.ts +0 -1
  131. package/lib/typescript/commonjs/src/hooks/index.d.ts.map +1 -1
  132. package/lib/typescript/commonjs/src/hooks/useNetworkInterceptor.d.ts.map +1 -1
  133. package/lib/typescript/commonjs/src/icons.d.ts +1 -1
  134. package/lib/typescript/commonjs/src/interceptors/ConsoleInterceptor.d.ts +3 -3
  135. package/lib/typescript/commonjs/src/interceptors/ConsoleInterceptor.d.ts.map +1 -1
  136. package/lib/typescript/commonjs/src/interceptors/FetchInterceptor.d.ts.map +1 -1
  137. package/lib/typescript/commonjs/src/interceptors/HttpInterceptor.d.ts +8 -17
  138. package/lib/typescript/commonjs/src/interceptors/HttpInterceptor.d.ts.map +1 -1
  139. package/lib/typescript/commonjs/src/interceptors/Interceptor.d.ts +3 -1
  140. package/lib/typescript/commonjs/src/interceptors/Interceptor.d.ts.map +1 -1
  141. package/lib/typescript/commonjs/src/interceptors/NetworkInterceptor.d.ts +1 -1
  142. package/lib/typescript/commonjs/src/interceptors/NetworkInterceptor.d.ts.map +1 -1
  143. package/lib/typescript/commonjs/src/interceptors/WebSocketInterceptor.d.ts +6 -18
  144. package/lib/typescript/commonjs/src/interceptors/WebSocketInterceptor.d.ts.map +1 -1
  145. package/lib/typescript/commonjs/src/interceptors/XHRInterceptor.d.ts.map +1 -1
  146. package/lib/typescript/commonjs/src/types/console.d.ts +3 -0
  147. package/lib/typescript/commonjs/src/types/console.d.ts.map +1 -1
  148. package/lib/typescript/commonjs/src/types/http.d.ts +13 -5
  149. package/lib/typescript/commonjs/src/types/http.d.ts.map +1 -1
  150. package/lib/typescript/commonjs/src/types/websocket.d.ts +17 -7
  151. package/lib/typescript/commonjs/src/types/websocket.d.ts.map +1 -1
  152. package/lib/typescript/commonjs/src/ui/Xenon.d.ts +1 -0
  153. package/lib/typescript/commonjs/src/ui/Xenon.d.ts.map +1 -1
  154. package/lib/typescript/commonjs/src/ui/components/bubble/Bubble.d.ts.map +1 -1
  155. package/lib/typescript/commonjs/src/ui/components/panels/ConsolePanel.d.ts.map +1 -1
  156. package/lib/typescript/commonjs/src/ui/components/panels/NetworkPanel.d.ts.map +1 -1
  157. package/lib/typescript/commonjs/src/utils.d.ts +1 -0
  158. package/lib/typescript/commonjs/src/utils.d.ts.map +1 -1
  159. package/lib/typescript/module/src/hooks/index.d.ts +0 -1
  160. package/lib/typescript/module/src/hooks/index.d.ts.map +1 -1
  161. package/lib/typescript/module/src/hooks/useNetworkInterceptor.d.ts.map +1 -1
  162. package/lib/typescript/module/src/icons.d.ts +1 -1
  163. package/lib/typescript/module/src/interceptors/ConsoleInterceptor.d.ts +3 -3
  164. package/lib/typescript/module/src/interceptors/ConsoleInterceptor.d.ts.map +1 -1
  165. package/lib/typescript/module/src/interceptors/FetchInterceptor.d.ts.map +1 -1
  166. package/lib/typescript/module/src/interceptors/HttpInterceptor.d.ts +8 -17
  167. package/lib/typescript/module/src/interceptors/HttpInterceptor.d.ts.map +1 -1
  168. package/lib/typescript/module/src/interceptors/Interceptor.d.ts +3 -1
  169. package/lib/typescript/module/src/interceptors/Interceptor.d.ts.map +1 -1
  170. package/lib/typescript/module/src/interceptors/NetworkInterceptor.d.ts +1 -1
  171. package/lib/typescript/module/src/interceptors/NetworkInterceptor.d.ts.map +1 -1
  172. package/lib/typescript/module/src/interceptors/WebSocketInterceptor.d.ts +6 -18
  173. package/lib/typescript/module/src/interceptors/WebSocketInterceptor.d.ts.map +1 -1
  174. package/lib/typescript/module/src/interceptors/XHRInterceptor.d.ts.map +1 -1
  175. package/lib/typescript/module/src/types/console.d.ts +3 -0
  176. package/lib/typescript/module/src/types/console.d.ts.map +1 -1
  177. package/lib/typescript/module/src/types/http.d.ts +13 -5
  178. package/lib/typescript/module/src/types/http.d.ts.map +1 -1
  179. package/lib/typescript/module/src/types/websocket.d.ts +17 -7
  180. package/lib/typescript/module/src/types/websocket.d.ts.map +1 -1
  181. package/lib/typescript/module/src/ui/Xenon.d.ts +1 -0
  182. package/lib/typescript/module/src/ui/Xenon.d.ts.map +1 -1
  183. package/lib/typescript/module/src/ui/components/bubble/Bubble.d.ts.map +1 -1
  184. package/lib/typescript/module/src/ui/components/panels/ConsolePanel.d.ts.map +1 -1
  185. package/lib/typescript/module/src/ui/components/panels/NetworkPanel.d.ts.map +1 -1
  186. package/lib/typescript/module/src/utils.d.ts +1 -0
  187. package/lib/typescript/module/src/utils.d.ts.map +1 -1
  188. package/package.json +8 -4
  189. package/src/assets/icons/bug.png +0 -0
  190. package/src/hooks/index.ts +0 -1
  191. package/src/hooks/useConsoleInterceptor.ts +1 -1
  192. package/src/hooks/useNetworkInterceptor.ts +31 -41
  193. package/src/icons.ts +1 -1
  194. package/src/interceptors/ConsoleInterceptor.ts +11 -10
  195. package/src/interceptors/FetchInterceptor.ts +6 -7
  196. package/src/interceptors/HttpInterceptor.ts +19 -48
  197. package/src/interceptors/Interceptor.ts +11 -1
  198. package/src/interceptors/NetworkInterceptor.ts +1 -1
  199. package/src/interceptors/WebSocketInterceptor.ts +37 -81
  200. package/src/interceptors/XHRInterceptor.ts +7 -6
  201. package/src/types/console.ts +4 -0
  202. package/src/types/http.ts +13 -5
  203. package/src/types/websocket.ts +17 -9
  204. package/src/ui/Xenon.tsx +10 -11
  205. package/src/ui/components/bubble/Bubble.tsx +3 -7
  206. package/src/ui/components/headers/NetworkPanelHeader.tsx +1 -1
  207. package/src/ui/components/panels/ConsolePanel.tsx +5 -8
  208. package/src/ui/components/panels/NetworkPanel.tsx +14 -14
  209. package/src/utils.ts +6 -0
  210. package/lib/commonjs/assets/icons/code.png +0 -0
  211. package/lib/commonjs/hooks/useScrollToBottom.js +0 -23
  212. package/lib/commonjs/hooks/useScrollToBottom.js.map +0 -1
  213. package/lib/module/assets/icons/code.png +0 -0
  214. package/lib/module/hooks/useScrollToBottom.js +0 -19
  215. package/lib/module/hooks/useScrollToBottom.js.map +0 -1
  216. package/lib/typescript/commonjs/src/hooks/useScrollToBottom.d.ts +0 -3
  217. package/lib/typescript/commonjs/src/hooks/useScrollToBottom.d.ts.map +0 -1
  218. package/lib/typescript/module/src/hooks/useScrollToBottom.d.ts +0 -3
  219. package/lib/typescript/module/src/hooks/useScrollToBottom.d.ts.map +0 -1
  220. package/src/assets/icons/code.png +0 -0
  221. package/src/hooks/useScrollToBottom.ts +0 -23
@@ -13,7 +13,7 @@ export interface WebSocketRequest extends NetworkRequest {
13
13
  serverClose?: { code?: number; reason?: string };
14
14
  }
15
15
 
16
- export type WebSocketConnectCallback =
16
+ type WebSocketConnectCallback =
17
17
  | ((
18
18
  url: string,
19
19
  protocols?: WebSocketRequest['protocols'],
@@ -22,20 +22,28 @@ export type WebSocketConnectCallback =
22
22
  ) => void)
23
23
  | null;
24
24
 
25
- export type WebSocketSendCallback = ((data: string, socketId: number) => void) | null;
25
+ type WebSocketSendCallback = ((data: string, socketId: number) => void) | null;
26
26
 
27
- export type WebSocketCloseCallback =
28
- | ((code: number, reason: string, socketId: number) => void)
29
- | null;
27
+ type WebSocketCloseCallback = ((code: number, reason: string, socketId: number) => void) | null;
30
28
 
31
- export type WebSocketOnOpenCallback = ((socketId: number, duration: number) => void) | null;
29
+ type WebSocketOnOpenCallback = ((socketId: number, duration: number) => void) | null;
32
30
 
33
- export type WebSocketOnMessageCallback = ((socketId: number, message: any) => void) | null;
31
+ type WebSocketOnMessageCallback = ((socketId: number, message: any) => void) | null;
34
32
 
35
- export type WebSocketOnErrorCallback =
33
+ type WebSocketOnErrorCallback =
36
34
  | ((socketId: number, error: WebSocketRequest['serverError']) => void)
37
35
  | null;
38
36
 
39
- export type WebSocketOnCloseCallback =
37
+ type WebSocketOnCloseCallback =
40
38
  | ((socketId: number, data: WebSocketRequest['serverClose']) => void)
41
39
  | null;
40
+
41
+ export interface WebSocketHandlers {
42
+ connect: WebSocketConnectCallback;
43
+ send: WebSocketSendCallback;
44
+ close: WebSocketCloseCallback;
45
+ onOpen: WebSocketOnOpenCallback;
46
+ onMessage: WebSocketOnMessageCallback;
47
+ onError: WebSocketOnErrorCallback;
48
+ onClose: WebSocketOnCloseCallback;
49
+ }
package/src/ui/Xenon.tsx CHANGED
@@ -15,6 +15,7 @@ import { DebuggerPanel, type DebuggerPosition, type DebuggerVisibility } from '.
15
15
  import { Bubble, ConsolePanel, DebuggerHeader, DetailsViewer, NetworkPanel } from './components';
16
16
 
17
17
  interface XenonComponentMethods {
18
+ isVisible(): boolean;
18
19
  show(): void;
19
20
  hide(): void;
20
21
  }
@@ -37,15 +38,10 @@ const XenonComponent = memo<XenonComponentProps>(
37
38
  ({ autoInspectNetworkEnabled = true, autoInspectConsoleEnabled = true, bubbleSize = 40 }) => {
38
39
  const { width: screenWidth, height: screenHeight } = useWindowDimensions();
39
40
  const verticalSafeMargin = screenHeight / 8;
40
-
41
41
  const pan = useRef(new Animated.ValueXY({ x: 0, y: verticalSafeMargin }));
42
-
43
42
  const detailsData: MainContextValue['detailsData'] = useRef(null);
44
-
45
43
  const [debuggerVisibility, setDebuggerVisibility] = useState<DebuggerVisibility>('hidden');
46
-
47
44
  const [debuggerPosition, setDebuggerPosition] = useState<DebuggerPosition>('bottom');
48
-
49
45
  const [panelSelected, setPanelSelected] = useState<DebuggerPanel | null>(DebuggerPanel.Network);
50
46
 
51
47
  const networkInterceptor = useNetworkInterceptor({
@@ -59,18 +55,20 @@ const XenonComponent = memo<XenonComponentProps>(
59
55
  useImperativeHandle(
60
56
  rootRef,
61
57
  () => ({
58
+ isVisible() {
59
+ return debuggerVisibility !== 'hidden';
60
+ },
62
61
  show() {
63
- setDebuggerVisibility('bubble');
62
+ if (!this.isVisible()) setDebuggerVisibility('bubble');
64
63
  },
65
64
  hide() {
66
- setDebuggerVisibility('hidden');
65
+ if (this.isVisible()) setDebuggerVisibility('hidden');
67
66
  },
68
67
  }),
69
- [],
68
+ [debuggerVisibility],
70
69
  );
71
70
 
72
71
  let content;
73
-
74
72
  switch (debuggerVisibility) {
75
73
  case 'bubble':
76
74
  content = (
@@ -92,10 +90,8 @@ const XenonComponent = memo<XenonComponentProps>(
92
90
  ]}
93
91
  >
94
92
  <DebuggerHeader />
95
-
96
93
  {panelSelected === DebuggerPanel.Network && <NetworkPanel />}
97
94
  {panelSelected === DebuggerPanel.Console && <ConsolePanel />}
98
-
99
95
  {!panelSelected && !!detailsData.current && <DetailsViewer />}
100
96
  </SafeAreaView>
101
97
  );
@@ -146,6 +142,9 @@ const styles = StyleSheet.create({
146
142
  XenonComponent.displayName = 'Xenon';
147
143
 
148
144
  const Xenon: ReactNativeXenon = {
145
+ isVisible() {
146
+ return rootRef.current?.isVisible() ?? false;
147
+ },
149
148
  show() {
150
149
  rootRef.current?.show();
151
150
  },
@@ -16,6 +16,8 @@ interface BubbleProps {
16
16
  }
17
17
 
18
18
  export default function Bubble({ bubbleSize, pan }: BubbleProps) {
19
+ const iconSize = bubbleSize * 0.65;
20
+
19
21
  const { setDebuggerVisibility, screenWidth, screenHeight, verticalSafeMargin } =
20
22
  useContext(MainContext)!;
21
23
 
@@ -74,13 +76,7 @@ export default function Bubble({ bubbleSize, pan }: BubbleProps) {
74
76
  },
75
77
  ]}
76
78
  >
77
- <Image
78
- source={icons.code}
79
- style={{
80
- width: bubbleSize * 0.75,
81
- height: bubbleSize * 0.75,
82
- }}
83
- />
79
+ <Image source={icons.bug} style={{ width: iconSize, height: iconSize }} />
84
80
  </Animated.View>
85
81
  );
86
82
  }
@@ -39,7 +39,7 @@ export default function NetworkPanelHeader() {
39
39
 
40
40
  const styles = StyleSheet.create({
41
41
  container: {
42
- flex: 1,
42
+ marginHorizontal: 8,
43
43
  flexDirection: 'row',
44
44
  alignItems: 'center',
45
45
  backgroundColor: colors.gray,
@@ -1,10 +1,9 @@
1
1
  import { useCallback, useContext } from 'react';
2
2
  import { FlatList, StyleSheet, View, type ListRenderItem } from 'react-native';
3
+ import colors from '../../../colors';
3
4
  import { MainContext } from '../../../contexts';
4
- import { useScrollToBottom } from '../../../hooks';
5
5
  import type { LogMessage } from '../../../types';
6
6
  import ConsolePanelItem from '../items/ConsolePanelItem';
7
- import colors from '../../../colors';
8
7
 
9
8
  const Separator = () => <View style={styles.divider} />;
10
9
 
@@ -15,8 +14,6 @@ export default function ConsolePanel() {
15
14
  detailsData,
16
15
  } = useContext(MainContext)!;
17
16
 
18
- const listRef = useScrollToBottom(logMessages.length);
19
-
20
17
  const renderItem = useCallback<ListRenderItem<LogMessage>>(
21
18
  ({ item }) => {
22
19
  return (
@@ -34,12 +31,12 @@ export default function ConsolePanel() {
34
31
 
35
32
  return (
36
33
  <FlatList
37
- ref={listRef}
38
- style={styles.container}
39
- data={logMessages}
34
+ inverted
35
+ data={logMessages.toReversed()}
40
36
  renderItem={renderItem}
41
- ItemSeparatorComponent={Separator}
42
37
  keyExtractor={(_, index) => index.toString()}
38
+ ItemSeparatorComponent={Separator}
39
+ style={styles.container}
43
40
  />
44
41
  );
45
42
  }
@@ -1,11 +1,10 @@
1
- import { useCallback, useContext } from 'react';
1
+ import { useCallback, useContext, useMemo } from 'react';
2
2
  import { FlatList, StyleSheet, View, type ListRenderItem } from 'react-native';
3
+ import colors from '../../../colors';
3
4
  import { MainContext } from '../../../contexts';
4
- import { useScrollToBottom } from '../../../hooks';
5
5
  import { NetworkType, type HttpRequest, type ID, type WebSocketRequest } from '../../../types';
6
6
  import NetworkPanelHeader from '../headers/NetworkPanelHeader';
7
7
  import NetworkPanelItem from '../items/NetworkPanelItem';
8
- import colors from '../../../colors';
9
8
 
10
9
  const Separator = () => <View style={styles.divider} />;
11
10
 
@@ -16,7 +15,7 @@ export default function NetworkPanel() {
16
15
  detailsData,
17
16
  } = useContext(MainContext)!;
18
17
 
19
- const listRef = useScrollToBottom(networkRequests.size);
18
+ const data = useMemo(() => Array.from(networkRequests).reverse(), [networkRequests]);
20
19
 
21
20
  const renderItem = useCallback<ListRenderItem<[NonNullable<ID>, HttpRequest | WebSocketRequest]>>(
22
21
  ({ item: [_, item] }) => {
@@ -41,16 +40,17 @@ export default function NetworkPanel() {
41
40
  );
42
41
 
43
42
  return (
44
- <FlatList
45
- ref={listRef}
46
- data={Array.from(networkRequests)}
47
- style={styles.container}
48
- ListHeaderComponent={NetworkPanelHeader}
49
- stickyHeaderIndices={[0]}
50
- ItemSeparatorComponent={Separator}
51
- keyExtractor={([key]) => key}
52
- renderItem={renderItem}
53
- />
43
+ <>
44
+ <NetworkPanelHeader />
45
+ <FlatList
46
+ inverted
47
+ data={data}
48
+ renderItem={renderItem}
49
+ keyExtractor={([key]) => key}
50
+ ItemSeparatorComponent={Separator}
51
+ style={styles.container}
52
+ />
53
+ </>
54
54
  );
55
55
  }
56
56
 
package/src/utils.ts CHANGED
@@ -55,3 +55,9 @@ export const convertToCurl = (
55
55
 
56
56
  return curlCommand;
57
57
  };
58
+
59
+ export function frozen(_target: Object) {
60
+ const descriptor: PropertyDescriptor = arguments[2];
61
+ descriptor.configurable = false;
62
+ descriptor.writable = false;
63
+ }
Binary file
@@ -1,23 +0,0 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.default = useScrollToBottom;
7
- var _react = require("react");
8
- function useScrollToBottom(listSize) {
9
- const currentSize = (0, _react.useRef)(listSize);
10
- const listRef = (0, _react.useRef)(null);
11
- (0, _react.useEffect)(() => {
12
- if (listSize <= currentSize.current) return;
13
- currentSize.current = listSize;
14
- const timer = setTimeout(() => {
15
- if (listSize) listRef.current?.scrollToEnd();
16
- }, 0);
17
- return () => {
18
- clearTimeout(timer);
19
- };
20
- }, [listSize]);
21
- return listRef;
22
- }
23
- //# sourceMappingURL=useScrollToBottom.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["_react","require","useScrollToBottom","listSize","currentSize","useRef","listRef","useEffect","current","timer","setTimeout","scrollToEnd","clearTimeout"],"sourceRoot":"../../../src","sources":["hooks/useScrollToBottom.ts"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AAGe,SAASC,iBAAiBA,CAACC,QAAgB,EAAE;EAC1D,MAAMC,WAAW,GAAG,IAAAC,aAAM,EAACF,QAAQ,CAAC;EACpC,MAAMG,OAAO,GAAG,IAAAD,aAAM,EAAkB,IAAI,CAAC;EAE7C,IAAAE,gBAAS,EAAC,MAAM;IACd,IAAIJ,QAAQ,IAAIC,WAAW,CAACI,OAAO,EAAE;IAErCJ,WAAW,CAACI,OAAO,GAAGL,QAAQ;IAE9B,MAAMM,KAAK,GAAGC,UAAU,CAAC,MAAM;MAC7B,IAAIP,QAAQ,EAAEG,OAAO,CAACE,OAAO,EAAEG,WAAW,CAAC,CAAC;IAC9C,CAAC,EAAE,CAAC,CAAC;IAEL,OAAO,MAAM;MACXC,YAAY,CAACH,KAAK,CAAC;IACrB,CAAC;EACH,CAAC,EAAE,CAACN,QAAQ,CAAC,CAAC;EAEd,OAAOG,OAAO;AAChB","ignoreList":[]}
Binary file
@@ -1,19 +0,0 @@
1
- "use strict";
2
-
3
- import { useEffect, useRef } from 'react';
4
- export default function useScrollToBottom(listSize) {
5
- const currentSize = useRef(listSize);
6
- const listRef = useRef(null);
7
- useEffect(() => {
8
- if (listSize <= currentSize.current) return;
9
- currentSize.current = listSize;
10
- const timer = setTimeout(() => {
11
- if (listSize) listRef.current?.scrollToEnd();
12
- }, 0);
13
- return () => {
14
- clearTimeout(timer);
15
- };
16
- }, [listSize]);
17
- return listRef;
18
- }
19
- //# sourceMappingURL=useScrollToBottom.js.map
@@ -1 +0,0 @@
1
- {"version":3,"names":["useEffect","useRef","useScrollToBottom","listSize","currentSize","listRef","current","timer","setTimeout","scrollToEnd","clearTimeout"],"sourceRoot":"../../../src","sources":["hooks/useScrollToBottom.ts"],"mappings":";;AAAA,SAASA,SAAS,EAAEC,MAAM,QAAQ,OAAO;AAGzC,eAAe,SAASC,iBAAiBA,CAACC,QAAgB,EAAE;EAC1D,MAAMC,WAAW,GAAGH,MAAM,CAACE,QAAQ,CAAC;EACpC,MAAME,OAAO,GAAGJ,MAAM,CAAkB,IAAI,CAAC;EAE7CD,SAAS,CAAC,MAAM;IACd,IAAIG,QAAQ,IAAIC,WAAW,CAACE,OAAO,EAAE;IAErCF,WAAW,CAACE,OAAO,GAAGH,QAAQ;IAE9B,MAAMI,KAAK,GAAGC,UAAU,CAAC,MAAM;MAC7B,IAAIL,QAAQ,EAAEE,OAAO,CAACC,OAAO,EAAEG,WAAW,CAAC,CAAC;IAC9C,CAAC,EAAE,CAAC,CAAC;IAEL,OAAO,MAAM;MACXC,YAAY,CAACH,KAAK,CAAC;IACrB,CAAC;EACH,CAAC,EAAE,CAACJ,QAAQ,CAAC,CAAC;EAEd,OAAOE,OAAO;AAChB","ignoreList":[]}
@@ -1,3 +0,0 @@
1
- import type { FlatList } from 'react-native';
2
- export default function useScrollToBottom(listSize: number): import("react").MutableRefObject<FlatList<any> | null>;
3
- //# sourceMappingURL=useScrollToBottom.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useScrollToBottom.d.ts","sourceRoot":"","sources":["../../../../../src/hooks/useScrollToBottom.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,QAAQ,EAAE,MAAM,0DAmBzD"}
@@ -1,3 +0,0 @@
1
- import type { FlatList } from 'react-native';
2
- export default function useScrollToBottom(listSize: number): import("react").MutableRefObject<FlatList<any> | null>;
3
- //# sourceMappingURL=useScrollToBottom.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"useScrollToBottom.d.ts","sourceRoot":"","sources":["../../../../../src/hooks/useScrollToBottom.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAE7C,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,QAAQ,EAAE,MAAM,0DAmBzD"}
Binary file
@@ -1,23 +0,0 @@
1
- import { useEffect, useRef } from 'react';
2
- import type { FlatList } from 'react-native';
3
-
4
- export default function useScrollToBottom(listSize: number) {
5
- const currentSize = useRef(listSize);
6
- const listRef = useRef<FlatList | null>(null);
7
-
8
- useEffect(() => {
9
- if (listSize <= currentSize.current) return;
10
-
11
- currentSize.current = listSize;
12
-
13
- const timer = setTimeout(() => {
14
- if (listSize) listRef.current?.scrollToEnd();
15
- }, 0);
16
-
17
- return () => {
18
- clearTimeout(timer);
19
- };
20
- }, [listSize]);
21
-
22
- return listRef;
23
- }