react-native-xenon 0.5.1 → 0.6.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +108 -11
- package/lib/commonjs/ui/Xenon.js +19 -6
- package/lib/commonjs/ui/Xenon.js.map +1 -1
- package/lib/commonjs/ui/components/headers/DebuggerHeader.js +16 -5
- package/lib/commonjs/ui/components/headers/DebuggerHeader.js.map +1 -1
- package/lib/module/ui/Xenon.js +19 -6
- package/lib/module/ui/Xenon.js.map +1 -1
- package/lib/module/ui/components/headers/DebuggerHeader.js +16 -5
- package/lib/module/ui/components/headers/DebuggerHeader.js.map +1 -1
- package/lib/typescript/commonjs/src/types/common.d.ts +0 -1
- package/lib/typescript/commonjs/src/types/common.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/ui/Xenon.d.ts +4 -1
- package/lib/typescript/commonjs/src/ui/Xenon.d.ts.map +1 -1
- package/lib/typescript/commonjs/src/ui/components/headers/DebuggerHeader.d.ts.map +1 -1
- package/lib/typescript/module/src/types/common.d.ts +0 -1
- package/lib/typescript/module/src/types/common.d.ts.map +1 -1
- package/lib/typescript/module/src/ui/Xenon.d.ts +4 -1
- package/lib/typescript/module/src/ui/Xenon.d.ts.map +1 -1
- package/lib/typescript/module/src/ui/components/headers/DebuggerHeader.d.ts.map +1 -1
- package/package.json +5 -3
- package/src/types/common.ts +0 -2
- package/src/ui/Xenon.tsx +103 -90
- package/src/ui/components/headers/DebuggerHeader.tsx +24 -10
package/README.md
CHANGED
@@ -1,30 +1,80 @@
|
|
1
|
-
|
1
|
+
<div align="center">
|
2
2
|
|
3
|
-
|
3
|
+
# React Native Xenon
|
4
|
+
|
5
|
+
### A powerful in-app debugging tool for React Native.
|
6
|
+
|
7
|
+
</div>
|
8
|
+
|
9
|
+
<div align="center">
|
10
|
+
|
11
|
+
[![GitHub Actions Workflow Status][github-actions-status-badge]][github-actions-status-link]
|
12
|
+
[![NPM Version][npm-version-badge]][npm-version-link]
|
13
|
+
[![React Native][react-native-badge]][react-native-link]
|
14
|
+
[![Runs With Expo][expo-badge]][expo-link]
|
15
|
+
[![Types Included][typescript-badge]][typescript-link]
|
16
|
+
<br />
|
17
|
+
[![GitHub License][github-license-badge]][github-license-link]
|
18
|
+
[![NPM Downloads Per Month][npm-downloads-per-month-badge]][npm-downloads-per-month-link]
|
19
|
+
[![Buy Me A Coffee][buy-me-a-coffee-badge]][buy-me-a-coffee-link]
|
20
|
+
|
21
|
+
</div>
|
22
|
+
|
23
|
+
## Features
|
24
|
+
|
25
|
+
- :iphone: **In-app debugging** – Debug apps in any environment without the need for debug builds.
|
26
|
+
- :globe_with_meridians: **Network Inspection** – Monitor HTTP(S) requests (XHR, Fetch) and WebSocket connections.
|
27
|
+
- :page_with_curl: **Log Capture** – Intercept console messages like log, info, warn, and error for enhanced debugging.
|
28
|
+
- :zap: **Draggable Bubble UI** – Seamlessly debug without disrupting your workflow.
|
29
|
+
- :sparkles: **React Native & Expo Support** – Built for compatibility across both platforms.
|
4
30
|
|
5
31
|
## Installation
|
6
32
|
|
7
|
-
Install
|
33
|
+
Install Xenon and its dependencies.
|
34
|
+
|
35
|
+
### React Native
|
8
36
|
|
9
37
|
```sh
|
10
|
-
yarn add react-native-xenon
|
38
|
+
yarn add react-native-xenon
|
39
|
+
yarn add react-native-safe-area-context react-native-screens
|
40
|
+
```
|
41
|
+
|
42
|
+
#### Android
|
43
|
+
|
44
|
+
`react-native-screens` package requires one additional configuration step to properly work on Android devices. Edit `MainActivity.kt` file which is located under `android/app/src/main/java/<your package name>/`.
|
45
|
+
|
46
|
+
Add the highlighted code to the body of `MainActivity` class:
|
47
|
+
|
48
|
+
```diff
|
49
|
+
+ import android.os.Bundle
|
50
|
+
// ...
|
51
|
+
|
52
|
+
class MainActivity: ReactActivity() {
|
53
|
+
// ...
|
54
|
+
+ override fun onCreate(savedInstanceState: Bundle?) {
|
55
|
+
+ super.onCreate(null)
|
56
|
+
+ }
|
57
|
+
// ...
|
58
|
+
}
|
11
59
|
```
|
12
60
|
|
13
|
-
|
61
|
+
This change is required to avoid crashes related to View state being not persisted consistently across Activity restarts.
|
62
|
+
|
63
|
+
#### iOS
|
64
|
+
|
65
|
+
Don't forget to install pods when you are developing for iOS.
|
14
66
|
|
15
67
|
```sh
|
16
|
-
|
68
|
+
cd ios && pod install; cd ..
|
17
69
|
```
|
18
70
|
|
19
71
|
### Expo
|
20
72
|
|
21
73
|
```sh
|
22
|
-
npx expo install react-native-xenon
|
74
|
+
npx expo install react-native-xenon
|
75
|
+
npx expo install react-native-safe-area-context react-native-screens
|
23
76
|
```
|
24
77
|
|
25
|
-
> [!NOTE]
|
26
|
-
> You can skip installing `react-native-safe-area-context` if you have created a project using [the default template](https://docs.expo.dev/get-started/create-a-project). This library is installed as peer dependency for Expo Router library.
|
27
|
-
|
28
78
|
## Usage
|
29
79
|
|
30
80
|
Add `Xenon.Component` in your app root component.
|
@@ -54,6 +104,16 @@ And hide it by calling the `hide` method.
|
|
54
104
|
Xenon.hide();
|
55
105
|
```
|
56
106
|
|
107
|
+
> [!WARNING]
|
108
|
+
> `<Xenon.Component />` is enabled by default in all environments, **including production**. This could expose sensitive debugging tools to end users, creating potential security risks.
|
109
|
+
> To avoid this, make sure to conditionally render the component only in non-production environments. For example:
|
110
|
+
>
|
111
|
+
> ```tsx
|
112
|
+
> {isProduction ? null : <Xenon.Component />}
|
113
|
+
> ```
|
114
|
+
>
|
115
|
+
> Additionally, consider other approaches such as environment-based feature flags or access control to ensure only authorized users (e.g., developers) can interact with it.
|
116
|
+
|
57
117
|
## Props
|
58
118
|
|
59
119
|
| **Prop** | **Type** | **Description** |
|
@@ -65,12 +125,30 @@ Xenon.hide();
|
|
65
125
|
|
66
126
|
## Methods
|
67
127
|
|
68
|
-
| **Method** | **Return
|
128
|
+
| **Method** | **Return Type** | **Description** |
|
69
129
|
| ------------- | --------------- | ------------------------------------------------------------------------------------------- |
|
70
130
|
| `isVisible()` | `boolean` | Checks whether the debugger is currently visible. |
|
71
131
|
| `show()` | `void` | Makes the debugger visible. If it is already visible, this method has no additional effect. |
|
72
132
|
| `hide() ` | `void` | Hides the debugger. If it is already hidden, this method has no additional effect. |
|
73
133
|
|
134
|
+
## Examples
|
135
|
+
|
136
|
+
To try out Xenon, you can run the example project:
|
137
|
+
|
138
|
+
```sh
|
139
|
+
# Clone the repo
|
140
|
+
git clone https://github.com/purrseus/react-native-xenon.git
|
141
|
+
cd react-native-xenon
|
142
|
+
|
143
|
+
# Install dependencies
|
144
|
+
yarn install
|
145
|
+
|
146
|
+
# Start the Expo development server
|
147
|
+
yarn example start
|
148
|
+
```
|
149
|
+
|
150
|
+
See the [example](./example) directory for more information.
|
151
|
+
|
74
152
|
## Contributing
|
75
153
|
|
76
154
|
See the [contributing guide](CONTRIBUTING.md) to learn how to contribute to the repository and the development workflow.
|
@@ -78,3 +156,22 @@ See the [contributing guide](CONTRIBUTING.md) to learn how to contribute to the
|
|
78
156
|
## License
|
79
157
|
|
80
158
|
This project is [MIT](./LICENSE) licensed.
|
159
|
+
|
160
|
+
<!-- badges -->
|
161
|
+
|
162
|
+
[github-actions-status-badge]: https://img.shields.io/github/actions/workflow/status/purrseus/react-native-xenon/ci.yml?style=for-the-badge&logo=github&label=%20&labelColor=1B1B1D
|
163
|
+
[github-actions-status-link]: ./.github/workflows/ci.yml
|
164
|
+
[npm-version-badge]: https://img.shields.io/npm/v/react-native-xenon?style=for-the-badge&color=CC3F3E&labelColor=1B1B1D&logo=npm&label=%20&logoColor=CC3F3E
|
165
|
+
[npm-version-link]: https://www.npmjs.com/package/react-native-xenon
|
166
|
+
[react-native-badge]: https://img.shields.io/badge/%20React%20Native-67DAFB?style=for-the-badge&logo=react&logoColor=67DAFB&labelColor=1B1B1D
|
167
|
+
[react-native-link]: https://reactnative.dev
|
168
|
+
[expo-badge]: https://img.shields.io/badge/Expo-FFFFFF?style=for-the-badge&logo=expo&labelColor=1B1B1D&logoColor=FFFFFF
|
169
|
+
[expo-link]: https://expo.dev
|
170
|
+
[typescript-badge]: https://img.shields.io/badge/TypeScript-3077C6?style=for-the-badge&logo=typescript&logoColor=3077C6&labelColor=1B1B1D
|
171
|
+
[typescript-link]: https://www.typescriptlang.org
|
172
|
+
[github-license-badge]: https://img.shields.io/badge/License-MIT-44CD11?style=for-the-badge&labelColor=1B1B1D
|
173
|
+
[github-license-link]: ./LICENSE
|
174
|
+
[npm-downloads-per-month-badge]: https://img.shields.io/npm/dm/react-native-xenon?style=for-the-badge&labelColor=1B1B1D
|
175
|
+
[npm-downloads-per-month-link]: https://www.npmjs.com/package/react-native-xenon
|
176
|
+
[buy-me-a-coffee-badge]: https://img.shields.io/badge/%20-Buy%20me%20a%20coffee-FEDD03?style=for-the-badge&logo=buymeacoffee&labelColor=1B1B1D
|
177
|
+
[buy-me-a-coffee-link]: https://www.buymeacoffee.com/thiendo261
|
package/lib/commonjs/ui/Xenon.js
CHANGED
@@ -15,6 +15,7 @@ var _hooks = require("../hooks");
|
|
15
15
|
var _colors = _interopRequireDefault(require("../theme/colors"));
|
16
16
|
var _types = require("../types");
|
17
17
|
var _components = require("./components");
|
18
|
+
var _reactNativeScreens = require("react-native-screens");
|
18
19
|
var _jsxRuntime = require("react/jsx-runtime");
|
19
20
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
20
21
|
let Xenon;
|
@@ -34,7 +35,10 @@ let Xenon;
|
|
34
35
|
flex: 1
|
35
36
|
}
|
36
37
|
});
|
37
|
-
const
|
38
|
+
const isVisible = _Xenon.isVisible = () => ref.current?.isVisible() ?? false;
|
39
|
+
const show = _Xenon.show = () => ref.current?.show();
|
40
|
+
const hide = _Xenon.hide = () => ref.current?.hide();
|
41
|
+
const Debugger = /*#__PURE__*/(0, _react.memo)(({
|
38
42
|
autoInspectNetworkEnabled = true,
|
39
43
|
autoInspectConsoleEnabled = true,
|
40
44
|
bubbleSize = 40,
|
@@ -105,11 +109,20 @@ let Xenon;
|
|
105
109
|
})
|
106
110
|
})]
|
107
111
|
});
|
108
|
-
};
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
112
|
+
});
|
113
|
+
function Component(props) {
|
114
|
+
if (_reactNative.Platform.OS === 'ios') {
|
115
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeScreens.FullWindowOverlay, {
|
116
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Debugger, {
|
117
|
+
...props
|
118
|
+
})
|
119
|
+
});
|
120
|
+
}
|
121
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(Debugger, {
|
122
|
+
...props
|
123
|
+
});
|
124
|
+
}
|
125
|
+
_Xenon.Component = Component;
|
113
126
|
Component.displayName = 'Xenon';
|
114
127
|
})(Xenon || (Xenon = {}));
|
115
128
|
var _default = exports.default = Xenon;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_immer","require","_react","_reactNative","_reactNativeSafeAreaContext","_useImmer","_MainContext","_interopRequireDefault","_utils","_hooks","_colors","_types","_components","_jsxRuntime","e","__esModule","default","Xenon","_Xenon","enableMapSet","ref","createRef","styles","StyleSheet","create","container","flex","absoluteFillObject","top","undefined","bottom","zIndex","backgroundColor","colors","lightGray","safeArea","Debugger","autoInspectNetworkEnabled","autoInspectConsoleEnabled","bubbleSize","idleBubbleOpacity","width","height","useWindowDimensions","pan","useRef","Animated","ValueXY","x","y","getVerticalSafeMargin","debuggerState","setDebuggerState","useImmer","visibility","position","selectedPanel","DebuggerPanel","Network","detailsData","detailsShown","useMemo","containerStyle","Math","min","networkInterceptor","useNetworkInterceptor","autoEnabled","consoleInterceptor","useConsoleInterceptor","useImperativeHandle","changeVisibility","condition","value","draft","
|
1
|
+
{"version":3,"names":["_immer","require","_react","_reactNative","_reactNativeSafeAreaContext","_useImmer","_MainContext","_interopRequireDefault","_utils","_hooks","_colors","_types","_components","_reactNativeScreens","_jsxRuntime","e","__esModule","default","Xenon","_Xenon","enableMapSet","ref","createRef","styles","StyleSheet","create","container","flex","absoluteFillObject","top","undefined","bottom","zIndex","backgroundColor","colors","lightGray","safeArea","isVisible","current","show","hide","Debugger","memo","autoInspectNetworkEnabled","autoInspectConsoleEnabled","bubbleSize","idleBubbleOpacity","width","height","useWindowDimensions","pan","useRef","Animated","ValueXY","x","y","getVerticalSafeMargin","debuggerState","setDebuggerState","useImmer","visibility","position","selectedPanel","DebuggerPanel","Network","detailsData","detailsShown","useMemo","containerStyle","Math","min","networkInterceptor","useNetworkInterceptor","autoEnabled","consoleInterceptor","useConsoleInterceptor","useImperativeHandle","changeVisibility","condition","value","draft","jsxs","Provider","children","jsx","Bubble","screenWidth","screenHeight","SafeAreaProvider","style","SafeAreaView","DebuggerHeader","NetworkPanel","Console","ConsolePanel","DetailsViewer","Component","props","Platform","OS","FullWindowOverlay","displayName","_default","exports"],"sourceRoot":"../../../src","sources":["ui/Xenon.tsx"],"mappings":"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","ignoreList":[]}
|
@@ -14,6 +14,7 @@ var _types = require("../../../types");
|
|
14
14
|
var _DebuggerHeaderItem = _interopRequireDefault(require("../items/DebuggerHeaderItem"));
|
15
15
|
var _jsxRuntime = require("react/jsx-runtime");
|
16
16
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
17
|
+
let isSharing = false;
|
17
18
|
function DebuggerHeader() {
|
18
19
|
const {
|
19
20
|
debuggerState: {
|
@@ -58,11 +59,21 @@ function DebuggerHeader() {
|
|
58
59
|
children: [backButton, isHttp && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
59
60
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_DebuggerHeaderItem.default, {
|
60
61
|
content: _icons.default.share,
|
61
|
-
onPress: () => {
|
62
|
-
if (detailsData.data.type === _types.NetworkType.WS) return;
|
63
|
-
|
64
|
-
|
65
|
-
|
62
|
+
onPress: async () => {
|
63
|
+
if (isSharing || detailsData.data.type === _types.NetworkType.WS) return;
|
64
|
+
try {
|
65
|
+
isSharing = true;
|
66
|
+
setDebuggerState(draft => {
|
67
|
+
draft.visibility = 'bubble';
|
68
|
+
});
|
69
|
+
await _reactNative.Share.share({
|
70
|
+
message: (0, _utils.convertToCurl)(detailsData.data.method, detailsData.data.url, detailsData.data.requestHeaders, detailsData.data.body)
|
71
|
+
});
|
72
|
+
} catch (error) {
|
73
|
+
// Handle error
|
74
|
+
} finally {
|
75
|
+
isSharing = false;
|
76
|
+
}
|
66
77
|
}
|
67
78
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_DebuggerHeaderItem.default, {
|
68
79
|
content: _icons.default.beautify,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_react","require","_reactNative","_contexts","_utils","_colors","_interopRequireDefault","_icons","_types","_DebuggerHeaderItem","_jsxRuntime","e","__esModule","default","DebuggerHeader","debuggerState","detailsData","selectedPanel","setDebuggerState","networkInterceptor","consoleInterceptor","useContext","MainContext","lastSelectedPanel","useRef","DebuggerPanel","Network","backButton","useMemo","jsx","content","icons","arrowLeft","onPress","draft","current","renderTabItem","useCallback","tab","label","isLabel","isActive","selectedTab","networkHeader","type","isHttp","overviewShown","headersShown","requestShown","responseShown","messagesShown","getNetworkUtils","data","jsxs","Fragment","children","share","NetworkType","WS","Share","message","convertToCurl","method","url","requestHeaders","body","beautify","beautified","activeColor","colors","green","View","style","styles","divider","consoleHeader","Console","mainHeader","onHide","
|
1
|
+
{"version":3,"names":["_react","require","_reactNative","_contexts","_utils","_colors","_interopRequireDefault","_icons","_types","_DebuggerHeaderItem","_jsxRuntime","e","__esModule","default","isSharing","DebuggerHeader","debuggerState","detailsData","selectedPanel","setDebuggerState","networkInterceptor","consoleInterceptor","useContext","MainContext","lastSelectedPanel","useRef","DebuggerPanel","Network","backButton","useMemo","jsx","content","icons","arrowLeft","onPress","draft","current","renderTabItem","useCallback","tab","label","isLabel","isActive","selectedTab","networkHeader","type","isHttp","overviewShown","headersShown","requestShown","responseShown","messagesShown","getNetworkUtils","data","jsxs","Fragment","children","share","NetworkType","WS","visibility","Share","message","convertToCurl","method","url","requestHeaders","body","error","beautify","beautified","activeColor","colors","green","View","style","styles","divider","consoleHeader","Console","mainHeader","onHide","onMove","position","switchTo","debuggerPanel","toggleNetworkInterception","isInterceptorEnabled","disableInterception","enableInterception","toggleConsoleInterception","hide","move","record","clearAllNetworkRequests","delete","clearAllLogMessages","ScrollView","horizontal","container","contentContainerStyle","contentContainer","showsHorizontalScrollIndicator","StyleSheet","create","flexGrow","padding","columnGap","width","backgroundColor","gray"],"sourceRoot":"../../../../../src","sources":["ui/components/headers/DebuggerHeader.tsx"],"mappings":"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","ignoreList":[]}
|
package/lib/module/ui/Xenon.js
CHANGED
@@ -15,6 +15,7 @@ var _hooks = require("../hooks");
|
|
15
15
|
var _colors = _interopRequireDefault(require("../theme/colors"));
|
16
16
|
var _types = require("../types");
|
17
17
|
var _components = require("./components");
|
18
|
+
var _reactNativeScreens = require("react-native-screens");
|
18
19
|
var _jsxRuntime = require("react/jsx-runtime");
|
19
20
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
20
21
|
let Xenon;
|
@@ -34,7 +35,10 @@ let Xenon;
|
|
34
35
|
flex: 1
|
35
36
|
}
|
36
37
|
});
|
37
|
-
const
|
38
|
+
const isVisible = _Xenon.isVisible = () => ref.current?.isVisible() ?? false;
|
39
|
+
const show = _Xenon.show = () => ref.current?.show();
|
40
|
+
const hide = _Xenon.hide = () => ref.current?.hide();
|
41
|
+
const Debugger = /*#__PURE__*/(0, _react.memo)(({
|
38
42
|
autoInspectNetworkEnabled = true,
|
39
43
|
autoInspectConsoleEnabled = true,
|
40
44
|
bubbleSize = 40,
|
@@ -105,11 +109,20 @@ let Xenon;
|
|
105
109
|
})
|
106
110
|
})]
|
107
111
|
});
|
108
|
-
};
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
112
|
+
});
|
113
|
+
function Component(props) {
|
114
|
+
if (_reactNative.Platform.OS === 'ios') {
|
115
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNativeScreens.FullWindowOverlay, {
|
116
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Debugger, {
|
117
|
+
...props
|
118
|
+
})
|
119
|
+
});
|
120
|
+
}
|
121
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(Debugger, {
|
122
|
+
...props
|
123
|
+
});
|
124
|
+
}
|
125
|
+
_Xenon.Component = Component;
|
113
126
|
Component.displayName = 'Xenon';
|
114
127
|
})(Xenon || (Xenon = {}));
|
115
128
|
var _default = exports.default = Xenon;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_immer","require","_react","_reactNative","_reactNativeSafeAreaContext","_useImmer","_MainContext","_interopRequireDefault","_utils","_hooks","_colors","_types","_components","_jsxRuntime","e","__esModule","default","Xenon","_Xenon","enableMapSet","ref","createRef","styles","StyleSheet","create","container","flex","absoluteFillObject","top","undefined","bottom","zIndex","backgroundColor","colors","lightGray","safeArea","Debugger","autoInspectNetworkEnabled","autoInspectConsoleEnabled","bubbleSize","idleBubbleOpacity","width","height","useWindowDimensions","pan","useRef","Animated","ValueXY","x","y","getVerticalSafeMargin","debuggerState","setDebuggerState","useImmer","visibility","position","selectedPanel","DebuggerPanel","Network","detailsData","detailsShown","useMemo","containerStyle","Math","min","networkInterceptor","useNetworkInterceptor","autoEnabled","consoleInterceptor","useConsoleInterceptor","useImperativeHandle","changeVisibility","condition","value","draft","
|
1
|
+
{"version":3,"names":["_immer","require","_react","_reactNative","_reactNativeSafeAreaContext","_useImmer","_MainContext","_interopRequireDefault","_utils","_hooks","_colors","_types","_components","_reactNativeScreens","_jsxRuntime","e","__esModule","default","Xenon","_Xenon","enableMapSet","ref","createRef","styles","StyleSheet","create","container","flex","absoluteFillObject","top","undefined","bottom","zIndex","backgroundColor","colors","lightGray","safeArea","isVisible","current","show","hide","Debugger","memo","autoInspectNetworkEnabled","autoInspectConsoleEnabled","bubbleSize","idleBubbleOpacity","width","height","useWindowDimensions","pan","useRef","Animated","ValueXY","x","y","getVerticalSafeMargin","debuggerState","setDebuggerState","useImmer","visibility","position","selectedPanel","DebuggerPanel","Network","detailsData","detailsShown","useMemo","containerStyle","Math","min","networkInterceptor","useNetworkInterceptor","autoEnabled","consoleInterceptor","useConsoleInterceptor","useImperativeHandle","changeVisibility","condition","value","draft","jsxs","Provider","children","jsx","Bubble","screenWidth","screenHeight","SafeAreaProvider","style","SafeAreaView","DebuggerHeader","NetworkPanel","Console","ConsolePanel","DetailsViewer","Component","props","Platform","OS","FullWindowOverlay","displayName","_default","exports"],"sourceRoot":"../../../src","sources":["ui/Xenon.tsx"],"mappings":"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","ignoreList":[]}
|
@@ -14,6 +14,7 @@ var _types = require("../../../types");
|
|
14
14
|
var _DebuggerHeaderItem = _interopRequireDefault(require("../items/DebuggerHeaderItem"));
|
15
15
|
var _jsxRuntime = require("react/jsx-runtime");
|
16
16
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
17
|
+
let isSharing = false;
|
17
18
|
function DebuggerHeader() {
|
18
19
|
const {
|
19
20
|
debuggerState: {
|
@@ -58,11 +59,21 @@ function DebuggerHeader() {
|
|
58
59
|
children: [backButton, isHttp && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
|
59
60
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_DebuggerHeaderItem.default, {
|
60
61
|
content: _icons.default.share,
|
61
|
-
onPress: () => {
|
62
|
-
if (detailsData.data.type === _types.NetworkType.WS) return;
|
63
|
-
|
64
|
-
|
65
|
-
|
62
|
+
onPress: async () => {
|
63
|
+
if (isSharing || detailsData.data.type === _types.NetworkType.WS) return;
|
64
|
+
try {
|
65
|
+
isSharing = true;
|
66
|
+
setDebuggerState(draft => {
|
67
|
+
draft.visibility = 'bubble';
|
68
|
+
});
|
69
|
+
await _reactNative.Share.share({
|
70
|
+
message: (0, _utils.convertToCurl)(detailsData.data.method, detailsData.data.url, detailsData.data.requestHeaders, detailsData.data.body)
|
71
|
+
});
|
72
|
+
} catch (error) {
|
73
|
+
// Handle error
|
74
|
+
} finally {
|
75
|
+
isSharing = false;
|
76
|
+
}
|
66
77
|
}
|
67
78
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_DebuggerHeaderItem.default, {
|
68
79
|
content: _icons.default.beautify,
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"names":["_react","require","_reactNative","_contexts","_utils","_colors","_interopRequireDefault","_icons","_types","_DebuggerHeaderItem","_jsxRuntime","e","__esModule","default","DebuggerHeader","debuggerState","detailsData","selectedPanel","setDebuggerState","networkInterceptor","consoleInterceptor","useContext","MainContext","lastSelectedPanel","useRef","DebuggerPanel","Network","backButton","useMemo","jsx","content","icons","arrowLeft","onPress","draft","current","renderTabItem","useCallback","tab","label","isLabel","isActive","selectedTab","networkHeader","type","isHttp","overviewShown","headersShown","requestShown","responseShown","messagesShown","getNetworkUtils","data","jsxs","Fragment","children","share","NetworkType","WS","Share","message","convertToCurl","method","url","requestHeaders","body","beautify","beautified","activeColor","colors","green","View","style","styles","divider","consoleHeader","Console","mainHeader","onHide","
|
1
|
+
{"version":3,"names":["_react","require","_reactNative","_contexts","_utils","_colors","_interopRequireDefault","_icons","_types","_DebuggerHeaderItem","_jsxRuntime","e","__esModule","default","isSharing","DebuggerHeader","debuggerState","detailsData","selectedPanel","setDebuggerState","networkInterceptor","consoleInterceptor","useContext","MainContext","lastSelectedPanel","useRef","DebuggerPanel","Network","backButton","useMemo","jsx","content","icons","arrowLeft","onPress","draft","current","renderTabItem","useCallback","tab","label","isLabel","isActive","selectedTab","networkHeader","type","isHttp","overviewShown","headersShown","requestShown","responseShown","messagesShown","getNetworkUtils","data","jsxs","Fragment","children","share","NetworkType","WS","visibility","Share","message","convertToCurl","method","url","requestHeaders","body","error","beautify","beautified","activeColor","colors","green","View","style","styles","divider","consoleHeader","Console","mainHeader","onHide","onMove","position","switchTo","debuggerPanel","toggleNetworkInterception","isInterceptorEnabled","disableInterception","enableInterception","toggleConsoleInterception","hide","move","record","clearAllNetworkRequests","delete","clearAllLogMessages","ScrollView","horizontal","container","contentContainerStyle","contentContainer","showsHorizontalScrollIndicator","StyleSheet","create","flexGrow","padding","columnGap","width","backgroundColor","gray"],"sourceRoot":"../../../../../src","sources":["ui/components/headers/DebuggerHeader.tsx"],"mappings":"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","ignoreList":[]}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../../src/types/common.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,GAAG,CAAC;AAEnE,oBAAY,WAAW;IACrB,GAAG,QAAQ;IACX,KAAK,UAAU;IACf,EAAE,OAAO;CACV;AAED,oBAAY,aAAa;IACvB,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAED,MAAM,MAAM,
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../../src/types/common.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,GAAG,CAAC;AAEnE,oBAAY,WAAW;IACrB,GAAG,QAAQ;IACX,KAAK,UAAU;IACf,EAAE,OAAO;CACV;AAED,oBAAY,aAAa;IACvB,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAED,MAAM,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,CAAC;AAEpC,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,YAAY,CAAC;AAEpG,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC1C,QAAQ,EAAE,KAAK,GAAG,QAAQ,CAAC;IAC3B,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;IACpC,WAAW,EACP;QACE,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC;QAC5B,IAAI,EAAE,WAAW,GAAG,gBAAgB,CAAC;QACrC,WAAW,EAAE,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QAC9C,UAAU,EAAE,OAAO,CAAC;KACrB,GACD;QACE,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC;QAC5B,IAAI,EAAE,UAAU,CAAC;QACjB,WAAW,EAAE,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QAC9C,UAAU,EAAE,OAAO,CAAC;KACrB,GACD,IAAI,CAAC;CACV"}
|
@@ -8,7 +8,10 @@ declare namespace Xenon {
|
|
8
8
|
export const isVisible: () => boolean;
|
9
9
|
export const show: () => void;
|
10
10
|
export const hide: () => void;
|
11
|
-
export
|
11
|
+
export function Component(props: Props): import("react/jsx-runtime").JSX.Element;
|
12
|
+
export namespace Component {
|
13
|
+
var displayName: string;
|
14
|
+
}
|
12
15
|
export {};
|
13
16
|
}
|
14
17
|
export default Xenon;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Xenon.d.ts","sourceRoot":"","sources":["../../../../../src/ui/Xenon.tsx"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"Xenon.d.ts","sourceRoot":"","sources":["../../../../../src/ui/Xenon.tsx"],"names":[],"mappings":"AAaA,kBAAU,KAAK,CAAC;IAOd,UAAU,KAAK;QACb,yBAAyB,CAAC,EAAE,OAAO,CAAC;QACpC,yBAAyB,CAAC,EAAE,OAAO,CAAC;QACpC,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC5B;IAmBD,MAAM,CAAC,MAAM,SAAS,eAA0C,CAAC;IACjE,MAAM,CAAC,MAAM,IAAI,QAAO,IAA2B,CAAC;IACpD,MAAM,CAAC,MAAM,IAAI,QAAO,IAA2B,CAAC;IA2FpD,MAAM,UAAU,SAAS,CAAC,KAAK,EAAE,KAAK,2CAUrC;IAVD,MAAM,WAAU,SAAS;;;;CAa1B;AAED,eAAe,KAAK,CAAC"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"DebuggerHeader.d.ts","sourceRoot":"","sources":["../../../../../../../src/ui/components/headers/DebuggerHeader.tsx"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"DebuggerHeader.d.ts","sourceRoot":"","sources":["../../../../../../../src/ui/components/headers/DebuggerHeader.tsx"],"names":[],"mappings":"AAWA,MAAM,CAAC,OAAO,UAAU,cAAc,4CAkOrC"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../../src/types/common.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,GAAG,CAAC;AAEnE,oBAAY,WAAW;IACrB,GAAG,QAAQ;IACX,KAAK,UAAU;IACf,EAAE,OAAO;CACV;AAED,oBAAY,aAAa;IACvB,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAED,MAAM,MAAM,
|
1
|
+
{"version":3,"file":"common.d.ts","sourceRoot":"","sources":["../../../../../src/types/common.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,GAAG,CAAC;AAEnE,oBAAY,WAAW;IACrB,GAAG,QAAQ;IACX,KAAK,UAAU;IACf,EAAE,OAAO;CACV;AAED,oBAAY,aAAa;IACvB,OAAO,YAAY;IACnB,OAAO,YAAY;CACpB;AAED,MAAM,MAAM,EAAE,GAAG,MAAM,GAAG,SAAS,CAAC;AAEpC,MAAM,WAAW,cAAc;IAC7B,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,MAAM,SAAS,GAAG,UAAU,GAAG,SAAS,GAAG,SAAS,GAAG,UAAU,GAAG,UAAU,GAAG,YAAY,CAAC;AAEpG,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC1C,QAAQ,EAAE,KAAK,GAAG,QAAQ,CAAC;IAC3B,aAAa,EAAE,aAAa,GAAG,IAAI,CAAC;IACpC,WAAW,EACP;QACE,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC;QAC5B,IAAI,EAAE,WAAW,GAAG,gBAAgB,CAAC;QACrC,WAAW,EAAE,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QAC9C,UAAU,EAAE,OAAO,CAAC;KACrB,GACD;QACE,IAAI,EAAE,aAAa,CAAC,OAAO,CAAC;QAC5B,IAAI,EAAE,UAAU,CAAC;QACjB,WAAW,EAAE,OAAO,CAAC,SAAS,EAAE,YAAY,CAAC,CAAC;QAC9C,UAAU,EAAE,OAAO,CAAC;KACrB,GACD,IAAI,CAAC;CACV"}
|
@@ -8,7 +8,10 @@ declare namespace Xenon {
|
|
8
8
|
export const isVisible: () => boolean;
|
9
9
|
export const show: () => void;
|
10
10
|
export const hide: () => void;
|
11
|
-
export
|
11
|
+
export function Component(props: Props): import("react/jsx-runtime").JSX.Element;
|
12
|
+
export namespace Component {
|
13
|
+
var displayName: string;
|
14
|
+
}
|
12
15
|
export {};
|
13
16
|
}
|
14
17
|
export default Xenon;
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"Xenon.d.ts","sourceRoot":"","sources":["../../../../../src/ui/Xenon.tsx"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"Xenon.d.ts","sourceRoot":"","sources":["../../../../../src/ui/Xenon.tsx"],"names":[],"mappings":"AAaA,kBAAU,KAAK,CAAC;IAOd,UAAU,KAAK;QACb,yBAAyB,CAAC,EAAE,OAAO,CAAC;QACpC,yBAAyB,CAAC,EAAE,OAAO,CAAC;QACpC,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;KAC5B;IAmBD,MAAM,CAAC,MAAM,SAAS,eAA0C,CAAC;IACjE,MAAM,CAAC,MAAM,IAAI,QAAO,IAA2B,CAAC;IACpD,MAAM,CAAC,MAAM,IAAI,QAAO,IAA2B,CAAC;IA2FpD,MAAM,UAAU,SAAS,CAAC,KAAK,EAAE,KAAK,2CAUrC;IAVD,MAAM,WAAU,SAAS;;;;CAa1B;AAED,eAAe,KAAK,CAAC"}
|
@@ -1 +1 @@
|
|
1
|
-
{"version":3,"file":"DebuggerHeader.d.ts","sourceRoot":"","sources":["../../../../../../../src/ui/components/headers/DebuggerHeader.tsx"],"names":[],"mappings":"
|
1
|
+
{"version":3,"file":"DebuggerHeader.d.ts","sourceRoot":"","sources":["../../../../../../../src/ui/components/headers/DebuggerHeader.tsx"],"names":[],"mappings":"AAWA,MAAM,CAAC,OAAO,UAAU,cAAc,4CAkOrC"}
|
package/package.json
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
{
|
2
2
|
"name": "react-native-xenon",
|
3
|
-
"version": "0.
|
4
|
-
"description": "A
|
3
|
+
"version": "0.6.0",
|
4
|
+
"description": "A powerful in-app debugging tool for React Native.",
|
5
5
|
"source": "./src/index.ts",
|
6
6
|
"main": "./lib/commonjs/index.js",
|
7
7
|
"module": "./lib/module/index.js",
|
@@ -95,6 +95,7 @@
|
|
95
95
|
"react-native": "0.76.3",
|
96
96
|
"react-native-builder-bob": "^0.33.3",
|
97
97
|
"react-native-safe-area-context": "^5.0.0",
|
98
|
+
"react-native-screens": "^4.6.0",
|
98
99
|
"release-it": "^17.10.0",
|
99
100
|
"typescript": "^5.2.2"
|
100
101
|
},
|
@@ -104,7 +105,8 @@
|
|
104
105
|
"peerDependencies": {
|
105
106
|
"react": "*",
|
106
107
|
"react-native": "*",
|
107
|
-
"react-native-safe-area-context": "*"
|
108
|
+
"react-native-safe-area-context": "*",
|
109
|
+
"react-native-screens": "*"
|
108
110
|
},
|
109
111
|
"workspaces": [
|
110
112
|
"example"
|
package/src/types/common.ts
CHANGED
package/src/ui/Xenon.tsx
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
import { enableMapSet } from 'immer';
|
2
2
|
import { createRef, memo, useImperativeHandle, useMemo, useRef } from 'react';
|
3
|
-
import { Animated, StyleSheet, useWindowDimensions } from 'react-native';
|
3
|
+
import { Animated, Platform, StyleSheet, useWindowDimensions } from 'react-native';
|
4
4
|
import { SafeAreaProvider, SafeAreaView } from 'react-native-safe-area-context';
|
5
5
|
import { useImmer } from 'use-immer';
|
6
6
|
import MainContext from '../contexts/MainContext';
|
@@ -9,6 +9,7 @@ import { useConsoleInterceptor, useNetworkInterceptor } from '../hooks';
|
|
9
9
|
import colors from '../theme/colors';
|
10
10
|
import { DebuggerPanel, type DebuggerState } from '../types';
|
11
11
|
import { Bubble, ConsolePanel, DebuggerHeader, DetailsViewer, NetworkPanel } from './components';
|
12
|
+
import { FullWindowOverlay } from 'react-native-screens';
|
12
13
|
|
13
14
|
namespace Xenon {
|
14
15
|
interface Methods {
|
@@ -25,7 +26,6 @@ namespace Xenon {
|
|
25
26
|
}
|
26
27
|
|
27
28
|
enableMapSet();
|
28
|
-
|
29
29
|
const ref = createRef<Methods>();
|
30
30
|
|
31
31
|
const styles = StyleSheet.create({
|
@@ -42,98 +42,111 @@ namespace Xenon {
|
|
42
42
|
},
|
43
43
|
});
|
44
44
|
|
45
|
-
const Debugger = ({
|
46
|
-
autoInspectNetworkEnabled = true,
|
47
|
-
autoInspectConsoleEnabled = true,
|
48
|
-
bubbleSize = 40,
|
49
|
-
idleBubbleOpacity = 0.5,
|
50
|
-
}: Props) => {
|
51
|
-
const { width, height } = useWindowDimensions();
|
52
|
-
const pan = useRef(new Animated.ValueXY({ x: 0, y: getVerticalSafeMargin(height) }));
|
53
|
-
|
54
|
-
const [debuggerState, setDebuggerState] = useImmer<DebuggerState>({
|
55
|
-
visibility: 'hidden',
|
56
|
-
position: 'bottom',
|
57
|
-
selectedPanel: DebuggerPanel.Network,
|
58
|
-
detailsData: null,
|
59
|
-
});
|
60
|
-
|
61
|
-
const detailsShown = useMemo(
|
62
|
-
() => !debuggerState.selectedPanel && !!debuggerState.detailsData,
|
63
|
-
[debuggerState.detailsData, debuggerState.selectedPanel],
|
64
|
-
);
|
65
|
-
|
66
|
-
const containerStyle = useMemo(
|
67
|
-
() => [
|
68
|
-
styles.container,
|
69
|
-
{ [debuggerState.position]: 0, height: Math.min(width, height) * 0.75 },
|
70
|
-
],
|
71
|
-
[debuggerState.position, height, width],
|
72
|
-
);
|
73
|
-
|
74
|
-
const networkInterceptor = useNetworkInterceptor({
|
75
|
-
autoEnabled: autoInspectNetworkEnabled,
|
76
|
-
});
|
77
|
-
|
78
|
-
const consoleInterceptor = useConsoleInterceptor({
|
79
|
-
autoEnabled: autoInspectConsoleEnabled,
|
80
|
-
});
|
81
|
-
|
82
|
-
useImperativeHandle(ref, () => {
|
83
|
-
const changeVisibility = (condition: boolean, value: DebuggerState['visibility']) => {
|
84
|
-
if (!condition) return;
|
85
|
-
|
86
|
-
setDebuggerState(draft => {
|
87
|
-
draft.visibility = value;
|
88
|
-
});
|
89
|
-
};
|
90
|
-
|
91
|
-
return {
|
92
|
-
isVisible() {
|
93
|
-
return debuggerState.visibility !== 'hidden';
|
94
|
-
},
|
95
|
-
show() {
|
96
|
-
changeVisibility(!this.isVisible(), 'bubble');
|
97
|
-
},
|
98
|
-
hide() {
|
99
|
-
changeVisibility(this.isVisible(), 'hidden');
|
100
|
-
},
|
101
|
-
};
|
102
|
-
}, [debuggerState.visibility, setDebuggerState]);
|
103
|
-
|
104
|
-
return (
|
105
|
-
<MainContext.Provider
|
106
|
-
value={{ debuggerState, setDebuggerState, networkInterceptor, consoleInterceptor }}
|
107
|
-
>
|
108
|
-
{debuggerState.visibility === 'bubble' && (
|
109
|
-
<Bubble
|
110
|
-
bubbleSize={bubbleSize}
|
111
|
-
idleBubbleOpacity={idleBubbleOpacity}
|
112
|
-
pan={pan}
|
113
|
-
screenWidth={width}
|
114
|
-
screenHeight={height}
|
115
|
-
/>
|
116
|
-
)}
|
117
|
-
|
118
|
-
{debuggerState.visibility === 'panel' && (
|
119
|
-
<SafeAreaProvider style={containerStyle}>
|
120
|
-
<SafeAreaView style={styles.safeArea}>
|
121
|
-
<DebuggerHeader />
|
122
|
-
{debuggerState.selectedPanel === DebuggerPanel.Network && <NetworkPanel />}
|
123
|
-
{debuggerState.selectedPanel === DebuggerPanel.Console && <ConsolePanel />}
|
124
|
-
{detailsShown && <DetailsViewer />}
|
125
|
-
</SafeAreaView>
|
126
|
-
</SafeAreaProvider>
|
127
|
-
)}
|
128
|
-
</MainContext.Provider>
|
129
|
-
);
|
130
|
-
};
|
131
|
-
|
132
45
|
export const isVisible = () => ref.current?.isVisible() ?? false;
|
133
46
|
export const show = (): void => ref.current?.show();
|
134
47
|
export const hide = (): void => ref.current?.hide();
|
135
48
|
|
136
|
-
|
49
|
+
const Debugger = memo(
|
50
|
+
({
|
51
|
+
autoInspectNetworkEnabled = true,
|
52
|
+
autoInspectConsoleEnabled = true,
|
53
|
+
bubbleSize = 40,
|
54
|
+
idleBubbleOpacity = 0.5,
|
55
|
+
}: Props) => {
|
56
|
+
const { width, height } = useWindowDimensions();
|
57
|
+
const pan = useRef(new Animated.ValueXY({ x: 0, y: getVerticalSafeMargin(height) }));
|
58
|
+
|
59
|
+
const [debuggerState, setDebuggerState] = useImmer<DebuggerState>({
|
60
|
+
visibility: 'hidden',
|
61
|
+
position: 'bottom',
|
62
|
+
selectedPanel: DebuggerPanel.Network,
|
63
|
+
detailsData: null,
|
64
|
+
});
|
65
|
+
|
66
|
+
const detailsShown = useMemo(
|
67
|
+
() => !debuggerState.selectedPanel && !!debuggerState.detailsData,
|
68
|
+
[debuggerState.detailsData, debuggerState.selectedPanel],
|
69
|
+
);
|
70
|
+
|
71
|
+
const containerStyle = useMemo(
|
72
|
+
() => [
|
73
|
+
styles.container,
|
74
|
+
{ [debuggerState.position]: 0, height: Math.min(width, height) * 0.75 },
|
75
|
+
],
|
76
|
+
[debuggerState.position, height, width],
|
77
|
+
);
|
78
|
+
|
79
|
+
const networkInterceptor = useNetworkInterceptor({
|
80
|
+
autoEnabled: autoInspectNetworkEnabled,
|
81
|
+
});
|
82
|
+
|
83
|
+
const consoleInterceptor = useConsoleInterceptor({
|
84
|
+
autoEnabled: autoInspectConsoleEnabled,
|
85
|
+
});
|
86
|
+
|
87
|
+
useImperativeHandle(ref, () => {
|
88
|
+
const changeVisibility = (condition: boolean, value: DebuggerState['visibility']) => {
|
89
|
+
if (!condition) return;
|
90
|
+
|
91
|
+
setDebuggerState(draft => {
|
92
|
+
draft.visibility = value;
|
93
|
+
});
|
94
|
+
};
|
95
|
+
|
96
|
+
return {
|
97
|
+
isVisible() {
|
98
|
+
return debuggerState.visibility !== 'hidden';
|
99
|
+
},
|
100
|
+
show() {
|
101
|
+
changeVisibility(!this.isVisible(), 'bubble');
|
102
|
+
},
|
103
|
+
hide() {
|
104
|
+
changeVisibility(this.isVisible(), 'hidden');
|
105
|
+
},
|
106
|
+
};
|
107
|
+
}, [debuggerState.visibility, setDebuggerState]);
|
108
|
+
|
109
|
+
return (
|
110
|
+
<MainContext.Provider
|
111
|
+
value={{ debuggerState, setDebuggerState, networkInterceptor, consoleInterceptor }}
|
112
|
+
>
|
113
|
+
{debuggerState.visibility === 'bubble' && (
|
114
|
+
<Bubble
|
115
|
+
bubbleSize={bubbleSize}
|
116
|
+
idleBubbleOpacity={idleBubbleOpacity}
|
117
|
+
pan={pan}
|
118
|
+
screenWidth={width}
|
119
|
+
screenHeight={height}
|
120
|
+
/>
|
121
|
+
)}
|
122
|
+
|
123
|
+
{debuggerState.visibility === 'panel' && (
|
124
|
+
<SafeAreaProvider style={containerStyle}>
|
125
|
+
<SafeAreaView style={styles.safeArea}>
|
126
|
+
<DebuggerHeader />
|
127
|
+
{debuggerState.selectedPanel === DebuggerPanel.Network && <NetworkPanel />}
|
128
|
+
{debuggerState.selectedPanel === DebuggerPanel.Console && <ConsolePanel />}
|
129
|
+
{detailsShown && <DetailsViewer />}
|
130
|
+
</SafeAreaView>
|
131
|
+
</SafeAreaProvider>
|
132
|
+
)}
|
133
|
+
</MainContext.Provider>
|
134
|
+
);
|
135
|
+
},
|
136
|
+
);
|
137
|
+
|
138
|
+
export function Component(props: Props) {
|
139
|
+
if (Platform.OS === 'ios') {
|
140
|
+
return (
|
141
|
+
<FullWindowOverlay>
|
142
|
+
<Debugger {...props} />
|
143
|
+
</FullWindowOverlay>
|
144
|
+
);
|
145
|
+
}
|
146
|
+
|
147
|
+
return <Debugger {...props} />;
|
148
|
+
}
|
149
|
+
|
137
150
|
Component.displayName = 'Xenon';
|
138
151
|
}
|
139
152
|
|
@@ -7,6 +7,8 @@ import icons from '../../../theme/icons';
|
|
7
7
|
import { DebuggerPanel, NetworkType, type DetailTab } from '../../../types';
|
8
8
|
import DebuggerHeaderItem from '../items/DebuggerHeaderItem';
|
9
9
|
|
10
|
+
let isSharing = false;
|
11
|
+
|
10
12
|
export default function DebuggerHeader() {
|
11
13
|
const {
|
12
14
|
debuggerState: { detailsData, selectedPanel },
|
@@ -62,16 +64,28 @@ export default function DebuggerHeader() {
|
|
62
64
|
<>
|
63
65
|
<DebuggerHeaderItem
|
64
66
|
content={icons.share}
|
65
|
-
onPress={() => {
|
66
|
-
if (detailsData.data.type === NetworkType.WS) return;
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
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
|
+
}
|
75
89
|
}}
|
76
90
|
/>
|
77
91
|
|