react-native-debug-toolkit 3.2.0 → 3.2.2

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 (66) hide show
  1. package/README.md +13 -2
  2. package/README.zh-CN.md +13 -2
  3. package/android/build.gradle +34 -0
  4. package/android/src/main/AndroidManifest.xml +1 -0
  5. package/android/src/main/java/com/reactnativedebugtoolkit/DebugToolkitDevConnectModule.java +70 -0
  6. package/android/src/main/java/com/reactnativedebugtoolkit/ReactNativeDebugToolkitPackage.java +25 -0
  7. package/ios/DebugToolkitDevConnect.mm +67 -0
  8. package/lib/commonjs/features/devConnect/DevConnectQrScanner.js +94 -26
  9. package/lib/commonjs/features/devConnect/DevConnectQrScanner.js.map +1 -1
  10. package/lib/commonjs/features/devConnect/DevConnectTab.js +261 -75
  11. package/lib/commonjs/features/devConnect/DevConnectTab.js.map +1 -1
  12. package/lib/commonjs/features/devConnect/devConnectPreferences.js +35 -5
  13. package/lib/commonjs/features/devConnect/devConnectPreferences.js.map +1 -1
  14. package/lib/commonjs/features/devConnect/devConnectUtils.js +99 -15
  15. package/lib/commonjs/features/devConnect/devConnectUtils.js.map +1 -1
  16. package/lib/commonjs/features/devConnect/index.js +39 -2
  17. package/lib/commonjs/features/devConnect/index.js.map +1 -1
  18. package/lib/commonjs/features/devConnect/nativeDevConnect.js +110 -0
  19. package/lib/commonjs/features/devConnect/nativeDevConnect.js.map +1 -0
  20. package/lib/commonjs/features/devConnect/platformDetect.js +7 -11
  21. package/lib/commonjs/features/devConnect/platformDetect.js.map +1 -1
  22. package/lib/commonjs/utils/debugPreferences.js +43 -6
  23. package/lib/commonjs/utils/debugPreferences.js.map +1 -1
  24. package/lib/module/features/devConnect/DevConnectQrScanner.js +95 -27
  25. package/lib/module/features/devConnect/DevConnectQrScanner.js.map +1 -1
  26. package/lib/module/features/devConnect/DevConnectTab.js +265 -79
  27. package/lib/module/features/devConnect/DevConnectTab.js.map +1 -1
  28. package/lib/module/features/devConnect/devConnectPreferences.js +33 -6
  29. package/lib/module/features/devConnect/devConnectPreferences.js.map +1 -1
  30. package/lib/module/features/devConnect/devConnectUtils.js +94 -15
  31. package/lib/module/features/devConnect/devConnectUtils.js.map +1 -1
  32. package/lib/module/features/devConnect/index.js +11 -3
  33. package/lib/module/features/devConnect/index.js.map +1 -1
  34. package/lib/module/features/devConnect/nativeDevConnect.js +104 -0
  35. package/lib/module/features/devConnect/nativeDevConnect.js.map +1 -0
  36. package/lib/module/features/devConnect/platformDetect.js +8 -12
  37. package/lib/module/features/devConnect/platformDetect.js.map +1 -1
  38. package/lib/module/utils/debugPreferences.js +43 -6
  39. package/lib/module/utils/debugPreferences.js.map +1 -1
  40. package/lib/typescript/src/features/devConnect/DevConnectQrScanner.d.ts +3 -2
  41. package/lib/typescript/src/features/devConnect/DevConnectQrScanner.d.ts.map +1 -1
  42. package/lib/typescript/src/features/devConnect/DevConnectTab.d.ts.map +1 -1
  43. package/lib/typescript/src/features/devConnect/devConnectPreferences.d.ts +6 -0
  44. package/lib/typescript/src/features/devConnect/devConnectPreferences.d.ts.map +1 -1
  45. package/lib/typescript/src/features/devConnect/devConnectUtils.d.ts +18 -1
  46. package/lib/typescript/src/features/devConnect/devConnectUtils.d.ts.map +1 -1
  47. package/lib/typescript/src/features/devConnect/index.d.ts +2 -2
  48. package/lib/typescript/src/features/devConnect/index.d.ts.map +1 -1
  49. package/lib/typescript/src/features/devConnect/nativeDevConnect.d.ts +17 -0
  50. package/lib/typescript/src/features/devConnect/nativeDevConnect.d.ts.map +1 -0
  51. package/lib/typescript/src/features/devConnect/platformDetect.d.ts.map +1 -1
  52. package/lib/typescript/src/features/devConnect/types.d.ts +3 -0
  53. package/lib/typescript/src/features/devConnect/types.d.ts.map +1 -1
  54. package/lib/typescript/src/utils/debugPreferences.d.ts +2 -0
  55. package/lib/typescript/src/utils/debugPreferences.d.ts.map +1 -1
  56. package/package.json +4 -1
  57. package/react-native-debug-toolkit.podspec +18 -0
  58. package/src/features/devConnect/DevConnectQrScanner.tsx +90 -28
  59. package/src/features/devConnect/DevConnectTab.tsx +257 -55
  60. package/src/features/devConnect/devConnectPreferences.ts +50 -5
  61. package/src/features/devConnect/devConnectUtils.ts +122 -15
  62. package/src/features/devConnect/index.ts +13 -0
  63. package/src/features/devConnect/nativeDevConnect.ts +128 -0
  64. package/src/features/devConnect/platformDetect.ts +8 -13
  65. package/src/features/devConnect/types.ts +3 -0
  66. package/src/utils/debugPreferences.ts +49 -4
