react-native-inapp-inspector 2.5.13 → 2.5.15
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 +0 -8
- package/android/src/main/java/com/inappinspector/NetworkInspectorModule.kt +118 -31
- package/dist/commonjs/components/Inspector/ConsoleExportModal.js +1 -1
- package/dist/commonjs/components/Inspector/ConsoleTab.js +7 -7
- package/dist/commonjs/components/Inspector/FabLauncher.js +3 -3
- package/dist/commonjs/components/Inspector/InspectorHeader.js +30 -30
- package/dist/commonjs/components/Inspector/MainScreen.js +38 -75
- package/dist/commonjs/components/Inspector/NetworkExportModal.js +4 -4
- package/dist/commonjs/components/Inspector/NetworkTab.js +51 -51
- package/dist/commonjs/components/Inspector/SecondaryTelemetryStrip.d.ts +1 -0
- package/dist/commonjs/components/Inspector/SecondaryTelemetryStrip.js +17 -16
- package/dist/commonjs/components/Inspector/SettingsPanel.js +40 -41
- package/dist/commonjs/components/Inspector/SkeletonPlaceholder.d.ts +3 -0
- package/dist/commonjs/components/Inspector/SkeletonPlaceholder.js +34 -3
- package/dist/commonjs/components/Inspector/TabBar.js +9 -15
- package/dist/commonjs/components/LogCard.js +7 -7
- package/dist/commonjs/components/SkeletonPlaceholder.d.ts +3 -0
- package/dist/commonjs/components/SkeletonPlaceholder.js +34 -3
- package/dist/commonjs/constants/telemetryConfig.d.ts +3 -3
- package/dist/commonjs/constants/telemetryConfig.js +1 -1
- package/dist/commonjs/constants/version.d.ts +1 -1
- package/dist/commonjs/constants/version.js +1 -1
- package/dist/commonjs/helpers/remoteConfig.js +1 -1
- package/dist/commonjs/helpers/shareFormatter.js +14 -14
- package/dist/commonjs/index.d.ts +1 -1
- package/dist/commonjs/index.js +3 -3
- package/dist/commonjs/native/NativeInspector.d.ts +2 -0
- package/dist/commonjs/native/NativeInspector.js +1 -1
- package/dist/commonjs/native/NativeNetworkInspector.d.ts +2 -0
- package/dist/commonjs/styles/AppFonts.d.ts +4 -0
- package/dist/commonjs/styles/AppFonts.js +1 -1
- package/dist/commonjs/styles/index.d.ts +2 -0
- package/dist/commonjs/styles/index.js +1 -1
- package/dist/commonjs/types/enums.d.ts +0 -2
- package/dist/commonjs/types/enums.js +1 -1
- package/dist/commonjs/types/interfaces.d.ts +1 -1
- package/dist/esm/components/Inspector/ConsoleExportModal.js +1 -1
- package/dist/esm/components/Inspector/ConsoleTab.js +48 -48
- package/dist/esm/components/Inspector/FabLauncher.js +42 -42
- package/dist/esm/components/Inspector/InspectorHeader.js +50 -50
- package/dist/esm/components/Inspector/MainScreen.js +87 -124
- package/dist/esm/components/Inspector/NetworkExportModal.js +1 -1
- package/dist/esm/components/Inspector/NetworkTab.js +83 -83
- package/dist/esm/components/Inspector/SecondaryTelemetryStrip.d.ts +1 -0
- package/dist/esm/components/Inspector/SecondaryTelemetryStrip.js +23 -22
- package/dist/esm/components/Inspector/SettingsPanel.js +106 -107
- package/dist/esm/components/Inspector/SkeletonPlaceholder.d.ts +3 -0
- package/dist/esm/components/Inspector/SkeletonPlaceholder.js +42 -11
- package/dist/esm/components/Inspector/TabBar.js +35 -41
- package/dist/esm/components/LogCard.js +53 -53
- package/dist/esm/components/SkeletonPlaceholder.d.ts +3 -0
- package/dist/esm/components/SkeletonPlaceholder.js +42 -11
- package/dist/esm/constants/telemetryConfig.d.ts +3 -3
- package/dist/esm/constants/telemetryConfig.js +1 -1
- package/dist/esm/constants/version.d.ts +1 -1
- package/dist/esm/constants/version.js +1 -1
- package/dist/esm/helpers/remoteConfig.js +1 -1
- package/dist/esm/helpers/shareFormatter.js +14 -14
- package/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.js +8 -8
- package/dist/esm/native/NativeInspector.d.ts +2 -0
- package/dist/esm/native/NativeInspector.js +1 -1
- package/dist/esm/native/NativeNetworkInspector.d.ts +2 -0
- package/dist/esm/styles/AppFonts.d.ts +4 -0
- package/dist/esm/styles/AppFonts.js +1 -1
- package/dist/esm/styles/index.d.ts +2 -0
- package/dist/esm/styles/index.js +1 -1
- package/dist/esm/types/enums.d.ts +0 -2
- package/dist/esm/types/enums.js +1 -1
- package/dist/esm/types/interfaces.d.ts +1 -1
- package/ios/NetworkInspectorModule.mm +288 -325
- package/package.json +1 -1
- package/src/native/NativeInspector.ts +30 -0
- package/src/native/NativeNetworkInspector.ts +2 -0
- package/android/.gradle/8.9/checksums/checksums.lock +0 -0
- package/android/.gradle/8.9/dependencies-accessors/gc.properties +0 -0
- package/android/.gradle/8.9/executionHistory/executionHistory.lock +0 -0
- package/android/.gradle/8.9/fileChanges/last-build.bin +0 -0
- package/android/.gradle/8.9/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/8.9/gc.properties +0 -0
- package/android/.gradle/9.2.0/checksums/checksums.lock +0 -0
- package/android/.gradle/9.2.0/fileChanges/last-build.bin +0 -0
- package/android/.gradle/9.2.0/fileHashes/fileHashes.bin +0 -0
- package/android/.gradle/9.2.0/fileHashes/fileHashes.lock +0 -0
- package/android/.gradle/9.2.0/gc.properties +0 -0
- package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
- package/android/.gradle/buildOutputCleanup/cache.properties +0 -2
- package/android/.gradle/vcs-1/gc.properties +0 -0
- package/android/.settings/org.eclipse.buildship.core.prefs +0 -13
- package/dist/commonjs/components/Inspector/BoxModelVisualizer.d.ts +0 -8
- package/dist/commonjs/components/Inspector/BoxModelVisualizer.js +0 -76
- package/dist/commonjs/components/Inspector/DebuggingTab.d.ts +0 -3
- package/dist/commonjs/components/Inspector/DebuggingTab.js +0 -197
- package/dist/commonjs/components/Inspector/UiA11yAuditPanel.d.ts +0 -7
- package/dist/commonjs/components/Inspector/UiA11yAuditPanel.js +0 -97
- package/dist/commonjs/components/Inspector/UiInspectorDetail.d.ts +0 -2
- package/dist/commonjs/components/Inspector/UiInspectorDetail.js +0 -485
- package/dist/commonjs/components/Inspector/UiInspectorOverlay.d.ts +0 -2
- package/dist/commonjs/components/Inspector/UiInspectorOverlay.js +0 -199
- package/dist/commonjs/components/Inspector/UiInspectorTab.d.ts +0 -2
- package/dist/commonjs/components/Inspector/UiInspectorTab.js +0 -117
- package/dist/commonjs/components/Inspector/UiLiveStyleTweaker.d.ts +0 -10
- package/dist/commonjs/components/Inspector/UiLiveStyleTweaker.js +0 -148
- package/dist/commonjs/components/Inspector/index.d.ts +0 -28
- package/dist/commonjs/components/Inspector/index.js +0 -1
- package/dist/commonjs/customHooks/uiInspectorManager.d.ts +0 -22
- package/dist/commonjs/customHooks/uiInspectorManager.js +0 -1
- package/dist/commonjs/helpers/uiInspectorEngine.d.ts +0 -62
- package/dist/commonjs/helpers/uiInspectorEngine.js +0 -19
- package/dist/esm/components/Inspector/BoxModelVisualizer.d.ts +0 -8
- package/dist/esm/components/Inspector/BoxModelVisualizer.js +0 -76
- package/dist/esm/components/Inspector/DebuggingTab.d.ts +0 -3
- package/dist/esm/components/Inspector/DebuggingTab.js +0 -197
- package/dist/esm/components/Inspector/UiA11yAuditPanel.d.ts +0 -7
- package/dist/esm/components/Inspector/UiA11yAuditPanel.js +0 -97
- package/dist/esm/components/Inspector/UiInspectorDetail.d.ts +0 -2
- package/dist/esm/components/Inspector/UiInspectorDetail.js +0 -422
- package/dist/esm/components/Inspector/UiInspectorOverlay.d.ts +0 -2
- package/dist/esm/components/Inspector/UiInspectorOverlay.js +0 -138
- package/dist/esm/components/Inspector/UiInspectorTab.d.ts +0 -2
- package/dist/esm/components/Inspector/UiInspectorTab.js +0 -117
- package/dist/esm/components/Inspector/UiLiveStyleTweaker.d.ts +0 -10
- package/dist/esm/components/Inspector/UiLiveStyleTweaker.js +0 -148
- package/dist/esm/components/Inspector/index.d.ts +0 -28
- package/dist/esm/components/Inspector/index.js +0 -1
- package/dist/esm/customHooks/uiInspectorManager.d.ts +0 -22
- package/dist/esm/customHooks/uiInspectorManager.js +0 -1
- package/dist/esm/helpers/uiInspectorEngine.d.ts +0 -48
- package/dist/esm/helpers/uiInspectorEngine.js +0 -19
package/README.md
CHANGED
|
@@ -606,13 +606,5 @@ Contributions are warmly welcomed! Please check out [CONTRIBUTING.md](CONTRIBUTI
|
|
|
606
606
|
|
|
607
607
|
## 📄 License
|
|
608
608
|
|
|
609
|
-
| 🇸🇪 🇳🇴 🇩🇰 🇫🇮 | **Nordic Countries (Sweden, Norway, Denmark, Finland)** | Nätverkslogg Sverige, felsökare React Native, utvecklarverktyg React Native, mobildebuggning. |
|
|
610
|
-
| 🇮🇱 | **Israel** | מנפה שגיאות ריאקט נייטיב, ניטור רשת מובייל, כלי פיתוח מובייל, לוכד תעבורת רשת. |
|
|
611
|
-
| 🇿🇦 🇳🇬 🇰🇪 | **Sub-Saharan Africa (South Africa, Nigeria, Kenya)** | React Native Nigeria, React Native South Africa, mobile debugging Kenya, in-app inspector Africa. |
|
|
612
|
-
|
|
613
|
-
---
|
|
614
|
-
|
|
615
|
-
## 📄 License
|
|
616
|
-
|
|
617
609
|
MIT © [vengatmacuser](LICENSE)
|
|
618
610
|
|
|
@@ -197,37 +197,22 @@ class NetworkInspectorModule(private val reactContext: ReactApplicationContext)
|
|
|
197
197
|
|
|
198
198
|
defaultHandler = Thread.getDefaultUncaughtExceptionHandler()
|
|
199
199
|
|
|
200
|
-
// 1. Intercept all uncaught exceptions
|
|
200
|
+
// 1. Intercept all uncaught exceptions
|
|
201
201
|
Thread.setDefaultUncaughtExceptionHandler { thread, throwable ->
|
|
202
202
|
try {
|
|
203
203
|
handleNativeCrash(thread, throwable)
|
|
204
204
|
} catch (e: Exception) {
|
|
205
205
|
Log.e(TAG, "Error in native crash handler", e)
|
|
206
206
|
}
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
try {
|
|
212
|
-
android.os.Handler(android.os.Looper.getMainLooper()).post {
|
|
213
|
-
while (true) {
|
|
214
|
-
try {
|
|
215
|
-
android.os.Looper.loop()
|
|
216
|
-
} catch (e: Throwable) {
|
|
217
|
-
try {
|
|
218
|
-
handleNativeCrash(Thread.currentThread(), e)
|
|
219
|
-
} catch (ex: Exception) {
|
|
220
|
-
Log.e(TAG, "Error in Main Looper crash protection", ex)
|
|
221
|
-
}
|
|
222
|
-
}
|
|
223
|
-
}
|
|
207
|
+
try {
|
|
208
|
+
defaultHandler?.uncaughtException(thread, throwable)
|
|
209
|
+
} catch (e: Exception) {
|
|
210
|
+
Log.e(TAG, "Error delegating to default handler", e)
|
|
224
211
|
}
|
|
225
|
-
} catch (e: Exception) {
|
|
226
|
-
Log.w(TAG, "Failed to start Looper crash protection", e)
|
|
227
212
|
}
|
|
228
213
|
|
|
229
214
|
isProtectionEnabled = true
|
|
230
|
-
Log.i(TAG, "Native Android Crash
|
|
215
|
+
Log.i(TAG, "Native Android Crash Protection enabled")
|
|
231
216
|
}
|
|
232
217
|
|
|
233
218
|
private fun handleNativeCrash(thread: Thread, throwable: Throwable) {
|
|
@@ -251,6 +236,22 @@ class NetworkInspectorModule(private val reactContext: ReactApplicationContext)
|
|
|
251
236
|
.getJSModule(DeviceEventManagerModule.RCTDeviceEventEmitter::class.java)
|
|
252
237
|
.emit("onNativeCrash", params)
|
|
253
238
|
}
|
|
239
|
+
|
|
240
|
+
// Also persist crash to disk synchronously
|
|
241
|
+
try {
|
|
242
|
+
val crashFile = File(getCapturesDirectory(), "last_native_crash.json")
|
|
243
|
+
val json = org.json.JSONObject().apply {
|
|
244
|
+
put("platform", "android")
|
|
245
|
+
put("error", throwable.message ?: "Unknown native exception")
|
|
246
|
+
put("name", throwable.javaClass.name)
|
|
247
|
+
put("stack", stackTrace)
|
|
248
|
+
put("threadName", thread.name)
|
|
249
|
+
put("timestamp", System.currentTimeMillis())
|
|
250
|
+
}
|
|
251
|
+
FileOutputStream(crashFile).use { fos ->
|
|
252
|
+
fos.write(json.toString(2).toByteArray(Charsets.UTF_8))
|
|
253
|
+
}
|
|
254
|
+
} catch (e: Exception) {}
|
|
254
255
|
} catch (e: Exception) {
|
|
255
256
|
Log.e(TAG, "Failed to emit onNativeCrash to JS", e)
|
|
256
257
|
}
|
|
@@ -266,6 +267,43 @@ class NetworkInspectorModule(private val reactContext: ReactApplicationContext)
|
|
|
266
267
|
}
|
|
267
268
|
}
|
|
268
269
|
|
|
270
|
+
@ReactMethod
|
|
271
|
+
fun getLastNativeCrash(promise: Promise) {
|
|
272
|
+
try {
|
|
273
|
+
val crashFile = File(getCapturesDirectory(), "last_native_crash.json")
|
|
274
|
+
if (crashFile.exists()) {
|
|
275
|
+
val jsonStr = crashFile.readText(Charsets.UTF_8)
|
|
276
|
+
val jsonObj = org.json.JSONObject(jsonStr)
|
|
277
|
+
val map = Arguments.createMap().apply {
|
|
278
|
+
putString("platform", jsonObj.optString("platform", "android"))
|
|
279
|
+
putString("error", jsonObj.optString("error", ""))
|
|
280
|
+
putString("name", jsonObj.optString("name", ""))
|
|
281
|
+
putString("stack", jsonObj.optString("stack", ""))
|
|
282
|
+
putString("threadName", jsonObj.optString("threadName", ""))
|
|
283
|
+
putDouble("timestamp", jsonObj.optDouble("timestamp", 0.0))
|
|
284
|
+
}
|
|
285
|
+
promise.resolve(map)
|
|
286
|
+
} else {
|
|
287
|
+
promise.resolve(null)
|
|
288
|
+
}
|
|
289
|
+
} catch (e: Exception) {
|
|
290
|
+
promise.reject("GET_CRASH_ERROR", e.message, e)
|
|
291
|
+
}
|
|
292
|
+
}
|
|
293
|
+
|
|
294
|
+
@ReactMethod
|
|
295
|
+
fun clearLastNativeCrash(promise: Promise) {
|
|
296
|
+
try {
|
|
297
|
+
val crashFile = File(getCapturesDirectory(), "last_native_crash.json")
|
|
298
|
+
if (crashFile.exists()) {
|
|
299
|
+
crashFile.delete()
|
|
300
|
+
}
|
|
301
|
+
promise.resolve(true)
|
|
302
|
+
} catch (e: Exception) {
|
|
303
|
+
promise.reject("CLEAR_CRASH_ERROR", e.message, e)
|
|
304
|
+
}
|
|
305
|
+
}
|
|
306
|
+
|
|
269
307
|
@ReactMethod
|
|
270
308
|
fun getDeviceMetrics(promise: Promise) {
|
|
271
309
|
try {
|
|
@@ -398,7 +436,10 @@ class NetworkInspectorModule(private val reactContext: ReactApplicationContext)
|
|
|
398
436
|
val sizeDp = if (options != null && options.hasKey("size")) options.getDouble("size").toFloat() else 64f
|
|
399
437
|
val sizePx = (sizeDp * density).toInt()
|
|
400
438
|
|
|
401
|
-
if (floatingButton == null) {
|
|
439
|
+
if (floatingButton == null || floatingButton?.context != activity) {
|
|
440
|
+
floatingButton?.let { oldBtn ->
|
|
441
|
+
(oldBtn.parent as? android.view.ViewGroup)?.removeView(oldBtn)
|
|
442
|
+
}
|
|
402
443
|
floatingButton = InAppInspectorFloatingView(activity) {
|
|
403
444
|
emitFloatingButtonPress()
|
|
404
445
|
}
|
|
@@ -417,7 +458,12 @@ class NetworkInspectorModule(private val reactContext: ReactApplicationContext)
|
|
|
417
458
|
floatingButton?.y = initialY
|
|
418
459
|
decorView.addView(floatingButton, params)
|
|
419
460
|
} else {
|
|
420
|
-
|
|
461
|
+
val currentParent = floatingButton?.parent as? android.view.ViewGroup
|
|
462
|
+
if (currentParent == null) {
|
|
463
|
+
val params = android.widget.FrameLayout.LayoutParams(sizePx, sizePx)
|
|
464
|
+
decorView.addView(floatingButton, params)
|
|
465
|
+
} else if (currentParent != decorView) {
|
|
466
|
+
currentParent.removeView(floatingButton)
|
|
421
467
|
val params = android.widget.FrameLayout.LayoutParams(sizePx, sizePx)
|
|
422
468
|
decorView.addView(floatingButton, params)
|
|
423
469
|
} else {
|
|
@@ -839,7 +885,25 @@ class NetworkInspectorModule(private val reactContext: ReactApplicationContext)
|
|
|
839
885
|
}
|
|
840
886
|
|
|
841
887
|
private fun getActiveWindow(): Window? {
|
|
842
|
-
|
|
888
|
+
val activity = reactContext.currentActivity
|
|
889
|
+
if (activity == null || activity.isFinishing || (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1 && activity.isDestroyed)) {
|
|
890
|
+
return null
|
|
891
|
+
}
|
|
892
|
+
return activity.window
|
|
893
|
+
}
|
|
894
|
+
|
|
895
|
+
private fun getOrCreateCaptureHandler(): Handler {
|
|
896
|
+
synchronized(this) {
|
|
897
|
+
val handler = captureBackgroundHandler
|
|
898
|
+
if (handler != null && captureHandlerThread?.isAlive == true) {
|
|
899
|
+
return handler
|
|
900
|
+
}
|
|
901
|
+
val thread = HandlerThread("InAppInspector-PixelCopy").apply { start() }
|
|
902
|
+
captureHandlerThread = thread
|
|
903
|
+
val newHandler = Handler(thread.looper)
|
|
904
|
+
captureBackgroundHandler = newHandler
|
|
905
|
+
return newHandler
|
|
906
|
+
}
|
|
843
907
|
}
|
|
844
908
|
|
|
845
909
|
private fun captureWindowBitmap(window: Window?, scale: Float, callback: (Bitmap?) -> Unit) {
|
|
@@ -861,9 +925,12 @@ class NetworkInspectorModule(private val reactContext: ReactApplicationContext)
|
|
|
861
925
|
|
|
862
926
|
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
|
|
863
927
|
val destBitmap = Bitmap.createBitmap(targetWidth, targetHeight, Bitmap.Config.ARGB_8888)
|
|
864
|
-
val copyHandler =
|
|
928
|
+
val copyHandler = getOrCreateCaptureHandler()
|
|
865
929
|
try {
|
|
866
|
-
|
|
930
|
+
val srcRect = if (decorView.width > 0 && decorView.height > 0) {
|
|
931
|
+
android.graphics.Rect(0, 0, decorView.width, decorView.height)
|
|
932
|
+
} else null
|
|
933
|
+
PixelCopy.request(targetWindow, srcRect, destBitmap, { copyResult ->
|
|
867
934
|
if (copyResult == PixelCopy.SUCCESS) {
|
|
868
935
|
callback(destBitmap)
|
|
869
936
|
} else {
|
|
@@ -2275,11 +2342,17 @@ class NetworkInspectorModule(private val reactContext: ReactApplicationContext)
|
|
|
2275
2342
|
addFlags(Intent.FLAG_GRANT_READ_URI_PERMISSION)
|
|
2276
2343
|
}
|
|
2277
2344
|
|
|
2278
|
-
|
|
2279
|
-
|
|
2280
|
-
|
|
2281
|
-
|
|
2282
|
-
|
|
2345
|
+
try {
|
|
2346
|
+
val resInfoList = activity.packageManager.queryIntentActivities(chooser, android.content.pm.PackageManager.MATCH_DEFAULT_ONLY)
|
|
2347
|
+
for (resolveInfo in resInfoList) {
|
|
2348
|
+
val packageName = resolveInfo.activityInfo?.packageName
|
|
2349
|
+
if (!packageName.isNullOrEmpty()) {
|
|
2350
|
+
try {
|
|
2351
|
+
activity.grantUriPermission(packageName, uri, Intent.FLAG_GRANT_READ_URI_PERMISSION)
|
|
2352
|
+
} catch (e: Exception) {}
|
|
2353
|
+
}
|
|
2354
|
+
}
|
|
2355
|
+
} catch (e: Exception) {}
|
|
2283
2356
|
|
|
2284
2357
|
activity.startActivity(chooser)
|
|
2285
2358
|
promise.resolve(true)
|
|
@@ -2301,11 +2374,25 @@ class NetworkInspectorModule(private val reactContext: ReactApplicationContext)
|
|
|
2301
2374
|
override fun invalidate() {
|
|
2302
2375
|
super.invalidate()
|
|
2303
2376
|
try {
|
|
2377
|
+
reactContext.removeActivityEventListener(activityEventListener)
|
|
2304
2378
|
sensorManager?.unregisterListener(shakeListener)
|
|
2305
2379
|
if (isFpsMonitoring) {
|
|
2306
2380
|
isFpsMonitoring = false
|
|
2307
2381
|
android.view.Choreographer.getInstance().removeFrameCallback(frameCallback)
|
|
2308
2382
|
}
|
|
2383
|
+
if (isRecordingVideo) {
|
|
2384
|
+
isRecordingVideo = false
|
|
2385
|
+
recordingTimer?.cancel()
|
|
2386
|
+
recordingTimer = null
|
|
2387
|
+
isFrameCapturing.set(false)
|
|
2388
|
+
}
|
|
2389
|
+
captureHandlerThread?.quitSafely()
|
|
2390
|
+
captureHandlerThread = null
|
|
2391
|
+
captureBackgroundHandler = null
|
|
2392
|
+
synchronized(recordedFrames) {
|
|
2393
|
+
recordedFrames.forEach { it.recycle() }
|
|
2394
|
+
recordedFrames.clear()
|
|
2395
|
+
}
|
|
2309
2396
|
floatingButton?.let { btn ->
|
|
2310
2397
|
val parent = btn.parent as? android.view.ViewGroup
|
|
2311
2398
|
parent?.post {
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(i,r,a,l){l===void 0&&(l=a);var t=Object.getOwnPropertyDescriptor(r,a);(!t||("get"in t?!r.__esModule:t.writable||t.configurable))&&(t={enumerable:!0,get:function(){return r[a]}}),Object.defineProperty(i,l,t)}):(function(i,r,a,l){l===void 0&&(l=a),i[l]=r[a]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(i,r){Object.defineProperty(i,"default",{enumerable:!0,value:r})}):function(i,r){i.default=r}),__importStar=this&&this.__importStar||(function(){var i=function(r){return i=Object.getOwnPropertyNames||function(a){var l=[];for(var t in a)Object.prototype.hasOwnProperty.call(a,t)&&(l[l.length]=t);return l},i(r)};return function(r){if(r&&r.__esModule)return r;var a={};if(r!=null)for(var l=i(r),t=0;t<l.length;t++)l[t]!=="default"&&__createBinding(a,r,l[t]);return __setModuleDefault(a,r),a}})(),__importDefault=this&&this.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.ConsoleExportModal=void 0;const react_1=__importStar(require("react")),react_native_1=require("react-native"),TouchableScale_1=__importDefault(require("../TouchableScale")),AppColors_1=require("../../styles/AppColors"),AppFonts_1=require("../../styles/AppFonts"),NetworkIcons_1=require("../NetworkIcons"),NativeInspector_1=require("../../native/NativeInspector"),helpers_1=require("../../helpers"),shareFormatter_1=require("../../helpers/shareFormatter"),i18n_1=require("../../i18n"),ConsoleExportModal=({visible:i,onClose:r,filteredLogs:a,allLogs:l})=>{const{t}=(0,i18n_1.useTranslation)(),[T,B]=(0,react_1.useState)("config"),[y,q]=(0,react_1.useState)("filtered"),[v,G]=(0,react_1.useState)("info"),[s,L]=(0,react_1.useState)("all"),[E,U]=(0,react_1.useState)("50"),[_,K]=(0,react_1.useState)(""),[c,J]=(0,react_1.useState)("txt"),[P,X]=(0,react_1.useState)(!
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(i,r,a,l){l===void 0&&(l=a);var t=Object.getOwnPropertyDescriptor(r,a);(!t||("get"in t?!r.__esModule:t.writable||t.configurable))&&(t={enumerable:!0,get:function(){return r[a]}}),Object.defineProperty(i,l,t)}):(function(i,r,a,l){l===void 0&&(l=a),i[l]=r[a]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(i,r){Object.defineProperty(i,"default",{enumerable:!0,value:r})}):function(i,r){i.default=r}),__importStar=this&&this.__importStar||(function(){var i=function(r){return i=Object.getOwnPropertyNames||function(a){var l=[];for(var t in a)Object.prototype.hasOwnProperty.call(a,t)&&(l[l.length]=t);return l},i(r)};return function(r){if(r&&r.__esModule)return r;var a={};if(r!=null)for(var l=i(r),t=0;t<l.length;t++)l[t]!=="default"&&__createBinding(a,r,l[t]);return __setModuleDefault(a,r),a}})(),__importDefault=this&&this.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.ConsoleExportModal=void 0;const react_1=__importStar(require("react")),react_native_1=require("react-native"),TouchableScale_1=__importDefault(require("../TouchableScale")),AppColors_1=require("../../styles/AppColors"),AppFonts_1=require("../../styles/AppFonts"),NetworkIcons_1=require("../NetworkIcons"),NativeInspector_1=require("../../native/NativeInspector"),helpers_1=require("../../helpers"),shareFormatter_1=require("../../helpers/shareFormatter"),i18n_1=require("../../i18n"),ConsoleExportModal=({visible:i,onClose:r,filteredLogs:a,allLogs:l})=>{const{t}=(0,i18n_1.useTranslation)(),[T,B]=(0,react_1.useState)("config"),[y,q]=(0,react_1.useState)("filtered"),[v,G]=(0,react_1.useState)("info"),[s,L]=(0,react_1.useState)("all"),[E,U]=(0,react_1.useState)("50"),[_,K]=(0,react_1.useState)(""),[c,J]=(0,react_1.useState)("txt"),[P,X]=(0,react_1.useState)(!0),[O,Z]=(0,react_1.useState)(!0),[M,Q]=(0,react_1.useState)(!0),[W,Y]=(0,react_1.useState)(!0),[N,ee]=(0,react_1.useState)(!0),[ie,j]=(0,react_1.useState)(0),[le,$]=(0,react_1.useState)(0),[x,te]=(0,react_1.useState)(""),[p,oe]=(0,react_1.useState)(""),[ae,re]=(0,react_1.useState)(0),A=(0,react_1.useRef)(new react_native_1.Animated.Value(0)).current,k=(0,react_1.useRef)(new react_native_1.Animated.Value(1)).current,h=(0,react_1.useMemo)(()=>{if(!_||_.trim().length===0)return{isValid:!0,error:null,regex:null};try{return{isValid:!0,error:null,regex:new RegExp(_.trim(),"i")}}catch(e){return{isValid:!1,error:e?.message||"Invalid pattern",regex:null}}},[_]),I=(0,react_1.useMemo)(()=>({includeStackTrace:P,includeArguments:O,includeCaller:M,includeTimestamps:W,includeAppInfo:N,includeDuplicates:!1,ignorePattern:s==="custom"&&h.isValid?_.trim():void 0}),[P,O,M,W,N,s,h.isValid,_]);(0,react_1.useEffect)(()=>{if(T==="progress"){const e=react_native_1.Animated.loop(react_native_1.Animated.sequence([react_native_1.Animated.timing(k,{toValue:1.05,duration:600,easing:react_native_1.Easing.inOut(react_native_1.Easing.ease),useNativeDriver:!0}),react_native_1.Animated.timing(k,{toValue:1,duration:600,easing:react_native_1.Easing.inOut(react_native_1.Easing.ease),useNativeDriver:!0})]));return e.start(),()=>e.stop()}},[T,k]),(0,react_1.useEffect)(()=>{i&&(B("config"),L("all"),G("info"),J("txt"),U("50"),K(""),X(!1),Z(!1),Q(!1),Y(!1),ee(!1),j(0),$(0),te(""),oe(""),re(0),A.setValue(0))},[i,A]);const b=(0,react_1.useMemo)(()=>y==="filtered"?a:l,[y,a,l]),F=(0,react_1.useMemo)(()=>v==="all"?b:b.filter(e=>v==="info"?e.type==="info"||e.sourceMethod==="log"||e.sourceMethod==="info":v==="warn"?e.type==="warn":v==="error"?e.type==="error":!0),[b,v]),R=(0,react_1.useMemo)(()=>{let e=0,o=0,C=0;return b.forEach(w=>{w.type==="error"?C++:w.type==="warn"?o++:e++}),{all:b.length,info:e,warn:o,error:C}},[b]),{selectedLogs:n,ignoredCount:z}=(0,react_1.useMemo)(()=>{if(F.length===0)return{selectedLogs:[],ignoredCount:0};let o=F,C=0;if(s==="custom"&&h.regex){const m=h.regex,H=o.length;o=o.filter(S=>{const ge=S.message||"",ue=S.rawArgs?JSON.stringify(S.rawArgs):"",fe=S.caller||"";return!m.test(ge)&&!m.test(ue)&&!m.test(fe)}),C=H-o.length}let w=o.length;if(s==="all")w=o.length;else if(s==="custom"){const m=parseInt(E,10);w=isNaN(m)||m<=0?o.length:Math.min(m,o.length)}return{selectedLogs:o.slice(-w),ignoredCount:C}},[F,s,E,h.regex]),D=(0,react_1.useMemo)(()=>(0,shareFormatter_1.estimateConsoleLogsExportSize)(n,c,I),[n,c,I]),V=e=>e<=0?"0 KB":e<1024?`${(e/1024).toFixed(2)} KB`:e<1024*1024?`${(e/1024).toFixed(1)} KB`:`${(e/(1024*1024)).toFixed(2)} MB`,ne=(0,react_1.useCallback)(()=>{if(n.length===0){(0,helpers_1.showToast)(t("console.noLogsToExport","No logs available to export"));return}(0,NativeInspector_1.triggerNativeHaptic)("medium"),B("progress"),j(0),$(0),A.setValue(0);const e=n.length,o=Math.max(1,Math.floor(e/10));let C=0;const w=setInterval(()=>{C=Math.min(C+o,e);const m=C/e;j(Math.round(m*100)),$(C),react_native_1.Animated.timing(A,{toValue:m,duration:120,easing:react_native_1.Easing.linear,useNativeDriver:!1}).start(),C>=e&&(clearInterval(w),setTimeout(()=>{const H=(0,shareFormatter_1.formatConsoleLogsExport)(n,c,I),S=(0,shareFormatter_1.generateConsoleLogsFilename)(c);te(H),oe(S),re(H.length),B("complete"),(0,NativeInspector_1.triggerNativeHaptic)("heavy")},180))},45)},[n,c,I,A,t]),se=(0,react_1.useCallback)(async()=>{if(x){(0,NativeInspector_1.triggerNativeHaptic)("light");try{const e=await(0,NativeInspector_1.writeNativeExportFile)(p,x);if(e&&await(0,NativeInspector_1.shareNativeFile)(e,"text/plain",p))return;await react_native_1.Share.share({title:p,message:x,url:e||void 0},{dialogTitle:`Share ${p}`,subject:p})}catch(e){e?.message!=="User did not share"&&(0,helpers_1.showToast)(e?.message||"Failed to open share sheet")}}},[x,p,c]),ce=(0,react_1.useCallback)(async()=>{if(x){(0,NativeInspector_1.triggerNativeHaptic)("medium");try{const e=await(0,NativeInspector_1.writeNativeExportFile)(p,x);if(e&&await(0,NativeInspector_1.shareNativeFile)(e,"text/plain",`Save ${p}`)){(0,helpers_1.showToast)(t("console.savePromptOpened","Opened save to disk dialog"));return}await react_native_1.Share.share({title:`Save ${p}`,message:x,url:e||void 0},{dialogTitle:`Save to Disk (${p})`,subject:p}),(0,helpers_1.showToast)(t("console.savePromptOpened","Opened save to disk dialog"))}catch(e){e?.message!=="User did not share"&&(0,helpers_1.showToast)(e?.message||"Save error")}}},[x,p,c,t]),pe=(0,react_1.useCallback)(()=>{x&&((0,NativeInspector_1.triggerNativeHaptic)("light"),(0,helpers_1.copyToClipboard)(x,"Console Logs"),(0,helpers_1.showToast)(t("console.copiedLogs","Logs copied to clipboard!")))},[x,t]),de=a.length!==l.length;return<react_native_1.Modal visible={i}transparent animationType="slide"onRequestClose={r}>
|
|
2
2
|
<react_native_1.View style={styles.overlay}>
|
|
3
3
|
<react_native_1.Pressable style={styles.backdrop}onPress={r}/>
|
|
4
4
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(t,o,l,n){n===void 0&&(n=l);var a=Object.getOwnPropertyDescriptor(o,l);(!a||("get"in a?!o.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return o[l]}}),Object.defineProperty(t,n,a)}):(function(t,o,l,n){n===void 0&&(n=l),t[n]=o[l]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(t,o){Object.defineProperty(t,"default",{enumerable:!0,value:o})}):function(t,o){t.default=o}),__importStar=this&&this.__importStar||(function(){var t=function(o){return t=Object.getOwnPropertyNames||function(l){var n=[];for(var a in l)Object.prototype.hasOwnProperty.call(l,a)&&(n[n.length]=a);return n},t(o)};return function(o){if(o&&o.__esModule)return o;var l={};if(o!=null)for(var n=t(o),a=0;a<n.length;a++)n[a]!=="default"&&__createBinding(l,o,n[a]);return __setModuleDefault(l,o),l}})(),__importDefault=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0});const react_1=__importStar(require("react")),react_native_1=require("react-native"),InspectorContext_1=require("./InspectorContext"),i18n_1=require("../../i18n"),TouchableScale_1=__importDefault(require("../TouchableScale")),AnimatedEntrance_1=__importDefault(require("../AnimatedEntrance")),ConsoleLogCard_1=require("../ConsoleLogCard"),EmptyState_1=__importDefault(require("../EmptyState")),EndOfListFooter_1=__importDefault(require("../EndOfListFooter")),ConsoleExportModal_1=__importDefault(require("./ConsoleExportModal")),styles_1=__importDefault(require("../../styles")),AppColors_1=require("../../styles/AppColors"),AppFonts_1=require("../../styles/AppFonts"),types_1=require("../../types"),NetworkIcons_1=require("../NetworkIcons"),LOAD_MORE_STEP=10,ConsoleTab=react_1.default.memo(()=>{const{t}=(0,i18n_1.useTranslation)(),{logSearch:o,setLogSearch:l,logSortOrder:n,setLogSortOrder:a,handleDelete:B,logFilters:i,setLogFilters:A,logCounts:_,filteredConsoleLogs:c,visibleConsoleLogs:
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(t,o,l,n){n===void 0&&(n=l);var a=Object.getOwnPropertyDescriptor(o,l);(!a||("get"in a?!o.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return o[l]}}),Object.defineProperty(t,n,a)}):(function(t,o,l,n){n===void 0&&(n=l),t[n]=o[l]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(t,o){Object.defineProperty(t,"default",{enumerable:!0,value:o})}):function(t,o){t.default=o}),__importStar=this&&this.__importStar||(function(){var t=function(o){return t=Object.getOwnPropertyNames||function(l){var n=[];for(var a in l)Object.prototype.hasOwnProperty.call(l,a)&&(n[n.length]=a);return n},t(o)};return function(o){if(o&&o.__esModule)return o;var l={};if(o!=null)for(var n=t(o),a=0;a<n.length;a++)n[a]!=="default"&&__createBinding(l,o,n[a]);return __setModuleDefault(l,o),l}})(),__importDefault=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0});const react_1=__importStar(require("react")),react_native_1=require("react-native"),InspectorContext_1=require("./InspectorContext"),i18n_1=require("../../i18n"),TouchableScale_1=__importDefault(require("../TouchableScale")),AnimatedEntrance_1=__importDefault(require("../AnimatedEntrance")),ConsoleLogCard_1=require("../ConsoleLogCard"),EmptyState_1=__importDefault(require("../EmptyState")),EndOfListFooter_1=__importDefault(require("../EndOfListFooter")),ConsoleExportModal_1=__importDefault(require("./ConsoleExportModal")),styles_1=__importDefault(require("../../styles")),AppColors_1=require("../../styles/AppColors"),AppFonts_1=require("../../styles/AppFonts"),types_1=require("../../types"),NetworkIcons_1=require("../NetworkIcons"),LOAD_MORE_STEP=10,ConsoleTab=react_1.default.memo(()=>{const{t}=(0,i18n_1.useTranslation)(),{logSearch:o,setLogSearch:l,logSortOrder:n,setLogSortOrder:a,handleDelete:B,logFilters:i,setLogFilters:A,logCounts:_,filteredConsoleLogs:c,visibleConsoleLogs:w,maxConsoleLogs:b,setSelectedLog:I,selectedConsoleLogs:S,toggleSelectConsoleLog:x}=(0,InspectorContext_1.useInspector)(),P=b||100,v=(0,react_1.useRef)(null),[L,V]=react_1.default.useState(P),[O,F]=react_1.default.useState(!1);react_1.default.useEffect(()=>{V(b||100),v.current?.scrollToOffset({offset:0,animated:!1})},[o,i,b]);const m=(0,react_1.useMemo)(()=>c.slice(0,L),[c,L]),E=(0,react_1.useCallback)(e=>{I(e)},[I]),M=(0,react_1.useCallback)(({item:e,index:r})=><AnimatedEntrance_1.default index={r}distance={8}>
|
|
2
2
|
<ConsoleLogCard_1.ConsoleLogCard testID={`inspector.console.item.${r}`}item={e}searchStr={o}onPress={E}isSelected={S.has(e.id)}onToggleSelect={x}/>
|
|
3
|
-
</AnimatedEntrance_1.default>,[o,E,S,x]),D=(0,react_1.useCallback)((e,r)=>
|
|
3
|
+
</AnimatedEntrance_1.default>,[o,E,S,x]),D=(0,react_1.useCallback)((e,r)=>e?.id?.toString()??r.toString(),[]),H=(0,react_1.useMemo)(()=>{const e=w.length,r=c.length;if(i.has("all")||!Array.from(i).some(h=>h!=="all"))return<react_native_1.View style={{paddingHorizontal:8,paddingTop:8,paddingBottom:3}}>
|
|
4
4
|
<react_native_1.Text style={{fontFamily:AppFonts_1.AppFonts.interMedium,fontSize:11,color:AppColors_1.AppColors.grayTextWeak,letterSpacing:.2}}>
|
|
5
5
|
{r===e?`Showing ${e} logs`:`Showing ${r} of ${e} logs`}
|
|
6
6
|
</react_native_1.Text>
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
<react_native_1.Text style={{fontFamily:AppFonts_1.AppFonts.interMedium,fontSize:11,color:AppColors_1.AppColors.grayTextWeak,letterSpacing:.2}}>
|
|
9
9
|
Filtered by {h.join(", ")} ({r} of {e} logs)
|
|
10
10
|
</react_native_1.Text>
|
|
11
|
-
</react_native_1.View>}},[
|
|
11
|
+
</react_native_1.View>}},[w.length,c.length,i]),[T,z]=react_1.default.useState(!1),$=(0,react_1.useMemo)(()=>["[AXIOS]","[API]","[GRAPHQL]","[REDUX]","[ANALYTICS]","[AUTH]","[NAV]","[STORAGE]","[PERF]","[WS]","[PUSH]","[PAYMENT]","[SYNC]","[BLE]","[LOCATION]","[TEST]","[DEBUG]"],[]),R=(0,react_1.useMemo)(()=>[{id:types_1.LogFilter.All,label:t("common.all","All"),count:_.all?.split("/")?.[0]??"0",color:AppColors_1.AppColors.purple,Icon:NetworkIcons_1.LayersIcon},{id:types_1.LogFilter.UserLog,label:t("console.log","Log"),count:_["user-log"]?.split("/")?.[0]??"0",color:AppColors_1.AppColors.teal600,Icon:NetworkIcons_1.UserIcon},{id:types_1.LogFilter.Info,label:t("console.info","Info"),count:_.info?.split("/")?.[0]??"0",color:AppColors_1.AppColors.sky600,Icon:NetworkIcons_1.InfoCircleIcon},{id:types_1.LogFilter.Warn,label:t("console.warning","Warn"),count:_.warn?.split("/")?.[0]??"0",color:AppColors_1.AppColors.amber600,Icon:NetworkIcons_1.WarningTriangleIcon},{id:types_1.LogFilter.Error,label:t("console.error","Error"),count:_.error?.split("/")?.[0]??"0",color:AppColors_1.AppColors.errorColor,Icon:NetworkIcons_1.ErrorCircleIcon},{id:types_1.LogFilter.Analytics,label:t("console.analytics","Analytics"),count:_.analytics?.split("/")?.[0]??"0",color:AppColors_1.AppColors.violet600,Icon:NetworkIcons_1.AnalyticsIcon}],[_,t]);return<react_native_1.View style={{flex:1}}>
|
|
12
12
|
<react_native_1.View style={{backgroundColor:AppColors_1.AppColors.white,borderBottomWidth:1,borderBottomColor:AppColors_1.AppColors.dividerColor,paddingBottom:6}}>
|
|
13
13
|
<react_native_1.View style={[styles_1.default.toolbarRow,{marginTop:12,marginBottom:8}]}>
|
|
14
14
|
<react_native_1.View style={[styles_1.default.searchContainer,T&&{borderColor:AppColors_1.AppColors.purple,borderWidth:1.5}]}>
|
|
@@ -46,7 +46,7 @@
|
|
|
46
46
|
|
|
47
47
|
|
|
48
48
|
{(T||o.length>0)&&<react_native_1.ScrollView horizontal showsHorizontalScrollIndicator={!1}style={{marginBottom:6,maxHeight:30}}contentContainerStyle={{paddingHorizontal:8,flexDirection:"row",alignItems:"center",gap:6}}>
|
|
49
|
-
{
|
|
49
|
+
{$.map(e=>{const r=o.includes(e);return<TouchableScale_1.default key={e}onPress={()=>{l(r?s=>s.replace(e,"").trim():s=>s?`${s} ${e}`.trim():e)}}>
|
|
50
50
|
<react_native_1.View style={{paddingHorizontal:8,paddingVertical:3,borderRadius:6,backgroundColor:r?AppColors_1.AppColors.purple:`${AppColors_1.AppColors.purple}14`,borderWidth:1,borderColor:r?AppColors_1.AppColors.purple:`${AppColors_1.AppColors.purple}30`}}>
|
|
51
51
|
<react_native_1.Text style={{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:10,color:r?AppColors_1.AppColors.white:AppColors_1.AppColors.purple}}>
|
|
52
52
|
{e}
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
|
|
59
59
|
<react_native_1.View style={{flexDirection:"row",alignItems:"center",marginBottom:8,paddingHorizontal:8,gap:6}}>
|
|
60
60
|
<react_native_1.ScrollView horizontal showsHorizontalScrollIndicator={!1}style={{flex:1}}contentContainerStyle={{flexDirection:"row",alignItems:"center",gap:6,paddingRight:6}}>
|
|
61
|
-
{
|
|
61
|
+
{R.map(e=>{const r=e.id==="all"?i.has("all"):i.has(e.id)&&!i.has("all"),s=e.color||AppColors_1.AppColors.purple,h=r?AppColors_1.AppColors.white:s,C=e.Icon;return<TouchableScale_1.default testID={`inspector.console.filter.${e.id}`}key={e.id}onPress={()=>{e.id==="all"?A(new Set(["all"])):A(q=>{const y=new Set(q);return y.delete("all"),y.has(e.id)?y.delete(e.id):y.add(e.id),y.size===0&&y.add("all"),y})}}>
|
|
62
62
|
<react_native_1.View style={{flexDirection:"row",alignItems:"center",paddingHorizontal:9,paddingVertical:4.5,borderRadius:8,backgroundColor:r?s:`${s}12`,borderWidth:1,borderColor:r?s:`${s}30`,gap:5}}>
|
|
63
63
|
<C size={11}color={h}/>
|
|
64
64
|
<react_native_1.Text style={{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:10.5,color:r?AppColors_1.AppColors.white:AppColors_1.AppColors.primaryBlack}}>
|
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
</react_native_1.View>
|
|
76
76
|
</react_native_1.View>
|
|
77
77
|
|
|
78
|
-
<react_native_1.FlatList ref={v}data={m}keyExtractor={
|
|
78
|
+
<react_native_1.FlatList ref={v}data={m}keyExtractor={D}ListHeaderComponent={H}renderItem={M}initialNumToRender={10}maxToRenderPerBatch={8}windowSize={5}updateCellsBatchingPeriod={40}removeClippedSubviews={!0}renderToHardwareTextureAndroid={!0}showsVerticalScrollIndicator={!1}nestedScrollEnabled={!0}ListEmptyComponent={<EmptyState_1.default isSearch={o.length>0||!i.has("all")}searchQuery={o}customTitle={o.length>0?"No matching console logs":"No console logs"}onClearSearch={()=>{l(""),A(new Set(["all"]))}}/>}ListFooterComponent={c.length>0?<EndOfListFooter_1.default count={m.length}totalCount={c.length}label="logs"loadMoreStep={LOAD_MORE_STEP}hasMore={m.length<c.length}onLoadMore={()=>V(e=>e+LOAD_MORE_STEP)}/>:null}style={{flex:1}}contentContainerStyle={[styles_1.default.listContent,{flexGrow:1}]}keyboardShouldPersistTaps="handled"/>
|
|
79
79
|
|
|
80
|
-
<ConsoleExportModal_1.default visible={O}onClose={()=>F(!1)}filteredLogs={c}allLogs={
|
|
80
|
+
<ConsoleExportModal_1.default visible={O}onClose={()=>F(!1)}filteredLogs={c}allLogs={w}/>
|
|
81
81
|
</react_native_1.View>});exports.default=ConsoleTab;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(i,o,a,s){s===void 0&&(s=a);var c=Object.getOwnPropertyDescriptor(o,a);(!c||("get"in c?!o.__esModule:c.writable||c.configurable))&&(c={enumerable:!0,get:function(){return o[a]}}),Object.defineProperty(i,s,c)}):(function(i,o,a,s){s===void 0&&(s=a),i[s]=o[a]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(i,o){Object.defineProperty(i,"default",{enumerable:!0,value:o})}):function(i,o){i.default=o}),__importStar=this&&this.__importStar||(function(){var i=function(o){return i=Object.getOwnPropertyNames||function(a){var s=[];for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(s[s.length]=c);return s},i(o)};return function(o){if(o&&o.__esModule)return o;var a={};if(o!=null)for(var s=i(o),c=0;c<s.length;c++)s[c]!=="default"&&__createBinding(a,o,s[c]);return __setModuleDefault(a,o),a}})(),__importDefault=this&&this.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(exports,"__esModule",{value:!0});const react_1=__importStar(require("react")),react_native_1=require("react-native"),react_native_linear_gradient_1=__importDefault(require("react-native-linear-gradient")),InspectorContext_1=require("./InspectorContext"),TouchableScale_1=__importDefault(require("../TouchableScale")),AppHeaderLogo_1=__importDefault(require("../AppHeaderLogo")),NetworkIcons_1=require("../NetworkIcons"),capture_1=require("../../capture"),NativeInspector_1=require("../../native/NativeInspector"),toast_1=require("../../helpers/toast"),helpers_1=require("../../helpers"),constants_1=require("../../constants"),AppColors_1=require("../../styles/AppColors"),AppFonts_1=require("../../styles/AppFonts"),styles_1=__importDefault(require("../../styles")),i18n_1=require("../../i18n"),MediaPreviewModal_1=require("./MediaPreviewModal"),FabLauncher=()=>{const{setVisible:i,isMinimized:o,setIsMinimized:a,dismissInspector:s,appIcon:c,fabPan:l,fabPanResponder:ie,fabDraggedRef:T,pulseAnim
|
|
1
|
+
"use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(i,o,a,s){s===void 0&&(s=a);var c=Object.getOwnPropertyDescriptor(o,a);(!c||("get"in c?!o.__esModule:c.writable||c.configurable))&&(c={enumerable:!0,get:function(){return o[a]}}),Object.defineProperty(i,s,c)}):(function(i,o,a,s){s===void 0&&(s=a),i[s]=o[a]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(i,o){Object.defineProperty(i,"default",{enumerable:!0,value:o})}):function(i,o){i.default=o}),__importStar=this&&this.__importStar||(function(){var i=function(o){return i=Object.getOwnPropertyNames||function(a){var s=[];for(var c in a)Object.prototype.hasOwnProperty.call(a,c)&&(s[s.length]=c);return s},i(o)};return function(o){if(o&&o.__esModule)return o;var a={};if(o!=null)for(var s=i(o),c=0;c<s.length;c++)s[c]!=="default"&&__createBinding(a,o,s[c]);return __setModuleDefault(a,o),a}})(),__importDefault=this&&this.__importDefault||function(i){return i&&i.__esModule?i:{default:i}};Object.defineProperty(exports,"__esModule",{value:!0});const react_1=__importStar(require("react")),react_native_1=require("react-native"),react_native_linear_gradient_1=__importDefault(require("react-native-linear-gradient")),InspectorContext_1=require("./InspectorContext"),TouchableScale_1=__importDefault(require("../TouchableScale")),AppHeaderLogo_1=__importDefault(require("../AppHeaderLogo")),NetworkIcons_1=require("../NetworkIcons"),capture_1=require("../../capture"),NativeInspector_1=require("../../native/NativeInspector"),toast_1=require("../../helpers/toast"),helpers_1=require("../../helpers"),constants_1=require("../../constants"),AppColors_1=require("../../styles/AppColors"),AppFonts_1=require("../../styles/AppFonts"),styles_1=__importDefault(require("../../styles")),i18n_1=require("../../i18n"),MediaPreviewModal_1=require("./MediaPreviewModal"),FabLauncher=()=>{const{setVisible:i,isMinimized:o,setIsMinimized:a,dismissInspector:s,appIcon:c,fabPan:l,fabPanResponder:ie,fabDraggedRef:T,pulseAnim:$,fabShineAnim:oe,refreshMediaCount:h,captureFps:F,captureScale:H,captureBitrate:M,captureMaxDurationSeconds:E,captureAudioMode:q,previewMediaItem:W,setPreviewMediaItem:b}=(0,InspectorContext_1.useInspector)(),{width:S,height:y}=(0,react_native_1.useWindowDimensions)(),{t:n}=(0,i18n_1.useTranslation)(),[X]=(0,react_1.useState)(()=>(0,helpers_1.getAppVersionAndBuild)().formatted),[p,I]=(0,react_1.useState)(!1),[Z,D]=(0,react_1.useState)(0),v=(0,react_1.useRef)(null),[G,B]=(0,react_1.useState)(!1),[z,_]=(0,react_1.useState)(!1),f=(0,react_1.useRef)(!1),x=(0,react_1.useRef)(new react_native_1.Animated.Value(0)).current,P=(0,react_1.useRef)(new react_native_1.Animated.Value(1)).current,w=(0,react_1.useRef)({x:0,y:0});(0,react_1.useEffect)(()=>{const e=l.x.addListener(r=>w.current.x=r.value),t=l.y.addListener(r=>w.current.y=r.value);return()=>{l.x.removeListener(e),l.y.removeListener(t)}},[l]);const u=68,V=8,U=(0,react_1.useCallback)(()=>{const e=w.current.x,t=w.current.y,r=20,R=180,m=S-r-u/2+e,O=y-R-u/2+t;let N=e,L=t,A=!1;m<V+u/2?(N=e+(V+u/2-m),A=!0):m>S-V-u/2&&(N=e-(m-(S-V-u/2)),A=!0);const k=react_native_1.Platform.OS==="ios"?60:40,Y=react_native_1.Platform.OS==="ios"?40:24;O<k+u/2?(L=t+(k+u/2-O),A=!0):O>y-Y-u/2&&(L=t-(O-(y-Y-u/2)),A=!0),A&&react_native_1.Animated.spring(l,{toValue:{x:N,y:L},useNativeDriver:!1,tension:80,friction:8}).start()},[l,S,y]),K=(0,react_1.useRef)(react_native_1.PanResponder.create({onStartShouldSetPanResponder:()=>!1,onMoveShouldSetPanResponder:(e,t)=>Math.abs(t.dx)>4||Math.abs(t.dy)>4,onPanResponderGrant:()=>{T.current=!0,l.setOffset({x:w.current.x,y:w.current.y}),l.setValue({x:0,y:0}),f.current=!1,_(!1),B(!0),P.setValue(1),react_native_1.Animated.spring(x,{toValue:1,useNativeDriver:!0,tension:80,friction:8}).start()},onPanResponderMove:(e,t)=>{l.setValue({x:t.dx,y:t.dy});const r=t.moveY,R=t.moveX,m=r>y-140&&Math.abs(R-S/2)<85;m&&!f.current?(f.current=!0,_(!0),(0,NativeInspector_1.triggerNativeHaptic)("medium"),react_native_1.Animated.spring(P,{toValue:1.25,useNativeDriver:!0,tension:100,friction:6}).start()):!m&&f.current&&(f.current=!1,_(!1),react_native_1.Animated.spring(P,{toValue:1,useNativeDriver:!0,tension:100,friction:6}).start())},onPanResponderRelease:()=>{const e=f.current;l.flattenOffset(),react_native_1.Animated.timing(x,{toValue:0,duration:180,useNativeDriver:!0}).start(()=>{B(!1),_(!1),f.current=!1}),e?((0,NativeInspector_1.triggerNativeHaptic)("heavy"),s(),(0,toast_1.showToast)(n("common.inspectorDismissed","In-App Inspector closed for this session"))):U(),setTimeout(()=>{T.current=!1},100)},onPanResponderTerminate:()=>{l.flattenOffset(),T.current=!1,react_native_1.Animated.timing(x,{toValue:0,duration:180,useNativeDriver:!0}).start(()=>{B(!1),_(!1),f.current=!1})}})).current,d=(0,react_1.useRef)(new react_native_1.Animated.ValueXY({x:0,y:0})).current,C=(0,react_1.useRef)({x:0,y:0});(0,react_1.useEffect)(()=>{const e=d.x.addListener(r=>C.current.x=r.value),t=d.y.addListener(r=>C.current.y=r.value);return()=>{d.x.removeListener(e),d.y.removeListener(t)}},[d]);const g=(0,react_1.useRef)(!1),J=(0,react_1.useRef)(react_native_1.PanResponder.create({onStartShouldSetPanResponder:()=>!1,onMoveShouldSetPanResponder:(e,t)=>Math.abs(t.dx)>4||Math.abs(t.dy)>4,onPanResponderGrant:()=>{g.current=!0,d.setOffset({x:C.current.x,y:C.current.y}),d.setValue({x:0,y:0})},onPanResponderMove:react_native_1.Animated.event([null,{dx:d.x,dy:d.y}],{useNativeDriver:!1}),onPanResponderRelease:()=>{d.flattenOffset();const e=C.current.y,t=-(y-(react_native_1.Platform.OS==="ios"?34:18)-70),r=react_native_1.Platform.OS==="ios"?34:18;if(e<t||e>r){const R=Math.max(t,Math.min(r,e));react_native_1.Animated.spring(d,{toValue:{x:C.current.x,y:R},useNativeDriver:!1,tension:80,friction:8}).start()}setTimeout(()=>{g.current=!1},50)},onPanResponderTerminate:()=>{d.flattenOffset(),g.current=!1}})).current;(0,react_1.useEffect)(()=>{capture_1.ScreenCapture.isRecording().then(e=>{I(!!e)}).catch(()=>{})},[]),(0,react_1.useEffect)(()=>(p?(D(0),v.current=setInterval(()=>{D(e=>e+1)},1e3)):(v.current&&(clearInterval(v.current),v.current=null),D(0)),()=>{v.current&&clearInterval(v.current)}),[p]);const Q=(0,react_1.useCallback)(async()=>{if(!g.current)try{(0,NativeInspector_1.triggerNativeHaptic)("light");const e=await capture_1.ScreenCapture.takeScreenshot({format:"png",quality:.9,hideInspector:!0});if(e){(0,NativeInspector_1.triggerNativeHaptic)("success");const t=(0,capture_1.generateCaptureId)("screenshot",e.format||"png"),r={id:t,type:"image",format:e.format,uri:e.uri,filename:e.uri.split("/").pop()||t,sizeBytes:e.sizeBytes,timestamp:e.timestamp,width:e.width,height:e.height};b(r),h?.().catch(()=>{}),(0,toast_1.showToast)(n("header.screenshotCaptured","Screenshot captured"))}else(0,toast_1.showToast)(n("header.screenshotFailed","Failed to capture screenshot"))}catch{(0,toast_1.showToast)(n("header.screenshotError","Error capturing screenshot"))}},[h,n]),ee=(0,react_1.useCallback)(async()=>{if(!g.current)try{if(p){(0,NativeInspector_1.triggerNativeHaptic)("medium");const e=await capture_1.ScreenCapture.stopRecording();if(I(!1),e){(0,NativeInspector_1.triggerNativeHaptic)("success");const t=(0,capture_1.generateCaptureId)("video",e.format),r={id:t,type:e.format==="gif"?"gif":"video",format:e.format,uri:e.uri,filename:e.uri.split("/").pop()||t,sizeBytes:e.sizeBytes,timestamp:e.timestamp,durationMs:e.durationMs,width:e.width,height:e.height,hasAudio:e.hasAudio,thumbnailUri:e.thumbnailUri};b(r),h?.().catch(()=>{}),(0,toast_1.showToast)(n("header.recordingSaved",{duration:(e.durationMs/1e3).toFixed(1),defaultValue:`Recording saved (${(e.durationMs/1e3).toFixed(1)}s)`}))}}else(0,NativeInspector_1.triggerNativeHaptic)("medium"),await capture_1.ScreenCapture.startRecording({fps:F,scale:H,audioSource:q,bitrate:M>0?M:void 0,maxDurationSeconds:E})?(I(!0),(0,toast_1.showToast)(n("header.recordingStarted","Recording started"))):(0,toast_1.showToast)(n("header.recordingStartFailed","Failed to start recording"))}catch{(0,toast_1.showToast)(n("header.recordingError","Error during screen recording")),I(!1)}},[p,F,H,M,E,q,h,n]),j=(0,react_1.useCallback)(()=>{g.current||((0,NativeInspector_1.triggerNativeHaptic)("light"),a?.(!1),i(!0))},[a,i]),te=(0,react_1.useCallback)(()=>{g.current||((0,NativeInspector_1.triggerNativeHaptic)("light"),a?.(!1),i(!1))},[a,i]),re=e=>{const t=Math.floor(e/60),r=e%60;return`${t}:${r<10?"0":""}${r}`};return<>
|
|
2
2
|
|
|
3
3
|
{o?<react_native_1.Animated.View style={[fabStyles.playerContainer,{transform:d.getTranslateTransform()}]}{...J.panHandlers}>
|
|
4
4
|
|
|
@@ -60,8 +60,8 @@
|
|
|
60
60
|
</TouchableScale_1.default>
|
|
61
61
|
</react_native_1.View>
|
|
62
62
|
</react_native_1.Animated.View>:<react_native_1.Animated.View style={[styles_1.default.fabWrapper,{transform:l.getTranslateTransform()}]}{...K.panHandlers}>
|
|
63
|
-
<TouchableScale_1.default testID="inspector.fab.launcher"style={{width:68,height:68,borderRadius:34,alignItems:"center",justifyContent:"center"}}onPress={()=>{T.current||((0,NativeInspector_1.triggerNativeHaptic)("light"),i(!0))}}hitSlop={10}>
|
|
64
|
-
<react_native_1.Animated.View style={[styles_1.default.fabPulseRing,{transform:[{scale
|
|
63
|
+
<TouchableScale_1.default testID="inspector.fab.launcher"accessible={!0}accessibilityRole="button"accessibilityLabel={n("accessibility.openInspector","Open In-App Network and System Inspector")}accessibilityHint={n("accessibility.openInspectorHint","Double tap to open the full debug inspector")}style={{width:68,height:68,borderRadius:34,alignItems:"center",justifyContent:"center"}}onPress={()=>{T.current||((0,NativeInspector_1.triggerNativeHaptic)("light"),i(!0))}}hitSlop={10}>
|
|
64
|
+
<react_native_1.Animated.View style={[styles_1.default.fabPulseRing,{transform:[{scale:$}]}]}/>
|
|
65
65
|
<AppHeaderLogo_1.default size={68}customIcon={c}shape="circle"/>
|
|
66
66
|
</TouchableScale_1.default>
|
|
67
67
|
</react_native_1.Animated.View>}
|