react-native-xenon 0.6.0 → 1.0.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 (280) hide show
  1. package/README.md +34 -32
  2. package/lib/commonjs/assets/icons/delete.png +0 -0
  3. package/lib/commonjs/core/refs.js +33 -0
  4. package/lib/commonjs/core/refs.js.map +1 -0
  5. package/lib/commonjs/core/utils.js +40 -9
  6. package/lib/commonjs/core/utils.js.map +1 -1
  7. package/lib/commonjs/hooks/useNetworkInterceptor.js +14 -15
  8. package/lib/commonjs/hooks/useNetworkInterceptor.js.map +1 -1
  9. package/lib/commonjs/interceptors/FetchInterceptor.js +6 -9
  10. package/lib/commonjs/interceptors/FetchInterceptor.js.map +1 -1
  11. package/lib/commonjs/interceptors/WebSocketInterceptor.js +2 -9
  12. package/lib/commonjs/interceptors/WebSocketInterceptor.js.map +1 -1
  13. package/lib/commonjs/interceptors/XHRInterceptor.js +9 -6
  14. package/lib/commonjs/interceptors/XHRInterceptor.js.map +1 -1
  15. package/lib/commonjs/theme/colors.js +10 -5
  16. package/lib/commonjs/theme/colors.js.map +1 -1
  17. package/lib/commonjs/ui/Xenon.js +52 -42
  18. package/lib/commonjs/ui/Xenon.js.map +1 -1
  19. package/lib/commonjs/ui/components/bubble/Bubble.js +37 -28
  20. package/lib/commonjs/ui/components/bubble/Bubble.js.map +1 -1
  21. package/lib/commonjs/ui/components/common/Divider.js +21 -0
  22. package/lib/commonjs/ui/components/common/Divider.js.map +1 -0
  23. package/lib/commonjs/ui/components/common/Icon.js +25 -0
  24. package/lib/commonjs/ui/components/common/Icon.js.map +1 -0
  25. package/lib/commonjs/ui/components/common/IndexedStack.js +46 -0
  26. package/lib/commonjs/ui/components/common/IndexedStack.js.map +1 -0
  27. package/lib/commonjs/ui/components/common/Touchable.js +22 -0
  28. package/lib/commonjs/ui/components/common/Touchable.js.map +1 -0
  29. package/lib/commonjs/ui/components/details/LogMessageDetails.js +24 -11
  30. package/lib/commonjs/ui/components/details/LogMessageDetails.js.map +1 -1
  31. package/lib/commonjs/ui/components/details/NetworkRequestDetails.js +64 -39
  32. package/lib/commonjs/ui/components/details/NetworkRequestDetails.js.map +1 -1
  33. package/lib/commonjs/ui/components/headers/ConsoleHeader.js +30 -0
  34. package/lib/commonjs/ui/components/headers/ConsoleHeader.js.map +1 -0
  35. package/lib/commonjs/ui/components/headers/DebuggerHeader.js +56 -173
  36. package/lib/commonjs/ui/components/headers/DebuggerHeader.js.map +1 -1
  37. package/lib/commonjs/ui/components/headers/Header.js +34 -0
  38. package/lib/commonjs/ui/components/headers/Header.js.map +1 -0
  39. package/lib/commonjs/ui/components/headers/HeaderComponents.js +111 -0
  40. package/lib/commonjs/ui/components/headers/HeaderComponents.js.map +1 -0
  41. package/lib/commonjs/ui/components/headers/NetworkHeader.js +97 -0
  42. package/lib/commonjs/ui/components/headers/NetworkHeader.js.map +1 -0
  43. package/lib/commonjs/ui/components/index.js +0 -7
  44. package/lib/commonjs/ui/components/index.js.map +1 -1
  45. package/lib/commonjs/ui/components/items/ConsolePanelItem.js +8 -4
  46. package/lib/commonjs/ui/components/items/ConsolePanelItem.js.map +1 -1
  47. package/lib/commonjs/ui/components/items/DebuggerHeaderItem.js +7 -10
  48. package/lib/commonjs/ui/components/items/DebuggerHeaderItem.js.map +1 -1
  49. package/lib/commonjs/ui/components/items/NetworkPanelItem.js +54 -13
  50. package/lib/commonjs/ui/components/items/NetworkPanelItem.js.map +1 -1
  51. package/lib/commonjs/ui/components/items/NetworkRequestDetailsItem.js +19 -18
  52. package/lib/commonjs/ui/components/items/NetworkRequestDetailsItem.js.map +1 -1
  53. package/lib/commonjs/ui/components/panels/ConsolePanel.js +19 -10
  54. package/lib/commonjs/ui/components/panels/ConsolePanel.js.map +1 -1
  55. package/lib/commonjs/ui/components/panels/NetworkPanel.js +24 -22
  56. package/lib/commonjs/ui/components/panels/NetworkPanel.js.map +1 -1
  57. package/lib/commonjs/ui/components/panels/Panel.js +25 -0
  58. package/lib/commonjs/ui/components/panels/Panel.js.map +1 -0
  59. package/lib/module/assets/icons/delete.png +0 -0
  60. package/lib/module/core/refs.js +33 -0
  61. package/lib/module/core/refs.js.map +1 -0
  62. package/lib/module/core/utils.js +40 -9
  63. package/lib/module/core/utils.js.map +1 -1
  64. package/lib/module/hooks/useNetworkInterceptor.js +14 -15
  65. package/lib/module/hooks/useNetworkInterceptor.js.map +1 -1
  66. package/lib/module/interceptors/FetchInterceptor.js +6 -9
  67. package/lib/module/interceptors/FetchInterceptor.js.map +1 -1
  68. package/lib/module/interceptors/WebSocketInterceptor.js +2 -9
  69. package/lib/module/interceptors/WebSocketInterceptor.js.map +1 -1
  70. package/lib/module/interceptors/XHRInterceptor.js +9 -6
  71. package/lib/module/interceptors/XHRInterceptor.js.map +1 -1
  72. package/lib/module/theme/colors.js +10 -5
  73. package/lib/module/theme/colors.js.map +1 -1
  74. package/lib/module/ui/Xenon.js +52 -42
  75. package/lib/module/ui/Xenon.js.map +1 -1
  76. package/lib/module/ui/components/bubble/Bubble.js +37 -28
  77. package/lib/module/ui/components/bubble/Bubble.js.map +1 -1
  78. package/lib/module/ui/components/common/Divider.js +21 -0
  79. package/lib/module/ui/components/common/Divider.js.map +1 -0
  80. package/lib/module/ui/components/common/Icon.js +25 -0
  81. package/lib/module/ui/components/common/Icon.js.map +1 -0
  82. package/lib/module/ui/components/common/IndexedStack.js +46 -0
  83. package/lib/module/ui/components/common/IndexedStack.js.map +1 -0
  84. package/lib/module/ui/components/common/Touchable.js +22 -0
  85. package/lib/module/ui/components/common/Touchable.js.map +1 -0
  86. package/lib/module/ui/components/details/LogMessageDetails.js +24 -11
  87. package/lib/module/ui/components/details/LogMessageDetails.js.map +1 -1
  88. package/lib/module/ui/components/details/NetworkRequestDetails.js +64 -39
  89. package/lib/module/ui/components/details/NetworkRequestDetails.js.map +1 -1
  90. package/lib/module/ui/components/headers/ConsoleHeader.js +30 -0
  91. package/lib/module/ui/components/headers/ConsoleHeader.js.map +1 -0
  92. package/lib/module/ui/components/headers/DebuggerHeader.js +56 -173
  93. package/lib/module/ui/components/headers/DebuggerHeader.js.map +1 -1
  94. package/lib/module/ui/components/headers/Header.js +34 -0
  95. package/lib/module/ui/components/headers/Header.js.map +1 -0
  96. package/lib/module/ui/components/headers/HeaderComponents.js +111 -0
  97. package/lib/module/ui/components/headers/HeaderComponents.js.map +1 -0
  98. package/lib/module/ui/components/headers/NetworkHeader.js +97 -0
  99. package/lib/module/ui/components/headers/NetworkHeader.js.map +1 -0
  100. package/lib/module/ui/components/index.js +0 -7
  101. package/lib/module/ui/components/index.js.map +1 -1
  102. package/lib/module/ui/components/items/ConsolePanelItem.js +8 -4
  103. package/lib/module/ui/components/items/ConsolePanelItem.js.map +1 -1
  104. package/lib/module/ui/components/items/DebuggerHeaderItem.js +7 -10
  105. package/lib/module/ui/components/items/DebuggerHeaderItem.js.map +1 -1
  106. package/lib/module/ui/components/items/NetworkPanelItem.js +54 -13
  107. package/lib/module/ui/components/items/NetworkPanelItem.js.map +1 -1
  108. package/lib/module/ui/components/items/NetworkRequestDetailsItem.js +19 -18
  109. package/lib/module/ui/components/items/NetworkRequestDetailsItem.js.map +1 -1
  110. package/lib/module/ui/components/panels/ConsolePanel.js +19 -10
  111. package/lib/module/ui/components/panels/ConsolePanel.js.map +1 -1
  112. package/lib/module/ui/components/panels/NetworkPanel.js +24 -22
  113. package/lib/module/ui/components/panels/NetworkPanel.js.map +1 -1
  114. package/lib/module/ui/components/panels/Panel.js +25 -0
  115. package/lib/module/ui/components/panels/Panel.js.map +1 -0
  116. package/lib/typescript/commonjs/src/core/refs.d.ts +24 -0
  117. package/lib/typescript/commonjs/src/core/refs.d.ts.map +1 -0
  118. package/lib/typescript/commonjs/src/core/utils.d.ts +13 -5
  119. package/lib/typescript/commonjs/src/core/utils.d.ts.map +1 -1
  120. package/lib/typescript/commonjs/src/hooks/useNetworkInterceptor.d.ts.map +1 -1
  121. package/lib/typescript/commonjs/src/interceptors/FetchInterceptor.d.ts.map +1 -1
  122. package/lib/typescript/commonjs/src/interceptors/WebSocketInterceptor.d.ts +0 -1
  123. package/lib/typescript/commonjs/src/interceptors/WebSocketInterceptor.d.ts.map +1 -1
  124. package/lib/typescript/commonjs/src/interceptors/XHRInterceptor.d.ts.map +1 -1
  125. package/lib/typescript/commonjs/src/theme/colors.d.ts +10 -5
  126. package/lib/typescript/commonjs/src/theme/colors.d.ts.map +1 -1
  127. package/lib/typescript/commonjs/src/types/common.d.ts +2 -3
  128. package/lib/typescript/commonjs/src/types/common.d.ts.map +1 -1
  129. package/lib/typescript/commonjs/src/types/http.d.ts +5 -6
  130. package/lib/typescript/commonjs/src/types/http.d.ts.map +1 -1
  131. package/lib/typescript/commonjs/src/types/websocket.d.ts +2 -2
  132. package/lib/typescript/commonjs/src/types/websocket.d.ts.map +1 -1
  133. package/lib/typescript/commonjs/src/ui/Xenon.d.ts +5 -2
  134. package/lib/typescript/commonjs/src/ui/Xenon.d.ts.map +1 -1
  135. package/lib/typescript/commonjs/src/ui/components/bubble/Bubble.d.ts +4 -5
  136. package/lib/typescript/commonjs/src/ui/components/bubble/Bubble.d.ts.map +1 -1
  137. package/lib/typescript/commonjs/src/ui/components/common/Divider.d.ts +4 -0
  138. package/lib/typescript/commonjs/src/ui/components/common/Divider.d.ts.map +1 -0
  139. package/lib/typescript/commonjs/src/ui/components/common/Icon.d.ts +8 -0
  140. package/lib/typescript/commonjs/src/ui/components/common/Icon.d.ts.map +1 -0
  141. package/lib/typescript/commonjs/src/ui/components/common/IndexedStack.d.ts +13 -0
  142. package/lib/typescript/commonjs/src/ui/components/common/IndexedStack.d.ts.map +1 -0
  143. package/lib/typescript/commonjs/src/ui/components/common/Touchable.d.ts +10 -0
  144. package/lib/typescript/commonjs/src/ui/components/common/Touchable.d.ts.map +1 -0
  145. package/lib/typescript/commonjs/src/ui/components/details/LogMessageDetails.d.ts +5 -6
  146. package/lib/typescript/commonjs/src/ui/components/details/LogMessageDetails.d.ts.map +1 -1
  147. package/lib/typescript/commonjs/src/ui/components/details/NetworkRequestDetails.d.ts +5 -6
  148. package/lib/typescript/commonjs/src/ui/components/details/NetworkRequestDetails.d.ts.map +1 -1
  149. package/lib/typescript/commonjs/src/ui/components/headers/ConsoleHeader.d.ts +9 -0
  150. package/lib/typescript/commonjs/src/ui/components/headers/ConsoleHeader.d.ts.map +1 -0
  151. package/lib/typescript/commonjs/src/ui/components/headers/DebuggerHeader.d.ts +9 -1
  152. package/lib/typescript/commonjs/src/ui/components/headers/DebuggerHeader.d.ts.map +1 -1
  153. package/lib/typescript/commonjs/src/ui/components/headers/Header.d.ts +3 -0
  154. package/lib/typescript/commonjs/src/ui/components/headers/Header.d.ts.map +1 -0
  155. package/lib/typescript/commonjs/src/ui/components/headers/HeaderComponents.d.ts +20 -0
  156. package/lib/typescript/commonjs/src/ui/components/headers/HeaderComponents.d.ts.map +1 -0
  157. package/lib/typescript/commonjs/src/ui/components/headers/NetworkHeader.d.ts +9 -0
  158. package/lib/typescript/commonjs/src/ui/components/headers/NetworkHeader.d.ts.map +1 -0
  159. package/lib/typescript/commonjs/src/ui/components/index.d.ts +0 -1
  160. package/lib/typescript/commonjs/src/ui/components/index.d.ts.map +1 -1
  161. package/lib/typescript/commonjs/src/ui/components/items/ConsolePanelItem.d.ts.map +1 -1
  162. package/lib/typescript/commonjs/src/ui/components/items/DebuggerHeaderItem.d.ts.map +1 -1
  163. package/lib/typescript/commonjs/src/ui/components/items/NetworkPanelItem.d.ts +3 -2
  164. package/lib/typescript/commonjs/src/ui/components/items/NetworkPanelItem.d.ts.map +1 -1
  165. package/lib/typescript/commonjs/src/ui/components/items/NetworkRequestDetailsItem.d.ts +4 -5
  166. package/lib/typescript/commonjs/src/ui/components/items/NetworkRequestDetailsItem.d.ts.map +1 -1
  167. package/lib/typescript/commonjs/src/ui/components/panels/ConsolePanel.d.ts +5 -1
  168. package/lib/typescript/commonjs/src/ui/components/panels/ConsolePanel.d.ts.map +1 -1
  169. package/lib/typescript/commonjs/src/ui/components/panels/NetworkPanel.d.ts +5 -1
  170. package/lib/typescript/commonjs/src/ui/components/panels/NetworkPanel.d.ts.map +1 -1
  171. package/lib/typescript/commonjs/src/ui/components/panels/Panel.d.ts +2 -0
  172. package/lib/typescript/commonjs/src/ui/components/panels/Panel.d.ts.map +1 -0
  173. package/lib/typescript/module/src/core/refs.d.ts +24 -0
  174. package/lib/typescript/module/src/core/refs.d.ts.map +1 -0
  175. package/lib/typescript/module/src/core/utils.d.ts +13 -5
  176. package/lib/typescript/module/src/core/utils.d.ts.map +1 -1
  177. package/lib/typescript/module/src/hooks/useNetworkInterceptor.d.ts.map +1 -1
  178. package/lib/typescript/module/src/interceptors/FetchInterceptor.d.ts.map +1 -1
  179. package/lib/typescript/module/src/interceptors/WebSocketInterceptor.d.ts +0 -1
  180. package/lib/typescript/module/src/interceptors/WebSocketInterceptor.d.ts.map +1 -1
  181. package/lib/typescript/module/src/interceptors/XHRInterceptor.d.ts.map +1 -1
  182. package/lib/typescript/module/src/theme/colors.d.ts +10 -5
  183. package/lib/typescript/module/src/theme/colors.d.ts.map +1 -1
  184. package/lib/typescript/module/src/types/common.d.ts +2 -3
  185. package/lib/typescript/module/src/types/common.d.ts.map +1 -1
  186. package/lib/typescript/module/src/types/http.d.ts +5 -6
  187. package/lib/typescript/module/src/types/http.d.ts.map +1 -1
  188. package/lib/typescript/module/src/types/websocket.d.ts +2 -2
  189. package/lib/typescript/module/src/types/websocket.d.ts.map +1 -1
  190. package/lib/typescript/module/src/ui/Xenon.d.ts +5 -2
  191. package/lib/typescript/module/src/ui/Xenon.d.ts.map +1 -1
  192. package/lib/typescript/module/src/ui/components/bubble/Bubble.d.ts +4 -5
  193. package/lib/typescript/module/src/ui/components/bubble/Bubble.d.ts.map +1 -1
  194. package/lib/typescript/module/src/ui/components/common/Divider.d.ts +4 -0
  195. package/lib/typescript/module/src/ui/components/common/Divider.d.ts.map +1 -0
  196. package/lib/typescript/module/src/ui/components/common/Icon.d.ts +8 -0
  197. package/lib/typescript/module/src/ui/components/common/Icon.d.ts.map +1 -0
  198. package/lib/typescript/module/src/ui/components/common/IndexedStack.d.ts +13 -0
  199. package/lib/typescript/module/src/ui/components/common/IndexedStack.d.ts.map +1 -0
  200. package/lib/typescript/module/src/ui/components/common/Touchable.d.ts +10 -0
  201. package/lib/typescript/module/src/ui/components/common/Touchable.d.ts.map +1 -0
  202. package/lib/typescript/module/src/ui/components/details/LogMessageDetails.d.ts +5 -6
  203. package/lib/typescript/module/src/ui/components/details/LogMessageDetails.d.ts.map +1 -1
  204. package/lib/typescript/module/src/ui/components/details/NetworkRequestDetails.d.ts +5 -6
  205. package/lib/typescript/module/src/ui/components/details/NetworkRequestDetails.d.ts.map +1 -1
  206. package/lib/typescript/module/src/ui/components/headers/ConsoleHeader.d.ts +9 -0
  207. package/lib/typescript/module/src/ui/components/headers/ConsoleHeader.d.ts.map +1 -0
  208. package/lib/typescript/module/src/ui/components/headers/DebuggerHeader.d.ts +9 -1
  209. package/lib/typescript/module/src/ui/components/headers/DebuggerHeader.d.ts.map +1 -1
  210. package/lib/typescript/module/src/ui/components/headers/Header.d.ts +3 -0
  211. package/lib/typescript/module/src/ui/components/headers/Header.d.ts.map +1 -0
  212. package/lib/typescript/module/src/ui/components/headers/HeaderComponents.d.ts +20 -0
  213. package/lib/typescript/module/src/ui/components/headers/HeaderComponents.d.ts.map +1 -0
  214. package/lib/typescript/module/src/ui/components/headers/NetworkHeader.d.ts +9 -0
  215. package/lib/typescript/module/src/ui/components/headers/NetworkHeader.d.ts.map +1 -0
  216. package/lib/typescript/module/src/ui/components/index.d.ts +0 -1
  217. package/lib/typescript/module/src/ui/components/index.d.ts.map +1 -1
  218. package/lib/typescript/module/src/ui/components/items/ConsolePanelItem.d.ts.map +1 -1
  219. package/lib/typescript/module/src/ui/components/items/DebuggerHeaderItem.d.ts.map +1 -1
  220. package/lib/typescript/module/src/ui/components/items/NetworkPanelItem.d.ts +3 -2
  221. package/lib/typescript/module/src/ui/components/items/NetworkPanelItem.d.ts.map +1 -1
  222. package/lib/typescript/module/src/ui/components/items/NetworkRequestDetailsItem.d.ts +4 -5
  223. package/lib/typescript/module/src/ui/components/items/NetworkRequestDetailsItem.d.ts.map +1 -1
  224. package/lib/typescript/module/src/ui/components/panels/ConsolePanel.d.ts +5 -1
  225. package/lib/typescript/module/src/ui/components/panels/ConsolePanel.d.ts.map +1 -1
  226. package/lib/typescript/module/src/ui/components/panels/NetworkPanel.d.ts +5 -1
  227. package/lib/typescript/module/src/ui/components/panels/NetworkPanel.d.ts.map +1 -1
  228. package/lib/typescript/module/src/ui/components/panels/Panel.d.ts +2 -0
  229. package/lib/typescript/module/src/ui/components/panels/Panel.d.ts.map +1 -0
  230. package/package.json +4 -4
  231. package/src/assets/icons/delete.png +0 -0
  232. package/src/core/refs.ts +29 -0
  233. package/src/core/utils.ts +45 -14
  234. package/src/hooks/useNetworkInterceptor.ts +20 -27
  235. package/src/interceptors/FetchInterceptor.ts +7 -20
  236. package/src/interceptors/WebSocketInterceptor.ts +2 -11
  237. package/src/interceptors/XHRInterceptor.ts +13 -8
  238. package/src/theme/colors.ts +10 -5
  239. package/src/types/common.ts +2 -3
  240. package/src/types/http.ts +5 -6
  241. package/src/types/websocket.ts +2 -1
  242. package/src/ui/Xenon.tsx +42 -42
  243. package/src/ui/components/bubble/Bubble.tsx +101 -97
  244. package/src/ui/components/common/Divider.tsx +13 -0
  245. package/src/ui/components/common/Icon.tsx +12 -0
  246. package/src/ui/components/common/IndexedStack.tsx +62 -0
  247. package/src/ui/components/common/Touchable.tsx +21 -0
  248. package/src/ui/components/details/LogMessageDetails.tsx +31 -16
  249. package/src/ui/components/details/NetworkRequestDetails.tsx +143 -124
  250. package/src/ui/components/headers/ConsoleHeader.tsx +25 -0
  251. package/src/ui/components/headers/DebuggerHeader.tsx +28 -191
  252. package/src/ui/components/headers/Header.tsx +22 -0
  253. package/src/ui/components/headers/HeaderComponents.tsx +100 -0
  254. package/src/ui/components/headers/NetworkHeader.tsx +85 -0
  255. package/src/ui/components/index.ts +0 -1
  256. package/src/ui/components/items/ConsolePanelItem.tsx +11 -6
  257. package/src/ui/components/items/DebuggerHeaderItem.tsx +8 -11
  258. package/src/ui/components/items/NetworkPanelItem.tsx +64 -15
  259. package/src/ui/components/items/NetworkRequestDetailsItem.tsx +26 -21
  260. package/src/ui/components/panels/ConsolePanel.tsx +23 -10
  261. package/src/ui/components/panels/NetworkPanel.tsx +28 -25
  262. package/src/ui/components/panels/Panel.tsx +17 -0
  263. package/lib/commonjs/ui/components/details/DetailsViewer.js +0 -32
  264. package/lib/commonjs/ui/components/details/DetailsViewer.js.map +0 -1
  265. package/lib/commonjs/ui/components/headers/NetworkPanelHeader.js +0 -81
  266. package/lib/commonjs/ui/components/headers/NetworkPanelHeader.js.map +0 -1
  267. package/lib/module/ui/components/details/DetailsViewer.js +0 -32
  268. package/lib/module/ui/components/details/DetailsViewer.js.map +0 -1
  269. package/lib/module/ui/components/headers/NetworkPanelHeader.js +0 -81
  270. package/lib/module/ui/components/headers/NetworkPanelHeader.js.map +0 -1
  271. package/lib/typescript/commonjs/src/ui/components/details/DetailsViewer.d.ts +0 -2
  272. package/lib/typescript/commonjs/src/ui/components/details/DetailsViewer.d.ts.map +0 -1
  273. package/lib/typescript/commonjs/src/ui/components/headers/NetworkPanelHeader.d.ts +0 -2
  274. package/lib/typescript/commonjs/src/ui/components/headers/NetworkPanelHeader.d.ts.map +0 -1
  275. package/lib/typescript/module/src/ui/components/details/DetailsViewer.d.ts +0 -2
  276. package/lib/typescript/module/src/ui/components/details/DetailsViewer.d.ts.map +0 -1
  277. package/lib/typescript/module/src/ui/components/headers/NetworkPanelHeader.d.ts +0 -2
  278. package/lib/typescript/module/src/ui/components/headers/NetworkPanelHeader.d.ts.map +0 -1
  279. package/src/ui/components/details/DetailsViewer.tsx +0 -19
  280. package/src/ui/components/headers/NetworkPanelHeader.tsx +0 -69