package/README.md CHANGED
@@ -26,6 +26,15 @@ RN App -> Debug Panel -> local daemon -> Web Console / HTTP API / MCP
26
26
  npm install react-native-debug-toolkit
27
27
  ```
28
28
 
29
+ Install the native part and rebuild the app:
30
+
31
+ ```bash
32
+ cd ios && pod install
33
+ # Android: Gradle autolinking runs on the next build
34
+ ```
35
+
36
+ Expo Go cannot load this native module. Use a development build, prebuild, or bare React Native app.
37
+
29
38
  Optional dependencies:
30
39
 
31
40
  ```bash
@@ -64,9 +73,11 @@ Open the Web Console:
64
73
  http://127.0.0.1:3799/console
65
74
  ```
66
75
 
67
- In the app, open Debug Panel -> `DevConnect` -> `Send Once` or `Start Live Sync`.
76
+ In the app, open Debug Panel -> `DevConnect` -> `Send Once` or `Start Live Sync` for desktop logs.
77
+
78
+ DevConnect auto-detects simulator/emulator and uses local host settings automatically. On real devices, enter your computer IP to connect.
68
79
 
69
- DevConnect auto-detects simulator/emulator and uses `localhost` automatically. On real devices, enter your computer IP to connect.
80
+ For Remote JS Bundle, run Metro on your computer, enter computer IP and Metro port in `DevConnect`, then tap `Use Metro Bundle`. DevConnect writes React Native's native dev-server host setting and reloads the app. The IP and ports are persisted through AsyncStorage when installed, or through the native module after rebuild.
70
81
 
71
82
  QR scan is optional. Install `react-native-camera-kit` or `expo-camera` in the app to enable the scan button. The app must request camera permission before scanning.
72
83
 
package/README.zh-CN.md CHANGED
@@ -26,6 +26,15 @@ RN App -> Debug Panel -> local daemon -> Web Console / HTTP API / MCP
26
26
  npm install react-native-debug-toolkit
27
27
  ```
28
28
 
29
+ 安装原生部分并重新构建 App:
30
+
31
+ ```bash
32
+ cd ios && pod install
33
+ # Android:下次构建时 Gradle autolinking 生效
34
+ ```
35
+
36
+ Expo Go 不能加载这个原生模块。Expo 项目需用 development build、prebuild,或 bare React Native。
37
+
29
38
  可选依赖:
30
39
 
