react-native-inapp-inspector 2.4.2 → 2.5.1

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 (221) hide show
  1. package/android/.gradle/8.9/checksums/checksums.lock +0 -0
  2. package/android/.gradle/8.9/dependencies-accessors/gc.properties +0 -0
  3. package/android/.gradle/8.9/executionHistory/executionHistory.lock +0 -0
  4. package/android/.gradle/8.9/fileChanges/last-build.bin +0 -0
  5. package/android/.gradle/8.9/fileHashes/fileHashes.lock +0 -0
  6. package/android/.gradle/8.9/gc.properties +0 -0
  7. package/android/.gradle/9.2.0/checksums/checksums.lock +0 -0
  8. package/android/.gradle/9.2.0/fileChanges/last-build.bin +0 -0
  9. package/android/.gradle/9.2.0/fileHashes/fileHashes.bin +0 -0
  10. package/android/.gradle/9.2.0/fileHashes/fileHashes.lock +0 -0
  11. package/android/.gradle/9.2.0/gc.properties +0 -0
  12. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  13. package/android/.gradle/buildOutputCleanup/cache.properties +2 -0
  14. package/android/.gradle/vcs-1/gc.properties +0 -0
  15. package/android/.settings/org.eclipse.buildship.core.prefs +13 -0
  16. package/android/src/main/java/com/inappinspector/NetworkInspectorModule.kt +523 -2
  17. package/dist/commonjs/capture.d.ts +2 -0
  18. package/dist/commonjs/capture.js +1 -1
  19. package/dist/commonjs/components/AnalyticsDetail.js +23 -23
  20. package/dist/commonjs/components/AnalyticsEventCard.js +1 -1
  21. package/dist/commonjs/components/AnalyticsGraph.js +44 -44
  22. package/dist/commonjs/components/AnimatedBrandOwl.js +32 -32
  23. package/dist/commonjs/components/AppHeaderLogo.js +6 -6
  24. package/dist/commonjs/components/BrandCircleIcon.js +28 -28
  25. package/dist/commonjs/components/BrandSquareIcon.js +33 -33
  26. package/dist/commonjs/components/ConsoleLogCard.js +1 -1
  27. package/dist/commonjs/components/Inspector/AnalyticsTab.js +2 -2
  28. package/dist/commonjs/components/Inspector/ConfirmationModal.js +23 -25
  29. package/dist/commonjs/components/Inspector/ConsoleTab.js +5 -5
  30. package/dist/commonjs/components/Inspector/CrashTab.js +44 -11
  31. package/dist/commonjs/components/Inspector/DeviceInfoTab.js +1 -1
  32. package/dist/commonjs/components/Inspector/FabLauncher.js +30 -25
  33. package/dist/commonjs/components/Inspector/FloatingCaptureWidget.d.ts +3 -0
  34. package/dist/commonjs/components/Inspector/FloatingCaptureWidget.js +54 -0
  35. package/dist/commonjs/components/Inspector/GlobalCrashScreenModal.d.ts +11 -0
  36. package/dist/commonjs/components/Inspector/GlobalCrashScreenModal.js +234 -0
  37. package/dist/commonjs/components/Inspector/InspectorHeader.js +137 -127
  38. package/dist/commonjs/components/Inspector/LanguageSelectorModal.d.ts +1 -1
  39. package/dist/commonjs/components/Inspector/LanguageSelectorModal.js +114 -32
  40. package/dist/commonjs/components/Inspector/MainScreen.js +26 -19
  41. package/dist/commonjs/components/Inspector/MediaGalleryTab.js +38 -35
  42. package/dist/commonjs/components/Inspector/MediaPreviewModal.d.ts +36 -0
  43. package/dist/commonjs/components/Inspector/MediaPreviewModal.js +345 -123
  44. package/dist/commonjs/components/Inspector/NetworkTab.js +14 -14
  45. package/dist/commonjs/components/Inspector/PushCard.js +1 -1
  46. package/dist/commonjs/components/Inspector/PushDetail.js +9 -9
  47. package/dist/commonjs/components/Inspector/PushTab.js +3 -3
  48. package/dist/commonjs/components/Inspector/ReduxTab.js +9 -7
  49. package/dist/commonjs/components/Inspector/SecondaryTelemetryStrip.d.ts +2 -0
  50. package/dist/commonjs/components/Inspector/SecondaryTelemetryStrip.js +43 -0
  51. package/dist/commonjs/components/Inspector/SettingsPanel.js +102 -73
  52. package/dist/commonjs/components/Inspector/SocketCard.js +1 -1
  53. package/dist/commonjs/components/Inspector/SocketDetail.js +73 -63
  54. package/dist/commonjs/components/Inspector/SocketTab.js +4 -4
  55. package/dist/commonjs/components/Inspector/StorageTab.js +10 -10
  56. package/dist/commonjs/components/Inspector/SupportModal.js +2 -2
  57. package/dist/commonjs/components/Inspector/SupportPage.js +1 -1
  58. package/dist/commonjs/components/JsonViewer.js +47 -45
  59. package/dist/commonjs/components/LogCard.js +22 -20
  60. package/dist/commonjs/components/ModuleErrorBoundary.js +5 -5
  61. package/dist/commonjs/components/NetworkIcons.d.ts +27 -0
  62. package/dist/commonjs/components/NetworkIcons.js +103 -5
  63. package/dist/commonjs/constants/telemetryConfig.d.ts +3 -3
  64. package/dist/commonjs/constants/telemetryConfig.js +1 -1
  65. package/dist/commonjs/constants/version.d.ts +1 -1
  66. package/dist/commonjs/constants/version.js +1 -1
  67. package/dist/commonjs/crash.d.ts +1 -1
  68. package/dist/commonjs/crash.js +1 -1
  69. package/dist/commonjs/customHooks/crashHandler.d.ts +2 -1
  70. package/dist/commonjs/customHooks/crashHandler.js +7 -7
  71. package/dist/commonjs/editor.d.ts +13 -0
  72. package/dist/commonjs/editor.js +1 -0
  73. package/dist/commonjs/helpers/index.d.ts +1 -0
  74. package/dist/commonjs/helpers/index.js +1 -1
  75. package/dist/commonjs/helpers/settingsStore.js +1 -1
  76. package/dist/commonjs/helpers/telemetry.js +1 -1
  77. package/dist/commonjs/i18n/index.js +1 -1
  78. package/dist/commonjs/i18n/locales/ar.json +1 -1
  79. package/dist/commonjs/i18n/locales/bn.json +1 -1
  80. package/dist/commonjs/i18n/locales/de.json +1 -1
  81. package/dist/commonjs/i18n/locales/en.json +1 -1
  82. package/dist/commonjs/i18n/locales/es.json +1 -1
  83. package/dist/commonjs/i18n/locales/fr.json +1 -1
  84. package/dist/commonjs/i18n/locales/gu.json +1 -1
  85. package/dist/commonjs/i18n/locales/hi.json +1 -1
  86. package/dist/commonjs/i18n/locales/id.json +1 -1
  87. package/dist/commonjs/i18n/locales/it.json +1 -1
  88. package/dist/commonjs/i18n/locales/ja.json +1 -1
  89. package/dist/commonjs/i18n/locales/kn.json +1 -1
  90. package/dist/commonjs/i18n/locales/ko.json +1 -1
  91. package/dist/commonjs/i18n/locales/ml.json +1 -1
  92. package/dist/commonjs/i18n/locales/mr.json +1 -1
  93. package/dist/commonjs/i18n/locales/nl.json +1 -1
  94. package/dist/commonjs/i18n/locales/pa.json +1 -1
  95. package/dist/commonjs/i18n/locales/pl.json +1 -1
  96. package/dist/commonjs/i18n/locales/pt.json +1 -1
  97. package/dist/commonjs/i18n/locales/ru.json +1 -1
  98. package/dist/commonjs/i18n/locales/ta.json +1 -1
  99. package/dist/commonjs/i18n/locales/te.json +1 -1
  100. package/dist/commonjs/i18n/locales/tr.json +1 -1
  101. package/dist/commonjs/i18n/locales/vi.json +1 -1
  102. package/dist/commonjs/i18n/locales/zh.json +1 -1
  103. package/dist/commonjs/index.d.ts +4 -1
  104. package/dist/commonjs/index.js +3 -3
  105. package/dist/commonjs/native/NativeInspector.d.ts +3 -0
  106. package/dist/commonjs/native/NativeInspector.js +1 -1
  107. package/dist/commonjs/native/NativeNetworkInspector.d.ts +4 -0
  108. package/dist/commonjs/styles/AppColors.d.ts +42 -2
  109. package/dist/commonjs/styles/AppColors.js +1 -1
  110. package/dist/commonjs/styles/common.js +1 -1
  111. package/dist/commonjs/styles/index.d.ts +7 -0
  112. package/dist/commonjs/styles/index.js +1 -1
  113. package/dist/commonjs/types/editor.d.ts +96 -0
  114. package/dist/commonjs/types/editor.js +1 -0
  115. package/dist/commonjs/types/interfaces.d.ts +21 -0
  116. package/dist/esm/capture.d.ts +2 -0
  117. package/dist/esm/capture.js +1 -1
  118. package/dist/esm/components/AnalyticsDetail.js +31 -31
  119. package/dist/esm/components/AnalyticsEventCard.js +1 -1
  120. package/dist/esm/components/AnalyticsGraph.js +74 -74
  121. package/dist/esm/components/AnimatedBrandOwl.js +114 -114
  122. package/dist/esm/components/AppHeaderLogo.js +7 -7
  123. package/dist/esm/components/BrandCircleIcon.js +70 -70
  124. package/dist/esm/components/BrandSquareIcon.js +61 -61
  125. package/dist/esm/components/ConsoleLogCard.js +1 -1
  126. package/dist/esm/components/Inspector/AnalyticsTab.js +14 -14
  127. package/dist/esm/components/Inspector/ConfirmationModal.js +23 -25
  128. package/dist/esm/components/Inspector/ConsoleTab.js +17 -17
  129. package/dist/esm/components/Inspector/CrashTab.js +202 -169
  130. package/dist/esm/components/Inspector/DeviceInfoTab.js +75 -75
  131. package/dist/esm/components/Inspector/FabLauncher.js +56 -51
  132. package/dist/esm/components/Inspector/FloatingCaptureWidget.d.ts +3 -0
  133. package/dist/esm/components/Inspector/FloatingCaptureWidget.js +54 -0
  134. package/dist/esm/components/Inspector/GlobalCrashScreenModal.d.ts +11 -0
  135. package/dist/esm/components/Inspector/GlobalCrashScreenModal.js +234 -0
  136. package/dist/esm/components/Inspector/InspectorHeader.js +162 -152
  137. package/dist/esm/components/Inspector/LanguageSelectorModal.d.ts +1 -1
  138. package/dist/esm/components/Inspector/LanguageSelectorModal.js +140 -58
  139. package/dist/esm/components/Inspector/MainScreen.js +61 -54
  140. package/dist/esm/components/Inspector/MediaGalleryTab.js +55 -52
  141. package/dist/esm/components/Inspector/MediaPreviewModal.d.ts +36 -0
  142. package/dist/esm/components/Inspector/MediaPreviewModal.js +345 -123
  143. package/dist/esm/components/Inspector/NetworkTab.js +74 -74
  144. package/dist/esm/components/Inspector/PushCard.js +1 -1
  145. package/dist/esm/components/Inspector/PushDetail.js +18 -18
  146. package/dist/esm/components/Inspector/PushTab.js +1 -1
  147. package/dist/esm/components/Inspector/ReduxTab.js +18 -16
  148. package/dist/esm/components/Inspector/SecondaryTelemetryStrip.d.ts +2 -0
  149. package/dist/esm/components/Inspector/SecondaryTelemetryStrip.js +43 -0
  150. package/dist/esm/components/Inspector/SettingsPanel.js +224 -195
  151. package/dist/esm/components/Inspector/SocketCard.js +8 -8
  152. package/dist/esm/components/Inspector/SocketDetail.js +106 -96
  153. package/dist/esm/components/Inspector/SocketTab.js +18 -18
  154. package/dist/esm/components/Inspector/StorageTab.js +47 -47
  155. package/dist/esm/components/Inspector/SupportModal.js +64 -64
  156. package/dist/esm/components/Inspector/SupportPage.js +5 -5
  157. package/dist/esm/components/JsonViewer.js +51 -49
  158. package/dist/esm/components/LogCard.js +41 -39
  159. package/dist/esm/components/ModuleErrorBoundary.js +10 -10
  160. package/dist/esm/components/NetworkIcons.d.ts +27 -0
  161. package/dist/esm/components/NetworkIcons.js +101 -3
  162. package/dist/esm/constants/telemetryConfig.d.ts +3 -3
  163. package/dist/esm/constants/telemetryConfig.js +1 -1
  164. package/dist/esm/constants/version.d.ts +1 -1
  165. package/dist/esm/constants/version.js +1 -1
  166. package/dist/esm/crash.d.ts +1 -1
  167. package/dist/esm/crash.js +1 -1
  168. package/dist/esm/customHooks/crashHandler.d.ts +2 -1
  169. package/dist/esm/customHooks/crashHandler.js +7 -7
  170. package/dist/esm/editor.d.ts +13 -0
  171. package/dist/esm/editor.js +1 -0
  172. package/dist/esm/helpers/index.d.ts +1 -0
  173. package/dist/esm/helpers/index.js +4 -4
  174. package/dist/esm/helpers/settingsStore.js +1 -1
  175. package/dist/esm/helpers/telemetry.js +1 -1
  176. package/dist/esm/i18n/index.js +1 -1
  177. package/dist/esm/i18n/locales/ar.json +1 -1
  178. package/dist/esm/i18n/locales/bn.json +1 -1
  179. package/dist/esm/i18n/locales/de.json +1 -1
  180. package/dist/esm/i18n/locales/en.json +1 -1
  181. package/dist/esm/i18n/locales/es.json +1 -1
  182. package/dist/esm/i18n/locales/fr.json +1 -1
  183. package/dist/esm/i18n/locales/gu.json +1 -1
  184. package/dist/esm/i18n/locales/hi.json +1 -1
  185. package/dist/esm/i18n/locales/id.json +1 -1
  186. package/dist/esm/i18n/locales/it.json +1 -1
  187. package/dist/esm/i18n/locales/ja.json +1 -1
  188. package/dist/esm/i18n/locales/kn.json +1 -1
  189. package/dist/esm/i18n/locales/ko.json +1 -1
  190. package/dist/esm/i18n/locales/ml.json +1 -1
  191. package/dist/esm/i18n/locales/mr.json +1 -1
  192. package/dist/esm/i18n/locales/nl.json +1 -1
  193. package/dist/esm/i18n/locales/pa.json +1 -1
  194. package/dist/esm/i18n/locales/pl.json +1 -1
  195. package/dist/esm/i18n/locales/pt.json +1 -1
  196. package/dist/esm/i18n/locales/ru.json +1 -1
  197. package/dist/esm/i18n/locales/ta.json +1 -1
  198. package/dist/esm/i18n/locales/te.json +1 -1
  199. package/dist/esm/i18n/locales/tr.json +1 -1
  200. package/dist/esm/i18n/locales/vi.json +1 -1
  201. package/dist/esm/i18n/locales/zh.json +1 -1
  202. package/dist/esm/index.d.ts +4 -1
  203. package/dist/esm/index.js +5 -5
  204. package/dist/esm/native/NativeInspector.d.ts +3 -0
  205. package/dist/esm/native/NativeInspector.js +1 -1
  206. package/dist/esm/native/NativeNetworkInspector.d.ts +4 -0
  207. package/dist/esm/styles/AppColors.d.ts +42 -2
  208. package/dist/esm/styles/AppColors.js +1 -1
  209. package/dist/esm/styles/common.js +1 -1
  210. package/dist/esm/styles/index.d.ts +7 -0
  211. package/dist/esm/styles/index.js +1 -1
  212. package/dist/esm/types/editor.d.ts +96 -0
  213. package/dist/esm/types/editor.js +1 -0
  214. package/dist/esm/types/interfaces.d.ts +21 -0
  215. package/editor.d.ts +1 -0
  216. package/editor.js +1 -0
  217. package/ios/NetworkInspectorModule.mm +429 -0
  218. package/package.json +10 -1
  219. package/react-native-inapp-inspector.podspec +1 -1
  220. package/src/native/NativeInspector.ts +57 -4
  221. package/src/native/NativeNetworkInspector.ts +4 -0
