react-native-inapp-inspector 1.1.21 → 1.1.23
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/commonjs/components/AnalyticsDetail.js +5 -3
- package/dist/commonjs/components/AnalyticsEventCard.d.ts +0 -1
- package/dist/commonjs/components/AnalyticsEventCard.js +89 -97
- package/dist/commonjs/components/ErrorBoundary.js +17 -8
- package/dist/commonjs/components/Inspector/BundleTab.d.ts +1 -0
- package/dist/commonjs/components/Inspector/BundleTab.js +607 -685
- package/dist/commonjs/components/Inspector/LogDetail.js +12 -6
- package/dist/commonjs/components/Inspector/PerformanceTab.js +195 -254
- package/dist/commonjs/components/Inspector/ReduxDetail.js +2 -2
- package/dist/commonjs/components/Inspector/ReduxTab.js +9 -6
- package/dist/commonjs/components/NetworkIcons.d.ts +12 -0
- package/dist/commonjs/components/NetworkIcons.js +92 -1
- package/dist/commonjs/components/TreeNode.js +1 -1
- package/dist/commonjs/constants/version.d.ts +1 -1
- package/dist/commonjs/constants/version.js +1 -1
- package/dist/commonjs/customHooks/bundleAnalyzer.d.ts +115 -0
- package/dist/commonjs/customHooks/bundleAnalyzer.js +561 -0
- package/dist/commonjs/customHooks/performanceTracker.d.ts +84 -0
- package/dist/commonjs/customHooks/performanceTracker.js +541 -0
- package/dist/commonjs/helpers/index.d.ts +15 -0
- package/dist/commonjs/helpers/index.js +112 -1
- package/dist/commonjs/i18n/locales/en.json +225 -2
- package/dist/commonjs/styles/AppColors.d.ts +110 -0
- package/dist/commonjs/styles/AppColors.js +114 -0
- package/dist/esm/components/AnalyticsDetail.js +5 -3
- package/dist/esm/components/AnalyticsEventCard.d.ts +0 -1
- package/dist/esm/components/AnalyticsEventCard.js +89 -96
- package/dist/esm/components/ErrorBoundary.js +17 -8
- package/dist/esm/components/Inspector/BundleTab.d.ts +1 -0
- package/dist/esm/components/Inspector/BundleTab.js +612 -690
- package/dist/esm/components/Inspector/LogDetail.js +13 -7
- package/dist/esm/components/Inspector/PerformanceTab.js +196 -255
- package/dist/esm/components/Inspector/ReduxDetail.js +2 -2
- package/dist/esm/components/Inspector/ReduxTab.js +10 -7
- package/dist/esm/components/NetworkIcons.d.ts +12 -0
- package/dist/esm/components/NetworkIcons.js +79 -0
- package/dist/esm/components/TreeNode.js +2 -2
- package/dist/esm/constants/version.d.ts +1 -1
- package/dist/esm/constants/version.js +1 -1
- package/dist/esm/customHooks/bundleAnalyzer.d.ts +115 -0
- package/dist/esm/customHooks/bundleAnalyzer.js +554 -0
- package/dist/esm/customHooks/performanceTracker.d.ts +84 -0
- package/dist/esm/customHooks/performanceTracker.js +537 -0
- package/dist/esm/helpers/index.d.ts +15 -0
- package/dist/esm/helpers/index.js +107 -0
- package/dist/esm/i18n/locales/en.json +225 -2
- package/dist/esm/styles/AppColors.d.ts +110 -0
- package/dist/esm/styles/AppColors.js +114 -0
- package/package.json +1 -1
|
@@ -47,7 +47,9 @@ const AppFonts_1 = require("../styles/AppFonts");
|
|
|
47
47
|
const helpers_1 = require("../helpers");
|
|
48
48
|
// Stylesheet
|
|
49
49
|
const AppColors_1 = require("../styles/AppColors");
|
|
50
|
+
const i18n_1 = require("../i18n");
|
|
50
51
|
const AnalyticsDetail = ({ event, }) => {
|
|
52
|
+
const { t } = (0, i18n_1.useTranslation)();
|
|
51
53
|
const [expandDepth, setExpandDepth] = (0, react_1.useState)(1);
|
|
52
54
|
const [treeKey, setTreeKey] = (0, react_1.useState)(0);
|
|
53
55
|
const params = event.params ?? {};
|
|
@@ -67,7 +69,7 @@ const AnalyticsDetail = ({ event, }) => {
|
|
|
67
69
|
}
|
|
68
70
|
else if (isArray) {
|
|
69
71
|
typeLabel = 'array';
|
|
70
|
-
countLabel = `${jsonData.length} items`;
|
|
72
|
+
countLabel = `${jsonData.length} ${t('analytics.items')}`;
|
|
71
73
|
}
|
|
72
74
|
else if (isObject) {
|
|
73
75
|
typeLabel = 'object';
|
|
@@ -107,7 +109,7 @@ const AnalyticsDetail = ({ event, }) => {
|
|
|
107
109
|
fontSize: 12,
|
|
108
110
|
color: AppColors_1.AppColors.purple,
|
|
109
111
|
}}>
|
|
110
|
-
{expandDepth === 99 ? '
|
|
112
|
+
{expandDepth === 99 ? t('common.collapseAll') : t('common.expandAll')}
|
|
111
113
|
</react_native_1.Text>
|
|
112
114
|
</TouchableScale_1.default>
|
|
113
115
|
<react_native_1.View style={{
|
|
@@ -144,7 +146,7 @@ const AnalyticsDetail = ({ event, }) => {
|
|
|
144
146
|
</react_native_1.View>
|
|
145
147
|
</react_native_1.View>
|
|
146
148
|
|
|
147
|
-
<CopyButton_1.default value={JSON.stringify(jsonData, null, 2)} label=
|
|
149
|
+
<CopyButton_1.default value={JSON.stringify(jsonData, null, 2)} label={t('common.copyJson')}/>
|
|
148
150
|
</react_native_1.View>
|
|
149
151
|
|
|
150
152
|
{/* Direct JSON Viewer View */}
|
|
@@ -36,94 +36,19 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
36
36
|
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
37
37
|
};
|
|
38
38
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
39
|
-
exports.getEventColor = getEventColor;
|
|
40
39
|
const react_1 = __importStar(require("react"));
|
|
41
40
|
const react_native_1 = require("react-native");
|
|
42
41
|
const AppColors_1 = require("../styles/AppColors");
|
|
43
42
|
const AppFonts_1 = require("../styles/AppFonts");
|
|
44
43
|
const helpers_1 = require("../helpers");
|
|
44
|
+
const i18n_1 = require("../i18n");
|
|
45
45
|
const HighlightText_1 = __importDefault(require("./HighlightText"));
|
|
46
46
|
const TouchableScale_1 = __importDefault(require("./TouchableScale"));
|
|
47
|
-
|
|
48
|
-
const EVENT_PALETTE = [
|
|
49
|
-
AppColors_1.AppColors.googleBlue, // blue
|
|
50
|
-
AppColors_1.AppColors.googleGreen, // green
|
|
51
|
-
AppColors_1.AppColors.googlePurple, // purple
|
|
52
|
-
AppColors_1.AppColors.googleTeal, // teal
|
|
53
|
-
AppColors_1.AppColors.googleRed, // red
|
|
54
|
-
AppColors_1.AppColors.googleOrange, // orange
|
|
55
|
-
AppColors_1.AppColors.blue700, // dark blue
|
|
56
|
-
AppColors_1.AppColors.materialGreen, // dark green
|
|
57
|
-
];
|
|
58
|
-
function getEventColor(name) {
|
|
59
|
-
const safeName = typeof name === 'string' ? name : String(name || '');
|
|
60
|
-
let hash = 0;
|
|
61
|
-
for (let i = 0; i < safeName.length; i++) {
|
|
62
|
-
hash = (hash * 31 + safeName.charCodeAt(i)) | 0;
|
|
63
|
-
}
|
|
64
|
-
return EVENT_PALETTE[Math.abs(hash) % EVENT_PALETTE.length];
|
|
65
|
-
}
|
|
66
|
-
// ─── Helpers ──────────────────────────────────────────────────────────────────
|
|
67
|
-
function getEventCategory(name) {
|
|
68
|
-
if (!name)
|
|
69
|
-
return 'Custom';
|
|
70
|
-
const lowercaseName = name.toLowerCase();
|
|
71
|
-
if (lowercaseName === 'screen_view' || lowercaseName === 'page_view') {
|
|
72
|
-
return 'Page View';
|
|
73
|
-
}
|
|
74
|
-
// Ecommerce events
|
|
75
|
-
const ecommerceEvents = [
|
|
76
|
-
'purchase', 'add_to_cart', 'begin_checkout', 'view_item',
|
|
77
|
-
'select_item', 'remove_from_cart', 'view_cart',
|
|
78
|
-
'add_shipping_info', 'add_payment_info', 'refund',
|
|
79
|
-
'view_item_list', 'select_promotion', 'view_promotion'
|
|
80
|
-
];
|
|
81
|
-
if (ecommerceEvents.includes(lowercaseName)) {
|
|
82
|
-
return 'Ecommerce';
|
|
83
|
-
}
|
|
84
|
-
// Firebase System Auto-events
|
|
85
|
-
const systemEvents = [
|
|
86
|
-
'first_open', 'session_start', 'user_engagement',
|
|
87
|
-
'app_clear_data', 'app_exception', 'app_update', 'os_update',
|
|
88
|
-
'notification_receive', 'notification_open', 'notification_dismiss',
|
|
89
|
-
'screen_active', 'screen_inactive'
|
|
90
|
-
];
|
|
91
|
-
if (systemEvents.includes(lowercaseName) || lowercaseName.startsWith('firebase_') || lowercaseName.startsWith('_')) {
|
|
92
|
-
return 'System';
|
|
93
|
-
}
|
|
94
|
-
return 'Custom';
|
|
95
|
-
}
|
|
96
|
-
function getCategoryColors(category) {
|
|
97
|
-
switch (category) {
|
|
98
|
-
case 'Page View':
|
|
99
|
-
return {
|
|
100
|
-
bg: AppColors_1.AppColors.blueBg,
|
|
101
|
-
border: AppColors_1.AppColors.blueBorder,
|
|
102
|
-
text: AppColors_1.AppColors.blue800,
|
|
103
|
-
};
|
|
104
|
-
case 'Ecommerce':
|
|
105
|
-
return {
|
|
106
|
-
bg: AppColors_1.AppColors.greenBg,
|
|
107
|
-
border: AppColors_1.AppColors.greenBorder,
|
|
108
|
-
text: AppColors_1.AppColors.materialGreen,
|
|
109
|
-
};
|
|
110
|
-
case 'System':
|
|
111
|
-
return {
|
|
112
|
-
bg: AppColors_1.AppColors.greyBg,
|
|
113
|
-
border: AppColors_1.AppColors.greyBorder,
|
|
114
|
-
text: AppColors_1.AppColors.grey600,
|
|
115
|
-
};
|
|
116
|
-
default:
|
|
117
|
-
return {
|
|
118
|
-
bg: AppColors_1.AppColors.purpleBg,
|
|
119
|
-
border: AppColors_1.AppColors.purpleBorder,
|
|
120
|
-
text: AppColors_1.AppColors.purpleText,
|
|
121
|
-
};
|
|
122
|
-
}
|
|
123
|
-
}
|
|
47
|
+
const NetworkIcons_1 = require("./NetworkIcons");
|
|
124
48
|
// ─── Component ────────────────────────────────────────────────────────────────
|
|
125
49
|
const AnalyticsEventCard = react_1.default.memo(function AnalyticsEventCard({ event, onPress, isNew = false, searchStr = '', msSincePrev, computedScreenName, }) {
|
|
126
|
-
const
|
|
50
|
+
const { t } = (0, i18n_1.useTranslation)();
|
|
51
|
+
const color = (0, helpers_1.getEventColor)(event.name);
|
|
127
52
|
const paramCount = event.params ? Object.keys(event.params).length : 0;
|
|
128
53
|
const userPropCount = event.userProperties
|
|
129
54
|
? Object.keys(event.userProperties).length
|
|
@@ -143,11 +68,19 @@ const AnalyticsEventCard = react_1.default.memo(function AnalyticsEventCard({ ev
|
|
|
143
68
|
return (<react_native_1.View style={cardStyles.container}>
|
|
144
69
|
{/* ── Gap Indicator ─────────────────────────────────────────────────── */}
|
|
145
70
|
{showGap && (<react_native_1.View style={cardStyles.gapContainer}>
|
|
146
|
-
<react_native_1.Text style={[cardStyles.gapText, { color: AppColors_1.AppColors.grayTextWeak }]}>
|
|
71
|
+
<react_native_1.Text style={[cardStyles.gapText, { color: AppColors_1.AppColors.grayTextWeak }]}>
|
|
72
|
+
{(0, helpers_1.formatGap)(msSincePrev)}
|
|
73
|
+
</react_native_1.Text>
|
|
147
74
|
</react_native_1.View>)}
|
|
148
75
|
|
|
149
76
|
{/* ── Main Card ─────────────────────────────────────────────────────── */}
|
|
150
|
-
<TouchableScale_1.default onPress={onPress} style={[
|
|
77
|
+
<TouchableScale_1.default onPress={onPress} style={[
|
|
78
|
+
cardStyles.modernCard,
|
|
79
|
+
{
|
|
80
|
+
backgroundColor: AppColors_1.AppColors.primaryLight,
|
|
81
|
+
borderColor: AppColors_1.AppColors.grayBorderSecondary,
|
|
82
|
+
},
|
|
83
|
+
]}>
|
|
151
84
|
<react_native_1.Animated.View style={[
|
|
152
85
|
react_native_1.StyleSheet.absoluteFill,
|
|
153
86
|
{
|
|
@@ -170,14 +103,21 @@ const AnalyticsEventCard = react_1.default.memo(function AnalyticsEventCard({ ev
|
|
|
170
103
|
</react_native_1.View>
|
|
171
104
|
|
|
172
105
|
{(() => {
|
|
173
|
-
const
|
|
174
|
-
const tagColors = getCategoryColors(
|
|
106
|
+
const catKey = (0, helpers_1.getEventCategory)(event.name);
|
|
107
|
+
const tagColors = (0, helpers_1.getCategoryColors)(catKey);
|
|
108
|
+
const categoryLabel = catKey === 'page_view'
|
|
109
|
+
? t('analytics.pageViewCategory')
|
|
110
|
+
: catKey === 'ecommerce'
|
|
111
|
+
? t('analytics.ecommerceCategory')
|
|
112
|
+
: catKey === 'system'
|
|
113
|
+
? t('analytics.systemCategory')
|
|
114
|
+
: t('analytics.customCategory');
|
|
175
115
|
return (<react_native_1.View style={[
|
|
176
116
|
cardStyles.categoryBadge,
|
|
177
117
|
{ backgroundColor: tagColors.bg, borderColor: tagColors.border },
|
|
178
118
|
]}>
|
|
179
119
|
<react_native_1.Text style={[cardStyles.categoryText, { color: tagColors.text }]}>
|
|
180
|
-
{
|
|
120
|
+
{categoryLabel}
|
|
181
121
|
</react_native_1.Text>
|
|
182
122
|
</react_native_1.View>);
|
|
183
123
|
})()}
|
|
@@ -193,7 +133,8 @@ const AnalyticsEventCard = react_1.default.memo(function AnalyticsEventCard({ ev
|
|
|
193
133
|
cardStyles.duplicateText,
|
|
194
134
|
event.count === 1 && { color: AppColors_1.AppColors.grayTextStrong },
|
|
195
135
|
]}>
|
|
196
|
-
{event.count}×
|
|
136
|
+
{event.count}×
|
|
137
|
+
{event.count > 1 ? ` ${t('analytics.duplicate')}` : ''}
|
|
197
138
|
</react_native_1.Text>
|
|
198
139
|
</react_native_1.View>) : null}
|
|
199
140
|
</react_native_1.View>
|
|
@@ -216,7 +157,13 @@ const AnalyticsEventCard = react_1.default.memo(function AnalyticsEventCard({ ev
|
|
|
216
157
|
const screenNameStr = typeof rawScreenName === 'object'
|
|
217
158
|
? JSON.stringify(rawScreenName)
|
|
218
159
|
: String(rawScreenName);
|
|
219
|
-
return (<react_native_1.View style={[
|
|
160
|
+
return (<react_native_1.View style={[
|
|
161
|
+
cardStyles.chip,
|
|
162
|
+
{
|
|
163
|
+
backgroundColor: AppColors_1.AppColors.grayBackground,
|
|
164
|
+
borderColor: AppColors_1.AppColors.grayBorderSecondary,
|
|
165
|
+
},
|
|
166
|
+
]}>
|
|
220
167
|
<react_native_1.View style={[cardStyles.screenDot, { backgroundColor: color }]}/>
|
|
221
168
|
<react_native_1.Text style={[cardStyles.chipText, { color: AppColors_1.AppColors.grayText }]} numberOfLines={1}>
|
|
222
169
|
{screenNameStr}
|
|
@@ -224,22 +171,52 @@ const AnalyticsEventCard = react_1.default.memo(function AnalyticsEventCard({ ev
|
|
|
224
171
|
</react_native_1.View>);
|
|
225
172
|
})()}
|
|
226
173
|
|
|
227
|
-
<react_native_1.View style={[
|
|
174
|
+
<react_native_1.View style={[
|
|
175
|
+
cardStyles.chip,
|
|
176
|
+
{
|
|
177
|
+
backgroundColor: AppColors_1.AppColors.grayBackground,
|
|
178
|
+
borderColor: AppColors_1.AppColors.grayBorderSecondary,
|
|
179
|
+
},
|
|
180
|
+
]}>
|
|
228
181
|
<react_native_1.Text style={[cardStyles.chipText, { color: AppColors_1.AppColors.grayText }]}>
|
|
229
|
-
{'{} '} {paramCount} params
|
|
182
|
+
{'{} '} {paramCount} {t('analytics.params')}
|
|
230
183
|
</react_native_1.Text>
|
|
231
184
|
</react_native_1.View>
|
|
232
185
|
|
|
233
|
-
{userPropCount > 0 && (<react_native_1.View style={[
|
|
234
|
-
|
|
186
|
+
{userPropCount > 0 && (<react_native_1.View style={[
|
|
187
|
+
cardStyles.chip,
|
|
188
|
+
{
|
|
189
|
+
backgroundColor: AppColors_1.AppColors.grayBackground,
|
|
190
|
+
borderColor: AppColors_1.AppColors.grayBorderSecondary,
|
|
191
|
+
},
|
|
192
|
+
]}>
|
|
193
|
+
<react_native_1.Text style={[cardStyles.chipText, { color: AppColors_1.AppColors.grayText }]}>
|
|
194
|
+
★ {userPropCount} {t('analytics.props')}
|
|
195
|
+
</react_native_1.Text>
|
|
235
196
|
</react_native_1.View>)}
|
|
236
197
|
|
|
237
198
|
{(() => {
|
|
238
199
|
const items = event.params?.items;
|
|
239
200
|
if (Array.isArray(items) && items.length > 0) {
|
|
240
|
-
return (<react_native_1.View style={[
|
|
241
|
-
|
|
242
|
-
|
|
201
|
+
return (<react_native_1.View style={[
|
|
202
|
+
cardStyles.chip,
|
|
203
|
+
{
|
|
204
|
+
backgroundColor: AppColors_1.AppColors.amberBg,
|
|
205
|
+
borderColor: AppColors_1.AppColors.amberBorder,
|
|
206
|
+
},
|
|
207
|
+
]}>
|
|
208
|
+
<NetworkIcons_1.CartIcon color={AppColors_1.AppColors.amber700} size={12}/>
|
|
209
|
+
<react_native_1.Text style={[
|
|
210
|
+
cardStyles.chipText,
|
|
211
|
+
{
|
|
212
|
+
color: AppColors_1.AppColors.amber700,
|
|
213
|
+
fontFamily: AppFonts_1.AppFonts.interBold,
|
|
214
|
+
},
|
|
215
|
+
]}>
|
|
216
|
+
{items.length}{' '}
|
|
217
|
+
{items.length === 1
|
|
218
|
+
? t('analytics.item')
|
|
219
|
+
: t('analytics.items')}
|
|
243
220
|
</react_native_1.Text>
|
|
244
221
|
</react_native_1.View>);
|
|
245
222
|
}
|
|
@@ -251,10 +228,25 @@ const AnalyticsEventCard = react_1.default.memo(function AnalyticsEventCard({ ev
|
|
|
251
228
|
const currency = event.params?.currency ?? '';
|
|
252
229
|
const isPrimitive = typeof val === 'string' || typeof val === 'number';
|
|
253
230
|
if (isPrimitive) {
|
|
254
|
-
const currencyStr = typeof currency === 'string' || typeof currency === 'number'
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
231
|
+
const currencyStr = typeof currency === 'string' || typeof currency === 'number'
|
|
232
|
+
? String(currency)
|
|
233
|
+
: '';
|
|
234
|
+
return (<react_native_1.View style={[
|
|
235
|
+
cardStyles.chip,
|
|
236
|
+
{
|
|
237
|
+
backgroundColor: AppColors_1.AppColors.emeraldBg,
|
|
238
|
+
borderColor: AppColors_1.AppColors.emeraldBorder,
|
|
239
|
+
},
|
|
240
|
+
]}>
|
|
241
|
+
<NetworkIcons_1.MoneyIcon color={AppColors_1.AppColors.emerald600} size={12}/>
|
|
242
|
+
<react_native_1.Text style={[
|
|
243
|
+
cardStyles.chipText,
|
|
244
|
+
{
|
|
245
|
+
color: AppColors_1.AppColors.emerald600,
|
|
246
|
+
fontFamily: AppFonts_1.AppFonts.interBold,
|
|
247
|
+
},
|
|
248
|
+
]}>
|
|
249
|
+
{String(val)} {currencyStr}
|
|
258
250
|
</react_native_1.Text>
|
|
259
251
|
</react_native_1.View>);
|
|
260
252
|
}
|
|
@@ -39,6 +39,7 @@ const react_native_1 = require("react-native");
|
|
|
39
39
|
const AppColors_1 = require("../styles/AppColors");
|
|
40
40
|
const AppFonts_1 = require("../styles/AppFonts");
|
|
41
41
|
const helpers_1 = require("../helpers");
|
|
42
|
+
const NetworkIcons_1 = require("./NetworkIcons");
|
|
42
43
|
function parseStackTrace(stack) {
|
|
43
44
|
if (!stack)
|
|
44
45
|
return null;
|
|
@@ -110,7 +111,10 @@ ${error.stack}`;
|
|
|
110
111
|
const isInline = this.props.fallbackType === 'inline';
|
|
111
112
|
if (isInline) {
|
|
112
113
|
return (<react_native_1.View style={styles.inlineContainer}>
|
|
113
|
-
<react_native_1.
|
|
114
|
+
<react_native_1.View style={{ flexDirection: 'row', alignItems: 'center', gap: 6 }}>
|
|
115
|
+
<NetworkIcons_1.WarningTriangleIcon color={AppColors_1.AppColors.redErrorText} size={14}/>
|
|
116
|
+
<react_native_1.Text style={styles.inlineTitle}>Inspector Crash</react_native_1.Text>
|
|
117
|
+
</react_native_1.View>
|
|
114
118
|
<react_native_1.TouchableOpacity style={styles.inlineResetBtn} onPress={this.handleReset}>
|
|
115
119
|
<react_native_1.Text style={styles.inlineResetText}>Reload</react_native_1.Text>
|
|
116
120
|
</react_native_1.TouchableOpacity>
|
|
@@ -121,7 +125,9 @@ ${error.stack}`;
|
|
|
121
125
|
const parsed = error && error.stack ? parseStackTrace(error.stack) : null;
|
|
122
126
|
return (<react_native_1.View style={styles.container}>
|
|
123
127
|
<react_native_1.View style={styles.card}>
|
|
124
|
-
<react_native_1.
|
|
128
|
+
<react_native_1.View style={{ marginBottom: 12, alignItems: 'center' }}>
|
|
129
|
+
<NetworkIcons_1.WarningTriangleIcon color={AppColors_1.AppColors.amber500} size={44}/>
|
|
130
|
+
</react_native_1.View>
|
|
125
131
|
<react_native_1.Text style={styles.title}>Something went wrong</react_native_1.Text>
|
|
126
132
|
|
|
127
133
|
<react_native_1.View style={{
|
|
@@ -134,13 +140,19 @@ ${error.stack}`;
|
|
|
134
140
|
marginBottom: 12,
|
|
135
141
|
gap: 4
|
|
136
142
|
}}>
|
|
143
|
+
<react_native_1.View style={{
|
|
144
|
+
width: 8,
|
|
145
|
+
height: 8,
|
|
146
|
+
borderRadius: 4,
|
|
147
|
+
backgroundColor: isNativeCrash ? AppColors_1.AppColors.errorColor : AppColors_1.AppColors.amber500,
|
|
148
|
+
}}/>
|
|
137
149
|
<react_native_1.Text style={{
|
|
138
150
|
fontSize: 10,
|
|
139
151
|
fontWeight: 'bold',
|
|
140
152
|
color: isNativeCrash ? AppColors_1.AppColors.errorColor : AppColors_1.AppColors.amber500,
|
|
141
153
|
fontFamily: AppFonts_1.AppFonts.interBold || 'System'
|
|
142
154
|
}}>
|
|
143
|
-
{isNativeCrash ? '
|
|
155
|
+
{isNativeCrash ? 'NATIVE CRASH' : 'JAVASCRIPT CRASH'}
|
|
144
156
|
</react_native_1.Text>
|
|
145
157
|
</react_native_1.View>
|
|
146
158
|
|
|
@@ -187,8 +199,9 @@ ${error.stack}`;
|
|
|
187
199
|
flexDirection: 'row',
|
|
188
200
|
gap: 6
|
|
189
201
|
}} onPress={this.handleCopyTrace}>
|
|
202
|
+
<NetworkIcons_1.CopyIcon color={AppColors_1.AppColors.white} size={14}/>
|
|
190
203
|
<react_native_1.Text style={{ color: AppColors_1.AppColors.white, fontSize: 12, fontWeight: 'bold', fontFamily: AppFonts_1.AppFonts.interBold || 'System' }}>
|
|
191
|
-
|
|
204
|
+
Copy Crash Traceback
|
|
192
205
|
</react_native_1.Text>
|
|
193
206
|
</react_native_1.TouchableOpacity>
|
|
194
207
|
</react_native_1.View>
|
|
@@ -231,10 +244,6 @@ const styles = react_native_1.StyleSheet.create({
|
|
|
231
244
|
shadowRadius: 12,
|
|
232
245
|
elevation: 8,
|
|
233
246
|
},
|
|
234
|
-
emoji: {
|
|
235
|
-
fontSize: 40,
|
|
236
|
-
marginBottom: 12,
|
|
237
|
-
},
|
|
238
247
|
title: {
|
|
239
248
|
fontFamily: AppFonts_1.AppFonts.interBold || 'System',
|
|
240
249
|
fontSize: 18,
|
|
@@ -32,6 +32,7 @@ export interface BundlePackageItem {
|
|
|
32
32
|
lastActive?: string;
|
|
33
33
|
npmUrl?: string;
|
|
34
34
|
}
|
|
35
|
+
export type BundleIconType = 'source' | 'deps' | 'media' | 'overhead' | 'image' | 'typescript' | 'javascript' | 'font' | 'json' | 'folder' | 'ban' | 'bolt';
|
|
35
36
|
export interface TreeNode {
|
|
36
37
|
id: string;
|
|
37
38
|
name: string;
|