31
40
  ```bash
@@ -64,9 +73,11 @@ npm exec debug-toolkit --daemon-only
64
73
  http://127.0.0.1:3799/console
65
74
  ```
66
75
 
67
- App 内打开 Debug Panel -> `DevConnect` -> `Send Once` 或 `Start Live Sync`。
76
+ App 内打开 Debug Panel -> `DevConnect` -> `Send Once` 或 `Start Live Sync` 同步桌面日志。
77
+
78
+ DevConnect 自动识别模拟器/真机,模拟器下自动使用本机 Metro/daemon 地址。真机需输入电脑 IP 地址。
68
79
 
69
- DevConnect 自动识别模拟器/真机,模拟器下自动使用 `localhost`。真机需输入电脑 IP 地址。
80
+ Remote JS Bundle:先在电脑启动 Metro,在 `DevConnect` 输入电脑 IP 和 Metro 端口,然后点 `Use Metro Bundle`。DevConnect 会写入 React Native 原生 dev-server host 设置并 reload App。IP 和端口会通过 AsyncStorage 持久化;如果没装 AsyncStorage,则在重建后通过本库原生模块持久化。
70
81
 
71
82
  扫码是可选能力。App 安装 `react-native-camera-kit` 或 `expo-camera` 后,DevConnect 才显示扫码按钮。App 仍需自己配置相机权限文案,并在使用扫码前申请相机权限。
72
83
 
