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.
Files changed (129) hide show
  1. package/README.md +0 -8
  2. package/android/src/main/java/com/inappinspector/NetworkInspectorModule.kt +118 -31
  3. package/dist/commonjs/components/Inspector/ConsoleExportModal.js +1 -1
  4. package/dist/commonjs/components/Inspector/ConsoleTab.js +7 -7
  5. package/dist/commonjs/components/Inspector/FabLauncher.js +3 -3
  6. package/dist/commonjs/components/Inspector/InspectorHeader.js +30 -30
  7. package/dist/commonjs/components/Inspector/MainScreen.js +38 -75
  8. package/dist/commonjs/components/Inspector/NetworkExportModal.js +4 -4
  9. package/dist/commonjs/components/Inspector/NetworkTab.js +51 -51
  10. package/dist/commonjs/components/Inspector/SecondaryTelemetryStrip.d.ts +1 -0
  11. package/dist/commonjs/components/Inspector/SecondaryTelemetryStrip.js +17 -16
  12. package/dist/commonjs/components/Inspector/SettingsPanel.js +40 -41
  13. package/dist/commonjs/components/Inspector/SkeletonPlaceholder.d.ts +3 -0
  14. package/dist/commonjs/components/Inspector/SkeletonPlaceholder.js +34 -3
  15. package/dist/commonjs/components/Inspector/TabBar.js +9 -15
  16. package/dist/commonjs/components/LogCard.js +7 -7
  17. package/dist/commonjs/components/SkeletonPlaceholder.d.ts +3 -0
  18. package/dist/commonjs/components/SkeletonPlaceholder.js +34 -3
  19. package/dist/commonjs/constants/telemetryConfig.d.ts +3 -3
  20. package/dist/commonjs/constants/telemetryConfig.js +1 -1
  21. package/dist/commonjs/constants/version.d.ts +1 -1
  22. package/dist/commonjs/constants/version.js +1 -1
  23. package/dist/commonjs/helpers/remoteConfig.js +1 -1
  24. package/dist/commonjs/helpers/shareFormatter.js +14 -14
  25. package/dist/commonjs/index.d.ts +1 -1
  26. package/dist/commonjs/index.js +3 -3
  27. package/dist/commonjs/native/NativeInspector.d.ts +2 -0
  28. package/dist/commonjs/native/NativeInspector.js +1 -1
  29. package/dist/commonjs/native/NativeNetworkInspector.d.ts +2 -0
  30. package/dist/commonjs/styles/AppFonts.d.ts +4 -0
  31. package/dist/commonjs/styles/AppFonts.js +1 -1
  32. package/dist/commonjs/styles/index.d.ts +2 -0
  33. package/dist/commonjs/styles/index.js +1 -1
  34. package/dist/commonjs/types/enums.d.ts +0 -2
  35. package/dist/commonjs/types/enums.js +1 -1
  36. package/dist/commonjs/types/interfaces.d.ts +1 -1
  37. package/dist/esm/components/Inspector/ConsoleExportModal.js +1 -1
  38. package/dist/esm/components/Inspector/ConsoleTab.js +48 -48
  39. package/dist/esm/components/Inspector/FabLauncher.js +42 -42
  40. package/dist/esm/components/Inspector/InspectorHeader.js +50 -50
  41. package/dist/esm/components/Inspector/MainScreen.js +87 -124
  42. package/dist/esm/components/Inspector/NetworkExportModal.js +1 -1
  43. package/dist/esm/components/Inspector/NetworkTab.js +83 -83
  44. package/dist/esm/components/Inspector/SecondaryTelemetryStrip.d.ts +1 -0
  45. package/dist/esm/components/Inspector/SecondaryTelemetryStrip.js +23 -22
  46. package/dist/esm/components/Inspector/SettingsPanel.js +106 -107
  47. package/dist/esm/components/Inspector/SkeletonPlaceholder.d.ts +3 -0
  48. package/dist/esm/components/Inspector/SkeletonPlaceholder.js +42 -11
  49. package/dist/esm/components/Inspector/TabBar.js +35 -41
  50. package/dist/esm/components/LogCard.js +53 -53
  51. package/dist/esm/components/SkeletonPlaceholder.d.ts +3 -0
  52. package/dist/esm/components/SkeletonPlaceholder.js +42 -11
  53. package/dist/esm/constants/telemetryConfig.d.ts +3 -3
  54. package/dist/esm/constants/telemetryConfig.js +1 -1
  55. package/dist/esm/constants/version.d.ts +1 -1
  56. package/dist/esm/constants/version.js +1 -1
  57. package/dist/esm/helpers/remoteConfig.js +1 -1
  58. package/dist/esm/helpers/shareFormatter.js +14 -14
  59. package/dist/esm/index.d.ts +1 -1
  60. package/dist/esm/index.js +8 -8
  61. package/dist/esm/native/NativeInspector.d.ts +2 -0
  62. package/dist/esm/native/NativeInspector.js +1 -1
  63. package/dist/esm/native/NativeNetworkInspector.d.ts +2 -0
  64. package/dist/esm/styles/AppFonts.d.ts +4 -0
  65. package/dist/esm/styles/AppFonts.js +1 -1
  66. package/dist/esm/styles/index.d.ts +2 -0
  67. package/dist/esm/styles/index.js +1 -1
  68. package/dist/esm/types/enums.d.ts +0 -2
  69. package/dist/esm/types/enums.js +1 -1
  70. package/dist/esm/types/interfaces.d.ts +1 -1
  71. package/ios/NetworkInspectorModule.mm +288 -325
  72. package/package.json +1 -1
  73. package/src/native/NativeInspector.ts +30 -0
  74. package/src/native/NativeNetworkInspector.ts +2 -0
  75. package/android/.gradle/8.9/checksums/checksums.lock +0 -0
  76. package/android/.gradle/8.9/dependencies-accessors/gc.properties +0 -0
  77. package/android/.gradle/8.9/executionHistory/executionHistory.lock +0 -0
  78. package/android/.gradle/8.9/fileChanges/last-build.bin +0 -0
  79. package/android/.gradle/8.9/fileHashes/fileHashes.lock +0 -0
  80. package/android/.gradle/8.9/gc.properties +0 -0
  81. package/android/.gradle/9.2.0/checksums/checksums.lock +0 -0
  82. package/android/.gradle/9.2.0/fileChanges/last-build.bin +0 -0
  83. package/android/.gradle/9.2.0/fileHashes/fileHashes.bin +0 -0
  84. package/android/.gradle/9.2.0/fileHashes/fileHashes.lock +0 -0
  85. package/android/.gradle/9.2.0/gc.properties +0 -0
  86. package/android/.gradle/buildOutputCleanup/buildOutputCleanup.lock +0 -0
  87. package/android/.gradle/buildOutputCleanup/cache.properties +0 -2
  88. package/android/.gradle/vcs-1/gc.properties +0 -0
  89. package/android/.settings/org.eclipse.buildship.core.prefs +0 -13
  90. package/dist/commonjs/components/Inspector/BoxModelVisualizer.d.ts +0 -8
  91. package/dist/commonjs/components/Inspector/BoxModelVisualizer.js +0 -76
  92. package/dist/commonjs/components/Inspector/DebuggingTab.d.ts +0 -3
  93. package/dist/commonjs/components/Inspector/DebuggingTab.js +0 -197
  94. package/dist/commonjs/components/Inspector/UiA11yAuditPanel.d.ts +0 -7
  95. package/dist/commonjs/components/Inspector/UiA11yAuditPanel.js +0 -97
  96. package/dist/commonjs/components/Inspector/UiInspectorDetail.d.ts +0 -2
  97. package/dist/commonjs/components/Inspector/UiInspectorDetail.js +0 -485
  98. package/dist/commonjs/components/Inspector/UiInspectorOverlay.d.ts +0 -2
  99. package/dist/commonjs/components/Inspector/UiInspectorOverlay.js +0 -199
  100. package/dist/commonjs/components/Inspector/UiInspectorTab.d.ts +0 -2
  101. package/dist/commonjs/components/Inspector/UiInspectorTab.js +0 -117
  102. package/dist/commonjs/components/Inspector/UiLiveStyleTweaker.d.ts +0 -10
  103. package/dist/commonjs/components/Inspector/UiLiveStyleTweaker.js +0 -148
  104. package/dist/commonjs/components/Inspector/index.d.ts +0 -28
  105. package/dist/commonjs/components/Inspector/index.js +0 -1
  106. package/dist/commonjs/customHooks/uiInspectorManager.d.ts +0 -22
  107. package/dist/commonjs/customHooks/uiInspectorManager.js +0 -1
  108. package/dist/commonjs/helpers/uiInspectorEngine.d.ts +0 -62
  109. package/dist/commonjs/helpers/uiInspectorEngine.js +0 -19
  110. package/dist/esm/components/Inspector/BoxModelVisualizer.d.ts +0 -8
  111. package/dist/esm/components/Inspector/BoxModelVisualizer.js +0 -76
  112. package/dist/esm/components/Inspector/DebuggingTab.d.ts +0 -3
  113. package/dist/esm/components/Inspector/DebuggingTab.js +0 -197
  114. package/dist/esm/components/Inspector/UiA11yAuditPanel.d.ts +0 -7
  115. package/dist/esm/components/Inspector/UiA11yAuditPanel.js +0 -97
  116. package/dist/esm/components/Inspector/UiInspectorDetail.d.ts +0 -2
  117. package/dist/esm/components/Inspector/UiInspectorDetail.js +0 -422
  118. package/dist/esm/components/Inspector/UiInspectorOverlay.d.ts +0 -2
  119. package/dist/esm/components/Inspector/UiInspectorOverlay.js +0 -138
  120. package/dist/esm/components/Inspector/UiInspectorTab.d.ts +0 -2
  121. package/dist/esm/components/Inspector/UiInspectorTab.js +0 -117
  122. package/dist/esm/components/Inspector/UiLiveStyleTweaker.d.ts +0 -10
  123. package/dist/esm/components/Inspector/UiLiveStyleTweaker.js +0 -148
  124. package/dist/esm/components/Inspector/index.d.ts +0 -28
  125. package/dist/esm/components/Inspector/index.js +0 -1
  126. package/dist/esm/customHooks/uiInspectorManager.d.ts +0 -22
  127. package/dist/esm/customHooks/uiInspectorManager.js +0 -1
  128. package/dist/esm/helpers/uiInspectorEngine.d.ts +0 -48
  129. package/dist/esm/helpers/uiInspectorEngine.js +0 -19
