react-native-debug-toolkit 3.1.4 → 3.2.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 +88 -65
- package/README.zh-CN.md +87 -64
- package/bin/debug-toolkit.js +10 -2
- package/lib/commonjs/core/initialize.js +5 -3
- package/lib/commonjs/core/initialize.js.map +1 -1
- package/lib/commonjs/features/devConnect/DevConnectQrScanner.js +146 -0
- package/lib/commonjs/features/devConnect/DevConnectQrScanner.js.map +1 -0
- package/lib/commonjs/features/devConnect/DevConnectTab.js +426 -0
- package/lib/commonjs/features/devConnect/DevConnectTab.js.map +1 -0
- package/lib/commonjs/features/devConnect/cameraKit.js +54 -0
- package/lib/commonjs/features/devConnect/cameraKit.js.map +1 -0
- package/lib/commonjs/features/devConnect/devConnectPreferences.js +35 -0
- package/lib/commonjs/features/devConnect/devConnectPreferences.js.map +1 -0
- package/lib/commonjs/features/devConnect/devConnectUtils.js +53 -0
- package/lib/commonjs/features/devConnect/devConnectUtils.js.map +1 -0
- package/lib/commonjs/features/devConnect/index.js +92 -0
- package/lib/commonjs/features/devConnect/index.js.map +1 -0
- package/lib/commonjs/features/devConnect/platformDetect.js +30 -0
- package/lib/commonjs/features/devConnect/platformDetect.js.map +1 -0
- package/lib/commonjs/features/devConnect/types.js +2 -0
- package/lib/commonjs/features/devConnect/types.js.map +1 -0
- package/lib/commonjs/features/network/NetworkLogTab.js +7 -3
- package/lib/commonjs/features/network/NetworkLogTab.js.map +1 -1
- package/lib/commonjs/index.js +7 -0
- package/lib/commonjs/index.js.map +1 -1
- package/lib/commonjs/ui/DebugView.js +1 -0
- package/lib/commonjs/ui/DebugView.js.map +1 -1
- package/lib/commonjs/ui/panel/DebugPanel.js +0 -25
- package/lib/commonjs/ui/panel/DebugPanel.js.map +1 -1
- package/lib/commonjs/utils/DaemonClient.js +25 -1
- package/lib/commonjs/utils/DaemonClient.js.map +1 -1
- package/lib/commonjs/utils/debugPreferences.js +2 -1
- package/lib/commonjs/utils/debugPreferences.js.map +1 -1
- package/lib/commonjs/utils/deviceReport.js +1 -0
- package/lib/commonjs/utils/deviceReport.js.map +1 -1
- package/lib/module/core/initialize.js +5 -3
- package/lib/module/core/initialize.js.map +1 -1
- package/lib/module/features/devConnect/DevConnectQrScanner.js +141 -0
- package/lib/module/features/devConnect/DevConnectQrScanner.js.map +1 -0
- package/lib/module/features/devConnect/DevConnectTab.js +421 -0
- package/lib/module/features/devConnect/DevConnectTab.js.map +1 -0
- package/lib/module/features/devConnect/cameraKit.js +49 -0
- package/lib/module/features/devConnect/cameraKit.js.map +1 -0
- package/lib/module/features/devConnect/devConnectPreferences.js +29 -0
- package/lib/module/features/devConnect/devConnectPreferences.js.map +1 -0
- package/lib/module/features/devConnect/devConnectUtils.js +47 -0
- package/lib/module/features/devConnect/devConnectUtils.js.map +1 -0
- package/lib/module/features/devConnect/index.js +52 -0
- package/lib/module/features/devConnect/index.js.map +1 -0
- package/lib/module/features/devConnect/platformDetect.js +26 -0
- package/lib/module/features/devConnect/platformDetect.js.map +1 -0
- package/lib/module/features/devConnect/types.js +2 -0
- package/lib/module/features/devConnect/types.js.map +1 -0
- package/lib/module/features/network/NetworkLogTab.js +7 -3
- package/lib/module/features/network/NetworkLogTab.js.map +1 -1
- package/lib/module/index.js +1 -1
- package/lib/module/index.js.map +1 -1
- package/lib/module/ui/DebugView.js +1 -0
- package/lib/module/ui/DebugView.js.map +1 -1
- package/lib/module/ui/panel/DebugPanel.js +1 -26
- package/lib/module/ui/panel/DebugPanel.js.map +1 -1
- package/lib/module/utils/DaemonClient.js +25 -1
- package/lib/module/utils/DaemonClient.js.map +1 -1
- package/lib/module/utils/debugPreferences.js +2 -1
- package/lib/module/utils/debugPreferences.js.map +1 -1
- package/lib/module/utils/deviceReport.js +1 -0
- package/lib/module/utils/deviceReport.js.map +1 -1
- package/lib/typescript/src/core/initialize.d.ts +1 -0
- package/lib/typescript/src/core/initialize.d.ts.map +1 -1
- package/lib/typescript/src/features/devConnect/DevConnectQrScanner.d.ts +9 -0
- package/lib/typescript/src/features/devConnect/DevConnectQrScanner.d.ts.map +1 -0
- package/lib/typescript/src/features/devConnect/DevConnectTab.d.ts +5 -0
- package/lib/typescript/src/features/devConnect/DevConnectTab.d.ts.map +1 -0
- package/lib/typescript/src/features/devConnect/cameraKit.d.ts +47 -0
- package/lib/typescript/src/features/devConnect/cameraKit.d.ts.map +1 -0
- package/lib/typescript/src/features/devConnect/devConnectPreferences.d.ts +7 -0
- package/lib/typescript/src/features/devConnect/devConnectPreferences.d.ts.map +1 -0
- package/lib/typescript/src/features/devConnect/devConnectUtils.d.ts +12 -0
- package/lib/typescript/src/features/devConnect/devConnectUtils.d.ts.map +1 -0
- package/lib/typescript/src/features/devConnect/index.d.ts +7 -0
- package/lib/typescript/src/features/devConnect/index.d.ts.map +1 -0
- package/lib/typescript/src/features/devConnect/platformDetect.d.ts +2 -0
- package/lib/typescript/src/features/devConnect/platformDetect.d.ts.map +1 -0
- package/lib/typescript/src/features/devConnect/types.d.ts +7 -0
- package/lib/typescript/src/features/devConnect/types.d.ts.map +1 -0
- package/lib/typescript/src/features/network/NetworkLogTab.d.ts.map +1 -1
- package/lib/typescript/src/index.d.ts +2 -0
- package/lib/typescript/src/index.d.ts.map +1 -1
- package/lib/typescript/src/types/feature.d.ts +1 -1
- package/lib/typescript/src/types/feature.d.ts.map +1 -1
- package/lib/typescript/src/ui/DebugView.d.ts.map +1 -1
- package/lib/typescript/src/ui/panel/DebugPanel.d.ts.map +1 -1
- package/lib/typescript/src/utils/DaemonClient.d.ts +1 -0
- package/lib/typescript/src/utils/DaemonClient.d.ts.map +1 -1
- package/lib/typescript/src/utils/debugPreferences.d.ts +1 -0
- package/lib/typescript/src/utils/debugPreferences.d.ts.map +1 -1
- package/lib/typescript/src/utils/deviceReport.d.ts +6 -0
- package/lib/typescript/src/utils/deviceReport.d.ts.map +1 -1
- package/node/daemon/src/console/console.html +166 -27
- package/node/daemon/src/store.js +45 -6
- package/package.json +15 -3
- package/src/core/initialize.ts +7 -1
- package/src/features/devConnect/DevConnectQrScanner.tsx +122 -0
- package/src/features/devConnect/DevConnectTab.tsx +357 -0
- package/src/features/devConnect/cameraKit.ts +93 -0
- package/src/features/devConnect/devConnectPreferences.ts +33 -0
- package/src/features/devConnect/devConnectUtils.ts +59 -0
- package/src/features/devConnect/index.ts +64 -0
- package/src/features/devConnect/platformDetect.ts +26 -0
- package/src/features/devConnect/types.ts +6 -0
- package/src/features/network/NetworkLogTab.tsx +6 -3
- package/src/index.ts +2 -0
- package/src/types/feature.ts +2 -1
- package/src/ui/DebugView.tsx +1 -0
- package/src/ui/panel/DebugPanel.tsx +1 -23
- package/src/utils/DaemonClient.ts +26 -1
- package/src/utils/debugPreferences.ts +1 -0
- package/src/utils/deviceReport.ts +8 -1
- package/lib/commonjs/ui/panel/StreamingSettingsModal.js +0 -495
- package/lib/commonjs/ui/panel/StreamingSettingsModal.js.map +0 -1
- package/lib/module/ui/panel/StreamingSettingsModal.js +0 -490
- package/lib/module/ui/panel/StreamingSettingsModal.js.map +0 -1
- package/lib/typescript/src/ui/panel/StreamingSettingsModal.d.ts +0 -8
- package/lib/typescript/src/ui/panel/StreamingSettingsModal.d.ts.map +0 -1
- package/src/ui/panel/StreamingSettingsModal.tsx +0 -528
|
@@ -0,0 +1,421 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React, { useCallback, useEffect, useRef, useState } from 'react';
|
|
4
|
+
import { KeyboardAvoidingView, Platform, ScrollView, StyleSheet, Text, TextInput, TouchableOpacity, View } from 'react-native';
|
|
5
|
+
import { Colors } from '../../ui/theme/colors';
|
|
6
|
+
import { copyToComputer } from '../../utils/copyToComputer';
|
|
7
|
+
import { buildDeviceDaemonEndpoint, daemonClient, getDefaultDaemonEndpoint, normalizeDaemonSettings } from '../../utils/DaemonClient';
|
|
8
|
+
import { buildMetroUrls, normalizeComputerHost } from './devConnectUtils';
|
|
9
|
+
import { saveComputerHost } from './devConnectPreferences';
|
|
10
|
+
import { DevConnectQrScanner } from './DevConnectQrScanner';
|
|
11
|
+
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
12
|
+
const CONNECTION_TIMEOUT_MS = 2000;
|
|
13
|
+
const METRO_PORT = '8081';
|
|
14
|
+
export function DevConnectTab({
|
|
15
|
+
snapshot
|
|
16
|
+
}) {
|
|
17
|
+
const inputRef = useRef(null);
|
|
18
|
+
const [computerHost, setComputerHost] = useState(snapshot.computerHost);
|
|
19
|
+
const [streaming, setStreaming] = useState(snapshot.streaming);
|
|
20
|
+
const [syncState, setSyncState] = useState(snapshot.streaming ? 'running' : 'idle');
|
|
21
|
+
const [message, setMessage] = useState(null);
|
|
22
|
+
const [sending, setSending] = useState(false);
|
|
23
|
+
const [qrVisible, setQrVisible] = useState(false);
|
|
24
|
+
const isSim = snapshot.isSimulator;
|
|
25
|
+
useEffect(() => {
|
|
26
|
+
setComputerHost(snapshot.computerHost);
|
|
27
|
+
setStreaming(snapshot.streaming);
|
|
28
|
+
setSyncState(snapshot.streaming ? 'running' : 'idle');
|
|
29
|
+
}, [snapshot.computerHost, snapshot.streaming]);
|
|
30
|
+
const metroUrls = isSim ? {
|
|
31
|
+
expUrl: `exp://localhost:${METRO_PORT}`,
|
|
32
|
+
httpUrl: `http://localhost:${METRO_PORT}`
|
|
33
|
+
} : buildMetroUrls(computerHost);
|
|
34
|
+
const handleHostChange = useCallback(value => {
|
|
35
|
+
setComputerHost(value);
|
|
36
|
+
const normalized = normalizeComputerHost(value);
|
|
37
|
+
if (normalized) {
|
|
38
|
+
saveComputerHost(normalized).catch(() => {});
|
|
39
|
+
}
|
|
40
|
+
setSyncState(prev => prev === 'failed' ? 'idle' : prev);
|
|
41
|
+
setMessage(null);
|
|
42
|
+
}, []);
|
|
43
|
+
const handleQrHost = useCallback(host => {
|
|
44
|
+
setComputerHost(host);
|
|
45
|
+
saveComputerHost(host).catch(() => {});
|
|
46
|
+
setMessage('Computer IP updated from QR code.');
|
|
47
|
+
}, []);
|
|
48
|
+
const validateSettings = useCallback(() => {
|
|
49
|
+
if (!isSim && !normalizeComputerHost(computerHost)) {
|
|
50
|
+
setMessage('Enter your computer IP first.');
|
|
51
|
+
return false;
|
|
52
|
+
}
|
|
53
|
+
return true;
|
|
54
|
+
}, [computerHost, isSim]);
|
|
55
|
+
const configureDaemon = useCallback(() => {
|
|
56
|
+
const normalizedHost = isSim ? '' : normalizeComputerHost(computerHost) ?? '';
|
|
57
|
+
const settings = {
|
|
58
|
+
mode: isSim ? 'simulator' : 'device',
|
|
59
|
+
endpoint: '',
|
|
60
|
+
deviceHost: normalizedHost,
|
|
61
|
+
token: ''
|
|
62
|
+
};
|
|
63
|
+
daemonClient.configure(settings);
|
|
64
|
+
const normalized = normalizeDaemonSettings(settings);
|
|
65
|
+
const endpoint = normalized.endpoint || (isSim ? getDefaultDaemonEndpoint() : buildDeviceDaemonEndpoint(normalizedHost));
|
|
66
|
+
return {
|
|
67
|
+
...normalized,
|
|
68
|
+
endpoint
|
|
69
|
+
};
|
|
70
|
+
}, [computerHost, isSim]);
|
|
71
|
+
const toggleLiveSync = useCallback(async () => {
|
|
72
|
+
if (streaming) {
|
|
73
|
+
daemonClient.disconnect();
|
|
74
|
+
daemonClient.setStreamingEnabled(false);
|
|
75
|
+
setStreaming(false);
|
|
76
|
+
setSyncState('idle');
|
|
77
|
+
setMessage(null);
|
|
78
|
+
return;
|
|
79
|
+
}
|
|
80
|
+
if (!validateSettings()) return;
|
|
81
|
+
const daemonOptions = configureDaemon();
|
|
82
|
+
setMessage('Checking desktop connection...');
|
|
83
|
+
setSyncState('checking');
|
|
84
|
+
const connection = await daemonClient.checkConnection({
|
|
85
|
+
...daemonOptions,
|
|
86
|
+
timeoutMs: CONNECTION_TIMEOUT_MS
|
|
87
|
+
});
|
|
88
|
+
if (!connection.ok) {
|
|
89
|
+
setStreaming(false);
|
|
90
|
+
setSyncState('failed');
|
|
91
|
+
setMessage('Cannot reach desktop. Try /health in phone browser.');
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
daemonClient.setStreamingEnabled(true);
|
|
95
|
+
daemonClient.connect({
|
|
96
|
+
...daemonOptions,
|
|
97
|
+
timeoutMs: 3000,
|
|
98
|
+
onStatus: status => {
|
|
99
|
+
if (status.state === 'connected') {
|
|
100
|
+
setStreaming(true);
|
|
101
|
+
setSyncState('connected');
|
|
102
|
+
setMessage(null);
|
|
103
|
+
} else if (status.state === 'retrying') {
|
|
104
|
+
setSyncState('retrying');
|
|
105
|
+
setMessage('Desktop not reachable. Retrying...');
|
|
106
|
+
} else if (status.state === 'failed') {
|
|
107
|
+
setStreaming(false);
|
|
108
|
+
setSyncState('failed');
|
|
109
|
+
setMessage(status.reason === 'auth' ? 'Desktop token rejected.' : 'Desktop not reachable after multiple retries.');
|
|
110
|
+
} else {
|
|
111
|
+
setSyncState('checking');
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
});
|
|
115
|
+
setStreaming(true);
|
|
116
|
+
}, [configureDaemon, streaming, validateSettings]);
|
|
117
|
+
const sendOnce = useCallback(async () => {
|
|
118
|
+
if (!validateSettings()) return;
|
|
119
|
+
const daemonOptions = configureDaemon();
|
|
120
|
+
setSending(true);
|
|
121
|
+
setMessage('Checking desktop connection...');
|
|
122
|
+
try {
|
|
123
|
+
const connection = await daemonClient.checkConnection({
|
|
124
|
+
...daemonOptions,
|
|
125
|
+
timeoutMs: CONNECTION_TIMEOUT_MS
|
|
126
|
+
});
|
|
127
|
+
if (!connection.ok) {
|
|
128
|
+
setMessage('Cannot reach desktop. Try /health in phone browser.');
|
|
129
|
+
return;
|
|
130
|
+
}
|
|
131
|
+
setMessage('Sending logs...');
|
|
132
|
+
const result = await daemonClient.reportOnce({
|
|
133
|
+
...daemonOptions,
|
|
134
|
+
timeoutMs: 2000
|
|
135
|
+
});
|
|
136
|
+
if (result.ok) {
|
|
137
|
+
const totalLogs = Object.values(result.logCount ?? {}).reduce((total, count) => total + count, 0);
|
|
138
|
+
setMessage(`Sent ${totalLogs} logs.`);
|
|
139
|
+
} else {
|
|
140
|
+
setMessage(result.error ? `Send failed: ${result.error}` : 'Send failed.');
|
|
141
|
+
}
|
|
142
|
+
} finally {
|
|
143
|
+
setSending(false);
|
|
144
|
+
}
|
|
145
|
+
}, [configureDaemon, validateSettings]);
|
|
146
|
+
const copyUrl = useCallback((label, url) => {
|
|
147
|
+
copyToComputer(url, {
|
|
148
|
+
label
|
|
149
|
+
});
|
|
150
|
+
setMessage('Copied to computer output.');
|
|
151
|
+
setTimeout(() => setMessage(null), 1500);
|
|
152
|
+
}, []);
|
|
153
|
+
const canConnect = isSim || Boolean(normalizeComputerHost(computerHost));
|
|
154
|
+
const busy = sending || syncState === 'checking';
|
|
155
|
+
return /*#__PURE__*/_jsxs(KeyboardAvoidingView, {
|
|
156
|
+
style: styles.container,
|
|
157
|
+
behavior: Platform.OS === 'ios' ? 'padding' : undefined,
|
|
158
|
+
children: [/*#__PURE__*/_jsxs(ScrollView, {
|
|
159
|
+
keyboardShouldPersistTaps: "handled",
|
|
160
|
+
showsVerticalScrollIndicator: false,
|
|
161
|
+
contentContainerStyle: styles.scrollContent,
|
|
162
|
+
children: [isSim ? /*#__PURE__*/_jsx(View, {
|
|
163
|
+
style: styles.badge,
|
|
164
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
165
|
+
style: styles.badgeText,
|
|
166
|
+
children: "Simulator \u2014 using localhost"
|
|
167
|
+
})
|
|
168
|
+
}) : /*#__PURE__*/_jsxs(View, {
|
|
169
|
+
style: styles.section,
|
|
170
|
+
children: [/*#__PURE__*/_jsx(Text, {
|
|
171
|
+
style: styles.label,
|
|
172
|
+
children: "Computer IP"
|
|
173
|
+
}), /*#__PURE__*/_jsxs(View, {
|
|
174
|
+
style: styles.inputRow,
|
|
175
|
+
children: [/*#__PURE__*/_jsx(TextInput, {
|
|
176
|
+
ref: inputRef,
|
|
177
|
+
style: styles.input,
|
|
178
|
+
value: computerHost,
|
|
179
|
+
onChangeText: handleHostChange,
|
|
180
|
+
placeholder: "192.168.1.10",
|
|
181
|
+
placeholderTextColor: Colors.textLight,
|
|
182
|
+
autoCapitalize: "none",
|
|
183
|
+
autoCorrect: false,
|
|
184
|
+
keyboardType: "numbers-and-punctuation",
|
|
185
|
+
returnKeyType: "done",
|
|
186
|
+
onSubmitEditing: () => inputRef.current?.blur(),
|
|
187
|
+
editable: !streaming
|
|
188
|
+
}), snapshot.qrAvailable ? /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
189
|
+
style: styles.scanButton,
|
|
190
|
+
onPress: () => setQrVisible(true),
|
|
191
|
+
disabled: streaming,
|
|
192
|
+
activeOpacity: 0.7,
|
|
193
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
194
|
+
style: styles.scanButtonText,
|
|
195
|
+
children: "Scan"
|
|
196
|
+
})
|
|
197
|
+
}) : null]
|
|
198
|
+
})]
|
|
199
|
+
}), /*#__PURE__*/_jsxs(View, {
|
|
200
|
+
style: styles.actions,
|
|
201
|
+
children: [/*#__PURE__*/_jsx(TouchableOpacity, {
|
|
202
|
+
style: [styles.primaryButton, (!canConnect || busy) && styles.buttonDisabled],
|
|
203
|
+
onPress: toggleLiveSync,
|
|
204
|
+
disabled: !canConnect || busy,
|
|
205
|
+
activeOpacity: 0.75,
|
|
206
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
207
|
+
style: styles.primaryButtonText,
|
|
208
|
+
children: streaming ? 'Stop' : busy ? 'Checking...' : 'Live Sync'
|
|
209
|
+
})
|
|
210
|
+
}), /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
211
|
+
style: [styles.secondaryButton, (!canConnect || busy) && styles.buttonDisabled],
|
|
212
|
+
onPress: sendOnce,
|
|
213
|
+
disabled: !canConnect || busy,
|
|
214
|
+
activeOpacity: 0.75,
|
|
215
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
216
|
+
style: styles.secondaryButtonText,
|
|
217
|
+
children: sending ? 'Sending...' : 'Send Once'
|
|
218
|
+
})
|
|
219
|
+
})]
|
|
220
|
+
}), message ? /*#__PURE__*/_jsx(Text, {
|
|
221
|
+
style: styles.message,
|
|
222
|
+
children: message
|
|
223
|
+
}) : null, /*#__PURE__*/_jsxs(View, {
|
|
224
|
+
style: styles.section,
|
|
225
|
+
children: [/*#__PURE__*/_jsx(Text, {
|
|
226
|
+
style: styles.sectionTitle,
|
|
227
|
+
children: "Metro Bundler"
|
|
228
|
+
}), metroUrls ? /*#__PURE__*/_jsxs(_Fragment, {
|
|
229
|
+
children: [/*#__PURE__*/_jsxs(View, {
|
|
230
|
+
style: styles.urlRow,
|
|
231
|
+
children: [/*#__PURE__*/_jsx(Text, {
|
|
232
|
+
style: styles.urlText,
|
|
233
|
+
numberOfLines: 1,
|
|
234
|
+
children: metroUrls.expUrl
|
|
235
|
+
}), /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
236
|
+
style: styles.copyButton,
|
|
237
|
+
onPress: () => copyUrl('Metro exp URL', metroUrls.expUrl),
|
|
238
|
+
activeOpacity: 0.7,
|
|
239
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
240
|
+
style: styles.copyButtonText,
|
|
241
|
+
children: "Copy"
|
|
242
|
+
})
|
|
243
|
+
})]
|
|
244
|
+
}), /*#__PURE__*/_jsxs(View, {
|
|
245
|
+
style: styles.urlRow,
|
|
246
|
+
children: [/*#__PURE__*/_jsx(Text, {
|
|
247
|
+
style: styles.urlText,
|
|
248
|
+
numberOfLines: 1,
|
|
249
|
+
children: metroUrls.httpUrl
|
|
250
|
+
}), /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
251
|
+
style: styles.copyButton,
|
|
252
|
+
onPress: () => copyUrl('Metro HTTP URL', metroUrls.httpUrl),
|
|
253
|
+
activeOpacity: 0.7,
|
|
254
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
255
|
+
style: styles.copyButtonText,
|
|
256
|
+
children: "Copy"
|
|
257
|
+
})
|
|
258
|
+
})]
|
|
259
|
+
})]
|
|
260
|
+
}) : /*#__PURE__*/_jsx(Text, {
|
|
261
|
+
style: styles.hint,
|
|
262
|
+
children: "Enter a computer IP to show Metro URLs."
|
|
263
|
+
})]
|
|
264
|
+
})]
|
|
265
|
+
}), /*#__PURE__*/_jsx(DevConnectQrScanner, {
|
|
266
|
+
visible: qrVisible,
|
|
267
|
+
onClose: () => setQrVisible(false),
|
|
268
|
+
onScanHost: handleQrHost
|
|
269
|
+
})]
|
|
270
|
+
});
|
|
271
|
+
}
|
|
272
|
+
const styles = StyleSheet.create({
|
|
273
|
+
container: {
|
|
274
|
+
flex: 1
|
|
275
|
+
},
|
|
276
|
+
scrollContent: {
|
|
277
|
+
paddingHorizontal: 16,
|
|
278
|
+
paddingTop: 12,
|
|
279
|
+
paddingBottom: 24
|
|
280
|
+
},
|
|
281
|
+
badge: {
|
|
282
|
+
paddingHorizontal: 12,
|
|
283
|
+
paddingVertical: 8,
|
|
284
|
+
borderRadius: 8,
|
|
285
|
+
backgroundColor: `${Colors.primary}15`,
|
|
286
|
+
borderWidth: 1,
|
|
287
|
+
borderColor: `${Colors.primary}30`,
|
|
288
|
+
marginBottom: 14
|
|
289
|
+
},
|
|
290
|
+
badgeText: {
|
|
291
|
+
fontSize: 13,
|
|
292
|
+
fontWeight: '500',
|
|
293
|
+
color: Colors.primary
|
|
294
|
+
},
|
|
295
|
+
section: {
|
|
296
|
+
marginBottom: 14
|
|
297
|
+
},
|
|
298
|
+
sectionTitle: {
|
|
299
|
+
fontSize: 14,
|
|
300
|
+
fontWeight: '600',
|
|
301
|
+
color: Colors.text,
|
|
302
|
+
marginBottom: 8
|
|
303
|
+
},
|
|
304
|
+
label: {
|
|
305
|
+
fontSize: 13,
|
|
306
|
+
fontWeight: '500',
|
|
307
|
+
color: Colors.textSecondary,
|
|
308
|
+
marginBottom: 6
|
|
309
|
+
},
|
|
310
|
+
inputRow: {
|
|
311
|
+
flexDirection: 'row',
|
|
312
|
+
alignItems: 'center',
|
|
313
|
+
gap: 8
|
|
314
|
+
},
|
|
315
|
+
input: {
|
|
316
|
+
flex: 1,
|
|
317
|
+
backgroundColor: Colors.surface,
|
|
318
|
+
borderWidth: 1,
|
|
319
|
+
borderColor: Colors.border,
|
|
320
|
+
borderRadius: 8,
|
|
321
|
+
paddingHorizontal: 12,
|
|
322
|
+
paddingVertical: 10,
|
|
323
|
+
fontSize: 14,
|
|
324
|
+
color: Colors.text,
|
|
325
|
+
fontFamily: 'Courier'
|
|
326
|
+
},
|
|
327
|
+
scanButton: {
|
|
328
|
+
minWidth: 62,
|
|
329
|
+
alignItems: 'center',
|
|
330
|
+
justifyContent: 'center',
|
|
331
|
+
paddingHorizontal: 12,
|
|
332
|
+
paddingVertical: 10,
|
|
333
|
+
borderRadius: 8,
|
|
334
|
+
backgroundColor: Colors.surface,
|
|
335
|
+
borderWidth: 1,
|
|
336
|
+
borderColor: Colors.primary
|
|
337
|
+
},
|
|
338
|
+
scanButtonText: {
|
|
339
|
+
color: Colors.primary,
|
|
340
|
+
fontSize: 13,
|
|
341
|
+
fontWeight: '600'
|
|
342
|
+
},
|
|
343
|
+
actions: {
|
|
344
|
+
flexDirection: 'row',
|
|
345
|
+
gap: 10,
|
|
346
|
+
marginTop: 4,
|
|
347
|
+
marginBottom: 12
|
|
348
|
+
},
|
|
349
|
+
primaryButton: {
|
|
350
|
+
flex: 1,
|
|
351
|
+
alignItems: 'center',
|
|
352
|
+
justifyContent: 'center',
|
|
353
|
+
paddingVertical: 11,
|
|
354
|
+
borderRadius: 10,
|
|
355
|
+
backgroundColor: Colors.primary
|
|
356
|
+
},
|
|
357
|
+
primaryButtonText: {
|
|
358
|
+
color: '#fff',
|
|
359
|
+
fontSize: 14,
|
|
360
|
+
fontWeight: '600'
|
|
361
|
+
},
|
|
362
|
+
secondaryButton: {
|
|
363
|
+
flex: 1,
|
|
364
|
+
alignItems: 'center',
|
|
365
|
+
justifyContent: 'center',
|
|
366
|
+
paddingVertical: 11,
|
|
367
|
+
borderRadius: 10,
|
|
368
|
+
backgroundColor: Colors.surface,
|
|
369
|
+
borderWidth: 1,
|
|
370
|
+
borderColor: Colors.border
|
|
371
|
+
},
|
|
372
|
+
secondaryButtonText: {
|
|
373
|
+
color: Colors.primary,
|
|
374
|
+
fontSize: 14,
|
|
375
|
+
fontWeight: '600'
|
|
376
|
+
},
|
|
377
|
+
buttonDisabled: {
|
|
378
|
+
opacity: 0.5
|
|
379
|
+
},
|
|
380
|
+
message: {
|
|
381
|
+
fontSize: 12,
|
|
382
|
+
lineHeight: 17,
|
|
383
|
+
color: Colors.textSecondary,
|
|
384
|
+
marginBottom: 12
|
|
385
|
+
},
|
|
386
|
+
hint: {
|
|
387
|
+
fontSize: 12,
|
|
388
|
+
color: Colors.textLight
|
|
389
|
+
},
|
|
390
|
+
urlRow: {
|
|
391
|
+
flexDirection: 'row',
|
|
392
|
+
alignItems: 'center',
|
|
393
|
+
backgroundColor: Colors.surface,
|
|
394
|
+
borderWidth: 1,
|
|
395
|
+
borderColor: Colors.border,
|
|
396
|
+
borderRadius: 8,
|
|
397
|
+
paddingLeft: 12,
|
|
398
|
+
paddingRight: 4,
|
|
399
|
+
paddingVertical: 4,
|
|
400
|
+
marginBottom: 8
|
|
401
|
+
},
|
|
402
|
+
urlText: {
|
|
403
|
+
flex: 1,
|
|
404
|
+
fontSize: 13,
|
|
405
|
+
fontFamily: 'Courier',
|
|
406
|
+
color: Colors.text,
|
|
407
|
+
paddingVertical: 6
|
|
408
|
+
},
|
|
409
|
+
copyButton: {
|
|
410
|
+
paddingHorizontal: 12,
|
|
411
|
+
paddingVertical: 8,
|
|
412
|
+
borderRadius: 6,
|
|
413
|
+
backgroundColor: Colors.primary
|
|
414
|
+
},
|
|
415
|
+
copyButtonText: {
|
|
416
|
+
color: '#fff',
|
|
417
|
+
fontSize: 12,
|
|
418
|
+
fontWeight: '600'
|
|
419
|
+
}
|
|
420
|
+
});
|
|
421
|
+
//# sourceMappingURL=DevConnectTab.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","useCallback","useEffect","useRef","useState","KeyboardAvoidingView","Platform","ScrollView","StyleSheet","Text","TextInput","TouchableOpacity","View","Colors","copyToComputer","buildDeviceDaemonEndpoint","daemonClient","getDefaultDaemonEndpoint","normalizeDaemonSettings","buildMetroUrls","normalizeComputerHost","saveComputerHost","DevConnectQrScanner","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","CONNECTION_TIMEOUT_MS","METRO_PORT","DevConnectTab","snapshot","inputRef","computerHost","setComputerHost","streaming","setStreaming","syncState","setSyncState","message","setMessage","sending","setSending","qrVisible","setQrVisible","isSim","isSimulator","metroUrls","expUrl","httpUrl","handleHostChange","value","normalized","catch","prev","handleQrHost","host","validateSettings","configureDaemon","normalizedHost","settings","mode","endpoint","deviceHost","token","configure","toggleLiveSync","disconnect","setStreamingEnabled","daemonOptions","connection","checkConnection","timeoutMs","ok","connect","onStatus","status","state","reason","sendOnce","result","reportOnce","totalLogs","Object","values","logCount","reduce","total","count","error","copyUrl","label","url","setTimeout","canConnect","Boolean","busy","style","styles","container","behavior","OS","undefined","children","keyboardShouldPersistTaps","showsVerticalScrollIndicator","contentContainerStyle","scrollContent","badge","badgeText","section","inputRow","ref","input","onChangeText","placeholder","placeholderTextColor","textLight","autoCapitalize","autoCorrect","keyboardType","returnKeyType","onSubmitEditing","current","blur","editable","qrAvailable","scanButton","onPress","disabled","activeOpacity","scanButtonText","actions","primaryButton","buttonDisabled","primaryButtonText","secondaryButton","secondaryButtonText","sectionTitle","urlRow","urlText","numberOfLines","copyButton","copyButtonText","hint","visible","onClose","onScanHost","create","flex","paddingHorizontal","paddingTop","paddingBottom","paddingVertical","borderRadius","backgroundColor","primary","borderWidth","borderColor","marginBottom","fontSize","fontWeight","color","text","textSecondary","flexDirection","alignItems","gap","surface","border","fontFamily","minWidth","justifyContent","marginTop","opacity","lineHeight","paddingLeft","paddingRight"],"sourceRoot":"../../../../src","sources":["features/devConnect/DevConnectTab.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
// ---- react-native-camera-kit types ----
|
|
4
|
+
|
|
5
|
+
// ---- expo-camera types ----
|
|
6
|
+
|
|
7
|
+
// ---- Unified scanner ----
|
|
8
|
+
|
|
9
|
+
let cached = false;
|
|
10
|
+
function tryCameraKit() {
|
|
11
|
+
try {
|
|
12
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
13
|
+
const mod = require('react-native-camera-kit');
|
|
14
|
+
if (mod.Camera) {
|
|
15
|
+
return {
|
|
16
|
+
kind: 'camera-kit',
|
|
17
|
+
CameraKit: {
|
|
18
|
+
Camera: mod.Camera,
|
|
19
|
+
CameraType: mod.CameraType
|
|
20
|
+
}
|
|
21
|
+
};
|
|
22
|
+
}
|
|
23
|
+
} catch {/* not installed */}
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
function tryExpoCamera() {
|
|
27
|
+
try {
|
|
28
|
+
// eslint-disable-next-line @typescript-eslint/no-require-imports
|
|
29
|
+
const mod = require('expo-camera');
|
|
30
|
+
if (mod.Camera) {
|
|
31
|
+
return {
|
|
32
|
+
kind: 'expo-camera',
|
|
33
|
+
ExpoCamera: {
|
|
34
|
+
Camera: mod.Camera
|
|
35
|
+
}
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
} catch {/* not installed */}
|
|
39
|
+
return null;
|
|
40
|
+
}
|
|
41
|
+
export function getScannerModule() {
|
|
42
|
+
if (cached !== false) return cached;
|
|
43
|
+
cached = tryCameraKit() ?? tryExpoCamera();
|
|
44
|
+
return cached;
|
|
45
|
+
}
|
|
46
|
+
export function isCameraKitAvailable() {
|
|
47
|
+
return getScannerModule() !== null;
|
|
48
|
+
}
|
|
49
|
+
//# sourceMappingURL=cameraKit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["cached","tryCameraKit","mod","require","Camera","kind","CameraKit","CameraType","tryExpoCamera","ExpoCamera","getScannerModule","isCameraKitAvailable"],"sourceRoot":"../../../../src","sources":["features/devConnect/cameraKit.ts"],"mappings":";;AAGA;;AAwBA;;AAiBA;;AAUA,IAAIA,MAAoC,GAAG,KAAK;AAEhD,SAASC,YAAYA,CAAA,EAAyB;EAC5C,IAAI;IACF;IACA,MAAMC,GAAG,GAAGC,OAAO,CAAC,yBAAyB,CAA6B;IAC1E,IAAID,GAAG,CAACE,MAAM,EAAE;MACd,OAAO;QACLC,IAAI,EAAE,YAAY;QAClBC,SAAS,EAAE;UAAEF,MAAM,EAAEF,GAAG,CAACE,MAAM;UAAEG,UAAU,EAAEL,GAAG,CAACK;QAAW;MAC9D,CAAC;IACH;EACF,CAAC,CAAC,MAAM,CAAE;EACV,OAAO,IAAI;AACb;AAEA,SAASC,aAAaA,CAAA,EAAyB;EAC7C,IAAI;IACF;IACA,MAAMN,GAAG,GAAGC,OAAO,CAAC,aAAa,CAA8B;IAC/D,IAAID,GAAG,CAACE,MAAM,EAAE;MACd,OAAO;QACLC,IAAI,EAAE,aAAa;QACnBI,UAAU,EAAE;UAAEL,MAAM,EAAEF,GAAG,CAACE;QAAO;MACnC,CAAC;IACH;EACF,CAAC,CAAC,MAAM,CAAE;EACV,OAAO,IAAI;AACb;AAEA,OAAO,SAASM,gBAAgBA,CAAA,EAAyB;EACvD,IAAIV,MAAM,KAAK,KAAK,EAAE,OAAOA,MAAM;EACnCA,MAAM,GAAGC,YAAY,CAAC,CAAC,IAAIO,aAAa,CAAC,CAAC;EAC1C,OAAOR,MAAM;AACf;AAEA,OAAO,SAASW,oBAAoBA,CAAA,EAAY;EAC9C,OAAOD,gBAAgB,CAAC,CAAC,KAAK,IAAI;AACpC","ignoreList":[]}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { daemonClient } from '../../utils/DaemonClient';
|
|
4
|
+
import { getPreference, KEYS, setPreference } from '../../utils/debugPreferences';
|
|
5
|
+
import { normalizeComputerHost } from './devConnectUtils';
|
|
6
|
+
import { isSimulator } from './platformDetect';
|
|
7
|
+
export async function loadDevConnectPreferences() {
|
|
8
|
+
const storedHost = await getPreference(KEYS.computerHost);
|
|
9
|
+
return {
|
|
10
|
+
computerHost: storedHost ? normalizeComputerHost(storedHost) ?? '' : ''
|
|
11
|
+
};
|
|
12
|
+
}
|
|
13
|
+
export async function saveComputerHost(value) {
|
|
14
|
+
const normalized = normalizeComputerHost(value);
|
|
15
|
+
if (!normalized) return null;
|
|
16
|
+
await setPreference(KEYS.computerHost, normalized);
|
|
17
|
+
return normalized;
|
|
18
|
+
}
|
|
19
|
+
export async function restoreDevConnectSettingsToDaemon() {
|
|
20
|
+
const preferences = await loadDevConnectPreferences();
|
|
21
|
+
const mode = isSimulator() ? 'simulator' : 'device';
|
|
22
|
+
daemonClient.configure({
|
|
23
|
+
mode,
|
|
24
|
+
endpoint: '',
|
|
25
|
+
deviceHost: mode === 'simulator' ? '' : preferences.computerHost,
|
|
26
|
+
token: ''
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=devConnectPreferences.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["daemonClient","getPreference","KEYS","setPreference","normalizeComputerHost","isSimulator","loadDevConnectPreferences","storedHost","computerHost","saveComputerHost","value","normalized","restoreDevConnectSettingsToDaemon","preferences","mode","configure","endpoint","deviceHost","token"],"sourceRoot":"../../../../src","sources":["features/devConnect/devConnectPreferences.ts"],"mappings":";;AAAA,SAASA,YAAY,QAAQ,0BAA0B;AACvD,SAASC,aAAa,EAAEC,IAAI,EAAEC,aAAa,QAAQ,8BAA8B;AACjF,SAASC,qBAAqB,QAAQ,mBAAmB;AACzD,SAASC,WAAW,QAAQ,kBAAkB;AAM9C,OAAO,eAAeC,yBAAyBA,CAAA,EAAmC;EAChF,MAAMC,UAAU,GAAG,MAAMN,aAAa,CAACC,IAAI,CAACM,YAAY,CAAC;EACzD,OAAO;IACLA,YAAY,EAAED,UAAU,GAAGH,qBAAqB,CAACG,UAAU,CAAC,IAAI,EAAE,GAAG;EACvE,CAAC;AACH;AAEA,OAAO,eAAeE,gBAAgBA,CAACC,KAAa,EAA0B;EAC5E,MAAMC,UAAU,GAAGP,qBAAqB,CAACM,KAAK,CAAC;EAC/C,IAAI,CAACC,UAAU,EAAE,OAAO,IAAI;EAC5B,MAAMR,aAAa,CAACD,IAAI,CAACM,YAAY,EAAEG,UAAU,CAAC;EAClD,OAAOA,UAAU;AACnB;AAEA,OAAO,eAAeC,iCAAiCA,CAAA,EAAkB;EACvE,MAAMC,WAAW,GAAG,MAAMP,yBAAyB,CAAC,CAAC;EACrD,MAAMQ,IAAI,GAAGT,WAAW,CAAC,CAAC,GAAG,WAAW,GAAY,QAAiB;EACrEL,YAAY,CAACe,SAAS,CAAC;IACrBD,IAAI;IACJE,QAAQ,EAAE,EAAE;IACZC,UAAU,EAAEH,IAAI,KAAK,WAAW,GAAG,EAAE,GAAGD,WAAW,CAACL,YAAY;IAChEU,KAAK,EAAE;EACT,CAAC,CAAC;AACJ","ignoreList":[]}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
const METRO_PORT = '8081';
|
|
4
|
+
function isValidIpv4(host) {
|
|
5
|
+
const parts = host.split('.');
|
|
6
|
+
if (parts.length !== 4) return false;
|
|
7
|
+
return parts.every(part => {
|
|
8
|
+
if (!/^\d{1,3}$/.test(part)) return false;
|
|
9
|
+
const value = Number(part);
|
|
10
|
+
return value >= 0 && value <= 255 && String(value) === part;
|
|
11
|
+
});
|
|
12
|
+
}
|
|
13
|
+
function toUrlInput(raw) {
|
|
14
|
+
const trimmed = raw.trim();
|
|
15
|
+
if (/^[a-zA-Z][a-zA-Z\d+.-]*:\/\//.test(trimmed)) {
|
|
16
|
+
return trimmed;
|
|
17
|
+
}
|
|
18
|
+
return `http://${trimmed}`;
|
|
19
|
+
}
|
|
20
|
+
export function normalizeComputerHost(raw) {
|
|
21
|
+
const trimmed = raw.trim();
|
|
22
|
+
if (!trimmed) return null;
|
|
23
|
+
try {
|
|
24
|
+
const parsed = new URL(toUrlInput(trimmed));
|
|
25
|
+
const host = parsed.hostname.trim();
|
|
26
|
+
return isValidIpv4(host) ? host : null;
|
|
27
|
+
} catch {
|
|
28
|
+
return null;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
export function buildMetroUrls(rawHost) {
|
|
32
|
+
const host = normalizeComputerHost(rawHost);
|
|
33
|
+
if (!host) return null;
|
|
34
|
+
return {
|
|
35
|
+
expUrl: `exp://${host}:${METRO_PORT}`,
|
|
36
|
+
httpUrl: `http://${host}:${METRO_PORT}`
|
|
37
|
+
};
|
|
38
|
+
}
|
|
39
|
+
export function parseMetroQrPayload(payload) {
|
|
40
|
+
const computerHost = normalizeComputerHost(payload);
|
|
41
|
+
if (!computerHost) return null;
|
|
42
|
+
return {
|
|
43
|
+
computerHost,
|
|
44
|
+
source: payload
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=devConnectUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["METRO_PORT","isValidIpv4","host","parts","split","length","every","part","test","value","Number","String","toUrlInput","raw","trimmed","trim","normalizeComputerHost","parsed","URL","hostname","buildMetroUrls","rawHost","expUrl","httpUrl","parseMetroQrPayload","payload","computerHost","source"],"sourceRoot":"../../../../src","sources":["features/devConnect/devConnectUtils.ts"],"mappings":";;AAAA,MAAMA,UAAU,GAAG,MAAM;AAYzB,SAASC,WAAWA,CAACC,IAAY,EAAW;EAC1C,MAAMC,KAAK,GAAGD,IAAI,CAACE,KAAK,CAAC,GAAG,CAAC;EAC7B,IAAID,KAAK,CAACE,MAAM,KAAK,CAAC,EAAE,OAAO,KAAK;EAEpC,OAAOF,KAAK,CAACG,KAAK,CAAEC,IAAI,IAAK;IAC3B,IAAI,CAAC,WAAW,CAACC,IAAI,CAACD,IAAI,CAAC,EAAE,OAAO,KAAK;IACzC,MAAME,KAAK,GAAGC,MAAM,CAACH,IAAI,CAAC;IAC1B,OAAOE,KAAK,IAAI,CAAC,IAAIA,KAAK,IAAI,GAAG,IAAIE,MAAM,CAACF,KAAK,CAAC,KAAKF,IAAI;EAC7D,CAAC,CAAC;AACJ;AAEA,SAASK,UAAUA,CAACC,GAAW,EAAU;EACvC,MAAMC,OAAO,GAAGD,GAAG,CAACE,IAAI,CAAC,CAAC;EAC1B,IAAI,8BAA8B,CAACP,IAAI,CAACM,OAAO,CAAC,EAAE;IAChD,OAAOA,OAAO;EAChB;EACA,OAAO,UAAUA,OAAO,EAAE;AAC5B;AAEA,OAAO,SAASE,qBAAqBA,CAACH,GAAW,EAAiB;EAChE,MAAMC,OAAO,GAAGD,GAAG,CAACE,IAAI,CAAC,CAAC;EAC1B,IAAI,CAACD,OAAO,EAAE,OAAO,IAAI;EAEzB,IAAI;IACF,MAAMG,MAAM,GAAG,IAAIC,GAAG,CAACN,UAAU,CAACE,OAAO,CAAC,CAAC;IAC3C,MAAMZ,IAAI,GAAGe,MAAM,CAACE,QAAQ,CAACJ,IAAI,CAAC,CAAC;IACnC,OAAOd,WAAW,CAACC,IAAI,CAAC,GAAGA,IAAI,GAAG,IAAI;EACxC,CAAC,CAAC,MAAM;IACN,OAAO,IAAI;EACb;AACF;AAEA,OAAO,SAASkB,cAAcA,CAACC,OAAe,EAAoB;EAChE,MAAMnB,IAAI,GAAGc,qBAAqB,CAACK,OAAO,CAAC;EAC3C,IAAI,CAACnB,IAAI,EAAE,OAAO,IAAI;EAEtB,OAAO;IACLoB,MAAM,EAAE,SAASpB,IAAI,IAAIF,UAAU,EAAE;IACrCuB,OAAO,EAAE,UAAUrB,IAAI,IAAIF,UAAU;EACvC,CAAC;AACH;AAEA,OAAO,SAASwB,mBAAmBA,CAACC,OAAe,EAA+B;EAChF,MAAMC,YAAY,GAAGV,qBAAqB,CAACS,OAAO,CAAC;EACnD,IAAI,CAACC,YAAY,EAAE,OAAO,IAAI;EAC9B,OAAO;IAAEA,YAAY;IAAEC,MAAM,EAAEF;EAAQ,CAAC;AAC1C","ignoreList":[]}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { DevConnectTab } from './DevConnectTab';
|
|
4
|
+
import { isCameraKitAvailable } from './cameraKit';
|
|
5
|
+
import { loadDevConnectPreferences } from './devConnectPreferences';
|
|
6
|
+
import { isSimulator } from './platformDetect';
|
|
7
|
+
import { daemonClient } from '../../utils/DaemonClient';
|
|
8
|
+
export { buildMetroUrls, normalizeComputerHost, parseMetroQrPayload } from './devConnectUtils';
|
|
9
|
+
export { loadDevConnectPreferences, restoreDevConnectSettingsToDaemon, saveComputerHost } from './devConnectPreferences';
|
|
10
|
+
export const createDevConnectFeature = () => {
|
|
11
|
+
const listeners = new Set();
|
|
12
|
+
let state = {
|
|
13
|
+
isSimulator: isSimulator(),
|
|
14
|
+
computerHost: '',
|
|
15
|
+
qrAvailable: isCameraKitAvailable(),
|
|
16
|
+
streaming: daemonClient.isConnected()
|
|
17
|
+
};
|
|
18
|
+
const notify = () => {
|
|
19
|
+
state = {
|
|
20
|
+
...state,
|
|
21
|
+
streaming: daemonClient.isConnected()
|
|
22
|
+
};
|
|
23
|
+
listeners.forEach(listener => listener());
|
|
24
|
+
};
|
|
25
|
+
return {
|
|
26
|
+
name: 'devConnect',
|
|
27
|
+
label: 'DevConnect',
|
|
28
|
+
renderContent: DevConnectTab,
|
|
29
|
+
setup() {
|
|
30
|
+
loadDevConnectPreferences().then(preferences => {
|
|
31
|
+
state = {
|
|
32
|
+
...state,
|
|
33
|
+
computerHost: preferences.computerHost
|
|
34
|
+
};
|
|
35
|
+
notify();
|
|
36
|
+
}).catch(() => {
|
|
37
|
+
notify();
|
|
38
|
+
});
|
|
39
|
+
},
|
|
40
|
+
getSnapshot: () => state,
|
|
41
|
+
cleanup() {
|
|
42
|
+
listeners.clear();
|
|
43
|
+
},
|
|
44
|
+
subscribe(listener) {
|
|
45
|
+
listeners.add(listener);
|
|
46
|
+
return () => {
|
|
47
|
+
listeners.delete(listener);
|
|
48
|
+
};
|
|
49
|
+
}
|
|
50
|
+
};
|
|
51
|
+
};
|
|
52
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["DevConnectTab","isCameraKitAvailable","loadDevConnectPreferences","isSimulator","daemonClient","buildMetroUrls","normalizeComputerHost","parseMetroQrPayload","restoreDevConnectSettingsToDaemon","saveComputerHost","createDevConnectFeature","listeners","Set","state","computerHost","qrAvailable","streaming","isConnected","notify","forEach","listener","name","label","renderContent","setup","then","preferences","catch","getSnapshot","cleanup","clear","subscribe","add","delete"],"sourceRoot":"../../../../src","sources":["features/devConnect/index.ts"],"mappings":";;AAAA,SAASA,aAAa,QAAQ,iBAAiB;AAC/C,SAASC,oBAAoB,QAAQ,aAAa;AAClD,SAASC,yBAAyB,QAAQ,yBAAyB;AACnE,SAASC,WAAW,QAAQ,kBAAkB;AAC9C,SAASC,YAAY,QAAQ,0BAA0B;AAKvD,SACEC,cAAc,EACdC,qBAAqB,EACrBC,mBAAmB,QACd,mBAAmB;AAC1B,SACEL,yBAAyB,EACzBM,iCAAiC,EACjCC,gBAAgB,QACX,yBAAyB;AAEhC,OAAO,MAAMC,uBAAuB,GAAGA,CAAA,KAAqC;EAC1E,MAAMC,SAAS,GAAG,IAAIC,GAAG,CAAuB,CAAC;EACjD,IAAIC,KAAsB,GAAG;IAC3BV,WAAW,EAAEA,WAAW,CAAC,CAAC;IAC1BW,YAAY,EAAE,EAAE;IAChBC,WAAW,EAAEd,oBAAoB,CAAC,CAAC;IACnCe,SAAS,EAAEZ,YAAY,CAACa,WAAW,CAAC;EACtC,CAAC;EAED,MAAMC,MAAM,GAAGA,CAAA,KAAM;IACnBL,KAAK,GAAG;MACN,GAAGA,KAAK;MACRG,SAAS,EAAEZ,YAAY,CAACa,WAAW,CAAC;IACtC,CAAC;IACDN,SAAS,CAACQ,OAAO,CAAEC,QAAQ,IAAKA,QAAQ,CAAC,CAAC,CAAC;EAC7C,CAAC;EAED,OAAO;IACLC,IAAI,EAAE,YAAY;IAClBC,KAAK,EAAE,YAAY;IACnBC,aAAa,EAAEvB,aAAa;IAC5BwB,KAAKA,CAAA,EAAG;MACNtB,yBAAyB,CAAC,CAAC,CAACuB,IAAI,CAAEC,WAAW,IAAK;QAChDb,KAAK,GAAG;UACN,GAAGA,KAAK;UACRC,YAAY,EAAEY,WAAW,CAACZ;QAC5B,CAAC;QACDI,MAAM,CAAC,CAAC;MACV,CAAC,CAAC,CAACS,KAAK,CAAC,MAAM;QACbT,MAAM,CAAC,CAAC;MACV,CAAC,CAAC;IACJ,CAAC;IACDU,WAAW,EAAEA,CAAA,KAAMf,KAAK;IACxBgB,OAAOA,CAAA,EAAG;MACRlB,SAAS,CAACmB,KAAK,CAAC,CAAC;IACnB,CAAC;IACDC,SAASA,CAACX,QAAQ,EAAE;MAClBT,SAAS,CAACqB,GAAG,CAACZ,QAAQ,CAAC;MACvB,OAAO,MAAM;QACXT,SAAS,CAACsB,MAAM,CAACb,QAAQ,CAAC;MAC5B,CAAC;IACH;EACF,CAAC;AACH,CAAC","ignoreList":[]}
|