@@ -0,0 +1,34 @@
1
+ buildscript {
2
+ repositories {
3
+ google()
4
+ mavenCentral()
5
+ }
6
+ dependencies {
7
+ classpath("com.android.tools.build:gradle:7.4.2")
8
+ }
9
+ }
10
+
11
+ def safeExtGet(prop, fallback) {
12
+ return rootProject.ext.has(prop) ? rootProject.ext.get(prop) : fallback
13
+ }
14
+
15
+ apply plugin: 'com.android.library'
16
+
17
+ android {
18
+ namespace 'com.reactnativedebugtoolkit'
19
+ compileSdkVersion safeExtGet('compileSdkVersion', 35)
20
+
21
+ defaultConfig {
22
+ minSdkVersion safeExtGet('minSdkVersion', 23)
23
+ targetSdkVersion safeExtGet('targetSdkVersion', 35)
24
+ }
25
+ }
26
+
27
+ repositories {
28
+ google()
29
+ mavenCentral()
30
+ }
31
+
32
+ dependencies {
33
+ implementation 'com.facebook.react:react-android'
34
+ }
@@ -0,0 +1 @@
1
+ <manifest xmlns:android="http://schemas.android.com/apk/res/android" />
@@ -0,0 +1,70 @@
1
+ package com.reactnativedebugtoolkit;
2
+
3
+ import android.content.SharedPreferences;
4
+ import android.preference.PreferenceManager;
5
+
6
+ import androidx.annotation.NonNull;
7
+ import androidx.annotation.Nullable;
8
+
9
+ import com.facebook.react.bridge.Arguments;
10
+ import com.facebook.react.bridge.Promise;
11
+ import com.facebook.react.bridge.ReactApplicationContext;
12
+ import com.facebook.react.bridge.ReactContextBaseJavaModule;
13
+ import com.facebook.react.bridge.ReactMethod;
14
+ import com.facebook.react.bridge.WritableMap;
15
+
16
+ public class DebugToolkitDevConnectModule extends ReactContextBaseJavaModule {
17
+ private static final String MODULE_NAME = "DebugToolkitDevConnect";
18
+ private static final String DEBUG_SERVER_HOST_KEY = "debug_http_host";
19
+
20
+ public DebugToolkitDevConnectModule(ReactApplicationContext reactContext) {
21
+ super(reactContext);
22
+ }
23
+
24
+ @NonNull
25
+ @Override
26
+ public String getName() {
27
+ return MODULE_NAME;
28
+ }
29
+
30
+ private SharedPreferences getPreferences() {
31
+ return PreferenceManager.getDefaultSharedPreferences(getReactApplicationContext());
32
+ }
33
+
34
+ @ReactMethod
35
+ public void getMetroHost(Promise promise) {
36
+ @Nullable String host = getPreferences().getString(DEBUG_SERVER_HOST_KEY, null);
37
+ promise.resolve(host);
38
+ }
39
+
40
+ @ReactMethod
41
+ public void applyMetroHost(String hostPort, Promise promise) {
42
+ if (hostPort == null || hostPort.length() == 0) {
43
+ promise.reject("invalid_host", "Metro host cannot be empty.");
44
+ return;
45
+ }
46
+
47
+ getPreferences().edit().putString(DEBUG_SERVER_HOST_KEY, hostPort).apply();
48
+ WritableMap result = Arguments.createMap();
49
+ result.putString("hostPort", hostPort);
50
+ promise.resolve(result);
51
+ }
52
+
53
+ @ReactMethod
54
+ public void resetMetroHost(Promise promise) {
55
+ getPreferences().edit().remove(DEBUG_SERVER_HOST_KEY).apply();
56
+ promise.resolve(null);
57
+ }
58
+
59
+ @ReactMethod
60
+ public void getPreference(String key, Promise promise) {
61
+ @Nullable String value = getPreferences().getString(key, null);
62
+ promise.resolve(value);
63
+ }
64
+
65
+ @ReactMethod
66
+ public void setPreference(String key, String value, Promise promise) {
67
+ getPreferences().edit().putString(key, value).apply();
68
+ promise.resolve(null);
69
+ }
70
+ }
@@ -0,0 +1,25 @@
1
+ package com.reactnativedebugtoolkit;
2
+
3
+ import androidx.annotation.NonNull;
4
+
5
+ import com.facebook.react.ReactPackage;
6
+ import com.facebook.react.bridge.NativeModule;
7
+ import com.facebook.react.bridge.ReactApplicationContext;
8
+ import com.facebook.react.uimanager.ViewManager;
9
+
10
+ import java.util.Collections;
11
+ import java.util.List;
12
+
13
+ public class ReactNativeDebugToolkitPackage implements ReactPackage {
14
+ @NonNull
15
+ @Override
16
+ public List<NativeModule> createNativeModules(@NonNull ReactApplicationContext reactContext) {
17
+ return Collections.<NativeModule>singletonList(new DebugToolkitDevConnectModule(reactContext));
18
+ }
19
+
20
+ @NonNull
21
+ @Override
22
+ public List<ViewManager> createViewManagers(@NonNull ReactApplicationContext reactContext) {
23
+ return Collections.emptyList();
24
+ }
25
+ }
@@ -0,0 +1,67 @@
1
+ #import <Foundation/Foundation.h>
2
+ #import <React/RCTBridgeModule.h>
3
+ #import <React/RCTBundleURLProvider.h>
4
+
5
+ static NSString *const DebugToolkitRCTJsLocationKey = @"RCT_jsLocation";
6
+
7
+ @interface DebugToolkitDevConnect : NSObject <RCTBridgeModule>
8
+ @end
9
+
10
+ @implementation DebugToolkitDevConnect
11
+
12
+ RCT_EXPORT_MODULE(DebugToolkitDevConnect)
13
+
14
+ + (BOOL)requiresMainQueueSetup
15
+ {
16
+ return NO;
17
+ }
18
+
19
+ RCT_EXPORT_METHOD(getMetroHost:(RCTPromiseResolveBlock)resolve
20
+ rejecter:(__unused RCTPromiseRejectBlock)reject)
21
+ {
22
+ NSString *host = [RCTBundleURLProvider sharedSettings].jsLocation;
23
+ resolve(host ?: [NSNull null]);
24
+ }
25
+
26
+ RCT_EXPORT_METHOD(applyMetroHost:(NSString *)hostPort
27
+ resolver:(RCTPromiseResolveBlock)resolve
28
+ rejecter:(RCTPromiseRejectBlock)reject)
29
+ {
30
+ if (hostPort.length == 0) {
31
+ reject(@"invalid_host", @"Metro host cannot be empty.", nil);
32
+ return;
33
+ }
34
+
35
+ [RCTBundleURLProvider sharedSettings].jsLocation = hostPort;
36
+ resolve(@{ @"hostPort" : hostPort });
37
+ }
38
+
39
+ RCT_EXPORT_METHOD(resetMetroHost:(RCTPromiseResolveBlock)resolve
40
+ rejecter:(__unused RCTPromiseRejectBlock)reject)
41
+ {
42
+ NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];
43
+ [defaults removeObjectForKey:DebugToolkitRCTJsLocationKey];
44
+ [defaults synchronize];
45
+ [[NSNotificationCenter defaultCenter] postNotificationName:RCTBundleURLProviderUpdatedNotification object:nil];
46
+ resolve([NSNull null]);
47
+ }
48
+
49
+ RCT_EXPORT_METHOD(getPreference:(NSString *)key
50
+ resolver:(RCTPromiseResolveBlock)resolve
51
+ rejecter:(__unused RCTPromiseRejectBlock)reject)
52
+ {
53
+ NSString *value = [[NSUserDefaults standardUserDefaults] stringForKey:key];
54
+ resolve(value ?: [NSNull null]);
55
+ }
56
+
57
+ RCT_EXPORT_METHOD(setPreference:(NSString *)key
58
+ value:(NSString *)value
59
+ resolver:(RCTPromiseResolveBlock)resolve
60
+ rejecter:(__unused RCTPromiseRejectBlock)reject)
61
+ {
62
+ [[NSUserDefaults standardUserDefaults] setObject:value forKey:key];
63
+ [[NSUserDefaults standardUserDefaults] synchronize];
64
+ resolve([NSNull null]);
65
+ }
66
+
67
+ @end
@@ -11,23 +11,54 @@ var _cameraKit = require("./cameraKit");
11
11
  var _devConnectUtils = require("./devConnectUtils");