@@ -1,485 +0,0 @@
1
- "use strict";var __createBinding=this&&this.__createBinding||(Object.create?(function(g,b,m,C){C===void 0&&(C=m);var x=Object.getOwnPropertyDescriptor(b,m);(!x||("get"in x?!b.__esModule:x.writable||x.configurable))&&(x={enumerable:!0,get:function(){return b[m]}}),Object.defineProperty(g,C,x)}):(function(g,b,m,C){C===void 0&&(C=m),g[C]=b[m]})),__setModuleDefault=this&&this.__setModuleDefault||(Object.create?(function(g,b){Object.defineProperty(g,"default",{enumerable:!0,value:b})}):function(g,b){g.default=b}),__importStar=this&&this.__importStar||(function(){var g=function(b){return g=Object.getOwnPropertyNames||function(m){var C=[];for(var x in m)Object.prototype.hasOwnProperty.call(m,x)&&(C[C.length]=x);return C},g(b)};return function(b){if(b&&b.__esModule)return b;var m={};if(b!=null)for(var C=g(b),x=0;x<C.length;x++)C[x]!=="default"&&__createBinding(m,b,C[x]);return __setModuleDefault(m,b),m}})(),__importDefault=this&&this.__importDefault||function(g){return g&&g.__esModule?g:{default:g}};Object.defineProperty(exports,"__esModule",{value:!0}),exports.UiInspectorDetail=void 0;const react_1=__importStar(require("react")),react_native_1=require("react-native"),InspectorContext_1=require("./InspectorContext"),uiInspectorEngine_1=require("../../helpers/uiInspectorEngine"),BoxModelVisualizer_1=require("./BoxModelVisualizer"),UiA11yAuditPanel_1=require("./UiA11yAuditPanel"),JsonViewer_1=__importDefault(require("../JsonViewer")),TouchableScale_1=__importDefault(require("../TouchableScale")),NetworkIcons_1=require("../NetworkIcons"),AppColors_1=require("../../styles/AppColors"),AppFonts_1=require("../../styles/AppFonts"),NativeInspector_1=require("../../native/NativeInspector"),toast_1=require("../../helpers/toast"),clipboard_1=__importDefault(require("@react-native-clipboard/clipboard")),UiInspectorDetail=()=>{const{selectedUiElement:g,setSelectedUiElement:b,uiActiveSubTab:m,setUiActiveSubTab:C}=(0,InspectorContext_1.useInspector)(),[x,X]=(0,react_1.useState)(""),[E,j]=(0,react_1.useState)("ancestors"),[H,K]=(0,react_1.useState)(""),[Y,L]=(0,react_1.useState)(!1),[Z,N]=(0,react_1.useState)(null),[B,M]=(0,react_1.useState)("rn"),Q=(0,react_1.useRef)(null);if(!g)return null;const{componentName:w,hierarchy:z,props:R,flattenedStyles:ee,boxModel:h,a11y:te,layout:u,snapshotUri:k}=g,O=react_native_1.Dimensions.get("window"),W=O.width*O.height,G=u.width*u.height,oe=W>0?(G/W*100).toFixed(1):"0.0",re=u.height>0?(u.width/u.height).toFixed(2):"1.00",A={...ee},F=(0,uiInspectorEngine_1.categorizeStyles)(A),ae=typeof w=="string"&&(w.startsWith("RCT")||["View","Text","Image","ScrollView","TextInput","Modal"].includes(w)),v=(0,uiInspectorEngine_1.generateFullJsxSegmentSnippet)(w,R,A),U=()=>{clipboard_1.default.setString(v.code),(0,NativeInspector_1.triggerNativeHaptic)(),(0,toast_1.showToast)("Copied full JSX to clipboard")},ie=()=>{v.sourceFile&&(clipboard_1.default.setString(`${v.sourceFile}:${v.lineNumber||1}`),(0,NativeInspector_1.triggerNativeHaptic)(),(0,toast_1.showToast)("Copied source location"))},q=()=>{const t=B==="rn"?(0,uiInspectorEngine_1.generateStyleSheetSnippet)(w,A):(0,uiInspectorEngine_1.generateCssSnippet)(w,A);clipboard_1.default.setString(t),(0,NativeInspector_1.triggerNativeHaptic)(),(0,toast_1.showToast)(B==="rn"?"Copied StyleSheet":"Copied CSS")},ne=()=>{clipboard_1.default.setString(JSON.stringify(R,null,2)),(0,NativeInspector_1.triggerNativeHaptic)(),(0,toast_1.showToast)("Copied props as JSON")},le=(t,e)=>{clipboard_1.default.setString(String(e)),(0,NativeInspector_1.triggerNativeHaptic)(),N(t),(0,toast_1.showToast)(`Copied "${t}: ${e}"`),setTimeout(()=>N(null),1500)},$=t=>{if(t.componentName===w)return;(0,NativeInspector_1.triggerNativeHaptic)();const e=t.props||{},_=t.styles||(e.style?react_native_1.StyleSheet.flatten(e.style):{})||{},T=t.layout||{...u,width:_.width||u.width,height:_.height||u.height},f=(0,uiInspectorEngine_1.extractBoxModel)(_,T),V=(0,uiInspectorEngine_1.auditAccessibility)(e,T,_);b({...g,componentName:t.componentName,displayName:t.displayName,props:e,originalStyles:_,flattenedStyles:_,tweakedStyles:{},layout:T,boxModel:f,a11y:V})},ce=(t,e)=>{if(typeof e!="string")return!1;const _=t.toLowerCase();return _.includes("color")||_.includes("background")||e.startsWith("#")||e.startsWith("rgb")||e.startsWith("hsl")},I=(t,e,_,T)=>{const f=Object.entries(e);return f.length===0?null:<react_native_1.View key={t}style={[styles.styleGroupCard,{borderLeftColor:T}]}>
2
- <react_native_1.View style={styles.styleGroupHeader}>
3
- <react_native_1.View style={styles.styleGroupTitleRow}>
4
- <react_native_1.Text style={styles.styleGroupIcon}>{_}</react_native_1.Text>
5
- <react_native_1.Text style={[styles.styleGroupTitle,{color:T}]}>{t.toUpperCase()}</react_native_1.Text>
6
- </react_native_1.View>
7
- <react_native_1.View style={[styles.styleGroupBadge,{backgroundColor:`${T}18`}]}>
8
- <react_native_1.Text style={[styles.styleGroupBadgeText,{color:T}]}>{f.length}</react_native_1.Text>
9
- </react_native_1.View>
10
- </react_native_1.View>
11
-
12
- <react_native_1.View style={styles.styleRowsContainer}>
13
- {f.map(([V,S])=>{const P=ce(V,S),D=Z===V;return<react_native_1.TouchableOpacity key={V}activeOpacity={.7}style={[styles.styleRow,D&&styles.styleRowCopied]}onPress={()=>le(V,S)}>
14
- <react_native_1.Text style={styles.stylePropKey}>{V}</react_native_1.Text>
15
- <react_native_1.View style={styles.styleValueContainer}>
16
- {P&&<react_native_1.View style={[styles.colorSwatchPreview,{backgroundColor:String(S)}]}/>}
17
- <react_native_1.Text style={[styles.stylePropValue,P&&styles.stylePropColorValue]}>
18
- {typeof S=="object"?JSON.stringify(S):String(S)}
19
- </react_native_1.Text>
20
- {typeof S=="number"&&<react_native_1.Text style={styles.styleUnitText}>pt</react_native_1.Text>}
21
- </react_native_1.View>
22
- </react_native_1.TouchableOpacity>})}
23
- </react_native_1.View>
24
- </react_native_1.View>},J=Object.entries(R).filter(([t,e])=>{if(!x)return!0;const _=x.toLowerCase();return t.toLowerCase().includes(_)||String(e).toLowerCase().includes(_)}),se=[{key:"styles",label:"Styles",icon:NetworkIcons_1.LayersIcon},{key:"jsx",label:"JSX Code",icon:NetworkIcons_1.CodeBracketsIcon},{key:"boxmodel",label:"Box Model",icon:NetworkIcons_1.BoxModelIcon},{key:"tree",label:`Hierarchy (${z.length})`,icon:NetworkIcons_1.ChevronIcon},{key:"props",label:`Props (${Object.keys(R).length})`,icon:NetworkIcons_1.SearchIcon},{key:"a11y",label:"A11y",icon:NetworkIcons_1.AccessibilityIcon}],de=Object.keys(F.layout).length>0||Object.keys(F.spacing).length>0||Object.keys(F.appearance).length>0||Object.keys(F.typography).length>0||Object.keys(F.borders).length>0||Object.keys(F.transforms).length>0||Object.keys(F.other).length>0;return<react_native_1.View style={styles.container}>
25
-
26
- <react_native_1.View style={styles.topControlBar}>
27
- <react_native_1.View style={styles.elementTagRow}>
28
- <react_native_1.View style={styles.componentPill}>
29
- <react_native_1.Text style={styles.componentTagBracket}>&lt;</react_native_1.Text>
30
- <react_native_1.Text style={styles.componentTagName}>{w}</react_native_1.Text>
31
- <react_native_1.Text style={styles.componentTagBracket}> /&gt;</react_native_1.Text>
32
- <react_native_1.View style={styles.typeBadge}>
33
- <react_native_1.Text style={styles.typeBadgeText}>
34
- {ae?"Native":"React"}
35
- </react_native_1.Text>
36
- </react_native_1.View>
37
- </react_native_1.View>
38
-
39
-
40
- <react_native_1.ScrollView horizontal showsHorizontalScrollIndicator={!1}contentContainerStyle={styles.breadcrumbScroll}>
41
- {z.map((t,e)=>{const _=e===z.length-1||t.componentName===w;return<react_1.default.Fragment key={t.id||e}>
42
- <NetworkIcons_1.ChevronIcon color="#94A3B8"size={8}direction="right"/>
43
- <react_native_1.TouchableOpacity style={[styles.crumbChip,_&&styles.crumbChipActive]}onPress={()=>$(t)}>
44
- <react_native_1.Text style={[styles.crumbChipText,_&&styles.crumbChipTextActive]}numberOfLines={1}>
45
- {t.displayName}
46
- </react_native_1.Text>
47
- </react_native_1.TouchableOpacity>
48
- </react_1.default.Fragment>})}
49
- </react_native_1.ScrollView>
50
- </react_native_1.View>
51
-
52
- <react_native_1.View style={styles.topActions}>
53
- <TouchableScale_1.default style={styles.quickActionBtn}onPress={U}>
54
- <NetworkIcons_1.CodeBracketsIcon color={AppColors_1.AppColors.brandPurple}size={11}/>
55
- <react_native_1.Text style={styles.quickActionBtnText}>JSX</react_native_1.Text>
56
- </TouchableScale_1.default>
57
- <TouchableScale_1.default style={styles.closeBtn}onPress={()=>{(0,NativeInspector_1.triggerNativeHaptic)(),b(null)}}>
58
- <NetworkIcons_1.CloseIcon color={AppColors_1.AppColors.slate600}size={12}/>
59
- </TouchableScale_1.default>
60
- </react_native_1.View>
61
- </react_native_1.View>
62
-
63
-
64
- <react_native_1.Modal visible={Y}transparent animationType="fade"onRequestClose={()=>L(!1)}>
65
- <react_native_1.View style={styles.modalBackdrop}>
66
- <react_native_1.View style={styles.modalCard}>
67
- <react_native_1.View style={styles.modalHeader}>
68
- <react_native_1.Text style={styles.modalTitle}>
69
- &lt;{w}&gt; Preview ({Math.round(u.width)} × {Math.round(u.height)} pt)
70
- </react_native_1.Text>
71
- <react_native_1.TouchableOpacity style={styles.modalCloseBtn}onPress={()=>L(!1)}>
72
- <NetworkIcons_1.CloseIcon color={AppColors_1.AppColors.white}size={15}/>
73
- </react_native_1.TouchableOpacity>
74
- </react_native_1.View>
75
- {k&&<react_native_1.View style={styles.modalImageContainer}>
76
- <react_native_1.Image source={{uri:k}}style={styles.modalImage}resizeMode="contain"/>
77
- </react_native_1.View>}
78
- </react_native_1.View>
79
- </react_native_1.View>
80
- </react_native_1.Modal>
81
-
82
-
83
- <react_native_1.View style={styles.subTabBarWrapper}>
84
- <react_native_1.ScrollView ref={Q}horizontal showsHorizontalScrollIndicator={!1}contentContainerStyle={styles.subTabBarContent}>
85
- {se.map(t=>{const e=m===t.key,_=t.icon;return<react_native_1.TouchableOpacity key={t.key}style={[styles.subTabItem,e&&styles.subTabItemActive]}onPress={()=>{(0,NativeInspector_1.triggerNativeHaptic)(),C(t.key)}}>
86
- <_ color={e?AppColors_1.AppColors.white:"#64748B"}size={12}/>
87
- <react_native_1.Text style={[styles.subTabText,e&&styles.subTabTextActive]}>
88
- {t.label}
89
- </react_native_1.Text>
90
- </react_native_1.TouchableOpacity>})}
91
- </react_native_1.ScrollView>
92
- </react_native_1.View>
93
-
94
-
95
- <react_native_1.ScrollView style={styles.tabScrollContent}contentContainerStyle={styles.tabScrollInner}showsVerticalScrollIndicator={!1}>
96
-
97
- {m==="styles"&&<react_native_1.View style={styles.stylesTabContainer}>
98
-
99
- <react_native_1.View style={styles.heroSnapshotCard}>
100
- <react_native_1.View style={styles.heroImageFrame}>
101
- {k?<react_native_1.TouchableOpacity activeOpacity={.9}style={styles.heroImageTouchable}onPress={()=>L(!0)}>
102
- <react_native_1.Image source={{uri:k}}style={styles.heroImage}resizeMode="contain"/>
103
- <react_native_1.View style={styles.zoomGlassBadge}>
104
- <react_native_1.Text style={styles.zoomGlassBadgeText}>🔍 Zoom Lightbox</react_native_1.Text>
105
- </react_native_1.View>
106
- </react_native_1.TouchableOpacity>:<react_native_1.View style={styles.heroPlaceholder}>
107
- <react_native_1.Text style={styles.heroPlaceholderIcon}>🎨</react_native_1.Text>
108
- <react_native_1.Text style={styles.heroPlaceholderText}>Rendered Component Frame</react_native_1.Text>
109
- </react_native_1.View>}
110
- </react_native_1.View>
111
-
112
-
113
- <react_native_1.View style={styles.metricsGrid}>
114
- <react_native_1.View style={styles.metricCell}>
115
- <react_native_1.Text style={styles.metricCellLabel}>WIDTH</react_native_1.Text>
116
- <react_native_1.Text style={styles.metricCellValue}>{Math.round(u.width)}<react_native_1.Text style={styles.metricUnit}> pt</react_native_1.Text></react_native_1.Text>
117
- </react_native_1.View>
118
- <react_native_1.View style={styles.metricCell}>
119
- <react_native_1.Text style={styles.metricCellLabel}>HEIGHT</react_native_1.Text>
120
- <react_native_1.Text style={styles.metricCellValue}>{Math.round(u.height)}<react_native_1.Text style={styles.metricUnit}> pt</react_native_1.Text></react_native_1.Text>
121
- </react_native_1.View>
122
- <react_native_1.View style={styles.metricCell}>
123
- <react_native_1.Text style={styles.metricCellLabel}>PAGE X</react_native_1.Text>
124
- <react_native_1.Text style={styles.metricCellValue}>{Math.round(u.pageX)}<react_native_1.Text style={styles.metricUnit}> pt</react_native_1.Text></react_native_1.Text>
125
- </react_native_1.View>
126
- <react_native_1.View style={styles.metricCell}>
127
- <react_native_1.Text style={styles.metricCellLabel}>PAGE Y</react_native_1.Text>
128
- <react_native_1.Text style={styles.metricCellValue}>{Math.round(u.pageY)}<react_native_1.Text style={styles.metricUnit}> pt</react_native_1.Text></react_native_1.Text>
129
- </react_native_1.View>
130
- </react_native_1.View>
131
-
132
-
133
- <react_native_1.View style={styles.specsBar}>
134
- <react_native_1.View style={styles.specsTag}>
135
- <react_native_1.Text style={styles.specsTagLabel}>Coverage</react_native_1.Text>
136
- <react_native_1.Text style={styles.specsTagVal}>{oe}% ({re}:1)</react_native_1.Text>
137
- </react_native_1.View>
138
- <react_native_1.View style={styles.specsTag}>
139
- <react_native_1.Text style={styles.specsTagLabel}>Tag ID</react_native_1.Text>
140
- <react_native_1.Text style={styles.specsTagVal}>{g.nativeTag?`#${g.nativeTag}`:"Virtual Fiber"}</react_native_1.Text>
141
- </react_native_1.View>
142
- </react_native_1.View>
143
- </react_native_1.View>
144
-
145
-
146
- <react_native_1.View style={styles.computedLayoutCard}>
147
- <react_native_1.View style={styles.computedLayoutHeader}>
148
- <react_native_1.Text style={styles.computedLayoutTitle}>⚡ COMPUTED CONSTRAINTS</react_native_1.Text>
149
- <react_native_1.Text style={styles.computedLayoutSub}>Resolved Frame & Insets</react_native_1.Text>
150
- </react_native_1.View>
151
- <react_native_1.View style={styles.computedGrid}>
152
- <react_native_1.View style={styles.computedItem}>
153
- <react_native_1.Text style={styles.computedItemKey}>Display</react_native_1.Text>
154
- <react_native_1.Text style={styles.computedItemVal}>{A.display||"flex"}</react_native_1.Text>
155
- </react_native_1.View>
156
- <react_native_1.View style={styles.computedItem}>
157
- <react_native_1.Text style={styles.computedItemKey}>Position</react_native_1.Text>
158
- <react_native_1.Text style={styles.computedItemVal}>{A.position||"relative"}</react_native_1.Text>
159
- </react_native_1.View>
160
- <react_native_1.View style={styles.computedItem}>
161
- <react_native_1.Text style={styles.computedItemKey}>Flex Direction</react_native_1.Text>
162
- <react_native_1.Text style={styles.computedItemVal}>{A.flexDirection||"column"}</react_native_1.Text>
163
- </react_native_1.View>
164
- <react_native_1.View style={styles.computedItem}>
165
- <react_native_1.Text style={styles.computedItemKey}>Box Sizing</react_native_1.Text>
166
- <react_native_1.Text style={styles.computedItemVal}>border-box</react_native_1.Text>
167
- </react_native_1.View>
168
- </react_native_1.View>
169
- </react_native_1.View>
170
-
171
-
172
- {de&&<>
173
- {I("Flex Layout",F.layout,"\u26A1","#8B5CF6")}
174
- {I("Spacing & Margins",F.spacing,"\u{1F4E6}","#10B981")}
175
- {I("Appearance & Color",F.appearance,"\u{1F3A8}","#F43F5E")}
176
- {I("Typography",F.typography,"\u{1F524}","#F59E0B")}
177
- {I("Borders & Corners",F.borders,"\u{1F532}","#0D9488")}
178
- {I("Transforms",F.transforms,"\u{1F504}","#EC4899")}
179
- {I("Other Properties",F.other,"\u2699\uFE0F","#64748B")}
180
- </>}
181
-
182
-
183
- <react_native_1.View style={styles.codeSnippetCard}>
184
- <react_native_1.View style={styles.codeSnippetHeader}>
185
- <react_native_1.View style={styles.codeSnippetTabs}>
186
- <react_native_1.TouchableOpacity style={[styles.codeFormatBtn,B==="rn"&&styles.codeFormatBtnActive]}onPress={()=>M("rn")}>
187
- <react_native_1.Text style={[styles.codeFormatBtnText,B==="rn"&&styles.codeFormatBtnTextActive]}>
188
- React Native StyleSheet
189
- </react_native_1.Text>
190
- </react_native_1.TouchableOpacity>
191
- <react_native_1.TouchableOpacity style={[styles.codeFormatBtn,B==="css"&&styles.codeFormatBtnActive]}onPress={()=>M("css")}>
192
- <react_native_1.Text style={[styles.codeFormatBtnText,B==="css"&&styles.codeFormatBtnTextActive]}>
193
- Web CSS
194
- </react_native_1.Text>
195
- </react_native_1.TouchableOpacity>
196
- </react_native_1.View>
197
-
198
- <react_native_1.TouchableOpacity style={styles.codeCopyBtn}onPress={q}>
199
- <NetworkIcons_1.CopyIcon color={AppColors_1.AppColors.brandPurple}size={11}/>
200
- <react_native_1.Text style={styles.codeCopyBtnText}>Copy</react_native_1.Text>
201
- </react_native_1.TouchableOpacity>
202
- </react_native_1.View>
203
- <react_native_1.View style={styles.codeSnippetBody}>
204
- <react_native_1.Text style={styles.codeSnippetText}numberOfLines={14}>
205
- {B==="rn"?(0,uiInspectorEngine_1.generateStyleSheetSnippet)(w,A):(0,uiInspectorEngine_1.generateCssSnippet)(w,A)}
206
- </react_native_1.Text>
207
- </react_native_1.View>
208
- </react_native_1.View>
209
- </react_native_1.View>}
210
-
211
-
212
- {m==="jsx"&&<react_native_1.View style={styles.jsxTabContainer}>
213
-
214
- <react_native_1.View style={styles.sourceLocationCard}>
215
- <react_native_1.View style={styles.sourceLocationHeader}>
216
- <react_native_1.Text style={styles.sourceLocationTitle}>📍 CODEBASE LOCATION</react_native_1.Text>
217
- {v.sourceFile&&<react_native_1.TouchableOpacity style={styles.copyPathBtn}onPress={ie}>
218
- <NetworkIcons_1.CopyIcon color={AppColors_1.AppColors.brandPurple}size={11}/>
219
- <react_native_1.Text style={styles.copyPathBtnText}>Copy Path</react_native_1.Text>
220
- </react_native_1.TouchableOpacity>}
221
- </react_native_1.View>
222
- <react_native_1.View style={styles.sourceLocationBody}>
223
- <react_native_1.Text style={styles.sourceLocationText}>
224
- {v.sourceLocation||(v.sourceFile?`${v.sourceFile}:${v.lineNumber||1}`:`${w}.tsx (Rendered React Node)`)}
225
- </react_native_1.Text>
226
- {v.lineNumber!=null&&<react_native_1.View style={styles.lineNumberBadge}>
227
- <react_native_1.Text style={styles.lineNumberBadgeText}>Line {v.lineNumber}</react_native_1.Text>
228
- </react_native_1.View>}
229
- </react_native_1.View>
230
- </react_native_1.View>
231
-
232
-
233
- <react_native_1.View style={styles.jsxCodeCard}>
234
- <react_native_1.View style={styles.jsxCodeHeader}>
235
- <react_native_1.View style={styles.jsxCodeTitleRow}>
236
- <NetworkIcons_1.CodeBracketsIcon color={AppColors_1.AppColors.brandPurple}size={14}/>
237
- <react_native_1.Text style={styles.jsxCodeTitle}>FULL JSX CODE</react_native_1.Text>
238
- </react_native_1.View>
239
- <react_native_1.TouchableOpacity style={styles.jsxCopyActionBtn}onPress={U}>
240
- <NetworkIcons_1.CopyIcon color={AppColors_1.AppColors.white}size={11}/>
241
- <react_native_1.Text style={styles.jsxCopyActionBtnText}>Copy JSX</react_native_1.Text>
242
- </react_native_1.TouchableOpacity>
243
- </react_native_1.View>
244
-
245
- <react_native_1.View style={styles.jsxCodeBody}>
246
- <react_native_1.Text style={styles.jsxCodeContent}selectable>
247
- {v.code}
248
- </react_native_1.Text>
249
- </react_native_1.View>
250
- </react_native_1.View>
251
-
252
-
253
- <react_native_1.View style={styles.codeSnippetCard}>
254
- <react_native_1.View style={styles.codeSnippetHeader}>
255
- <react_native_1.Text style={styles.connectedStyleTitle}>🎨 CONNECTED STYLESHEET</react_native_1.Text>
256
- <react_native_1.TouchableOpacity style={styles.codeCopyBtn}onPress={q}>
257
- <NetworkIcons_1.CopyIcon color={AppColors_1.AppColors.brandPurple}size={11}/>
258
- <react_native_1.Text style={styles.codeCopyBtnText}>Copy Styles</react_native_1.Text>
259
- </react_native_1.TouchableOpacity>
260
- </react_native_1.View>
261
- <react_native_1.View style={styles.codeSnippetBody}>
262
- <react_native_1.Text style={styles.codeSnippetText}numberOfLines={14}>
263
- {(0,uiInspectorEngine_1.generateStyleSheetSnippet)(w,A)}
264
- </react_native_1.Text>
265
- </react_native_1.View>
266
- </react_native_1.View>
267
- </react_native_1.View>}
268
-
269
-
270
- {m==="boxmodel"&&<react_native_1.View style={styles.boxModelTabContainer}>
271
- <react_native_1.View style={styles.boxModelCard}>
272
- <react_native_1.Text style={styles.boxModelSectionTitle}>📦 VISUAL BOX MODEL (CSS METRICS)</react_native_1.Text>
273
- <BoxModelVisualizer_1.BoxModelVisualizer boxModel={h}/>
274
- </react_native_1.View>
275
-
276
-
277
- <react_native_1.View style={styles.boxModelMetricsTable}>
278
- <react_native_1.Text style={styles.tableTitle}>SPACING SUMMARY</react_native_1.Text>
279
- <react_native_1.View style={styles.tableRow}>
280
- <react_native_1.Text style={styles.tableHeaderCell}>Layer</react_native_1.Text>
281
- <react_native_1.Text style={styles.tableHeaderCell}>Top</react_native_1.Text>
282
- <react_native_1.Text style={styles.tableHeaderCell}>Right</react_native_1.Text>
283
- <react_native_1.Text style={styles.tableHeaderCell}>Bottom</react_native_1.Text>
284
- <react_native_1.Text style={styles.tableHeaderCell}>Left</react_native_1.Text>
285
- </react_native_1.View>
286
- <react_native_1.View style={styles.tableRow}>
287
- <react_native_1.Text style={[styles.tableCell,{color:"#D97706",fontFamily:AppFonts_1.AppFonts.bold}]}>Margin</react_native_1.Text>
288
- <react_native_1.Text style={styles.tableCell}>{h.margin.top} pt</react_native_1.Text>
289
- <react_native_1.Text style={styles.tableCell}>{h.margin.right} pt</react_native_1.Text>
290
- <react_native_1.Text style={styles.tableCell}>{h.margin.bottom} pt</react_native_1.Text>
291
- <react_native_1.Text style={styles.tableCell}>{h.margin.left} pt</react_native_1.Text>
292
- </react_native_1.View>
293
- <react_native_1.View style={styles.tableRow}>
294
- <react_native_1.Text style={[styles.tableCell,{color:"#CA8A04",fontFamily:AppFonts_1.AppFonts.bold}]}>Border</react_native_1.Text>
295
- <react_native_1.Text style={styles.tableCell}>{h.border.top} pt</react_native_1.Text>
296
- <react_native_1.Text style={styles.tableCell}>{h.border.right} pt</react_native_1.Text>
297
- <react_native_1.Text style={styles.tableCell}>{h.border.bottom} pt</react_native_1.Text>
298
- <react_native_1.Text style={styles.tableCell}>{h.border.left} pt</react_native_1.Text>
299
- </react_native_1.View>
300
- <react_native_1.View style={styles.tableRow}>
301
- <react_native_1.Text style={[styles.tableCell,{color:"#059669",fontFamily:AppFonts_1.AppFonts.bold}]}>Padding</react_native_1.Text>
302
- <react_native_1.Text style={styles.tableCell}>{h.padding.top} pt</react_native_1.Text>
303
- <react_native_1.Text style={styles.tableCell}>{h.padding.right} pt</react_native_1.Text>
304
- <react_native_1.Text style={styles.tableCell}>{h.padding.bottom} pt</react_native_1.Text>
305
- <react_native_1.Text style={styles.tableCell}>{h.padding.left} pt</react_native_1.Text>
306
- </react_native_1.View>
307
- <react_native_1.View style={styles.tableRow}>
308
- <react_native_1.Text style={[styles.tableCell,{color:"#4F46E5",fontFamily:AppFonts_1.AppFonts.bold}]}>Content</react_native_1.Text>
309
- <react_native_1.Text style={[styles.tableCell,{flex:4}]}>
310
- {h.content.width} × {h.content.height} pt (Area: {Math.round(G)} pt²)
311
- </react_native_1.Text>
312
- </react_native_1.View>
313
- </react_native_1.View>
314
-
315
-
316
- <react_native_1.View style={styles.insetsCard}>
317
- <react_native_1.Text style={styles.tableTitle}>SCREEN INSETS & EDGES</react_native_1.Text>
318
- <react_native_1.View style={styles.insetsGrid}>
319
- <react_native_1.View style={styles.insetRow}>
320
- <react_native_1.Text style={styles.insetLabel}>Distance from Screen Top:</react_native_1.Text>
321
- <react_native_1.Text style={styles.insetValue}>{Math.round(u.pageY)} pt</react_native_1.Text>
322
- </react_native_1.View>
323
- <react_native_1.View style={styles.insetRow}>
324
- <react_native_1.Text style={styles.insetLabel}>Distance from Screen Left:</react_native_1.Text>
325
- <react_native_1.Text style={styles.insetValue}>{Math.round(u.pageX)} pt</react_native_1.Text>
326
- </react_native_1.View>
327
- <react_native_1.View style={styles.insetRow}>
328
- <react_native_1.Text style={styles.insetLabel}>Distance from Screen Bottom:</react_native_1.Text>
329
- <react_native_1.Text style={styles.insetValue}>
330
- {Math.max(0,Math.round(O.height-(u.pageY+u.height)))} pt
331
- </react_native_1.Text>
332
- </react_native_1.View>
333
- <react_native_1.View style={styles.insetRow}>
334
- <react_native_1.Text style={styles.insetLabel}>Distance from Screen Right:</react_native_1.Text>
335
- <react_native_1.Text style={styles.insetValue}>
336
- {Math.max(0,Math.round(O.width-(u.pageX+u.width)))} pt
337
- </react_native_1.Text>
338
- </react_native_1.View>
339
- </react_native_1.View>
340
- </react_native_1.View>
341
- </react_native_1.View>}
342
-
343
-
344
- {m==="tree"&&<react_native_1.View style={styles.treeTabContainer}>
345
-
346
- <react_native_1.View style={styles.treeSegmentBar}>
347
- <react_native_1.TouchableOpacity style={[styles.treeSegmentBtn,E==="ancestors"&&styles.treeSegmentBtnActive]}onPress={()=>{(0,NativeInspector_1.triggerNativeHaptic)(),j("ancestors")}}>
348
- <react_native_1.Text style={[styles.treeSegmentText,E==="ancestors"&&styles.treeSegmentTextActive]}>
349
- Ancestor Path ({z.length})
350
- </react_native_1.Text>
351
- </react_native_1.TouchableOpacity>
352
-
353
- <react_native_1.TouchableOpacity style={[styles.treeSegmentBtn,E==="all"&&styles.treeSegmentBtnActive]}onPress={()=>{(0,NativeInspector_1.triggerNativeHaptic)(),j("all")}}>
354
- <react_native_1.Text style={[styles.treeSegmentText,E==="all"&&styles.treeSegmentTextActive]}>
355
- App Component Tree
356
- </react_native_1.Text>
357
- </react_native_1.TouchableOpacity>
358
- </react_native_1.View>
359
-
360
- {E==="ancestors"?<>
361
- <react_native_1.View style={styles.treeHeaderCard}>
362
- <react_native_1.Text style={styles.treeHeaderTitle}>COMPONENT ANCESTOR PATH</react_native_1.Text>
363
- <react_native_1.Text style={styles.treeHeaderSubtitle}>
364
- Direct hierarchy chain from Root to the current component. Tap any node to inspect.
365
- </react_native_1.Text>
366
- </react_native_1.View>
367
-
368
- <react_native_1.View style={styles.treeList}>
369
- {z.map((t,e)=>{const _=e===z.length-1||t.componentName===w,T=e;return<react_native_1.TouchableOpacity key={t.id||e}activeOpacity={.7}style={[styles.treeItemCard,{marginLeft:Math.min(T*10,80)},_&&styles.treeItemCardActive]}onPress={()=>$(t)}>
370
- <react_native_1.View style={styles.treeItemTopRow}>
371
- <react_native_1.View style={styles.treeTagRow}>
372
- <react_native_1.View style={[styles.depthBadge,_&&styles.depthBadgeActive]}>
373
- <react_native_1.Text style={[styles.depthBadgeText,_&&styles.depthBadgeTextActive]}>
374
- L{T}
375
- </react_native_1.Text>
376
- </react_native_1.View>
377
- <react_native_1.Text style={[styles.treeTagName,_&&styles.treeTagNameActive]}>
378
- &lt;{t.displayName}&gt;
379
- </react_native_1.Text>
380
- </react_native_1.View>
381
-
382
- {_?<react_native_1.View style={styles.activePillBadge}>
383
- <react_native_1.Text style={styles.activePillBadgeText}>CURRENT</react_native_1.Text>
384
- </react_native_1.View>:<react_native_1.View style={styles.inspectArrowBtn}>
385
- <react_native_1.Text style={styles.inspectArrowBtnText}>Inspect →</react_native_1.Text>
386
- </react_native_1.View>}
387
- </react_native_1.View>
388
-
389
- {t.layout&&<react_native_1.View style={styles.treeItemBottomRow}>
390
- <react_native_1.Text style={styles.treeItemMetric}>
391
- Frame: {Math.round(t.layout.width)} × {Math.round(t.layout.height)} pt
392
- </react_native_1.Text>
393
- {t.isHostComponent&&<react_native_1.Text style={styles.treeItemHostBadge}>Native</react_native_1.Text>}
394
- </react_native_1.View>}
395
- </react_native_1.TouchableOpacity>})}
396
- </react_native_1.View>
397
- </>:<>
398
-
399
- <react_native_1.View style={styles.propsSearchRow}>
400
- <react_native_1.View style={styles.searchBar}>
401
- <NetworkIcons_1.SearchIcon color={AppColors_1.AppColors.slate400}size={14}/>
402
- <react_native_1.TextInput style={styles.searchInput}placeholder="Search app components..."placeholderTextColor={AppColors_1.AppColors.slate400}value={H}onChangeText={K}/>
403
- </react_native_1.View>
404
- </react_native_1.View>
405
-
406
-
407
- <react_native_1.View style={styles.treeList}>
408
- {(()=>{const t=(0,uiInspectorEngine_1.getAllAppFibers)().filter(e=>H?e.name.toLowerCase().includes(H.toLowerCase()):!0);return t.length===0?<react_native_1.View style={styles.emptyCard}>
409
- <react_native_1.Text style={styles.emptyCardTitle}>No components match search</react_native_1.Text>
410
- </react_native_1.View>:t.map((e,_)=>{const T=e.name===w,f=Math.min(e.depth,8);return<react_native_1.TouchableOpacity key={`app_tree_node_${_}_${e.name}`}activeOpacity={.7}style={[styles.treeItemCard,{marginLeft:f*10},T&&styles.treeItemCardActive]}onPress={()=>{(0,NativeInspector_1.triggerNativeHaptic)();const V=(0,uiInspectorEngine_1.buildHierarchyFromFiber)(e.fiber),S=e.styles.left??u.x,P=e.styles.top??u.y,D=e.styles.width??u.width,pe=e.styles.height??u.height,ye=(0,uiInspectorEngine_1.createInspectedElement)(e.name,e.props,{x:S,y:P,width:D,height:pe,pageX:S,pageY:P},V,e.nativeTag);b(ye)}}>
411
- <react_native_1.View style={styles.treeItemTopRow}>
412
- <react_native_1.View style={styles.treeTagRow}>
413
- <react_native_1.View style={[styles.depthBadge,T&&styles.depthBadgeActive]}>
414
- <react_native_1.Text style={[styles.depthBadgeText,T&&styles.depthBadgeTextActive]}>
415
- {e.isHost?"Native":"JSX"}
416
- </react_native_1.Text>
417
- </react_native_1.View>
418
- <react_native_1.Text style={[styles.treeTagName,T&&styles.treeTagNameActive]}>
419
- &lt;{e.name}&gt;
420
- </react_native_1.Text>
421
- </react_native_1.View>
422
-
423
- {T?<react_native_1.View style={styles.activePillBadge}>
424
- <react_native_1.Text style={styles.activePillBadgeText}>SELECTED</react_native_1.Text>
425
- </react_native_1.View>:<react_native_1.View style={styles.inspectArrowBtn}>
426
- <react_native_1.Text style={styles.inspectArrowBtnText}>Select →</react_native_1.Text>
427
- </react_native_1.View>}
428
- </react_native_1.View>
429
-
430
- <react_native_1.View style={styles.treeItemBottomRow}>
431
- {e.text?<react_native_1.Text style={styles.treeItemMetric}numberOfLines={1}>
432
- "{e.text}"
433
- </react_native_1.Text>:<react_native_1.Text style={styles.treeItemMetric}>
434
- Props: {Object.keys(e.props).length} • Styles: {Object.keys(e.styles).length}
435
- </react_native_1.Text>}
436
- {e.sourceLocation&&<react_native_1.Text style={styles.treeItemLocationText}>
437
- {e.sourceLocation}
438
- </react_native_1.Text>}
439
- </react_native_1.View>
440
- </react_native_1.TouchableOpacity>})})()}
441
- </react_native_1.View>
442
- </>}
443
- </react_native_1.View>}
444
-
445
-
446
-
447
- {m==="props"&&<react_native_1.View style={styles.propsTabContainer}>
448
- <react_native_1.View style={styles.propsSearchRow}>
449
- <react_native_1.View style={styles.searchBar}>
450
- <NetworkIcons_1.SearchIcon color={AppColors_1.AppColors.slate400}size={14}/>
451
- <react_native_1.TextInput style={styles.searchInput}placeholder="Filter props by name or value..."placeholderTextColor={AppColors_1.AppColors.slate400}value={x}onChangeText={X}/>
452
- </react_native_1.View>
453
-
454
- <TouchableScale_1.default style={styles.copyPropsBtn}onPress={ne}>
455
- <NetworkIcons_1.CopyIcon color={AppColors_1.AppColors.white}size={11}/>
456
- <react_native_1.Text style={styles.copyPropsBtnText}>Copy All</react_native_1.Text>
457
- </TouchableScale_1.default>
458
- </react_native_1.View>
459
-
460
- {J.length===0?<react_native_1.View style={styles.emptyPropsBox}>
461
- <react_native_1.Text style={styles.emptyPropsText}>No props match "{x}"</react_native_1.Text>
462
- </react_native_1.View>:<react_native_1.View style={styles.propsList}>
463
- {J.map(([t,e])=>{const _=typeof e,T=_==="function",f=_==="object"&&e!==null,V=!T&&!f;return<react_native_1.View key={t}style={styles.propItemCard}>
464
- <react_native_1.View style={styles.propHeader}>
465
- <react_native_1.Text style={styles.propKeyName}>{t}</react_native_1.Text>
466
- <react_native_1.View style={[styles.typeBadgePrimary,T&&styles.typeBadgeFn,f&&styles.typeBadgeObj,V&&styles.typeBadgePrim]}>
467
- <react_native_1.Text style={styles.typeBadgePrimaryText}>
468
- {T?"function":f?"object":_}
469
- </react_native_1.Text>
470
- </react_native_1.View>
471
- </react_native_1.View>
472
-
473
- {f?<react_native_1.View style={styles.jsonViewerWrapper}>
474
- <JsonViewer_1.default data={e}defaultExpandDepth={1}/>
475
- </react_native_1.View>:<react_native_1.Text style={styles.propValueText}numberOfLines={3}>
476
- {T?"\u0192 () { [native / custom handler] }":String(e)}
477
- </react_native_1.Text>}
478
- </react_native_1.View>})}
479
- </react_native_1.View>}
480
- </react_native_1.View>}
481
-
482
-
483
- {m==="a11y"&&<UiA11yAuditPanel_1.UiA11yAuditPanel a11y={te}/>}
484
- </react_native_1.ScrollView>
485
- </react_native_1.View>};exports.UiInspectorDetail=UiInspectorDetail;const styles=react_native_1.StyleSheet.create({container:{flex:1,backgroundColor:"#F8FAFC"},topControlBar:{flexDirection:"row",justifyContent:"space-between",alignItems:"center",backgroundColor:AppColors_1.AppColors.white,paddingHorizontal:12,paddingVertical:8,borderBottomWidth:1,borderBottomColor:"#E2E8F0"},elementTagRow:{flex:1,flexDirection:"row",alignItems:"center",gap:6,marginRight:8},componentPill:{flexDirection:"row",alignItems:"center",backgroundColor:"#EEF2FF",paddingHorizontal:8,paddingVertical:4,borderRadius:6,borderWidth:1,borderColor:"#C7D2FE"},componentTagBracket:{fontSize:12,fontFamily:AppFonts_1.AppFonts.bold,color:"#D97706"},componentTagName:{fontSize:12,fontFamily:AppFonts_1.AppFonts.bold,color:AppColors_1.AppColors.brandPurple,paddingHorizontal:2},typeBadge:{backgroundColor:"#FFFFFF",paddingHorizontal:5,paddingVertical:1.5,borderRadius:4,marginLeft:5,borderWidth:1,borderColor:"#E2E8F0"},typeBadgeText:{fontSize:9,fontFamily:AppFonts_1.AppFonts.semiBold,color:"#64748B"},breadcrumbScroll:{alignItems:"center",gap:4},crumbChip:{paddingHorizontal:6,paddingVertical:2.5,borderRadius:4,backgroundColor:"#F1F5F9"},crumbChipActive:{backgroundColor:AppColors_1.AppColors.brandPurple},crumbChipText:{fontSize:10,fontFamily:AppFonts_1.AppFonts.medium,color:"#64748B"},crumbChipTextActive:{color:AppColors_1.AppColors.white,fontFamily:AppFonts_1.AppFonts.bold},topActions:{flexDirection:"row",alignItems:"center",gap:6},quickActionBtn:{flexDirection:"row",alignItems:"center",gap:4,backgroundColor:"#EEF2FF",paddingHorizontal:8,paddingVertical:4,borderRadius:6,borderWidth:1,borderColor:"#C7D2FE"},quickActionBtnText:{fontSize:10,fontFamily:AppFonts_1.AppFonts.bold,color:AppColors_1.AppColors.brandPurple},closeBtn:{padding:5,borderRadius:6,backgroundColor:"#F1F5F9",borderWidth:1,borderColor:"#E2E8F0"},subTabBarWrapper:{backgroundColor:AppColors_1.AppColors.white,borderBottomWidth:1,borderBottomColor:"#E2E8F0",paddingVertical:6},subTabBarContent:{paddingHorizontal:10,gap:6,alignItems:"center"},subTabItem:{flexDirection:"row",alignItems:"center",paddingHorizontal:10,paddingVertical:5,borderRadius:7,backgroundColor:"#F1F5F9",gap:4.5,borderWidth:1,borderColor:"#E2E8F0"},subTabItemActive:{backgroundColor:AppColors_1.AppColors.brandPurple,borderColor:"#4338CA",shadowColor:AppColors_1.AppColors.brandPurple,shadowOffset:{width:0,height:1.5},shadowOpacity:.2,shadowRadius:2,elevation:2},subTabText:{fontSize:11,fontFamily:AppFonts_1.AppFonts.medium,color:"#475569"},subTabTextActive:{color:AppColors_1.AppColors.white,fontFamily:AppFonts_1.AppFonts.bold},tabScrollContent:{flex:1},tabScrollInner:{padding:12,paddingBottom:32},stylesTabContainer:{gap:10},heroSnapshotCard:{backgroundColor:AppColors_1.AppColors.white,borderRadius:12,borderWidth:1,borderColor:"#E2E8F0",overflow:"hidden",shadowColor:"#0F172A",shadowOffset:{width:0,height:2},shadowOpacity:.06,shadowRadius:4,elevation:2},heroImageFrame:{width:"100%",height:125,backgroundColor:"#0F172A",justifyContent:"center",alignItems:"center",position:"relative"},heroImageTouchable:{width:"100%",height:"100%",justifyContent:"center",alignItems:"center",padding:10},heroImage:{width:"100%",height:"100%"},zoomGlassBadge:{position:"absolute",top:8,right:8,backgroundColor:"rgba(15, 23, 42, 0.75)",paddingHorizontal:8,paddingVertical:3.5,borderRadius:6,borderWidth:1,borderColor:"rgba(255, 255, 255, 0.2)"},zoomGlassBadgeText:{fontSize:9.5,fontFamily:AppFonts_1.AppFonts.bold,color:"#FFFFFF"},heroPlaceholder:{alignItems:"center",justifyContent:"center"},heroPlaceholderIcon:{fontSize:24,marginBottom:4},heroPlaceholderText:{fontSize:10,fontFamily:AppFonts_1.AppFonts.bold,color:"#94A3B8"},metricsGrid:{flexDirection:"row",borderTopWidth:1,borderTopColor:"#E2E8F0",backgroundColor:"#FFFFFF"},metricCell:{flex:1,paddingVertical:8,paddingHorizontal:6,alignItems:"center",borderRightWidth:1,borderRightColor:"#F1F5F9"},metricCellLabel:{fontSize:8.5,fontFamily:AppFonts_1.AppFonts.bold,color:"#94A3B8",letterSpacing:.5},metricCellValue:{fontSize:12.5,fontFamily:AppFonts_1.AppFonts.bold,color:"#0F172A",marginTop:2},metricUnit:{fontSize:9,fontFamily:AppFonts_1.AppFonts.regular,color:"#64748B"},specsBar:{flexDirection:"row",justifyContent:"space-between",backgroundColor:"#F8FAFC",paddingHorizontal:12,paddingVertical:6.5,borderTopWidth:1,borderTopColor:"#E2E8F0"},specsTag:{flexDirection:"row",alignItems:"center",gap:4},specsTagLabel:{fontSize:9.5,fontFamily:AppFonts_1.AppFonts.medium,color:"#64748B"},specsTagVal:{fontSize:9.5,fontFamily:AppFonts_1.AppFonts.bold,color:"#0F172A"},computedLayoutCard:{backgroundColor:AppColors_1.AppColors.white,borderRadius:10,padding:12,borderWidth:1,borderColor:"#E2E8F0"},computedLayoutHeader:{flexDirection:"row",justifyContent:"space-between",alignItems:"center",marginBottom:8,paddingBottom:6,borderBottomWidth:1,borderBottomColor:"#F1F5F9"},computedLayoutTitle:{fontSize:10.5,fontFamily:AppFonts_1.AppFonts.bold,color:"#6366F1",letterSpacing:.6},computedLayoutSub:{fontSize:9.5,fontFamily:AppFonts_1.AppFonts.medium,color:"#94A3B8"},computedGrid:{flexDirection:"row",flexWrap:"wrap",gap:8},computedItem:{width:"48%",backgroundColor:"#F8FAFC",paddingHorizontal:8,paddingVertical:6,borderRadius:6,borderWidth:1,borderColor:"#E2E8F0",flexDirection:"row",justifyContent:"space-between",alignItems:"center"},computedItemKey:{fontSize:10,fontFamily:AppFonts_1.AppFonts.medium,color:"#64748B"},computedItemVal:{fontSize:10.5,fontFamily:AppFonts_1.AppFonts.bold,color:"#0F172A"},styleGroupCard:{backgroundColor:AppColors_1.AppColors.white,borderRadius:10,padding:12,borderWidth:1,borderColor:"#E2E8F0",borderLeftWidth:3.5,shadowColor:"#0F172A",shadowOffset:{width:0,height:1},shadowOpacity:.04,shadowRadius:2,elevation:1},styleGroupHeader:{flexDirection:"row",justifyContent:"space-between",alignItems:"center",marginBottom:8,paddingBottom:6,borderBottomWidth:1,borderBottomColor:"#F1F5F9"},styleGroupTitleRow:{flexDirection:"row",alignItems:"center",gap:6},styleGroupIcon:{fontSize:13},styleGroupTitle:{fontSize:11,fontFamily:AppFonts_1.AppFonts.bold,letterSpacing:.6},styleGroupBadge:{paddingHorizontal:6,paddingVertical:2,borderRadius:10},styleGroupBadgeText:{fontSize:9.5,fontFamily:AppFonts_1.AppFonts.bold},styleRowsContainer:{gap:2},styleRow:{flexDirection:"row",justifyContent:"space-between",alignItems:"center",paddingVertical:4.5,paddingHorizontal:6,borderRadius:6},styleRowCopied:{backgroundColor:"#ECFDF5"},stylePropKey:{fontSize:11.5,fontFamily:AppFonts_1.AppFonts.medium,color:"#475569"},styleValueContainer:{flexDirection:"row",alignItems:"center",gap:6},colorSwatchPreview:{width:13,height:13,borderRadius:3,borderWidth:1,borderColor:"rgba(0,0,0,0.15)"},stylePropValue:{fontSize:11.5,fontFamily:AppFonts_1.AppFonts.semiBold,color:"#0F172A"},stylePropColorValue:{fontFamily:AppFonts_1.AppFonts.bold,color:"#6366F1"},styleUnitText:{fontSize:9.5,fontFamily:AppFonts_1.AppFonts.regular,color:"#94A3B8"},codeSnippetCard:{backgroundColor:"#F8FAFC",borderRadius:10,borderWidth:1,borderColor:"#E2E8F0",overflow:"hidden"},codeSnippetHeader:{flexDirection:"row",justifyContent:"space-between",alignItems:"center",paddingHorizontal:10,paddingVertical:6,borderBottomWidth:1,borderBottomColor:"#E2E8F0",backgroundColor:"#EEF2FF"},codeSnippetTabs:{flexDirection:"row",gap:4},codeFormatBtn:{paddingHorizontal:8,paddingVertical:3,borderRadius:5},codeFormatBtnActive:{backgroundColor:AppColors_1.AppColors.white,shadowColor:"#000",shadowOffset:{width:0,height:1},shadowOpacity:.1,shadowRadius:1,elevation:1},codeFormatBtnText:{fontSize:9.5,fontFamily:AppFonts_1.AppFonts.medium,color:"#64748B"},codeFormatBtnTextActive:{color:AppColors_1.AppColors.brandPurple,fontFamily:AppFonts_1.AppFonts.bold},codeCopyBtn:{flexDirection:"row",alignItems:"center",gap:4,backgroundColor:AppColors_1.AppColors.white,paddingHorizontal:8,paddingVertical:3,borderRadius:5,borderWidth:1,borderColor:"#C7D2FE"},codeCopyBtnText:{fontSize:10,fontFamily:AppFonts_1.AppFonts.bold,color:AppColors_1.AppColors.brandPurple},codeSnippetBody:{padding:10,backgroundColor:"#FFFFFF"},codeSnippetText:{fontSize:11,fontFamily:"Courier",color:"#334155",lineHeight:16},jsxTabContainer:{gap:12},sourceLocationCard:{backgroundColor:AppColors_1.AppColors.white,borderRadius:10,borderWidth:1,borderColor:"#E2E8F0",overflow:"hidden"},sourceLocationHeader:{flexDirection:"row",justifyContent:"space-between",alignItems:"center",backgroundColor:"#EEF2FF",paddingHorizontal:12,paddingVertical:7,borderBottomWidth:1,borderBottomColor:"#E0E7FF"},sourceLocationTitle:{fontSize:10,fontFamily:AppFonts_1.AppFonts.bold,color:AppColors_1.AppColors.brandPurple,letterSpacing:.6},copyPathBtn:{flexDirection:"row",alignItems:"center",gap:4,backgroundColor:AppColors_1.AppColors.white,paddingHorizontal:7,paddingVertical:2.5,borderRadius:4,borderWidth:1,borderColor:"#C7D2FE"},copyPathBtnText:{fontSize:9.5,fontFamily:AppFonts_1.AppFonts.bold,color:AppColors_1.AppColors.brandPurple},sourceLocationBody:{flexDirection:"row",justifyContent:"space-between",alignItems:"center",padding:10},sourceLocationText:{flex:1,fontSize:11.5,fontFamily:AppFonts_1.AppFonts.bold,color:"#1E293B"},lineNumberBadge:{backgroundColor:"#F1F5F9",paddingHorizontal:6,paddingVertical:2,borderRadius:4,borderWidth:1,borderColor:"#E2E8F0"},lineNumberBadgeText:{fontSize:9.5,fontFamily:AppFonts_1.AppFonts.semiBold,color:"#64748B"},jsxCodeCard:{backgroundColor:AppColors_1.AppColors.white,borderRadius:10,borderWidth:1,borderColor:"#C7D2FE",overflow:"hidden"},jsxCodeHeader:{flexDirection:"row",justifyContent:"space-between",alignItems:"center",backgroundColor:"#EEF2FF",paddingHorizontal:12,paddingVertical:8,borderBottomWidth:1,borderBottomColor:"#E0E7FF"},jsxCodeTitleRow:{flexDirection:"row",alignItems:"center",gap:6},jsxCodeTitle:{fontSize:10.5,fontFamily:AppFonts_1.AppFonts.bold,color:AppColors_1.AppColors.brandPurple,letterSpacing:.6},jsxCopyActionBtn:{flexDirection:"row",alignItems:"center",gap:4,backgroundColor:AppColors_1.AppColors.brandPurple,paddingHorizontal:9,paddingVertical:4,borderRadius:6},jsxCopyActionBtnText:{fontSize:10.5,fontFamily:AppFonts_1.AppFonts.bold,color:AppColors_1.AppColors.white},jsxCodeBody:{padding:12,backgroundColor:"#FAF5FF"},jsxCodeContent:{fontSize:12,fontFamily:"Courier",color:"#4C1D95",lineHeight:18},connectedStyleTitle:{fontSize:10,fontFamily:AppFonts_1.AppFonts.bold,color:AppColors_1.AppColors.brandPurple,letterSpacing:.6},boxModelTabContainer:{gap:12},boxModelCard:{backgroundColor:AppColors_1.AppColors.white,borderRadius:10,padding:12,borderWidth:1,borderColor:"#E2E8F0"},boxModelSectionTitle:{fontSize:10.5,fontFamily:AppFonts_1.AppFonts.bold,color:"#64748B",letterSpacing:.5,marginBottom:8},boxModelMetricsTable:{backgroundColor:AppColors_1.AppColors.white,borderRadius:10,padding:12,borderWidth:1,borderColor:"#E2E8F0"},tableTitle:{fontSize:10,fontFamily:AppFonts_1.AppFonts.bold,color:"#64748B",letterSpacing:.5,marginBottom:8},tableRow:{flexDirection:"row",borderBottomWidth:1,borderBottomColor:"#F1F5F9",paddingVertical:6},tableHeaderCell:{flex:1,fontSize:10,fontFamily:AppFonts_1.AppFonts.bold,color:"#94A3B8",textAlign:"center"},tableCell:{flex:1,fontSize:11,fontFamily:AppFonts_1.AppFonts.medium,color:"#334155",textAlign:"center"},insetsCard:{backgroundColor:AppColors_1.AppColors.white,borderRadius:10,padding:12,borderWidth:1,borderColor:"#E2E8F0"},insetsGrid:{gap:6},insetRow:{flexDirection:"row",justifyContent:"space-between",alignItems:"center",paddingVertical:4,borderBottomWidth:1,borderBottomColor:"#F8FAFC"},insetLabel:{fontSize:11,fontFamily:AppFonts_1.AppFonts.medium,color:"#64748B"},insetValue:{fontSize:11.5,fontFamily:AppFonts_1.AppFonts.bold,color:"#0F172A"},treeTabContainer:{gap:10},treeSegmentBar:{flexDirection:"row",backgroundColor:"#F1F5F9",borderRadius:8,padding:3,gap:4},treeSegmentBtn:{flex:1,paddingVertical:7,alignItems:"center",justifyContent:"center",borderRadius:6},treeSegmentBtnActive:{backgroundColor:AppColors_1.AppColors.white,shadowColor:"#000",shadowOffset:{width:0,height:1},shadowOpacity:.1,shadowRadius:2,elevation:1},treeSegmentText:{fontSize:11,fontFamily:AppFonts_1.AppFonts.medium,color:"#64748B"},treeSegmentTextActive:{color:AppColors_1.AppColors.brandPurple,fontFamily:AppFonts_1.AppFonts.bold},treeHeaderCard:{backgroundColor:"#F8FAFC",borderRadius:8,padding:10,borderWidth:1,borderColor:"#E2E8F0"},treeHeaderTitle:{fontSize:10.5,fontFamily:AppFonts_1.AppFonts.bold,color:"#64748B",letterSpacing:.5,marginBottom:4},treeHeaderSubtitle:{fontSize:11,fontFamily:AppFonts_1.AppFonts.regular,color:"#94A3B8",lineHeight:16},treeList:{gap:6},treeItemCard:{backgroundColor:AppColors_1.AppColors.white,borderRadius:8,padding:10,borderWidth:1,borderColor:"#E2E8F0"},treeItemCardActive:{backgroundColor:"#EEF2FF",borderColor:"#6366F1",borderLeftWidth:3.5,borderLeftColor:AppColors_1.AppColors.brandPurple},treeItemTopRow:{flexDirection:"row",justifyContent:"space-between",alignItems:"center"},treeTagRow:{flexDirection:"row",alignItems:"center",gap:6},depthBadge:{backgroundColor:"#F1F5F9",paddingHorizontal:5,paddingVertical:2,borderRadius:4},depthBadgeActive:{backgroundColor:AppColors_1.AppColors.brandPurple},depthBadgeText:{fontSize:9,fontFamily:AppFonts_1.AppFonts.bold,color:"#64748B"},depthBadgeTextActive:{color:AppColors_1.AppColors.white},treeTagName:{fontSize:12,fontFamily:AppFonts_1.AppFonts.bold,color:"#334155"},treeTagNameActive:{color:AppColors_1.AppColors.brandPurple},activePillBadge:{backgroundColor:"#10B98118",paddingHorizontal:6,paddingVertical:2,borderRadius:4},activePillBadgeText:{fontSize:9,fontFamily:AppFonts_1.AppFonts.bold,color:"#059669"},inspectArrowBtn:{paddingHorizontal:6,paddingVertical:2,borderRadius:4,backgroundColor:"#F8FAFC"},inspectArrowBtnText:{fontSize:10,fontFamily:AppFonts_1.AppFonts.medium,color:"#64748B"},treeItemBottomRow:{flexDirection:"row",justifyContent:"space-between",alignItems:"center",marginTop:6,paddingTop:4,borderTopWidth:1,borderTopColor:"#F1F5F9"},treeItemMetric:{fontSize:9.5,fontFamily:AppFonts_1.AppFonts.regular,color:"#94A3B8"},treeItemLocationText:{fontSize:9.5,fontFamily:AppFonts_1.AppFonts.regular,color:AppColors_1.AppColors.brandPurple},treeItemHostBadge:{fontSize:9,fontFamily:AppFonts_1.AppFonts.semiBold,color:"#6366F1"},propsTabContainer:{gap:10},propsSearchRow:{flexDirection:"row",gap:8,alignItems:"center"},searchBar:{flex:1,flexDirection:"row",alignItems:"center",gap:8,backgroundColor:AppColors_1.AppColors.white,paddingHorizontal:10,borderRadius:8,borderWidth:1,borderColor:"#E2E8F0",height:36},searchInput:{flex:1,fontSize:11.5,fontFamily:AppFonts_1.AppFonts.regular,color:"#0F172A",padding:0},copyPropsBtn:{flexDirection:"row",alignItems:"center",gap:4,backgroundColor:AppColors_1.AppColors.brandPurple,paddingHorizontal:10,height:36,borderRadius:8},copyPropsBtnText:{fontSize:10.5,fontFamily:AppFonts_1.AppFonts.bold,color:AppColors_1.AppColors.white},emptyPropsBox:{padding:24,alignItems:"center",backgroundColor:AppColors_1.AppColors.white,borderRadius:8,borderWidth:1,borderColor:"#E2E8F0"},emptyPropsText:{fontSize:12,fontFamily:AppFonts_1.AppFonts.medium,color:"#94A3B8"},propsList:{gap:6},propItemCard:{backgroundColor:AppColors_1.AppColors.white,borderRadius:8,padding:10,borderWidth:1,borderColor:"#E2E8F0"},propHeader:{flexDirection:"row",justifyContent:"space-between",alignItems:"center",marginBottom:4},propKeyName:{fontSize:12,fontFamily:AppFonts_1.AppFonts.bold,color:"#1E293B"},typeBadgePrimary:{paddingHorizontal:6,paddingVertical:2,borderRadius:4,backgroundColor:"#F1F5F9"},typeBadgeFn:{backgroundColor:"#EEF2FF"},typeBadgeObj:{backgroundColor:"#FEF3C7"},typeBadgePrim:{backgroundColor:"#ECFDF5"},typeBadgePrimaryText:{fontSize:9,fontFamily:AppFonts_1.AppFonts.bold,color:"#475569"},propValueText:{fontSize:11,fontFamily:"Courier",color:"#334155",marginTop:2},jsonViewerWrapper:{marginTop:4},modalBackdrop:{flex:1,backgroundColor:"rgba(15, 23, 42, 0.85)",justifyContent:"center",alignItems:"center",padding:20},modalCard:{width:"100%",maxHeight:"80%",backgroundColor:"#1E293B",borderRadius:14,overflow:"hidden",borderWidth:1,borderColor:"#334155"},modalHeader:{flexDirection:"row",justifyContent:"space-between",alignItems:"center",paddingHorizontal:14,paddingVertical:10,borderBottomWidth:1,borderBottomColor:"#334155"},modalTitle:{fontSize:12,fontFamily:AppFonts_1.AppFonts.bold,color:AppColors_1.AppColors.white},modalCloseBtn:{padding:4},modalImageContainer:{padding:12,alignItems:"center",justifyContent:"center"},modalImage:{width:"100%",height:260}});
@@ -1,2 +0,0 @@
1
- import React from 'react';
2
- export declare const UiInspectorOverlay: React.FC;