@@ -1,12 +1,12 @@
1
- "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(t,r,o,a){a===void 0&&(a=o);var n=Object.getOwnPropertyDescriptor(r,o);(!n||("get"in n?!r.__esModule:n.writable||n.configurable))&&(n={enumerable:!0,get:function(){return r[o]}}),Object.defineProperty(t,a,n)}):(function(t,r,o,a){a===void 0&&(a=o),t[a]=r[o]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(t,r){Object.defineProperty(t,"default",{enumerable:!0,value:r})}):function(t,r){t.default=r}),__importStar=this&&this.__importStar||(function(){var t=function(r){return t=Object.getOwnPropertyNames||function(o){var a=[];for(var n in o)Object.prototype.hasOwnProperty.call(o,n)&&(a[a.length]=n);return a},t(r)};return function(r){if(r&&r.__esModule)return r;var o={};if(r!=null)for(var a=t(r),n=0;n<a.length;n++)a[n]!=="default"&&__createBinding(o,r,a[n]);return __setModuleDefault(o,r),o}})(),__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"),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:t,isMinimized:r,setIsMinimized:o,dismissInspector:a,appIcon:n,fabPan:R,fabPanResponder:T,fabDraggedRef:A,pulseAnim:I,fabShineAnim:D,refreshMediaCount:u,captureFps:_,captureScale:v,captureBitrate:b,captureMaxDurationSeconds:w,captureAudioMode:C}=(0,InspectorContext_1.useInspector)(),{width:$}=(0,react_native_1.useWindowDimensions)(),{t:s}=(0,i18n_1.useTranslation)(),[P]=(0,react_1.useState)(()=>(0,helpers_1.getAppVersionAndBuild)().formatted),[l,g]=(0,react_1.useState)(!1),[M,y]=(0,react_1.useState)(0),p=(0,react_1.useRef)(null),[S,h]=(0,react_1.useState)(null),c=(0,react_1.useRef)(new react_native_1.Animated.ValueXY({x:0,y:0})).current,m=(0,react_1.useRef)({x:0,y:0});(0,react_1.useEffect)(()=>{const e=c.x.addListener(f=>m.current.x=f.value),i=c.y.addListener(f=>m.current.y=f.value);return()=>{c.x.removeListener(e),c.y.removeListener(i)}},[c]);const d=(0,react_1.useRef)(!1),V=(0,react_1.useRef)(react_native_1.PanResponder.create({onStartShouldSetPanResponder:()=>!1,onMoveShouldSetPanResponder:(e,i)=>Math.abs(i.dx)>4||Math.abs(i.dy)>4,onPanResponderGrant:()=>{d.current=!0,c.setOffset({x:m.current.x,y:m.current.y}),c.setValue({x:0,y:0})},onPanResponderMove:react_native_1.Animated.event([null,{dx:c.x,dy:c.y}],{useNativeDriver:!1}),onPanResponderRelease:()=>{c.flattenOffset(),setTimeout(()=>{d.current=!1},50)},onPanResponderTerminate:()=>{c.flattenOffset(),d.current=!1}})).current;(0,react_1.useEffect)(()=>{capture_1.ScreenCapture.isRecording().then(e=>{g(!!e)}).catch(()=>{})},[]),(0,react_1.useEffect)(()=>(l?(y(0),p.current=setInterval(()=>{y(e=>e+1)},1e3)):(p.current&&(clearInterval(p.current),p.current=null),y(0)),()=>{p.current&&clearInterval(p.current)}),[l]);const z=(0,react_1.useCallback)(async()=>{if(!d.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 i={id:`screenshot_${e.timestamp}.png`,type:"image",format:e.format,uri:e.uri,filename:e.uri.split("/").pop()||`screenshot_${e.timestamp}.png`,sizeBytes:e.sizeBytes,timestamp:e.timestamp,width:e.width,height:e.height};h(i),u?.().catch(()=>{}),(0,toast_1.showToast)(s("header.screenshotCaptured","Screenshot captured"))}else(0,toast_1.showToast)(s("header.screenshotFailed","Failed to capture screenshot"))}catch{(0,toast_1.showToast)(s("header.screenshotError","Error capturing screenshot"))}},[u,s]),B=(0,react_1.useCallback)(async()=>{if(!d.current)try{if(l){(0,NativeInspector_1.triggerNativeHaptic)("medium");const e=await capture_1.ScreenCapture.stopRecording();if(g(!1),e){(0,NativeInspector_1.triggerNativeHaptic)("success");const i={id:`video_${e.timestamp}.${e.format}`,type:e.format==="gif"?"gif":"video",format:e.format,uri:e.uri,filename:e.uri.split("/").pop()||`video_${e.timestamp}.${e.format}`,sizeBytes:e.sizeBytes,timestamp:e.timestamp,durationMs:e.durationMs,width:e.width,height:e.height,hasAudio:e.hasAudio,thumbnailUri:e.thumbnailUri};h(i),u?.().catch(()=>{}),(0,toast_1.showToast)(s("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:_,scale:v,audioSource:C,bitrate:b>0?b:void 0,maxDurationSeconds:w})?(g(!0),(0,toast_1.showToast)(s("header.recordingStarted","Recording started"))):(0,toast_1.showToast)(s("header.recordingStartFailed","Failed to start recording"))}catch{(0,toast_1.showToast)(s("header.recordingError","Error during screen recording")),g(!1)}},[l,_,v,b,w,C,u,s]),x=(0,react_1.useCallback)(()=>{d.current||((0,NativeInspector_1.triggerNativeHaptic)("light"),o?.(!1),t(!0))},[o,t]),O=(0,react_1.useCallback)(()=>{d.current||((0,NativeInspector_1.triggerNativeHaptic)("light"),o?.(!1),t(!1))},[o,t]),q=e=>{const i=Math.floor(e/60),f=e%60;return`${i}:${f<10?"0":""}${f}`};return<>
1
+ "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(r,i,o,a){a===void 0&&(a=o);var s=Object.getOwnPropertyDescriptor(i,o);(!s||("get"in s?!i.__esModule:s.writable||s.configurable))&&(s={enumerable:!0,get:function(){return i[o]}}),Object.defineProperty(r,a,s)}):(function(r,i,o,a){a===void 0&&(a=o),r[a]=i[o]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(r,i){Object.defineProperty(r,"default",{enumerable:!0,value:i})}):function(r,i){r.default=i}),__importStar=this&&this.__importStar||(function(){var r=function(i){return r=Object.getOwnPropertyNames||function(o){var a=[];for(var s in o)Object.prototype.hasOwnProperty.call(o,s)&&(a[a.length]=s);return a},r(i)};return function(i){if(i&&i.__esModule)return i;var o={};if(i!=null)for(var a=r(i),s=0;s<a.length;s++)a[s]!=="default"&&__createBinding(o,i,a[s]);return __setModuleDefault(o,i),o}})(),__importDefault=this&&this.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};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:r,isMinimized:i,setIsMinimized:o,dismissInspector:a,appIcon:s,fabPan:l,fabPanResponder:ie,fabDraggedRef:T,pulseAnim:k,fabShineAnim:oe,refreshMediaCount:g,captureFps:L,captureScale:E,captureBitrate:O,captureMaxDurationSeconds:q,captureAudioMode:H}=(0,InspectorContext_1.useInspector)(),{width:_,height:b}=(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),[$,C]=(0,react_1.useState)(null),[G,B]=(0,react_1.useState)(!1),[z,S]=(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,y=(0,react_1.useRef)({x:0,y:0});(0,react_1.useEffect)(()=>{const e=l.x.addListener(c=>y.current.x=c.value),t=l.y.addListener(c=>y.current.y=c.value);return()=>{l.x.removeListener(e),l.y.removeListener(t)}},[l]);const u=68,V=8,U=(0,react_1.useCallback)(()=>{const e=y.current.x,t=y.current.y,c=20,A=180,m=_-c-u/2+e,M=b-A-u/2+t;let N=e,F=t,R=!1;m<V+u/2?(N=e+(V+u/2-m),R=!0):m>_-V-u/2&&(N=e-(m-(_-V-u/2)),R=!0);const j=react_native_1.Platform.OS==="ios"?60:40,Y=react_native_1.Platform.OS==="ios"?40:24;M<j+u/2?(F=t+(j+u/2-M),R=!0):M>b-Y-u/2&&(F=t-(M-(b-Y-u/2)),R=!0),R&&react_native_1.Animated.spring(l,{toValue:{x:N,y:F},useNativeDriver:!1,tension:80,friction:8}).start()},[l,_,b]),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:y.current.x,y:y.current.y}),l.setValue({x:0,y:0}),f.current=!1,S(!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 c=t.moveY,A=t.moveX,m=c>b-140&&Math.abs(A-_/2)<85;m&&!f.current?(f.current=!0,S(!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,S(!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),S(!1),f.current=!1}),e?((0,NativeInspector_1.triggerNativeHaptic)("heavy"),a(),(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),S(!1),f.current=!1})}})).current,d=(0,react_1.useRef)(new react_native_1.Animated.ValueXY({x:0,y:0})).current,w=(0,react_1.useRef)({x:0,y:0});(0,react_1.useEffect)(()=>{const e=d.x.addListener(c=>w.current.x=c.value),t=d.y.addListener(c=>w.current.y=c.value);return()=>{d.x.removeListener(e),d.y.removeListener(t)}},[d]);const h=(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:()=>{h.current=!0,d.setOffset({x:w.current.x,y:w.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=w.current.y,t=-(b-(react_native_1.Platform.OS==="ios"?34:18)-70),c=react_native_1.Platform.OS==="ios"?34:18;if(e<t||e>c){const A=Math.max(t,Math.min(c,e));react_native_1.Animated.spring(d,{toValue:{x:w.current.x,y:A},useNativeDriver:!1,tension:80,friction:8}).start()}setTimeout(()=>{h.current=!1},50)},onPanResponderTerminate:()=>{d.flattenOffset(),h.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(!h.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={id:`screenshot_${e.timestamp}.png`,type:"image",format:e.format,uri:e.uri,filename:e.uri.split("/").pop()||`screenshot_${e.timestamp}.png`,sizeBytes:e.sizeBytes,timestamp:e.timestamp,width:e.width,height:e.height};C(t),g?.().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"))}},[g,n]),ee=(0,react_1.useCallback)(async()=>{if(!h.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={id:`video_${e.timestamp}.${e.format}`,type:e.format==="gif"?"gif":"video",format:e.format,uri:e.uri,filename:e.uri.split("/").pop()||`video_${e.timestamp}.${e.format}`,sizeBytes:e.sizeBytes,timestamp:e.timestamp,durationMs:e.durationMs,width:e.width,height:e.height,hasAudio:e.hasAudio,thumbnailUri:e.thumbnailUri};C(t),g?.().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:L,scale:E,audioSource:H,bitrate:O>0?O:void 0,maxDurationSeconds:q})?(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,L,E,O,q,H,g,n]),W=(0,react_1.useCallback)(()=>{h.current||((0,NativeInspector_1.triggerNativeHaptic)("light"),o?.(!1),r(!0))},[o,r]),te=(0,react_1.useCallback)(()=>{h.current||((0,NativeInspector_1.triggerNativeHaptic)("light"),o?.(!1),r(!1))},[o,r]),re=e=>{const t=Math.floor(e/60),c=e%60;return`${t}:${c<10?"0":""}${c}`};return<>
2
2
 
3
- {r?<react_native_1.Animated.View style={[fabStyles.playerContainer,{transform:c.getTranslateTransform()}]}{...V.panHandlers}>
3
+ {i?<react_native_1.Animated.View style={[fabStyles.playerContainer,{transform:d.getTranslateTransform()}]}{...J.panHandlers}>
4
4
 
5
5
  <react_native_linear_gradient_1.default colors={[AppColors_1.AppColors.indigo600,AppColors_1.AppColors.violet600]}start={{x:0,y:0}}end={{x:1,y:1}}style={fabStyles.gradientBg}pointerEvents="none"/>
6
6
 
7
7
 
8
- <react_native_1.TouchableOpacity activeOpacity={.75}onPress={x}style={fabStyles.brandSection}accessibilityRole="button"accessibilityLabel={s("mediaGallery.expand","Expand Inspector")}>
9
- <AppHeaderLogo_1.default size={36}customIcon={n}shape="circle"/>
8
+ <react_native_1.TouchableOpacity activeOpacity={.75}onPress={W}style={fabStyles.brandSection}accessibilityRole="button"accessibilityLabel={n("mediaGallery.expand","Expand Inspector")}>
9
+ <AppHeaderLogo_1.default size={36}customIcon={s}shape="circle"/>
10
10
  <react_native_1.View style={fabStyles.titleWrapper}>
11
11
  <react_native_1.Text style={fabStyles.appTitle}numberOfLines={1}>
12
12
  {(0,helpers_1.getAppName)()}
@@ -16,7 +16,7 @@
16
16
  <react_native_1.View style={fabStyles.versionChip}>
17
17
  {react_native_1.Platform.OS==="ios"?<NetworkIcons_1.AppleIcon color={`${AppColors_1.AppColors.white}E6`}size={9}/>:<NetworkIcons_1.AndroidIcon color={`${AppColors_1.AppColors.white}E6`}size={9}/>}
18
18
  <react_native_1.Text style={fabStyles.versionChipText}numberOfLines={1}>
19
- {P}
19
+ {X}
20
20
  </react_native_1.Text>
21
21
  </react_native_1.View>
22
22
 
@@ -34,43 +34,48 @@
34
34
 
35
35
  <react_native_1.View style={fabStyles.actionsRow}>
36
36
 
37
- <TouchableScale_1.default onPress={z}hitSlop={{top:6,bottom:6,left:4,right:4}}style={fabStyles.actionBtn}>
38
- <NetworkIcons_1.CameraIcon size={12}color={AppColors_1.AppColors.white}/>
37
+ <TouchableScale_1.default onPress={Q}hitSlop={{top:6,bottom:6,left:4,right:4}}style={fabStyles.actionBtn}>
38
+ <NetworkIcons_1.ScreenshotCaptureIcon size={12}color={AppColors_1.AppColors.white}/>
39
39
  <react_native_1.Text style={fabStyles.actionText}>
40
- {s("header.photo","Photo")}
40
+ {n("header.photo","Photo")}
41
41
  </react_native_1.Text>
42
42
  </TouchableScale_1.default>
43
43
 
44
44
 
45
- <TouchableScale_1.default onPress={B}hitSlop={{top:6,bottom:6,left:4,right:4}}style={[fabStyles.actionBtn,l&&fabStyles.recordingBtnActive]}>
46
- {l?<react_native_1.View style={fabStyles.recordingDot}/>:<NetworkIcons_1.VideoCameraIcon size={12}color={AppColors_1.AppColors.white}/>}
47
- <react_native_1.Text style={[fabStyles.actionText,l&&{color:AppColors_1.AppColors.red300}]}>
48
- {l?`${s("header.rec","REC")} ${q(M)}`:s("header.record","Record")}
45
+ <TouchableScale_1.default onPress={ee}hitSlop={{top:6,bottom:6,left:4,right:4}}style={[fabStyles.actionBtn,p&&fabStyles.recordingBtnActive]}>
46
+ {p?<react_native_1.View style={fabStyles.recordingDot}/>:<NetworkIcons_1.ScreenRecordIcon size={12}color={AppColors_1.AppColors.white}/>}
47
+ <react_native_1.Text style={[fabStyles.actionText,p&&{color:AppColors_1.AppColors.red300}]}>
48
+ {p?`${n("header.rec","REC")} ${re(Z)}`:n("header.record","Record")}
49
49
  </react_native_1.Text>
50
50
  </TouchableScale_1.default>
51
51
 
52
52
 
53
- <TouchableScale_1.default onPress={x}hitSlop={{top:6,bottom:6,left:4,right:4}}accessibilityRole="button"accessibilityLabel={s("common.expand","Expand")}style={fabStyles.actionBtnSquare}>
53
+ <TouchableScale_1.default onPress={W}hitSlop={{top:6,bottom:6,left:4,right:4}}accessibilityRole="button"accessibilityLabel={n("common.expand","Expand")}style={fabStyles.actionBtnSquare}>
54
54
  <NetworkIcons_1.MaximizeIcon size={12}color={AppColors_1.AppColors.white}/>
55
55
  </TouchableScale_1.default>
56
56
 
57
57
 
58
- <TouchableScale_1.default onPress={O}hitSlop={{top:6,bottom:6,left:4,right:6}}accessibilityRole="button"accessibilityLabel={s("common.close","Close")}style={fabStyles.actionBtnSquare}>
58
+ <TouchableScale_1.default onPress={te}hitSlop={{top:6,bottom:6,left:4,right:6}}accessibilityRole="button"accessibilityLabel={n("common.close","Close")}style={fabStyles.actionBtnSquare}>
59
59
  <NetworkIcons_1.CloseWhite size={10}color={AppColors_1.AppColors.white}/>
60
60
  </TouchableScale_1.default>
61
61
  </react_native_1.View>
62
- </react_native_1.Animated.View>:<react_native_1.Animated.View style={[styles_1.default.fabWrapper,{transform:R.getTranslateTransform()}]}{...T.panHandlers}>
63
- <TouchableScale_1.default style={{alignItems:"center",justifyContent:"center"}}onPress={()=>{A.current||((0,NativeInspector_1.triggerNativeHaptic)("light"),t(!0))}}hitSlop={10}>
64
- <react_native_1.Animated.View style={[styles_1.default.fabPulseRing,{transform:[{scale:I}]}]}/>
65
- <AppHeaderLogo_1.default size={68}customIcon={n}shape="circle"/>
66
- </TouchableScale_1.default>
67
-
68
-
69
- <TouchableScale_1.default accessible={!0}accessibilityRole="button"accessibilityLabel={s("common.close","Close")}onPress={()=>{(0,NativeInspector_1.triggerNativeHaptic)("medium"),a(),(0,toast_1.showToast)(s("common.inspectorDismissed","In-App Inspector closed for this session"))}}hitSlop={8}style={styles_1.default.fabCloseBadge}>
70
- <NetworkIcons_1.CloseWhite size={9.5}/>
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 style={{alignItems:"center",justifyContent:"center"}}onPress={()=>{T.current||((0,NativeInspector_1.triggerNativeHaptic)("light"),r(!0))}}hitSlop={10}>
64
+ <react_native_1.Animated.View style={[styles_1.default.fabPulseRing,{transform:[{scale:k}]}]}/>
65
+ <AppHeaderLogo_1.default size={68}customIcon={s}shape="circle"/>
71
66
  </TouchableScale_1.default>
72
67
  </react_native_1.Animated.View>}
73
68
 
74
69
 
75
- <MediaPreviewModal_1.MediaPreviewModal item={S}visible={!!S}onClose={()=>h(null)}onDelete={async e=>{await capture_1.ScreenCapture.deleteMedia(e.uri),u?.().catch(()=>{}),h(null)}}onConvertToGif={async e=>{const i=await capture_1.ScreenCapture.convertToGif(e.uri,{fps:12,width:480});i&&(u?.().catch(()=>{}),h({id:`anim_${i.timestamp}.gif`,type:"gif",format:"gif",uri:i.uri,filename:i.uri.split("/").pop()||`anim_${i.timestamp}.gif`,sizeBytes:i.sizeBytes,timestamp:i.timestamp,durationMs:i.durationMs}))}}/>
76
- </>},fabStyles=react_native_1.StyleSheet.create({playerContainer:{position:"absolute",bottom:react_native_1.Platform.OS==="ios"?34:18,left:12,right:12,minHeight:58,flexDirection:"row",alignItems:"center",justifyContent:"space-between",borderRadius:16,borderWidth:1,borderColor:"rgba(255, 255, 255, 0.28)",paddingHorizontal:12,paddingVertical:7,gap:8,zIndex:99999,elevation:25,shadowColor:AppColors_1.AppColors.indigo600,shadowOffset:{width:0,height:8},shadowOpacity:.45,shadowRadius:14,overflow:"hidden"},gradientBg:{position:"absolute",top:0,left:0,right:0,bottom:0,borderRadius:16},playerShineClip:{position:"absolute",top:0,left:0,right:0,bottom:0,borderRadius:16,overflow:"hidden"},playerShineStreak:{position:"absolute",top:-60,width:75,height:200},brandSection:{flexDirection:"row",alignItems:"center",gap:9,flex:1,minWidth:0,paddingVertical:2},titleWrapper:{flex:1,minWidth:0,justifyContent:"center",gap:2},appTitle:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:13.5,color:AppColors_1.AppColors.white,letterSpacing:-.2},versionRow:{flexDirection:"row",alignItems:"center",gap:4,minWidth:0},versionChip:{flexDirection:"row",alignItems:"center",backgroundColor:`${AppColors_1.AppColors.white}1F`,borderRadius:5,paddingHorizontal:5,paddingVertical:1.5,gap:3,borderWidth:1,borderColor:`${AppColors_1.AppColors.white}2E`,flexShrink:1,minWidth:0},versionChipText:{fontFamily:AppFonts_1.AppFonts.interMedium,fontSize:8.5,color:`${AppColors_1.AppColors.white}EB`,letterSpacing:.1},actionsRow:{flexDirection:"row",alignItems:"center",gap:4.5,flexShrink:0},actionBtn:{flexDirection:"row",alignItems:"center",gap:4,backgroundColor:"rgba(255, 255, 255, 0.22)",paddingHorizontal:8,paddingVertical:5.5,borderRadius:7,borderWidth:1,borderColor:"rgba(255, 255, 255, 0.32)"},actionBtnSquare:{alignItems:"center",justifyContent:"center",width:27,height:27,backgroundColor:"rgba(255, 255, 255, 0.22)",borderRadius:7,borderWidth:1,borderColor:"rgba(255, 255, 255, 0.32)"},recordingBtnActive:{backgroundColor:"rgba(239, 68, 68, 0.32)",borderColor:AppColors_1.AppColors.red500},recordingDot:{width:6,height:6,borderRadius:3,backgroundColor:AppColors_1.AppColors.red500},actionText:{fontFamily:AppFonts_1.AppFonts.interSemiBold,fontSize:10.5,color:AppColors_1.AppColors.white}});exports.default=FabLauncher;
70
+ {G&&<react_native_1.Animated.View pointerEvents="none"style={[fabStyles.dismissTargetContainer,{opacity:x,transform:[{translateY:x.interpolate({inputRange:[0,1],outputRange:[30,0]})},{scale:P}]}]}>
71
+ <react_native_1.View style={[fabStyles.dismissTargetCircle,z&&fabStyles.dismissTargetCircleActive]}>
72
+ <NetworkIcons_1.CloseWhite size={18}color={AppColors_1.AppColors.white}/>
73
+ </react_native_1.View>
74
+ <react_native_1.Text style={[fabStyles.dismissTargetLabel,z&&fabStyles.dismissTargetLabelActive]}>
75
+ {z?n("common.releaseToHide","Release to hide"):n("common.dragToHide","Drag here to hide")}
76
+ </react_native_1.Text>
77
+ </react_native_1.Animated.View>}
78
+
79
+
80
+ <MediaPreviewModal_1.MediaPreviewModal item={$}visible={!!$}onClose={()=>C(null)}onDelete={async e=>{await capture_1.ScreenCapture.deleteMedia(e.uri),g?.().catch(()=>{}),C(null)}}onConvertToGif={async e=>{const t=await capture_1.ScreenCapture.convertToGif(e.uri,{fps:12,width:480});t&&(g?.().catch(()=>{}),C({id:`anim_${t.timestamp}.gif`,type:"gif",format:"gif",uri:t.uri,filename:t.uri.split("/").pop()||`anim_${t.timestamp}.gif`,sizeBytes:t.sizeBytes,timestamp:t.timestamp,durationMs:t.durationMs}))}}/>
81
+ </>},fabStyles=react_native_1.StyleSheet.create({dismissTargetContainer:{position:"absolute",bottom:react_native_1.Platform.OS==="ios"?42:26,left:0,right:0,alignItems:"center",justifyContent:"center",zIndex:999998},dismissTargetCircle:{width:54,height:54,borderRadius:27,backgroundColor:"rgba(23, 23, 37, 0.82)",borderWidth:1.5,borderColor:"rgba(255, 255, 255, 0.28)",alignItems:"center",justifyContent:"center",shadowColor:AppColors_1.AppColors.black,shadowOffset:{width:0,height:6},shadowOpacity:.4,shadowRadius:10,elevation:16},dismissTargetCircleActive:{backgroundColor:AppColors_1.AppColors.red600,borderColor:AppColors_1.AppColors.red300,shadowColor:AppColors_1.AppColors.red600,shadowOpacity:.65,shadowRadius:18,transform:[{scale:1.06}]},dismissTargetLabel:{marginTop:6,fontFamily:AppFonts_1.AppFonts.interSemiBold,fontSize:11,color:"rgba(255, 255, 255, 0.85)",textShadowColor:"rgba(0, 0, 0, 0.6)",textShadowOffset:{width:0,height:1},textShadowRadius:3},dismissTargetLabelActive:{color:AppColors_1.AppColors.red300,fontFamily:AppFonts_1.AppFonts.interBold},playerContainer:{position:"absolute",bottom:react_native_1.Platform.OS==="ios"?34:18,left:12,right:12,minHeight:58,flexDirection:"row",alignItems:"center",justifyContent:"space-between",borderRadius:16,borderWidth:1,borderColor:"rgba(255, 255, 255, 0.28)",paddingHorizontal:12,paddingVertical:7,gap:8,zIndex:99999,elevation:25,shadowColor:AppColors_1.AppColors.indigo600,shadowOffset:{width:0,height:8},shadowOpacity:.45,shadowRadius:14,overflow:"hidden"},gradientBg:{position:"absolute",top:0,left:0,right:0,bottom:0,borderRadius:16},playerShineClip:{position:"absolute",top:0,left:0,right:0,bottom:0,borderRadius:16,overflow:"hidden"},playerShineStreak:{position:"absolute",top:-60,width:75,height:200},brandSection:{flexDirection:"row",alignItems:"center",gap:9,flex:1,minWidth:0,paddingVertical:2,overflow:"hidden"},titleWrapper:{flex:1,minWidth:0,justifyContent:"center",gap:2},appTitle:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:13.5,color:AppColors_1.AppColors.white,letterSpacing:-.2},versionRow:{flexDirection:"row",alignItems:"center",gap:4,minWidth:0},versionChip:{flexDirection:"row",alignItems:"center",backgroundColor:`${AppColors_1.AppColors.white}1F`,borderRadius:5,paddingHorizontal:5,paddingVertical:1.5,gap:3,borderWidth:1,borderColor:`${AppColors_1.AppColors.white}2E`,flexShrink:1,minWidth:0},versionChipText:{fontFamily:AppFonts_1.AppFonts.interMedium,fontSize:8.5,color:`${AppColors_1.AppColors.white}EB`,letterSpacing:.1},actionsRow:{flexDirection:"row",alignItems:"center",gap:4.5,flexShrink:0},actionBtn:{flexDirection:"row",alignItems:"center",gap:4,backgroundColor:"rgba(255, 255, 255, 0.22)",paddingHorizontal:8,paddingVertical:5.5,borderRadius:7,borderWidth:1,borderColor:"rgba(255, 255, 255, 0.32)"},actionBtnSquare:{alignItems:"center",justifyContent:"center",width:27,height:27,backgroundColor:"rgba(255, 255, 255, 0.22)",borderRadius:7,borderWidth:1,borderColor:"rgba(255, 255, 255, 0.32)"},recordingBtnActive:{backgroundColor:"rgba(239, 68, 68, 0.32)",borderColor:AppColors_1.AppColors.red500},recordingDot:{width:6,height:6,borderRadius:3,backgroundColor:AppColors_1.AppColors.red500},actionText:{fontFamily:AppFonts_1.AppFonts.interSemiBold,fontSize:10.5,color:AppColors_1.AppColors.white}});exports.default=FabLauncher;
@@ -0,0 +1,3 @@
1
+ import React from 'react';
2
+ export declare const FloatingCaptureWidget: React.FC;
3
+ export default FloatingCaptureWidget;
@@ -0,0 +1,54 @@
1
+ "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(r,a,o,n){n===void 0&&(n=o);var i=Object.getOwnPropertyDescriptor(a,o);(!i||("get"in i?!a.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return a[o]}}),Object.defineProperty(r,n,i)}):(function(r,a,o,n){n===void 0&&(n=o),r[n]=a[o]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(r,a){Object.defineProperty(r,"default",{enumerable:!0,value:a})}):function(r,a){r.default=a}),__importStar=this&&this.__importStar||(function(){var r=function(a){return r=Object.getOwnPropertyNames||function(o){var n=[];for(var i in o)Object.prototype.hasOwnProperty.call(o,i)&&(n[n.length]=i);return n},r(a)};return function(a){if(a&&a.__esModule)return a;var o={};if(a!=null)for(var n=r(a),i=0;i<n.length;i++)n[i]!=="default"&&__createBinding(o,a,n[i]);return __setModuleDefault(o,a),o}})(),__importDefault=this&&this.__importDefault||function(r){return r&&r.__esModule?r:{default:r}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.FloatingCaptureWidget=void 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")),NetworkIcons_1=require("../NetworkIcons"),capture_1=require("../../capture"),NativeInspector_1=require("../../native/NativeInspector"),toast_1=require("../../helpers/toast"),AppColors_1=require("../../styles/AppColors"),AppFonts_1=require("../../styles/AppFonts"),i18n_1=require("../../i18n"),MediaPreviewModal_1=require("./MediaPreviewModal"),FloatingCaptureWidget=()=>{const{refreshMediaCount:r,captureFps:a,captureScale:o,captureBitrate:n,captureMaxDurationSeconds:i,captureAudioMode:S,activeTab:M,settingsPage:T,peekMode:E}=(0,InspectorContext_1.useInspector)(),{t:c}=(0,i18n_1.useTranslation)(),[p,m]=(0,react_1.useState)(!1),[V,v]=(0,react_1.useState)(!1),[P,y]=(0,react_1.useState)(0),l=(0,react_1.useRef)(null),[C,f]=(0,react_1.useState)(null),h=(0,react_1.useRef)(new react_native_1.Animated.Value(1)).current,w=(0,react_1.useRef)(new react_native_1.Animated.Value(0)).current,s=(0,react_1.useRef)(new react_native_1.Animated.ValueXY({x:0,y:0})).current,u=(0,react_1.useRef)({x:0,y:0});(0,react_1.useEffect)(()=>{const e=s.x.addListener(d=>u.current.x=d.value),t=s.y.addListener(d=>u.current.y=d.value);return()=>{s.x.removeListener(e),s.y.removeListener(t)}},[s]);const g=(0,react_1.useRef)(!1),D=(0,react_1.useRef)(react_native_1.PanResponder.create({onStartShouldSetPanResponder:()=>!1,onStartShouldSetPanResponderCapture:()=>!1,onMoveShouldSetPanResponder:(e,t)=>Math.abs(t.dx)>2||Math.abs(t.dy)>2,onMoveShouldSetPanResponderCapture:(e,t)=>Math.abs(t.dx)>2||Math.abs(t.dy)>2,onPanResponderGrant:()=>{g.current=!0,s.setOffset({x:u.current.x,y:u.current.y}),s.setValue({x:0,y:0})},onPanResponderMove:(e,t)=>{s.setValue({x:t.dx,y:t.dy})},onPanResponderTerminationRequest:()=>!1,onShouldBlockNativeResponder:()=>!0,onPanResponderRelease:()=>{s.flattenOffset(),setTimeout(()=>{g.current=!1},150);const{width:e,height:t}=react_native_1.Dimensions.get("window"),d=e/2-30,R=-d,I=20,A=-(t-120),_=u.current.x,b=u.current.y;if(_<R||_>d||b<A||b>I){const F=Math.min(Math.max(_,R),d),q=Math.min(Math.max(b,A),I);react_native_1.Animated.spring(s,{toValue:{x:F,y:q},friction:7,tension:50,useNativeDriver:!1}).start()}},onPanResponderTerminate:()=>{s.flattenOffset(),g.current=!1}})).current;(0,react_1.useEffect)(()=>{capture_1.ScreenCapture.isRecording().then(e=>{m(e)}).catch(()=>{})},[]),(0,react_1.useEffect)(()=>{let e=null;return p?(y(0),l.current=setInterval(()=>{y(t=>t+1)},1e3),e=react_native_1.Animated.loop(react_native_1.Animated.sequence([react_native_1.Animated.timing(h,{toValue:1.15,duration:500,useNativeDriver:!0}),react_native_1.Animated.timing(h,{toValue:1,duration:500,useNativeDriver:!0})])),e.start()):(l.current&&(clearInterval(l.current),l.current=null),y(0),h.setValue(1)),()=>{l.current&&clearInterval(l.current),e&&e.stop()}},[p,h]);const O=(0,react_1.useCallback)(async()=>{if(!g.current)try{(0,NativeInspector_1.triggerNativeHaptic)("light"),v(!0),await new Promise(t=>setTimeout(t,60));const e=await capture_1.ScreenCapture.takeScreenshot({format:"png",quality:.9,hideInspector:!1});if(v(!1),react_native_1.Animated.sequence([react_native_1.Animated.timing(w,{toValue:.65,duration:70,useNativeDriver:!0}),react_native_1.Animated.timing(w,{toValue:0,duration:200,useNativeDriver:!0})]).start(),e){(0,NativeInspector_1.triggerNativeHaptic)("success");const t={id:`screenshot_${e.timestamp}.png`,type:"image",format:e.format,uri:e.uri,filename:e.uri.split("/").pop()||`screenshot_${e.timestamp}.png`,sizeBytes:e.sizeBytes,timestamp:e.timestamp,width:e.width,height:e.height};f(t),r?.().catch(()=>{}),(0,toast_1.showToast)(c("header.screenshotCaptured","Screenshot captured"))}else(0,toast_1.showToast)(c("header.screenshotFailed","Failed to capture screenshot"))}catch{v(!1),(0,toast_1.showToast)(c("header.screenshotError","Error capturing screenshot"))}},[r,w,c]),x=(0,react_1.useCallback)(async()=>{if(!g.current)try{if(p){(0,NativeInspector_1.triggerNativeHaptic)("medium");const e=await capture_1.ScreenCapture.stopRecording();if(m(!1),e){(0,NativeInspector_1.triggerNativeHaptic)("success");const t={id:`video_${e.timestamp}.${e.format}`,type:e.format==="gif"?"gif":"video",format:e.format,uri:e.uri,filename:e.uri.split("/").pop()||`video_${e.timestamp}.${e.format}`,sizeBytes:e.sizeBytes,timestamp:e.timestamp,durationMs:e.durationMs,width:e.width,height:e.height,hasAudio:e.hasAudio,thumbnailUri:e.thumbnailUri};f(t),r?.().catch(()=>{}),(0,toast_1.showToast)(c("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:a,scale:o,audioSource:S,bitrate:n>0?n:void 0,maxDurationSeconds:i})?(m(!0),(0,toast_1.showToast)(c("header.recordingStarted","Recording started"))):(0,toast_1.showToast)(c("header.recordingStartFailed","Failed to start recording"))}catch{(0,toast_1.showToast)(c("header.recordingError","Error during screen recording")),m(!1)}},[p,a,o,n,i,S,r,c]),B=e=>{const t=Math.floor(e/60),d=e%60;return`${t<10?"0":""}${t}:${d<10?"0":""}${d}`};return M==="media"||T==="media"?null:<>
2
+
3
+ <react_native_1.Animated.View pointerEvents="none"style={[styles.flashOverlay,{opacity:w}]}/>
4
+
5
+ {!V&&<react_native_1.Animated.View{...D.panHandlers}style={[styles.container,{transform:[{translateX:s.x},{translateY:s.y}]}]}>
6
+
7
+ {p?<react_native_1.View style={styles.recordingShadowWrapper}>
8
+ <TouchableScale_1.default onPress={x}style={styles.recordingPillWrapper}>
9
+ <react_native_linear_gradient_1.default colors={["#E11D48","#BE123C"]}start={{x:0,y:0}}end={{x:1,y:0}}style={styles.recordingPill}>
10
+ <react_native_1.Animated.View style={[styles.recordingDot,{transform:[{scale:h}]}]}/>
11
+ <react_native_1.Text style={styles.recordingText}>
12
+ REC {B(P)}
13
+ </react_native_1.Text>
14
+ <react_native_1.View style={styles.stopIconBadge}>
15
+ <react_native_1.View style={styles.stopIconSquare}/>
16
+ </react_native_1.View>
17
+ </react_native_linear_gradient_1.default>
18
+ </TouchableScale_1.default>
19
+ </react_native_1.View>:<react_native_1.View style={styles.dockShadowWrapper}>
20
+ <react_native_linear_gradient_1.default colors={["#0E1326","#1A1E38","#0E1326"]}start={{x:0,y:0}}end={{x:1,y:0}}style={styles.dockBar}>
21
+
22
+ <react_native_1.View style={styles.dragGripArea}pointerEvents="none">
23
+ <NetworkIcons_1.GripVerticalIcon size={13}color="rgba(255, 255, 255, 0.45)"/>
24
+ </react_native_1.View>
25
+
26
+
27
+ <TouchableScale_1.default onPress={O}style={styles.menuItemBtn}accessible={!0}accessibilityLabel="Take Screenshot">
28
+ <react_native_1.View style={[styles.menuItemIconCircle,{backgroundColor:"rgba(56, 189, 248, 0.22)"}]}>
29
+ <NetworkIcons_1.ScreenshotCaptureIcon size={14}color={AppColors_1.AppColors.sky400}/>
30
+ </react_native_1.View>
31
+ <react_native_1.Text style={styles.menuItemText}>
32
+ {c("header.screenshot","Screenshot")}
33
+ </react_native_1.Text>
34
+ </TouchableScale_1.default>
35
+
36
+
37
+ <react_native_1.View style={styles.dockDivider}/>
38
+
39
+
40
+ <TouchableScale_1.default onPress={x}style={styles.menuItemBtn}accessible={!0}accessibilityLabel={c("header.recordScreen","Record Screen")}>
41
+ <react_native_1.View style={[styles.menuItemIconCircle,{backgroundColor:"rgba(244, 63, 94, 0.24)"}]}>
42
+ <NetworkIcons_1.ScreenRecordIcon size={14}color={AppColors_1.AppColors.rose400||"#FB7185"}/>
43
+ </react_native_1.View>
44
+ <react_native_1.Text style={styles.menuItemText}>
45
+ {c("header.record","Record")}
46
+ </react_native_1.Text>
47
+ </TouchableScale_1.default>
48
+ </react_native_linear_gradient_1.default>
49
+ </react_native_1.View>}
50
+ </react_native_1.Animated.View>}
51
+
52
+
53
+ <MediaPreviewModal_1.MediaPreviewModal item={C}visible={!!C}onClose={()=>f(null)}onDelete={async e=>{await capture_1.ScreenCapture.deleteMedia(e.uri),r?.().catch(()=>{}),f(null)}}onConvertToGif={async e=>{const t=await capture_1.ScreenCapture.convertToGif(e.uri,{fps:12,width:480});t&&(r?.().catch(()=>{}),f({id:`anim_${t.timestamp}.gif`,type:"gif",format:"gif",uri:t.uri,filename:t.uri.split("/").pop()||`anim_${t.timestamp}.gif`,sizeBytes:t.sizeBytes,timestamp:t.timestamp,durationMs:t.durationMs}))}}/>
54
+ </>};exports.FloatingCaptureWidget=FloatingCaptureWidget;const styles=react_native_1.StyleSheet.create({flashOverlay:{...react_native_1.StyleSheet.absoluteFillObject,backgroundColor:AppColors_1.AppColors.white,zIndex:999999},container:{position:"absolute",bottom:react_native_1.Platform.OS==="ios"?22:16,alignSelf:"center",alignItems:"center",justifyContent:"center",zIndex:999999,elevation:999999},dockShadowWrapper:{borderRadius:24,backgroundColor:"#0D1120",...react_native_1.Platform.select({ios:{shadowColor:AppColors_1.AppColors.black,shadowOffset:{width:0,height:6},shadowOpacity:.45,shadowRadius:14},android:{elevation:16}})},dockBar:{flexDirection:"row",alignItems:"center",borderRadius:24,width:272,paddingVertical:0,paddingHorizontal:0,overflow:"hidden"},dragGripArea:{paddingLeft:10,paddingRight:2,paddingVertical:10,alignItems:"center",justifyContent:"center"},dockDivider:{width:1,height:20,backgroundColor:"rgba(255, 255, 255, 0.12)"},menuItemBtn:{flex:1,flexDirection:"row",alignItems:"center",justifyContent:"center",gap:7,paddingVertical:9,paddingHorizontal:10},menuItemIconCircle:{width:24,height:24,borderRadius:12,alignItems:"center",justifyContent:"center"},menuItemText:{fontFamily:AppFonts_1.AppFonts.interSemiBold,fontSize:12,color:AppColors_1.AppColors.white,letterSpacing:.1},recordingShadowWrapper:{borderRadius:20,...react_native_1.Platform.select({ios:{shadowColor:AppColors_1.AppColors.black,shadowOffset:{width:0,height:4},shadowOpacity:.4,shadowRadius:10},android:{elevation:12}})},recordingPillWrapper:{borderRadius:20,overflow:"hidden"},recordingPill:{flexDirection:"row",alignItems:"center",gap:7,paddingVertical:6.5,paddingHorizontal:12,borderRadius:20,borderWidth:1.5,borderColor:"rgba(255, 255, 255, 0.35)"},recordingDot:{width:7,height:7,borderRadius:3.5,backgroundColor:AppColors_1.AppColors.white},recordingText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:11,color:AppColors_1.AppColors.white,letterSpacing:.3},stopIconBadge:{width:16,height:16,borderRadius:8,backgroundColor:"rgba(255, 255, 255, 0.28)",alignItems:"center",justifyContent:"center",marginLeft:2},stopIconSquare:{width:5.5,height:5.5,borderRadius:1,backgroundColor:AppColors_1.AppColors.white}});exports.default=exports.FloatingCaptureWidget;
@@ -0,0 +1,11 @@
1
+ import React from 'react';
2
+ import { CrashRecord } from '../../types';
3
+ interface GlobalCrashScreenModalProps {
4
+ visible: boolean;
5
+ crash: CrashRecord | null;
6
+ onDismiss: () => void;
7
+ onOpenInspector: () => void;
8
+ onRetry?: () => void;
9
+ }
10
+ export declare const GlobalCrashScreenModal: React.FC<GlobalCrashScreenModalProps>;
11
+ export default GlobalCrashScreenModal;
@@ -0,0 +1,234 @@
1
+ "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(t,e,l,o){o===void 0&&(o=l);var a=Object.getOwnPropertyDescriptor(e,l);(!a||("get"in a?!e.__esModule:a.writable||a.configurable))&&(a={enumerable:!0,get:function(){return e[l]}}),Object.defineProperty(t,o,a)}):(function(t,e,l,o){o===void 0&&(o=l),t[o]=e[l]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(t,e){Object.defineProperty(t,"default",{enumerable:!0,value:e})}):function(t,e){t.default=e}),__importStar=this&&this.__importStar||(function(){var t=function(e){return t=Object.getOwnPropertyNames||function(l){var o=[];for(var a in l)Object.prototype.hasOwnProperty.call(l,a)&&(o[o.length]=a);return o},t(e)};return function(e){if(e&&e.__esModule)return e;var l={};if(e!=null)for(var o=t(e),a=0;a<o.length;a++)o[a]!=="default"&&__createBinding(l,e,o[a]);return __setModuleDefault(l,e),l}})(),__importDefault=this&&this.__importDefault||function(t){return t&&t.__esModule?t:{default:t}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.GlobalCrashScreenModal=void 0;const react_1=__importStar(require("react")),react_native_1=require("react-native"),react_native_linear_gradient_1=__importDefault(require("react-native-linear-gradient")),TouchableScale_1=__importDefault(require("../TouchableScale")),AppColors_1=require("../../styles/AppColors"),AppFonts_1=require("../../styles/AppFonts"),crashHandler_1=require("../../customHooks/crashHandler"),helpers_1=require("../../helpers"),toast_1=require("../../helpers/toast"),i18n_1=require("../../i18n"),NetworkIcons_1=require("../NetworkIcons");exports.GlobalCrashScreenModal=react_1.default.memo(({visible:t,crash:e,onDismiss:l,onOpenInspector:o,onRetry:a})=>{const{t:r}=(0,i18n_1.useTranslation)(),c=(0,react_1.useMemo)(()=>e?(0,crashHandler_1.exportCrashReport)(e,"markdown"):"",[e]);if(!t||!e)return null;const s=e.isFatal,d=e.type||"js",n=e.parsedStack&&e.parsedStack.length>0?e.parsedStack.find(i=>i.isAppCode)||e.parsedStack[0]:null,u=()=>{c&&((0,helpers_1.copyToClipboard)(c,r("errors.errorReport","Crash Report")),(0,toast_1.showToast)(r("common.copied","Copied crash diagnostics to clipboard")))},_=()=>{switch(d){case"native":return<NetworkIcons_1.ChipIcon size={12}color={AppColors_1.AppColors.cyan600}/>;case"render":return<NetworkIcons_1.LayoutIcon size={12}color={AppColors_1.AppColors.purple400}/>;case"promise":return<NetworkIcons_1.HourglassIcon size={12}color={AppColors_1.AppColors.amber400}/>;default:return<NetworkIcons_1.JsIcon size={12}color={AppColors_1.AppColors.yellow400}/>}};return<react_native_1.Modal visible={t}transparent={!1}animationType="fade"statusBarTranslucent={!0}onRequestClose={l}>
2
+ <react_native_1.SafeAreaView style={styles.safeArea}>
3
+ <react_native_1.View style={styles.container}>
4
+
5
+ <react_native_1.View style={styles.header}>
6
+ <react_native_linear_gradient_1.default colors={[AppColors_1.AppColors.red600,AppColors_1.AppColors.rose600]}start={{x:0,y:0}}end={{x:1,y:1}}style={styles.iconGlowWrap}>
7
+ <NetworkIcons_1.WarningTriangleIcon color={AppColors_1.AppColors.white}size={24}/>
8
+ </react_native_linear_gradient_1.default>
9
+
10
+ <react_native_1.View style={styles.headerTextCol}>
11
+ <react_native_1.View style={styles.badgeRow}>
12
+ <react_native_1.View style={[styles.crashBadge,s&&styles.crashBadgeFatal]}>
13
+ {s?<NetworkIcons_1.FlameIcon size={10}color={AppColors_1.AppColors.red500}/>:_()}
14
+ <react_native_1.Text style={[styles.crashBadgeText,s&&styles.crashBadgeTextFatal]}>
15
+ {s?r("crash.fatalBadge","FATAL CRASH"):`${d.toUpperCase()} ERROR`}
16
+ </react_native_1.Text>
17
+ </react_native_1.View>
18
+
19
+ <react_native_1.View style={styles.shieldBadge}>
20
+ <NetworkIcons_1.ShieldAlertIcon size={10}color={AppColors_1.AppColors.emerald400}/>
21
+ <react_native_1.Text style={styles.shieldBadgeText}>
22
+ {r("errors.protected","SHIELD PROTECTED")}
23
+ </react_native_1.Text>
24
+ </react_native_1.View>
25
+ </react_native_1.View>
26
+
27
+ <react_native_1.Text style={styles.title}>
28
+ {r("errors.rootCauseTitle","Crash Intercepted")}
29
+ </react_native_1.Text>
30
+ <react_native_1.Text style={styles.subtitle}numberOfLines={1}>
31
+ {r("errors.rootCauseSubtitle","Native crash prevented \u2022 Diagnostics captured")}
32
+ </react_native_1.Text>
33
+ </react_native_1.View>
34
+
35
+ <TouchableScale_1.default onPress={l}hitSlop={10}style={styles.closeBtn}>
36
+ <NetworkIcons_1.CloseWhite size={12}color={AppColors_1.AppColors.slate400}/>
37
+ </TouchableScale_1.default>
38
+ </react_native_1.View>
39
+
40
+
41
+ <react_native_1.ScrollView style={styles.scrollArea}contentContainerStyle={styles.scrollContent}showsVerticalScrollIndicator={!0}>
42
+
43
+ <react_native_1.View style={styles.errorBox}>
44
+ <react_native_1.View style={styles.errorBoxHeader}>
45
+ <NetworkIcons_1.CircleAlertIcon size={14}color={AppColors_1.AppColors.red500}/>
46
+ <react_native_1.Text style={styles.errorBoxTitle}>
47
+ {e.name||r("crash.unknownException","Exception")}
48
+ </react_native_1.Text>
49
+ </react_native_1.View>
50
+ <react_native_1.Text style={styles.errorMessage}selectable={!0}>
51
+ {e.message||r("crash.unknownException","Unknown Exception")}
52
+ </react_native_1.Text>
53
+ </react_native_1.View>
54
+
55
+
56
+ {n&&<react_native_1.View style={styles.locationCard}>
57
+ <react_native_1.View style={styles.cardHeaderRow}>
58
+ <NetworkIcons_1.TerminalIcon size={13}color={AppColors_1.AppColors.sky400}/>
59
+ <react_native_1.Text style={styles.cardHeaderTitle}>
60
+ {r("errors.exactLocation","EXACT ROOT CAUSE")}
61
+ </react_native_1.Text>
62
+ </react_native_1.View>
63
+
64
+ <react_native_1.View style={styles.locRow}>
65
+ <react_native_1.Text style={styles.locLabel}>
66
+ {r("errors.file","File:")}
67
+ </react_native_1.Text>
68
+ <react_native_1.Text style={styles.locValFile}numberOfLines={1}selectable={!0}>
69
+ {n.file}
70
+ </react_native_1.Text>
71
+ </react_native_1.View>
72
+
73
+ <react_native_1.View style={styles.locRow}>
74
+ <react_native_1.Text style={styles.locLabel}>
75
+ {r("errors.lineCol","Line / Col:")}
76
+ </react_native_1.Text>
77
+ <react_native_1.Text style={styles.locValNum}>
78
+ {n.lineNumber}:{n.column}
79
+ </react_native_1.Text>
80
+ </react_native_1.View>
81
+
82
+ <react_native_1.View style={styles.locRow}>
83
+ <react_native_1.Text style={styles.locLabel}>
84
+ {r("errors.function","Function:")}
85
+ </react_native_1.Text>
86
+ <react_native_1.Text style={styles.locValMethod}numberOfLines={1}>
87
+ {n.method}()
88
+ </react_native_1.Text>
89
+ </react_native_1.View>
90
+
91
+ {n.raw&&<react_native_1.Text style={styles.fullPathText}numberOfLines={2}selectable={!0}>
92
+ {n.raw}
93
+ </react_native_1.Text>}
94
+ </react_native_1.View>}
95
+
96
+
97
+ {e.parsedStack&&e.parsedStack.length>0&&<react_native_1.View style={styles.stackCard}>
98
+ <react_native_1.View style={styles.cardHeaderRow}>
99
+ <NetworkIcons_1.CodeBracketsIcon size={13}color={AppColors_1.AppColors.purple400}/>
100
+ <react_native_1.Text style={styles.cardHeaderTitle}>
101
+ {r("errors.callStack","CALL STACK")}
102
+ </react_native_1.Text>
103
+ <react_native_1.Text style={styles.cardHeaderCount}>
104
+ {e.parsedStack.length} frames
105
+ </react_native_1.Text>
106
+ </react_native_1.View>
107
+
108
+ {e.parsedStack.slice(0,10).map((i,p)=><react_native_1.View key={p}style={[styles.frameItem,i.isAppCode&&styles.frameItemProject]}>
109
+ <react_native_1.View style={styles.frameNumBadge}>
110
+ <react_native_1.Text style={[styles.frameNumText,i.isAppCode&&{color:AppColors_1.AppColors.sky400}]}>
111
+ #{p+1}
112
+ </react_native_1.Text>
113
+ </react_native_1.View>
114
+ <react_native_1.View style={{flex:1}}>
115
+ <react_native_1.Text style={[styles.frameMethod,i.isAppCode&&styles.frameMethodProject]}numberOfLines={1}>
116
+ {i.method}
117
+ </react_native_1.Text>
118
+ <react_native_1.Text style={styles.frameLoc}numberOfLines={1}>
119
+ {i.file}:{i.lineNumber}
120
+ </react_native_1.Text>
121
+ </react_native_1.View>
122
+ {i.isAppCode&&<react_native_1.View style={styles.appTag}>
123
+ <react_native_1.Text style={styles.appTagText}>APP</react_native_1.Text>
124
+ </react_native_1.View>}
125
+ </react_native_1.View>)}
126
+ </react_native_1.View>}
127
+
128
+
129
+ {e.componentStack&&<react_native_1.View style={styles.stackCard}>
130
+ <react_native_1.View style={styles.cardHeaderRow}>
131
+ <NetworkIcons_1.LayoutIcon size={13}color={AppColors_1.AppColors.purple400}/>
132
+ <react_native_1.Text style={styles.cardHeaderTitle}>
133
+ {r("crash.componentHierarchy","COMPONENT HIERARCHY")}
134
+ </react_native_1.Text>
135
+ </react_native_1.View>
136
+ <react_native_1.Text style={styles.rawStackText}selectable={!0}>
137
+ {e.componentStack}
138
+ </react_native_1.Text>
139
+ </react_native_1.View>}
140
+
141
+
142
+ {e.breadcrumbs&&e.breadcrumbs.length>0&&<react_native_1.View style={styles.stackCard}>
143
+ <react_native_1.View style={styles.cardHeaderRow}>
144
+ <NetworkIcons_1.RepeatIcon size={13}color={AppColors_1.AppColors.amber400}/>
145
+ <react_native_1.Text style={styles.cardHeaderTitle}>
146
+ {r("crash.breadcrumbTrail","RECENT TRAIL")}
147
+ </react_native_1.Text>
148
+ <react_native_1.Text style={styles.cardHeaderCount}>
149
+ {e.breadcrumbs.length} events
150
+ </react_native_1.Text>
151
+ </react_native_1.View>
152
+
153
+ {e.breadcrumbs.slice(0,6).map((i,p)=>{const y=new Date(i.timestamp).toLocaleTimeString();return<react_native_1.View key={p}style={styles.breadcrumbItem}>
154
+ <react_native_1.View style={styles.breadcrumbTag}>
155
+ <react_native_1.Text style={styles.breadcrumbTagText}>
156
+ {i.type.toUpperCase()}
157
+ </react_native_1.Text>
158
+ </react_native_1.View>
159
+ <react_native_1.Text style={styles.breadcrumbMsg}numberOfLines={2}>
160
+ {i.message}
161
+ </react_native_1.Text>
162
+ <react_native_1.Text style={styles.breadcrumbTime}>{y}</react_native_1.Text>
163
+ </react_native_1.View>})}
164
+ </react_native_1.View>}
165
+
166
+
167
+ {e.deviceInfo&&<react_native_1.View style={styles.telemetryCard}>
168
+ <react_native_1.Text style={styles.telemetryTitle}>
169
+ {r("crash.deviceDiagnostics","HARDWARE & RUNTIME TELEMETRY")}
170
+ </react_native_1.Text>
171
+ <react_native_1.View style={styles.telemetryGrid}>
172
+ <react_native_1.View style={styles.telemetryPill}>
173
+ <react_native_1.Text style={styles.telemetryLabel}>OS</react_native_1.Text>
174
+ <react_native_1.Text style={styles.telemetryValue}>
175
+ {e.deviceInfo.platform?.toUpperCase()}{" "}
176
+ {e.deviceInfo.osVersion}
177
+ </react_native_1.Text>
178
+ </react_native_1.View>
179
+ <react_native_1.View style={styles.telemetryPill}>
180
+ <react_native_1.Text style={styles.telemetryLabel}>RN Version</react_native_1.Text>
181
+ <react_native_1.Text style={styles.telemetryValue}>
182
+ {e.deviceInfo.rnVersion||"N/A"}
183
+ </react_native_1.Text>
184
+ </react_native_1.View>
185
+ <react_native_1.View style={styles.telemetryPill}>
186
+ <react_native_1.Text style={styles.telemetryLabel}>Engine</react_native_1.Text>
187
+ <react_native_1.Text style={styles.telemetryValue}>
188
+ {e.deviceInfo.isHermes?"Hermes":"JSC"}
189
+ </react_native_1.Text>
190
+ </react_native_1.View>
191
+ <react_native_1.View style={styles.telemetryPill}>
192
+ <react_native_1.Text style={styles.telemetryLabel}>Architecture</react_native_1.Text>
193
+ <react_native_1.Text style={styles.telemetryValue}>
194
+ {e.deviceInfo.isFabric?"Fabric (New)":"Paper"}
195
+ </react_native_1.Text>
196
+ </react_native_1.View>
197
+ {e.memoryInfo&&<react_native_1.View style={styles.telemetryPill}>
198
+ <react_native_1.Text style={styles.telemetryLabel}>JS Heap</react_native_1.Text>
199
+ <react_native_1.Text style={styles.telemetryValue}>
200
+ {e.memoryInfo.usedJSHeapSize} / {e.memoryInfo.totalJSHeapSize} MB
201
+ </react_native_1.Text>
202
+ </react_native_1.View>}
203
+ </react_native_1.View>
204
+ </react_native_1.View>}
205
+ </react_native_1.ScrollView>
206
+
207
+
208
+ <react_native_1.View style={styles.footer}>
209
+ {a&&<TouchableScale_1.default onPress={a}style={styles.retryBtn}>
210
+ <NetworkIcons_1.RefreshCcwIcon size={14}color={AppColors_1.AppColors.white}/>
211
+ <react_native_1.Text style={styles.retryBtnText}>
212
+ {r("errors.retry","Try Again")}
213
+ </react_native_1.Text>
214
+ </TouchableScale_1.default>}
215
+
216
+ <TouchableScale_1.default onPress={o}style={styles.inspectorBtn}>
217
+ <react_native_linear_gradient_1.default colors={[AppColors_1.AppColors.indigo600,AppColors_1.AppColors.violet600]}start={{x:0,y:0}}end={{x:1,y:1}}style={styles.inspectorBtnGradient}>
218
+ <NetworkIcons_1.ShieldAlertIcon size={14}color={AppColors_1.AppColors.white}/>
219
+ <react_native_1.Text style={styles.inspectorBtnText}>
220
+ {r("crash.openInInspector","Open in Inspector")}
221
+ </react_native_1.Text>
222
+ </react_native_linear_gradient_1.default>
223
+ </TouchableScale_1.default>
224
+
225
+ <TouchableScale_1.default onPress={u}style={styles.copyBtn}>
226
+ <NetworkIcons_1.CopyIcon size={14}color={AppColors_1.AppColors.slate200}/>
227
+ <react_native_1.Text style={styles.copyBtnText}>
228
+ {r("errors.copy","Copy")}
229
+ </react_native_1.Text>
230
+ </TouchableScale_1.default>
231
+ </react_native_1.View>
232
+ </react_native_1.View>
233
+ </react_native_1.SafeAreaView>
234
+ </react_native_1.Modal>});const styles=react_native_1.StyleSheet.create({safeArea:{flex:1,backgroundColor:AppColors_1.AppColors.slate900},container:{flex:1,backgroundColor:AppColors_1.AppColors.slate900},header:{flexDirection:"row",alignItems:"center",paddingHorizontal:16,paddingTop:react_native_1.Platform.OS==="android"?24:12,paddingBottom:12,backgroundColor:AppColors_1.AppColors.slate850,borderBottomWidth:1,borderBottomColor:AppColors_1.AppColors.slate800,gap:12},iconGlowWrap:{width:42,height:42,borderRadius:12,alignItems:"center",justifyContent:"center",shadowColor:AppColors_1.AppColors.red500,shadowOffset:{width:0,height:4},shadowOpacity:.35,shadowRadius:8,elevation:4},headerTextCol:{flex:1},badgeRow:{flexDirection:"row",alignItems:"center",gap:6,marginBottom:3},crashBadge:{flexDirection:"row",alignItems:"center",gap:4,backgroundColor:`${AppColors_1.AppColors.red500}22`,paddingHorizontal:6,paddingVertical:2,borderRadius:5,borderWidth:1,borderColor:`${AppColors_1.AppColors.red500}44`},crashBadgeFatal:{backgroundColor:`${AppColors_1.AppColors.red500}33`,borderColor:AppColors_1.AppColors.red500},crashBadgeText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:9.5,color:AppColors_1.AppColors.red500,letterSpacing:.4},crashBadgeTextFatal:{color:AppColors_1.AppColors.red500},shieldBadge:{flexDirection:"row",alignItems:"center",gap:4,backgroundColor:`${AppColors_1.AppColors.emerald500}20`,paddingHorizontal:6,paddingVertical:2,borderRadius:5,borderWidth:1,borderColor:`${AppColors_1.AppColors.emerald500}44`},shieldBadgeText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:9,color:AppColors_1.AppColors.emerald400,letterSpacing:.4},title:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:16,color:AppColors_1.AppColors.white,letterSpacing:-.2},subtitle:{fontFamily:AppFonts_1.AppFonts.interRegular,fontSize:11,color:AppColors_1.AppColors.slate400,marginTop:1},closeBtn:{width:30,height:30,borderRadius:15,backgroundColor:AppColors_1.AppColors.slate800,alignItems:"center",justifyContent:"center"},scrollArea:{flex:1},scrollContent:{padding:16,gap:12,paddingBottom:24},errorBox:{backgroundColor:`${AppColors_1.AppColors.red500}16`,borderRadius:12,borderWidth:1,borderColor:`${AppColors_1.AppColors.red500}40`,padding:14,gap:6},errorBoxHeader:{flexDirection:"row",alignItems:"center",gap:6},errorBoxTitle:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:12,color:AppColors_1.AppColors.red500,letterSpacing:.4},errorMessage:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:13.5,color:AppColors_1.AppColors.red100,lineHeight:19},locationCard:{backgroundColor:AppColors_1.AppColors.slate850,borderRadius:12,padding:14,borderWidth:1,borderColor:AppColors_1.AppColors.slate800,gap:8},cardHeaderRow:{flexDirection:"row",alignItems:"center",gap:6,marginBottom:4},cardHeaderTitle:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:10.5,color:AppColors_1.AppColors.slate200,letterSpacing:.6,flex:1},cardHeaderCount:{fontFamily:AppFonts_1.AppFonts.interMedium,fontSize:10,color:AppColors_1.AppColors.slate400},locRow:{flexDirection:"row",alignItems:"center",justifyContent:"space-between",gap:8},locLabel:{fontFamily:AppFonts_1.AppFonts.interMedium,fontSize:11.5,color:AppColors_1.AppColors.slate400,minWidth:80},locValFile:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:12,color:AppColors_1.AppColors.sky400,flex:1,textAlign:"right"},locValNum:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:12,color:AppColors_1.AppColors.white},locValMethod:{fontFamily:AppFonts_1.AppFonts.interMedium,fontSize:12,color:AppColors_1.AppColors.purple400},fullPathText:{fontFamily:AppFonts_1.AppFonts.interRegular,fontSize:10,color:AppColors_1.AppColors.slate400,marginTop:4,paddingTop:6,borderTopWidth:1,borderTopColor:AppColors_1.AppColors.slate800},stackCard:{backgroundColor:AppColors_1.AppColors.slate850,borderRadius:12,padding:14,borderWidth:1,borderColor:AppColors_1.AppColors.slate800,gap:6},frameItem:{flexDirection:"row",alignItems:"center",backgroundColor:AppColors_1.AppColors.slate900,padding:9,borderRadius:8,gap:8,borderWidth:1,borderColor:AppColors_1.AppColors.slate800},frameItemProject:{borderColor:`${AppColors_1.AppColors.sky400}44`,backgroundColor:`${AppColors_1.AppColors.sky400}0F`},frameNumBadge:{width:22,alignItems:"center"},frameNumText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:10,color:AppColors_1.AppColors.slate400},frameMethod:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:11.5,color:AppColors_1.AppColors.slate200},frameMethodProject:{color:AppColors_1.AppColors.white},frameLoc:{fontFamily:AppFonts_1.AppFonts.interRegular,fontSize:10,color:AppColors_1.AppColors.slate400,marginTop:1},appTag:{backgroundColor:`${AppColors_1.AppColors.sky400}26`,paddingHorizontal:5,paddingVertical:2,borderRadius:4},appTagText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:8.5,color:AppColors_1.AppColors.sky400},rawStackText:{fontFamily:AppFonts_1.AppFonts.interRegular,fontSize:10.5,color:AppColors_1.AppColors.slate200,lineHeight:16,backgroundColor:AppColors_1.AppColors.slate900,padding:10,borderRadius:8},breadcrumbItem:{flexDirection:"row",alignItems:"center",gap:8,backgroundColor:AppColors_1.AppColors.slate900,padding:8,borderRadius:7,borderWidth:1,borderColor:AppColors_1.AppColors.slate800},breadcrumbTag:{backgroundColor:`${AppColors_1.AppColors.indigo600}20`,paddingHorizontal:5,paddingVertical:2,borderRadius:4},breadcrumbTagText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:8.5,color:AppColors_1.AppColors.purple400},breadcrumbMsg:{flex:1,fontFamily:AppFonts_1.AppFonts.interRegular,fontSize:11,color:AppColors_1.AppColors.slate200},breadcrumbTime:{fontFamily:AppFonts_1.AppFonts.interMedium,fontSize:9.5,color:AppColors_1.AppColors.slate400},telemetryCard:{backgroundColor:AppColors_1.AppColors.slate850,borderRadius:12,padding:14,borderWidth:1,borderColor:AppColors_1.AppColors.slate800,gap:8},telemetryTitle:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:10,color:AppColors_1.AppColors.slate400,letterSpacing:.6},telemetryGrid:{flexDirection:"row",flexWrap:"wrap",gap:8},telemetryPill:{backgroundColor:AppColors_1.AppColors.slate900,paddingHorizontal:10,paddingVertical:6,borderRadius:8,borderWidth:1,borderColor:AppColors_1.AppColors.slate800},telemetryLabel:{fontFamily:AppFonts_1.AppFonts.interMedium,fontSize:9.5,color:AppColors_1.AppColors.slate400},telemetryValue:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:11,color:AppColors_1.AppColors.white,marginTop:2},footer:{flexDirection:"row",padding:14,backgroundColor:AppColors_1.AppColors.slate850,borderTopWidth:1,borderTopColor:AppColors_1.AppColors.slate800,gap:10,alignItems:"center"},retryBtn:{flexDirection:"row",alignItems:"center",justifyContent:"center",gap:6,backgroundColor:AppColors_1.AppColors.red600,paddingHorizontal:14,height:42,borderRadius:10},retryBtnText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:12.5,color:AppColors_1.AppColors.white},inspectorBtn:{flex:1,height:42,borderRadius:10,overflow:"hidden"},inspectorBtnGradient:{flex:1,flexDirection:"row",alignItems:"center",justifyContent:"center",gap:6,paddingHorizontal:12},inspectorBtnText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:12.5,color:AppColors_1.AppColors.white},copyBtn:{flexDirection:"row",alignItems:"center",justifyContent:"center",gap:6,backgroundColor:AppColors_1.AppColors.slate800,borderWidth:1,borderColor:AppColors_1.AppColors.slate700,paddingHorizontal:14,height:42,borderRadius:10},copyBtnText:{fontFamily:AppFonts_1.AppFonts.interBold,fontSize:12.5,color:AppColors_1.AppColors.slate200}});exports.default=exports.GlobalCrashScreenModal;