12
12
  var _jsxRuntime = require("react/jsx-runtime");
13
13
  function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
14
+ // ─── Camera Error Boundary ─────────────────────────────────
15
+
16
+ class CameraErrorBoundary extends _react.Component {
17
+ state = {
18
+ hasError: false
19
+ };
20
+ static getDerivedStateFromError() {
21
+ return {
22
+ hasError: true
23
+ };
24
+ }
25
+ componentDidCatch(error) {
26
+ console.warn('[DevConnect] Camera error:', error.message);
27
+ this.props.onCameraError(error.message || 'Camera failed to initialize.');
28
+ }
29
+ render() {
30
+ if (this.state.hasError) {
31
+ return null;
32
+ }
33
+ return this.props.children;
34
+ }
35
+ }
36
+
37
+ // ─── QR Scanner ─────────────────────────────────────────────
38
+
14
39
  function DevConnectQrScanner({
15
40
  visible,
16
41
  onClose,
17
- onScanHost
42
+ onScanTarget
18
43
  }) {
19
44
  const scannedRef = (0, _react.useRef)(false);
20
45
  const [error, setError] = (0, _react.useState)(null);
46
+ const [cameraFailed, setCameraFailed] = (0, _react.useState)(false);
21
47
  const scanner = (0, _cameraKit.getScannerModule)();
22
48
  (0, _react.useEffect)(() => {
23
49
  if (visible) {
24
50
  scannedRef.current = false;
25
51
  setError(null);
52
+ setCameraFailed(false);
26
53
  }
27
54
  }, [visible]);
28
55
  const handleScanned = (0, _react.useCallback)(rawValue => {
29
- if (scannedRef.current) return;
30
- if (typeof rawValue !== 'string') return;
56
+ if (scannedRef.current) {
57
+ return;
58
+ }
59
+ if (typeof rawValue !== 'string') {
60
+ return;
61
+ }
31
62
  const parsed = (0, _devConnectUtils.parseMetroQrPayload)(rawValue);
32
63
  if (!parsed) {
33
64
  setError('QR code does not contain a supported Metro URL.');
@@ -35,45 +66,65 @@ function DevConnectQrScanner({
35
66
  }
36
67
  scannedRef.current = true;
37
68
  setError(null);
38
- onScanHost(parsed.computerHost);
69
+ onScanTarget({
70
+ computerHost: parsed.computerHost,
71
+ metroPort: parsed.metroPort
72
+ });
39
73
  onClose();
40
- }, [onClose, onScanHost]);
74
+ }, [onClose, onScanTarget]);
41
75
  const handleCameraKitRead = (0, _react.useCallback)(event => {
42
76
  handleScanned(event.nativeEvent?.codeStringValue ?? '');
43
77
  }, [handleScanned]);
44
78
  const handleExpoScanned = (0, _react.useCallback)(result => {
45
79
  handleScanned(result.value ?? '');
46
80
  }, [handleScanned]);
47
- if (!visible || !scanner) return null;
81
+ const handleCameraError = (0, _react.useCallback)(_msg => {
82
+ setCameraFailed(true);
83
+ }, []);
84
+ if (!visible || !scanner) {
85
+ return null;
86
+ }
48
87
  return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Modal, {
49
88
  visible: visible,
50
89
  animationType: "slide",
51
90
  onRequestClose: onClose,
52
91
  children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
53
92
  style: styles.container,
54
- children: [scanner.kind === 'camera-kit' && scanner.CameraKit ? /*#__PURE__*/(0, _jsxRuntime.jsx)(scanner.CameraKit.Camera, {
55
- style: styles.camera,
56
- cameraType: scanner.CameraKit.CameraType?.Back,
57
- scanBarcode: true,
58
- onReadCode: handleCameraKitRead,
59
- showFrame: true,
60
- laserColor: _colors.Colors.primary,
61
- frameColor: _colors.Colors.primary,
62
- allowedBarcodeTypes: ['qr']
63
- }) : scanner.kind === 'expo-camera' && scanner.ExpoCamera ? /*#__PURE__*/(0, _jsxRuntime.jsx)(scanner.ExpoCamera.Camera, {
64
- style: styles.camera,
65
- onBarCodeScanned: handleExpoScanned,
66
- barCodeScannerSettings: {
67
- barCodeTypes: ['qr']
68
- }
69
- }) : null, /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
93
+ children: [!cameraFailed && /*#__PURE__*/(0, _jsxRuntime.jsx)(CameraErrorBoundary, {
94
+ onCameraError: handleCameraError,
95
+ children: scanner.kind === 'camera-kit' && scanner.CameraKit ? /*#__PURE__*/(0, _jsxRuntime.jsx)(scanner.CameraKit.Camera, {
96
+ style: styles.camera,
97
+ cameraType: scanner.CameraKit.CameraType?.Back,
98
+ scanBarcode: true,
99
+ onReadCode: handleCameraKitRead,
100
+ showFrame: true,
101
+ laserColor: _colors.Colors.primary,
102
+ frameColor: _colors.Colors.primary,
103
+ allowedBarcodeTypes: ['qr']
104
+ }) : scanner.kind === 'expo-camera' && scanner.ExpoCamera ? /*#__PURE__*/(0, _jsxRuntime.jsx)(scanner.ExpoCamera.Camera, {
105
+ style: styles.camera,
106
+ onBarCodeScanned: handleExpoScanned,
107
+ barCodeScannerSettings: {
108
+ barCodeTypes: ['qr']
109
+ }
110
+ }) : null
111
+ }), cameraFailed && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
112
+ style: styles.cameraFallback,
113
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
114
+ style: styles.cameraFallbackText,
115
+ children: "Camera unavailable."
116
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
117
+ style: styles.cameraFallbackHint,
118
+ children: "Please enter computer IP manually."
119
+ })]
120
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
70
121
  style: styles.footer,
71
- children: [error ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
72
- style: styles.error,
73
- children: error
74
- }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
122
+ children: [!cameraFailed && !error && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
75
123
  style: styles.hint,
76
124
  children: "Scan a Metro QR code."
125
+ }), error && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
126
+ style: styles.error,
127
+ children: error
77
128
  }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