@@ -1,5 +1,5 @@
1
- import { useContext, useRef, type JSX, type ReactNode } from 'react';
2
- import { ScrollView, StyleSheet } from 'react-native';
1
+ import { forwardRef, useContext, useRef, type JSX } from 'react';
2
+ import { ScrollView, StyleSheet, type StyleProp, type ViewStyle } from 'react-native';
3
3
  import { MainContext } from '../../../contexts';
4
4
  import {
5
5
  beautify,
@@ -7,158 +7,175 @@ import {
7
7
  formatRequestMethod,
8
8
  formatRequestStatusCode,
9
9
  getNetworkUtils,
10
- keyValueToString,
11
- limitChar,
12
10
  } from '../../../core/utils';
13
11
  import colors from '../../../theme/colors';
14
12
  import { type DetailTab, type HttpRequest, type WebSocketRequest } from '../../../types';
15
13
  import NetworkRequestDetailsItem from '../items/NetworkRequestDetailsItem';
16
14
 
17
- interface NetworkRequestDetailsProps {
18
- item: HttpRequest | WebSocketRequest;
19
- }
20
-
21
- export default function NetworkRequestDetails({ item }: NetworkRequestDetailsProps) {
22
- const {
23
- debuggerState: { detailsData },
24
- } = useContext(MainContext)!;
25
-
26
- const beautified = useRef<boolean | null>(null);
27
- const shouldBeautifiedRefUpdate = beautified.current !== detailsData?.beautified;
28
-
29
- const {
30
- isHttp,
31
- requestUrl,
32
- overviewShown,
33
- headersShown,
34
- requestShown,
35
- responseShown,
36
- messagesShown,
37
- } = getNetworkUtils(item);
38
-
39
- const content = useRef<Record<Exclude<DetailTab, 'logMessage'>, JSX.Element | null>>({
40
- overview: null,
41
- headers: null,
42
- request: null,
43
- response: null,
44
- messages: null,
45
- });
46
-
47
- if (overviewShown && !content.current.overview) {
48
- content.current.overview = (
49
- <>
50
- <NetworkRequestDetailsItem label="Request Type" content={item.type} />
51
-
52
- <NetworkRequestDetailsItem label="Request URL" content={item.url} />
15
+ const NetworkRequestDetails = forwardRef<ScrollView, { style?: StyleProp<ViewStyle> }>(
16
+ ({ style }, ref) => {
17
+ const {
18
+ debuggerState: { detailsData },
19
+ } = useContext(MainContext)!;
20
+
21
+ const item = detailsData?.data as HttpRequest | WebSocketRequest | undefined;
22
+
23
+ const beautified = useRef<boolean | null>(null);
24
+ const shouldBeautifiedRefUpdate =
25
+ beautified.current !== detailsData?.beautified &&
26
+ typeof detailsData?.beautified === 'boolean';
27
+
28
+ const {
29
+ isHttp,
30
+ requestUrl,
31
+ overviewShown,
32
+ headersShown,
33
+ requestShown,
34
+ responseShown,
35
+ messagesShown,
36
+ } = getNetworkUtils(item);
37
+
38
+ const content = useRef<Record<Exclude<DetailTab, 'logMessage'>, JSX.Element | null>>({
39
+ overview: null,
40
+ headers: null,
41
+ request: null,
42
+ response: null,
43
+ messages: null,
44
+ });
53
45
 
54
- <NetworkRequestDetailsItem
55
- label="Request Method"
56
- content={formatRequestMethod(isHttp ? (item as HttpRequest).method : undefined)}
57
- />
46
+ if (!item) {
47
+ content.current.overview = null;
48
+ content.current.headers = null;
49
+ content.current.request = null;
50
+ content.current.response = null;
51
+ content.current.messages = null;
52
+ beautified.current = null;
53
+ }
58
54
 
59
- <NetworkRequestDetailsItem
60
- label="Duration"
61
- content={formatRequestDuration(item.duration)}
62
- />
55
+ if (overviewShown && !content.current.overview && item) {
56
+ content.current.overview = (
57
+ <>
58
+ <NetworkRequestDetailsItem label="Request Type" content={item.type} />
63
59
 
64
- <NetworkRequestDetailsItem
65
- label="Status Code"
66
- content={formatRequestStatusCode(item.status)}
67
- />
68
- </>
69
- );
70
- }
60
+ <NetworkRequestDetailsItem label="Request URL" content={item.url} />
71
61
 
72
- if (headersShown && !content.current.headers) {
73
- content.current.headers = (
74
- <>
75
- {!isHttp && (
76
62
  <NetworkRequestDetailsItem
77
- label="Headers"
78
- content={limitChar((item as WebSocketRequest).options?.headers)}
63
+ label="Request Method"
64
+ content={formatRequestMethod(isHttp ? (item as HttpRequest).method : undefined)}
79
65
  />
80
- )}
81
66
 
82
- {isHttp && (
83
67
  <NetworkRequestDetailsItem
84
- label="Request Headers"
85
- content={(item as HttpRequest).requestHeadersString}
68
+ label="Status Code"
69
+ content={formatRequestStatusCode(item.status)}
86
70
  />
87
- )}
88
71
 
89
- {isHttp && (
90
72
  <NetworkRequestDetailsItem
91
- label="Response Headers"
92
- content={(item as HttpRequest).responseHeaders}
73
+ label="Start Time"
74
+ content={new Date(item.startTime ?? 0).toUTCString()}
93
75
  />
94
- )}
95
- </>
96
- );
97
- }
98
76
 
99
- if (requestShown && shouldBeautifiedRefUpdate) {
100
- const queryStringParameters: ReactNode[] = [];
77
+ <NetworkRequestDetailsItem
78
+ label="End Time"
79
+ content={new Date(item.endTime ?? 0).toUTCString()}
80
+ />
81
+
82
+ <NetworkRequestDetailsItem
83
+ label="Duration"
84
+ content={formatRequestDuration(item.startTime, item.endTime)}
85
+ />
86
+ </>
87
+ );
88
+ }
89
+
90
+ if (headersShown && !content.current.headers && item) {
91
+ let headers: [string, string][] = [];
92
+ let requestHeaders: [string, string][] = [];
93
+ let responseHeaders: [string, string][] = [];
94
+
95
+ if (!isHttp) {
96
+ headers = Object.entries((item as WebSocketRequest).options?.headers ?? {});
97
+ }
98
+
99
+ if (isHttp) {
100
+ for (const [key, value] of ((item as HttpRequest).requestHeaders ?? new Map()).entries()) {
101
+ requestHeaders.push([key, value]);
102
+ }
103
+ for (const [key, value] of ((item as HttpRequest).responseHeaders ?? new Map()).entries()) {
104
+ responseHeaders.push([key, value]);
105
+ }
106
+ }
107
+
108
+ content.current.headers = (
109
+ <>
110
+ {!isHttp && !!headers.length && (
111
+ <NetworkRequestDetailsItem label="Headers" content={headers} />
112
+ )}
113
+
114
+ {isHttp && !!requestHeaders.length && (
115
+ <NetworkRequestDetailsItem label="Request Headers" content={requestHeaders} />
116
+ )}
117
+
118
+ {isHttp && !!responseHeaders.length && (
119
+ <NetworkRequestDetailsItem label="Response Headers" content={responseHeaders} />
120
+ )}
121
+ </>
122
+ );
123
+ }
124
+
125
+ if (requestShown && shouldBeautifiedRefUpdate && item && requestUrl.searchParams) {
126
+ let queryStringParameters: [string, string][] = [];
101
127
 
102
- requestUrl.searchParams.forEach((value, name) => {
103
- queryStringParameters.push(
128
+ requestUrl.searchParams.forEach((value, name) => {
129
+ queryStringParameters.push([name, value]);
130
+ });
131
+
132
+ const body = beautify((item as HttpRequest).body, detailsData?.beautified ?? false);
133
+
134
+ content.current.request = (
135
+ <>
136
+ {!!queryStringParameters.length && (
137
+ <NetworkRequestDetailsItem label="Query String" content={queryStringParameters} />
138
+ )}
139
+
140
+ {!!body && <NetworkRequestDetailsItem label="Body" content={body} />}
141
+ </>
142
+ );
143
+ }
144
+
145
+ if (responseShown && shouldBeautifiedRefUpdate && item) {
146
+ content.current.response = (
104
147
  <NetworkRequestDetailsItem
105
- key={keyValueToString(name, value, null)}
106
- label="Query String"
107
- content={keyValueToString(name, value, null)}
108
- />,
148
+ label="Response"
149
+ content={beautify((item as HttpRequest).response, detailsData?.beautified ?? false)}
150
+ />
109
151
  );
110
- });
152
+ }
111
153
 
112
- content.current.request = (
113
- <>
114
- {queryStringParameters}
154
+ if (messagesShown && !content.current.messages && item) {
155
+ content.current.messages = (
115
156
  <NetworkRequestDetailsItem
116
- label="Body"
117
- content={beautify((item as HttpRequest).body, detailsData?.beautified ?? false)}
157
+ label="Messages"
158
+ content={(item as WebSocketRequest).messages!}
118
159
  />
119
- </>
120
- );
121
- }
122
-
123
- if (responseShown && shouldBeautifiedRefUpdate) {
124
- content.current.response = (
125
- <NetworkRequestDetailsItem
126
- label="Response"
127
- content={beautify((item as HttpRequest).response, detailsData?.beautified ?? false)}
128
- />
129
- );
130
- }
131
-
132
- if (messagesShown && !content.current.messages) {
133
- content.current.messages = (
134
- <NetworkRequestDetailsItem
135
- label="Messages"
136
- content={`\n${(item as WebSocketRequest).messages}`}
137
- />
138
- );
139
- }
160
+ );
161
+ }
140
162
 
141
- if (shouldBeautifiedRefUpdate) {
142
- beautified.current = detailsData?.beautified ?? false;
143
- }
163
+ if (shouldBeautifiedRefUpdate) {
164
+ beautified.current = detailsData?.beautified ?? false;
165
+ }
144
166
 
145
- return (
146
- <ScrollView style={styles.container} contentContainerStyle={styles.contentContainer}>
147
- {content.current[detailsData!.selectedTab as keyof typeof content.current]}
148
- </ScrollView>
149
- );
150
- }
167
+ return (
168
+ <ScrollView ref={ref} style={[styles.container, style]}>
169
+ {content.current[detailsData?.selectedTab as keyof typeof content.current]}
170
+ </ScrollView>
171
+ );
172
+ },
173
+ );
151
174
 
152
175
  const styles = StyleSheet.create({
153
176
  container: {
154
177
  flex: 1,
155
- },
156
- contentContainer: {
157
- paddingHorizontal: 8,
158
- },
159
- divider: {
160
- height: 1,
161
- backgroundColor: colors.gray,
178
+ padding: 8,
162
179
  },
163
180
  text: {
164
181
  fontSize: 14,
@@ -176,3 +193,5 @@ const styles = StyleSheet.create({
176
193
  alignItems: 'center',
177
194
  },
178
195
  });
196
+
197
+ export default NetworkRequestDetails;
@@ -0,0 +1,25 @@
1
+ import { forwardRef } from 'react';
2
+ import type { PanelState } from '../../../core/refs';
3
+ import Divider from '../common/Divider';
4
+ import HeaderComponents from './HeaderComponents';
5
+ import type { ScrollView, StyleProp, ViewStyle } from 'react-native';
6
+
7
+ interface ConsoleHeaderProps {
8
+ selectedPanel: PanelState;
9
+ style?: StyleProp<ViewStyle>;
10
+ }
11
+
12
+ const ConsoleHeader = forwardRef<ScrollView, ConsoleHeaderProps>(
13
+ ({ selectedPanel, style }, ref) => {
14
+ return (
15
+ <HeaderComponents.Wrapper ref={ref} style={style}>
16
+ <HeaderComponents.Back selectedPanel={selectedPanel} />
17
+ <HeaderComponents.MainButtons />
18
+ <Divider type="vertical" />
19
+ <HeaderComponents.TabItem tab="logMessage" label="Console" />
20
+ </HeaderComponents.Wrapper>
21
+ );
22
+ },
23
+ );
24
+
25
+ export default ConsoleHeader;
@@ -1,157 +1,28 @@
1
- import { useCallback, useContext, useMemo, useRef } from 'react';
2
- import { ScrollView, Share, StyleSheet, View } from 'react-native';
1
+ import { forwardRef, useContext } from 'react';
2
+ import type { ScrollView, StyleProp, ViewStyle } from 'react-native';
3
3
  import { MainContext } from '../../../contexts';
4
- import { convertToCurl, getNetworkUtils } from '../../../core/utils';
5
- import colors from '../../../theme/colors';
4
+ import refs, { PanelState } from '../../../core/refs';
6
5
  import icons from '../../../theme/icons';
7
- import { DebuggerPanel, NetworkType, type DetailTab } from '../../../types';
6
+ import Divider from '../common/Divider';
8
7
  import DebuggerHeaderItem from '../items/DebuggerHeaderItem';
8
+ import HeaderComponents from './HeaderComponents';
9
9
 
10
- let isSharing = false;
11
-
12
- export default function DebuggerHeader() {
13
- const {
14
- debuggerState: { detailsData, selectedPanel },
15
- setDebuggerState,
16
- networkInterceptor,
17
- consoleInterceptor,
18
- } = useContext(MainContext)!;
19
-
20
- const lastSelectedPanel = useRef<DebuggerPanel>(selectedPanel ?? DebuggerPanel.Network);
21
-
22
- const backButton = useMemo(
23
- () => (
24
- <DebuggerHeaderItem
25
- content={icons.arrowLeft}
26
- onPress={() => {
27
- setDebuggerState(draft => {
28
- draft.selectedPanel = lastSelectedPanel.current;
29
- draft.detailsData = null;
30
- });
31
- }}
32
- />
33
- ),
34
- [setDebuggerState],
35
- );
36
-
37
- const renderTabItem = useCallback(
38
- (tab: DetailTab, label: string) => (
39
- <DebuggerHeaderItem
40
- isLabel
41
- isActive={detailsData?.selectedTab === tab}
42
- content={label}
43
- onPress={() => {
44
- setDebuggerState(draft => {
45
- draft.detailsData!.selectedTab = tab;
46
- });
47
- }}
48
- />
49
- ),
50
- [detailsData?.selectedTab, setDebuggerState],
51
- );
52
-
53
- const networkHeader = useMemo(() => {
54
- if (detailsData?.type !== DebuggerPanel.Network) return null;
55
-
56
- const { isHttp, overviewShown, headersShown, requestShown, responseShown, messagesShown } =
57
- getNetworkUtils(detailsData.data);
58
-
59
- return (
60
- <>
61
- {backButton}
62
-
63
- {isHttp && (
64
- <>
65
- <DebuggerHeaderItem
66
- content={icons.share}
67
- onPress={async () => {
68
- if (isSharing || detailsData.data.type === NetworkType.WS) return;
69
-
70
- try {
71
- isSharing = true;
72
- setDebuggerState(draft => {
73
- draft.visibility = 'bubble';
74
- });
75
-
76
- await Share.share({
77
- message: convertToCurl(
78
- detailsData.data.method,
79
- detailsData.data.url,
80
- detailsData.data.requestHeaders,
81
- detailsData.data.body,
82
- ),
83
- });
84
- } catch (error) {
85
- // Handle error
86
- } finally {
87
- isSharing = false;
88
- }
89
- }}
90
- />
91
-
92
- <DebuggerHeaderItem
93
- content={icons.beautify}
94
- isActive={detailsData.beautified}
95
- activeColor={colors.green}
96
- onPress={() => {
97
- setDebuggerState(draft => {
98
- draft.detailsData!.beautified = !draft.detailsData?.beautified;
99
- });
100
- }}
101
- />
102
- </>
103
- )}
104
-
105
- <View style={styles.divider} />
106
-
107
- {overviewShown && renderTabItem('overview', 'Overview')}
108
- {headersShown && renderTabItem('headers', 'Headers')}
109
- {requestShown && renderTabItem('request', 'Request')}
110
- {responseShown && renderTabItem('response', 'Response')}
111
- {messagesShown && renderTabItem('messages', 'Messages')}
112
- </>
113
- );
114
- }, [
115
- detailsData?.type,
116
- detailsData?.data,
117
- detailsData?.beautified,
118
- backButton,
119
- renderTabItem,
120
- setDebuggerState,
121
- ]);
122
-
123
- const consoleHeader = useMemo(() => {
124
- if (detailsData?.type !== DebuggerPanel.Console) return null;
125
-
126
- return (
127
- <>
128
- {backButton}
129
-
130
- <View style={styles.divider} />
10
+ interface DebuggerHeaderProps {
11
+ selectedPanel: PanelState;
12
+ setSelectedPanel: React.Dispatch<React.SetStateAction<PanelState>>;
13
+ style?: StyleProp<ViewStyle>;
14
+ }
131
15
 
132
- {renderTabItem('logMessage', 'Log Message')}
133
- </>
134
- );
135
- }, [detailsData?.type, backButton, renderTabItem]);
16
+ const DebuggerHeader = forwardRef<ScrollView, DebuggerHeaderProps>(
17
+ ({ selectedPanel, setSelectedPanel, style }, ref) => {
18
+ const { setDebuggerState, networkInterceptor, consoleInterceptor } = useContext(MainContext)!;
136
19
 
137
- const mainHeader = useMemo(() => {
138
- const onHide = () => {
139
- setDebuggerState(draft => {
140
- draft.visibility = 'bubble';
141
- });
142
- };
20
+ const switchTo = (panelState: PanelState) => {
21
+ refs.panel.current?.setCurrentIndex(panelState);
22
+ setSelectedPanel(panelState);
143
23
 
144
- const onMove = () => {
145
24
  setDebuggerState(draft => {
146
- draft.position = draft.position === 'bottom' ? 'top' : 'bottom';
147
- });
148
- };
149
-
150
- const switchTo = (debuggerPanel: DebuggerPanel) => {
151
- setDebuggerState(draft => {
152
- draft.selectedPanel = debuggerPanel;
153
25
  draft.detailsData = null;
154
- lastSelectedPanel.current = debuggerPanel;
155
26
  });
156
27
  };
157
28
 
@@ -168,18 +39,16 @@ export default function DebuggerHeader() {
168
39
  };
169
40
 
170
41
  return (
171
- <>
172
- <DebuggerHeaderItem onPress={onHide} content={icons.hide} />
173
-
174
- <DebuggerHeaderItem onPress={onMove} content={icons.move} />
42
+ <HeaderComponents.Wrapper ref={ref} style={style}>
43
+ <HeaderComponents.MainButtons />
175
44
 
176
- <View style={styles.divider} />
45
+ <Divider type="vertical" />
177
46
 
178
47
  <DebuggerHeaderItem
179
48
  isLabel
180
- isActive={selectedPanel === DebuggerPanel.Network}
49
+ isActive={selectedPanel === PanelState.Network}
181
50
  content="Network Panel"
182
- onPress={() => switchTo(DebuggerPanel.Network)}
51
+ onPress={() => switchTo(PanelState.Network)}
183
52
  />
184
53
 
185
54
  <DebuggerHeaderItem
@@ -193,13 +62,13 @@ export default function DebuggerHeader() {
193
62
  content={icons.delete}
194
63
  />
195
64
 
196
- <View style={styles.divider} />
65
+ <Divider type="vertical" />
197
66
 
198
67
  <DebuggerHeaderItem
199
68
  isLabel
200
- isActive={selectedPanel === DebuggerPanel.Console}
69
+ isActive={selectedPanel === PanelState.Console}
201
70
  content="Console Panel"
202
- onPress={() => switchTo(DebuggerPanel.Console)}
71
+ onPress={() => switchTo(PanelState.Console)}
203
72
  />
204
73
 
205
74
  <DebuggerHeaderItem
@@ -212,41 +81,9 @@ export default function DebuggerHeader() {
212
81
  onPress={consoleInterceptor.clearAllLogMessages}
213
82
  content={icons.delete}
214
83
  />
215
- </>
84
+ </HeaderComponents.Wrapper>
216
85
  );
217
- }, [selectedPanel, consoleInterceptor, networkInterceptor, setDebuggerState]);
218
-
219
- return (
220
- <ScrollView
221
- horizontal
222
- style={styles.container}
223
- contentContainerStyle={styles.contentContainer}
224
- showsHorizontalScrollIndicator={false}
225
- >
226
- {(() => {
227
- switch (detailsData?.type) {
228
- case DebuggerPanel.Network:
229
- return networkHeader;
230
- case DebuggerPanel.Console:
231
- return consoleHeader;
232
- default:
233
- return mainHeader;
234
- }
235
- })()}
236
- </ScrollView>
237
- );
238
- }
239
-
240
- const styles = StyleSheet.create({
241
- container: {
242
- flexGrow: 0,
243
- },
244
- contentContainer: {
245
- padding: 8,
246
- columnGap: 8,
247
86
  },
248
- divider: {
249
- width: 1,
250
- backgroundColor: colors.gray,
251
- },
252
- });
87
+ );
88
+
89
+ export default DebuggerHeader;
@@ -0,0 +1,22 @@
1
+ import { useState } from 'react';
2
+ import refs, { HeaderState, PanelState } from '../../../core/refs';
3
+ import IndexedStack from '../common/IndexedStack';
4
+ import ConsoleHeader from './ConsoleHeader';
5
+ import DebuggerHeader from './DebuggerHeader';
6
+ import NetworkHeader from './NetworkHeader';
7
+
8
+ const Header = () => {
9
+ const [selectedPanel, setSelectedPanel] = useState<PanelState>(
10
+ refs.panel.current?.getCurrentIndex() ?? PanelState.Network,
11
+ );
12
+
13
+ return (
14
+ <IndexedStack defaultIndex={HeaderState.Debugger} id="debugger-header" ref={refs.header}>
15
+ <DebuggerHeader selectedPanel={selectedPanel} setSelectedPanel={setSelectedPanel} />
16
+ <NetworkHeader selectedPanel={selectedPanel} />
17
+ <ConsoleHeader selectedPanel={selectedPanel} />
18
+ </IndexedStack>
19
+ );
20
+ };
21
+
22
+ export default Header;