78
129
  style: styles.closeButton,
79
130
  onPress: onClose,
@@ -102,6 +153,23 @@ const styles = _reactNative.StyleSheet.create({
102
153
  camera: {
103
154
  flex: 1
104
155
  },
156
+ cameraFallback: {
157
+ flex: 1,
158
+ justifyContent: 'center',
159
+ alignItems: 'center',
160
+ padding: 24
161
+ },
162
+ cameraFallbackText: {
163
+ fontSize: 16,
164
+ color: '#fff',
165
+ fontWeight: '600',
166
+ marginBottom: 8
167
+ },
168
+ cameraFallbackHint: {
169
+ fontSize: 13,
170
+ color: 'rgba(255,255,255,0.6)',
171
+ textAlign: 'center'
172
+ },
105
173
  footer: {
106
174
  padding: 16,
107
175
  backgroundColor: _colors.Colors.surface
@@ -1 +1 @@
1
- {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_colors","_cameraKit","_devConnectUtils","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","DevConnectQrScanner","visible","onClose","onScanHost","scannedRef","useRef","error","setError","useState","scanner","getScannerModule","useEffect","current","handleScanned","useCallback","rawValue","parsed","parseMetroQrPayload","computerHost","handleCameraKitRead","event","nativeEvent","codeStringValue","handleExpoScanned","result","value","jsx","Modal","animationType","onRequestClose","children","jsxs","View","style","styles","container","kind","CameraKit","Camera","camera","cameraType","CameraType","Back","scanBarcode","onReadCode","showFrame","laserColor","Colors","primary","frameColor","allowedBarcodeTypes","ExpoCamera","onBarCodeScanned","barCodeScannerSettings","barCodeTypes","footer","Text","hint","TouchableOpacity","closeButton","onPress","activeOpacity","closeButtonText","Pressable","topClose","topCloseText","StyleSheet","create","flex","backgroundColor","padding","surface","fontSize","color","textSecondary","marginBottom","alignItems","justifyContent","paddingVertical","borderRadius","fontWeight","position","top","right","paddingHorizontal"],"sourceRoot":"../../../../src","sources":["features/devConnect/DevConnectQrScanner.tsx"],"mappings":"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","ignoreList":[]}
1
+ {"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_colors","_cameraKit","_devConnectUtils","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","CameraErrorBoundary","Component","state","hasError","getDerivedStateFromError","componentDidCatch","error","console","warn","message","props","onCameraError","render","children","DevConnectQrScanner","visible","onClose","onScanTarget","scannedRef","useRef","setError","useState","cameraFailed","setCameraFailed","scanner","getScannerModule","useEffect","current","handleScanned","useCallback","rawValue","parsed","parseMetroQrPayload","computerHost","metroPort","handleCameraKitRead","event","nativeEvent","codeStringValue","handleExpoScanned","result","value","handleCameraError","_msg","jsx","Modal","animationType","onRequestClose","jsxs","View","style","styles","container","kind","CameraKit","Camera","camera","cameraType","CameraType","Back","scanBarcode","onReadCode","showFrame","laserColor","Colors","primary","frameColor","allowedBarcodeTypes","ExpoCamera","onBarCodeScanned","barCodeScannerSettings","barCodeTypes","cameraFallback","Text","cameraFallbackText","cameraFallbackHint","footer","hint","TouchableOpacity","closeButton","onPress","activeOpacity","closeButtonText","Pressable","topClose","topCloseText","StyleSheet","create","flex","backgroundColor","justifyContent","alignItems","padding","fontSize","color","fontWeight","marginBottom","textAlign","surface","textSecondary","paddingVertical","borderRadius","position","top","right","paddingHorizontal"],"sourceRoot":"../../../../src","sources":["features/devConnect/DevConnectQrScanner.tsx"],"mappings":"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","ignoreList":[]}