react-native-network-lens 0.0.0-stage → 0.1.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.
- package/LICENSE +20 -0
- package/README.md +208 -2
- package/lib/module/backHandler.js +31 -0
- package/lib/module/backHandler.js.map +1 -0
- package/lib/module/components/BodyViewer.js +213 -0
- package/lib/module/components/BodyViewer.js.map +1 -0
- package/lib/module/components/CodeList.js +104 -0
- package/lib/module/components/CodeList.js.map +1 -0
- package/lib/module/components/JsonTree/JsonTreeView.js +206 -0
- package/lib/module/components/JsonTree/JsonTreeView.js.map +1 -0
- package/lib/module/components/JsonTree/model.js +196 -0
- package/lib/module/components/JsonTree/model.js.map +1 -0
- package/lib/module/components/NetworkLens.js +110 -0
- package/lib/module/components/NetworkLens.js.map +1 -0
- package/lib/module/components/NetworkLensOverlay.js +158 -0
- package/lib/module/components/NetworkLensOverlay.js.map +1 -0
- package/lib/module/components/RawTextView.js +119 -0
- package/lib/module/components/RawTextView.js.map +1 -0
- package/lib/module/components/RequestDetails/RequestDetails.js +256 -0
- package/lib/module/components/RequestDetails/RequestDetails.js.map +1 -0
- package/lib/module/components/RequestList/FilterBar.js +138 -0
- package/lib/module/components/RequestList/FilterBar.js.map +1 -0
- package/lib/module/components/RequestList/RequestList.js +163 -0
- package/lib/module/components/RequestList/RequestList.js.map +1 -0
- package/lib/module/components/RequestList/RequestRow.js +161 -0
- package/lib/module/components/RequestList/RequestRow.js.map +1 -0
- package/lib/module/components/RequestList/filters.js +57 -0
- package/lib/module/components/RequestList/filters.js.map +1 -0
- package/lib/module/components/ui/ActionSheet.js +94 -0
- package/lib/module/components/ui/ActionSheet.js.map +1 -0
- package/lib/module/components/ui/Button.js +104 -0
- package/lib/module/components/ui/Button.js.map +1 -0
- package/lib/module/components/ui/Pill.js +53 -0
- package/lib/module/components/ui/Pill.js.map +1 -0
- package/lib/module/components/ui/SearchInput.js +77 -0
- package/lib/module/components/ui/SearchInput.js.map +1 -0
- package/lib/module/components/ui/Section.js +147 -0
- package/lib/module/components/ui/Section.js.map +1 -0
- package/lib/module/components/ui/SegmentedControl.js +65 -0
- package/lib/module/components/ui/SegmentedControl.js.map +1 -0
- package/lib/module/components/ui/index.js +9 -0
- package/lib/module/components/ui/index.js.map +1 -0
- package/lib/module/core/Logger.js +230 -0
- package/lib/module/core/Logger.js.map +1 -0
- package/lib/module/core/NetworkRequest.js +155 -0
- package/lib/module/core/NetworkRequest.js.map +1 -0
- package/lib/module/core/XHRInterceptor.js +104 -0
- package/lib/module/core/XHRInterceptor.js.map +1 -0
- package/lib/module/core/har.js +72 -0
- package/lib/module/core/har.js.map +1 -0
- package/lib/module/core/loggerSingleton.js +12 -0
- package/lib/module/core/loggerSingleton.js.map +1 -0
- package/lib/module/hooks.js +42 -0
- package/lib/module/hooks.js.map +1 -0
- package/lib/module/index.js +34 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/module/theme.js +136 -0
- package/lib/module/theme.js.map +1 -0
- package/lib/module/types.js +2 -0
- package/lib/module/types.js.map +1 -0
- package/lib/module/utils/body.js +179 -0
- package/lib/module/utils/body.js.map +1 -0
- package/lib/module/utils/debounce.js +18 -0
- package/lib/module/utils/debounce.js.map +1 -0
- package/lib/module/utils/format.js +45 -0
- package/lib/module/utils/format.js.map +1 -0
- package/lib/module/utils/logger.js +6 -0
- package/lib/module/utils/logger.js.map +1 -0
- package/lib/module/utils/search.js +70 -0
- package/lib/module/utils/search.js.map +1 -0
- package/lib/module/utils/url.js +50 -0
- package/lib/module/utils/url.js.map +1 -0
- package/lib/typescript/package.json +1 -0
- package/lib/typescript/src/backHandler.d.ts +15 -0
- package/lib/typescript/src/backHandler.d.ts.map +1 -0
- package/lib/typescript/src/components/BodyViewer.d.ts +16 -0
- package/lib/typescript/src/components/BodyViewer.d.ts.map +1 -0
- package/lib/typescript/src/components/CodeList.d.ts +21 -0
- package/lib/typescript/src/components/CodeList.d.ts.map +1 -0
- package/lib/typescript/src/components/JsonTree/JsonTreeView.d.ts +21 -0
- package/lib/typescript/src/components/JsonTree/JsonTreeView.d.ts.map +1 -0
- package/lib/typescript/src/components/JsonTree/model.d.ts +53 -0
- package/lib/typescript/src/components/JsonTree/model.d.ts.map +1 -0
- package/lib/typescript/src/components/NetworkLens.d.ts +31 -0
- package/lib/typescript/src/components/NetworkLens.d.ts.map +1 -0
- package/lib/typescript/src/components/NetworkLensOverlay.d.ts +32 -0
- package/lib/typescript/src/components/NetworkLensOverlay.d.ts.map +1 -0
- package/lib/typescript/src/components/RawTextView.d.ts +14 -0
- package/lib/typescript/src/components/RawTextView.d.ts.map +1 -0
- package/lib/typescript/src/components/RequestDetails/RequestDetails.d.ts +9 -0
- package/lib/typescript/src/components/RequestDetails/RequestDetails.d.ts.map +1 -0
- package/lib/typescript/src/components/RequestList/FilterBar.d.ts +12 -0
- package/lib/typescript/src/components/RequestList/FilterBar.d.ts.map +1 -0
- package/lib/typescript/src/components/RequestList/RequestList.d.ts +18 -0
- package/lib/typescript/src/components/RequestList/RequestList.d.ts.map +1 -0
- package/lib/typescript/src/components/RequestList/RequestRow.d.ts +11 -0
- package/lib/typescript/src/components/RequestList/RequestRow.d.ts.map +1 -0
- package/lib/typescript/src/components/RequestList/filters.d.ts +17 -0
- package/lib/typescript/src/components/RequestList/filters.d.ts.map +1 -0
- package/lib/typescript/src/components/ui/ActionSheet.d.ts +15 -0
- package/lib/typescript/src/components/ui/ActionSheet.d.ts.map +1 -0
- package/lib/typescript/src/components/ui/Button.d.ts +21 -0
- package/lib/typescript/src/components/ui/Button.d.ts.map +1 -0
- package/lib/typescript/src/components/ui/Pill.d.ts +11 -0
- package/lib/typescript/src/components/ui/Pill.d.ts.map +1 -0
- package/lib/typescript/src/components/ui/SearchInput.d.ts +17 -0
- package/lib/typescript/src/components/ui/SearchInput.d.ts.map +1 -0
- package/lib/typescript/src/components/ui/Section.d.ts +16 -0
- package/lib/typescript/src/components/ui/Section.d.ts.map +1 -0
- package/lib/typescript/src/components/ui/SegmentedControl.d.ts +14 -0
- package/lib/typescript/src/components/ui/SegmentedControl.d.ts.map +1 -0
- package/lib/typescript/src/components/ui/index.d.ts +7 -0
- package/lib/typescript/src/components/ui/index.d.ts.map +1 -0
- package/lib/typescript/src/core/Logger.d.ts +48 -0
- package/lib/typescript/src/core/Logger.d.ts.map +1 -0
- package/lib/typescript/src/core/NetworkRequest.d.ts +48 -0
- package/lib/typescript/src/core/NetworkRequest.d.ts.map +1 -0
- package/lib/typescript/src/core/XHRInterceptor.d.ts +29 -0
- package/lib/typescript/src/core/XHRInterceptor.d.ts.map +1 -0
- package/lib/typescript/src/core/har.d.ts +65 -0
- package/lib/typescript/src/core/har.d.ts.map +1 -0
- package/lib/typescript/src/core/loggerSingleton.d.ts +9 -0
- package/lib/typescript/src/core/loggerSingleton.d.ts.map +1 -0
- package/lib/typescript/src/hooks.d.ts +11 -0
- package/lib/typescript/src/hooks.d.ts.map +1 -0
- package/lib/typescript/src/index.d.ts +33 -0
- package/lib/typescript/src/index.d.ts.map +1 -0
- package/lib/typescript/src/theme.d.ts +49 -0
- package/lib/typescript/src/theme.d.ts.map +1 -0
- package/lib/typescript/src/types.d.ts +80 -0
- package/lib/typescript/src/types.d.ts.map +1 -0
- package/lib/typescript/src/utils/body.d.ts +19 -0
- package/lib/typescript/src/utils/body.d.ts.map +1 -0
- package/lib/typescript/src/utils/debounce.d.ts +4 -0
- package/lib/typescript/src/utils/debounce.d.ts.map +1 -0
- package/lib/typescript/src/utils/format.d.ts +7 -0
- package/lib/typescript/src/utils/format.d.ts.map +1 -0
- package/lib/typescript/src/utils/logger.d.ts +2 -0
- package/lib/typescript/src/utils/logger.d.ts.map +1 -0
- package/lib/typescript/src/utils/search.d.ts +17 -0
- package/lib/typescript/src/utils/search.d.ts.map +1 -0
- package/lib/typescript/src/utils/url.d.ts +15 -0
- package/lib/typescript/src/utils/url.d.ts.map +1 -0
- package/package.json +186 -4
- package/src/backHandler.ts +29 -0
- package/src/components/BodyViewer.tsx +250 -0
- package/src/components/CodeList.tsx +120 -0
- package/src/components/JsonTree/JsonTreeView.tsx +304 -0
- package/src/components/JsonTree/model.ts +266 -0
- package/src/components/NetworkLens.tsx +176 -0
- package/src/components/NetworkLensOverlay.tsx +187 -0
- package/src/components/RawTextView.tsx +163 -0
- package/src/components/RequestDetails/RequestDetails.tsx +315 -0
- package/src/components/RequestList/FilterBar.tsx +168 -0
- package/src/components/RequestList/RequestList.tsx +226 -0
- package/src/components/RequestList/RequestRow.tsx +150 -0
- package/src/components/RequestList/filters.ts +98 -0
- package/src/components/ui/ActionSheet.tsx +109 -0
- package/src/components/ui/Button.tsx +124 -0
- package/src/components/ui/Pill.tsx +53 -0
- package/src/components/ui/SearchInput.tsx +97 -0
- package/src/components/ui/Section.tsx +133 -0
- package/src/components/ui/SegmentedControl.tsx +79 -0
- package/src/components/ui/index.ts +6 -0
- package/src/core/Logger.ts +293 -0
- package/src/core/NetworkRequest.ts +216 -0
- package/src/core/XHRInterceptor.ts +179 -0
- package/src/core/har.ts +71 -0
- package/src/core/loggerSingleton.ts +14 -0
- package/src/hooks.ts +51 -0
- package/src/index.tsx +56 -0
- package/src/theme.ts +174 -0
- package/src/types.ts +83 -0
- package/src/utils/body.ts +194 -0
- package/src/utils/debounce.ts +18 -0
- package/src/utils/format.ts +50 -0
- package/src/utils/logger.ts +3 -0
- package/src/utils/search.ts +72 -0
- package/src/utils/url.ts +59 -0
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { ScrollView, StyleSheet, Text, View } from 'react-native';
|
|
5
|
+
import { methodColor, statusColor, useTheme } from "../../theme.js";
|
|
6
|
+
import { TextButton } from "../ui/index.js";
|
|
7
|
+
import { STATUS_GROUPS, isFilterActive, toggleHost, toggleMethod, toggleStatusGroup } from "./filters.js";
|
|
8
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
9
|
+
const statusGroupColor = (theme, group) => {
|
|
10
|
+
switch (group) {
|
|
11
|
+
case '2xx':
|
|
12
|
+
return statusColor(theme, 200);
|
|
13
|
+
case '3xx':
|
|
14
|
+
return statusColor(theme, 300);
|
|
15
|
+
case '4xx':
|
|
16
|
+
return statusColor(theme, 400);
|
|
17
|
+
case '5xx':
|
|
18
|
+
return statusColor(theme, 500);
|
|
19
|
+
case 'failed':
|
|
20
|
+
return theme.colors.statusBad;
|
|
21
|
+
default:
|
|
22
|
+
return theme.colors.statusPending;
|
|
23
|
+
}
|
|
24
|
+
};
|
|
25
|
+
const Chip = ({
|
|
26
|
+
label,
|
|
27
|
+
selected,
|
|
28
|
+
color,
|
|
29
|
+
onPress
|
|
30
|
+
}) => /*#__PURE__*/_jsx(TextButton, {
|
|
31
|
+
label: label,
|
|
32
|
+
onPress: onPress,
|
|
33
|
+
active: selected,
|
|
34
|
+
style: [styles.chip, selected && {
|
|
35
|
+
backgroundColor: color
|
|
36
|
+
}],
|
|
37
|
+
textStyle: !selected ? {
|
|
38
|
+
color
|
|
39
|
+
} : undefined
|
|
40
|
+
});
|
|
41
|
+
const FilterBar = ({
|
|
42
|
+
filter,
|
|
43
|
+
onChange,
|
|
44
|
+
methods,
|
|
45
|
+
hosts,
|
|
46
|
+
onClear
|
|
47
|
+
}) => {
|
|
48
|
+
const theme = useTheme();
|
|
49
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
50
|
+
style: [styles.container, {
|
|
51
|
+
borderBottomColor: theme.colors.border,
|
|
52
|
+
backgroundColor: theme.colors.surface
|
|
53
|
+
}],
|
|
54
|
+
children: [/*#__PURE__*/_jsx(Row, {
|
|
55
|
+
label: "Method",
|
|
56
|
+
children: methods.map(method => /*#__PURE__*/_jsx(Chip, {
|
|
57
|
+
label: method,
|
|
58
|
+
selected: filter.methods.has(method),
|
|
59
|
+
color: methodColor(theme, method),
|
|
60
|
+
onPress: () => onChange(toggleMethod(filter, method))
|
|
61
|
+
}, method))
|
|
62
|
+
}), /*#__PURE__*/_jsx(Row, {
|
|
63
|
+
label: "Status",
|
|
64
|
+
children: STATUS_GROUPS.map(group => /*#__PURE__*/_jsx(Chip, {
|
|
65
|
+
label: group,
|
|
66
|
+
selected: filter.statusGroups.has(group),
|
|
67
|
+
color: statusGroupColor(theme, group),
|
|
68
|
+
onPress: () => onChange(toggleStatusGroup(filter, group))
|
|
69
|
+
}, group))
|
|
70
|
+
}), hosts.length > 1 && /*#__PURE__*/_jsx(Row, {
|
|
71
|
+
label: "Host",
|
|
72
|
+
children: hosts.map(host => /*#__PURE__*/_jsx(Chip, {
|
|
73
|
+
label: host || '(none)',
|
|
74
|
+
selected: filter.hosts.has(host),
|
|
75
|
+
color: theme.colors.primary,
|
|
76
|
+
onPress: () => onChange(toggleHost(filter, host))
|
|
77
|
+
}, host || '(none)'))
|
|
78
|
+
}), isFilterActive(filter) && /*#__PURE__*/_jsx(TextButton, {
|
|
79
|
+
label: "Clear filters",
|
|
80
|
+
onPress: onClear,
|
|
81
|
+
style: styles.clear
|
|
82
|
+
})]
|
|
83
|
+
});
|
|
84
|
+
};
|
|
85
|
+
const Row = ({
|
|
86
|
+
label,
|
|
87
|
+
children
|
|
88
|
+
}) => {
|
|
89
|
+
const theme = useTheme();
|
|
90
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
91
|
+
style: styles.row,
|
|
92
|
+
children: [/*#__PURE__*/_jsx(Text, {
|
|
93
|
+
style: [styles.rowLabel, {
|
|
94
|
+
color: theme.colors.textMuted
|
|
95
|
+
}],
|
|
96
|
+
children: label
|
|
97
|
+
}), /*#__PURE__*/_jsx(ScrollView, {
|
|
98
|
+
horizontal: true,
|
|
99
|
+
showsHorizontalScrollIndicator: false,
|
|
100
|
+
contentContainerStyle: styles.chips,
|
|
101
|
+
children: children
|
|
102
|
+
})]
|
|
103
|
+
});
|
|
104
|
+
};
|
|
105
|
+
const styles = StyleSheet.create({
|
|
106
|
+
container: {
|
|
107
|
+
paddingVertical: 6,
|
|
108
|
+
borderBottomWidth: StyleSheet.hairlineWidth
|
|
109
|
+
},
|
|
110
|
+
row: {
|
|
111
|
+
flexDirection: 'row',
|
|
112
|
+
alignItems: 'center',
|
|
113
|
+
paddingVertical: 3
|
|
114
|
+
},
|
|
115
|
+
rowLabel: {
|
|
116
|
+
width: 64,
|
|
117
|
+
fontSize: 11,
|
|
118
|
+
fontWeight: '700',
|
|
119
|
+
paddingLeft: 12,
|
|
120
|
+
letterSpacing: 0.5
|
|
121
|
+
},
|
|
122
|
+
chips: {
|
|
123
|
+
paddingRight: 12
|
|
124
|
+
},
|
|
125
|
+
chip: {
|
|
126
|
+
paddingVertical: 4,
|
|
127
|
+
paddingHorizontal: 10,
|
|
128
|
+
marginRight: 6
|
|
129
|
+
},
|
|
130
|
+
clear: {
|
|
131
|
+
alignSelf: 'flex-end',
|
|
132
|
+
marginRight: 12,
|
|
133
|
+
marginTop: 4,
|
|
134
|
+
paddingVertical: 4
|
|
135
|
+
}
|
|
136
|
+
});
|
|
137
|
+
export default FilterBar;
|
|
138
|
+
//# sourceMappingURL=FilterBar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","ScrollView","StyleSheet","Text","View","methodColor","statusColor","useTheme","TextButton","STATUS_GROUPS","isFilterActive","toggleHost","toggleMethod","toggleStatusGroup","jsx","_jsx","jsxs","_jsxs","statusGroupColor","theme","group","colors","statusBad","statusPending","Chip","label","selected","color","onPress","active","style","styles","chip","backgroundColor","textStyle","undefined","FilterBar","filter","onChange","methods","hosts","onClear","container","borderBottomColor","border","surface","children","Row","map","method","has","statusGroups","length","host","primary","clear","row","rowLabel","textMuted","horizontal","showsHorizontalScrollIndicator","contentContainerStyle","chips","create","paddingVertical","borderBottomWidth","hairlineWidth","flexDirection","alignItems","width","fontSize","fontWeight","paddingLeft","letterSpacing","paddingRight","paddingHorizontal","marginRight","alignSelf","marginTop"],"sourceRoot":"../../../../src","sources":["components/RequestList/FilterBar.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { useCallback, useMemo, useState } from 'react';
|
|
4
|
+
import { FlatList, Share, StyleSheet, Text, View } from 'react-native';
|
|
5
|
+
import { useTheme } from "../../theme.js";
|
|
6
|
+
import { ActionSheet, EmptyState, IconButton, SearchInput } from "../ui/index.js";
|
|
7
|
+
import FilterBar from "./FilterBar.js";
|
|
8
|
+
import RequestRow from "./RequestRow.js";
|
|
9
|
+
import { applyFilter, collectHosts, collectMethods, emptyFilter, isFilterActive } from "./filters.js";
|
|
10
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
11
|
+
const keyExtractor = row => row.id;
|
|
12
|
+
const summaryText = (total, shown, failed) => {
|
|
13
|
+
const parts = [`${total} request${total === 1 ? '' : 's'}`];
|
|
14
|
+
if (shown !== total) parts.push(`${shown} shown`);
|
|
15
|
+
if (failed) parts.push(`${failed} with errors`);
|
|
16
|
+
return parts.join(' · ');
|
|
17
|
+
};
|
|
18
|
+
const RequestList = ({
|
|
19
|
+
requests,
|
|
20
|
+
sort,
|
|
21
|
+
compact,
|
|
22
|
+
maxRows,
|
|
23
|
+
paused,
|
|
24
|
+
loggingEnabled,
|
|
25
|
+
onPressItem,
|
|
26
|
+
menuActions,
|
|
27
|
+
header
|
|
28
|
+
}) => {
|
|
29
|
+
const theme = useTheme();
|
|
30
|
+
const [search, setSearch] = useState('');
|
|
31
|
+
const [filter, setFilter] = useState(emptyFilter);
|
|
32
|
+
const [showFilters, setShowFilters] = useState(false);
|
|
33
|
+
const [menuVisible, setMenuVisible] = useState(false);
|
|
34
|
+
const rows = useMemo(() => {
|
|
35
|
+
const mapped = requests.map(request => request.toRow());
|
|
36
|
+
return sort === 'asc' ? mapped.reverse() : mapped;
|
|
37
|
+
}, [requests, sort]);
|
|
38
|
+
const filtered = useMemo(() => {
|
|
39
|
+
const result = applyFilter(rows, search, filter);
|
|
40
|
+
return maxRows ? result.slice(0, maxRows) : result;
|
|
41
|
+
}, [rows, search, filter, maxRows]);
|
|
42
|
+
const methods = useMemo(() => collectMethods(rows), [rows]);
|
|
43
|
+
const hosts = useMemo(() => collectHosts(rows), [rows]);
|
|
44
|
+
const failedCount = useMemo(() => rows.filter(r => r.statusGroup === 'failed' || r.statusGroup === '4xx' || r.statusGroup === '5xx').length, [rows]);
|
|
45
|
+
const onLongPress = useCallback(id => {
|
|
46
|
+
const request = requests.find(r => r.id === id);
|
|
47
|
+
if (request) Share.share({
|
|
48
|
+
message: request.curl
|
|
49
|
+
}).catch(() => undefined);
|
|
50
|
+
}, [requests]);
|
|
51
|
+
const renderItem = useCallback(({
|
|
52
|
+
item
|
|
53
|
+
}) => /*#__PURE__*/_jsx(RequestRow, {
|
|
54
|
+
row: item,
|
|
55
|
+
compact: compact,
|
|
56
|
+
onPress: onPressItem,
|
|
57
|
+
onLongPress: onLongPress
|
|
58
|
+
}), [compact, onPressItem, onLongPress]);
|
|
59
|
+
const emptyState = !loggingEnabled ? /*#__PURE__*/_jsx(EmptyState, {
|
|
60
|
+
title: "Network logging is disabled",
|
|
61
|
+
subtitle: "Call startNetworkLogging() with enabled: true before rendering the inspector."
|
|
62
|
+
}) : rows.length === 0 ? /*#__PURE__*/_jsx(EmptyState, {
|
|
63
|
+
title: "No requests yet",
|
|
64
|
+
subtitle: "Requests made with fetch, axios or XMLHttpRequest will appear here."
|
|
65
|
+
}) : /*#__PURE__*/_jsx(EmptyState, {
|
|
66
|
+
title: "No matching requests",
|
|
67
|
+
subtitle: "Try a different search term or clear the filters."
|
|
68
|
+
});
|
|
69
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
70
|
+
style: [styles.container, {
|
|
71
|
+
backgroundColor: theme.colors.background
|
|
72
|
+
}],
|
|
73
|
+
children: [/*#__PURE__*/_jsxs(View, {
|
|
74
|
+
style: [styles.toolbar, {
|
|
75
|
+
backgroundColor: theme.colors.surface,
|
|
76
|
+
borderBottomColor: theme.colors.border
|
|
77
|
+
}],
|
|
78
|
+
children: [header, /*#__PURE__*/_jsxs(View, {
|
|
79
|
+
style: styles.searchRow,
|
|
80
|
+
children: [/*#__PURE__*/_jsx(SearchInput, {
|
|
81
|
+
value: search,
|
|
82
|
+
onChangeText: setSearch,
|
|
83
|
+
placeholder: "Filter by URL, method or status",
|
|
84
|
+
style: styles.search
|
|
85
|
+
}), /*#__PURE__*/_jsx(IconButton, {
|
|
86
|
+
glyph: "\u2261",
|
|
87
|
+
accessibilityLabel: "Toggle filters",
|
|
88
|
+
active: showFilters || isFilterActive(filter),
|
|
89
|
+
onPress: () => setShowFilters(v => !v)
|
|
90
|
+
}), /*#__PURE__*/_jsx(IconButton, {
|
|
91
|
+
glyph: "\u22EE",
|
|
92
|
+
accessibilityLabel: "More options",
|
|
93
|
+
onPress: () => setMenuVisible(true)
|
|
94
|
+
})]
|
|
95
|
+
})]
|
|
96
|
+
}), showFilters && /*#__PURE__*/_jsx(FilterBar, {
|
|
97
|
+
filter: filter,
|
|
98
|
+
onChange: setFilter,
|
|
99
|
+
methods: methods,
|
|
100
|
+
hosts: hosts,
|
|
101
|
+
onClear: () => setFilter(emptyFilter())
|
|
102
|
+
}), /*#__PURE__*/_jsx(View, {
|
|
103
|
+
style: [styles.statusBar, {
|
|
104
|
+
backgroundColor: paused ? theme.colors.statusWarning : theme.colors.surfaceAlt
|
|
105
|
+
}],
|
|
106
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
107
|
+
style: [styles.statusText, paused ? styles.statusTextPaused : {
|
|
108
|
+
color: theme.colors.textMuted
|
|
109
|
+
}],
|
|
110
|
+
numberOfLines: 1,
|
|
111
|
+
children: paused ? 'Paused — new requests are captured but hidden until you resume' : summaryText(rows.length, filtered.length, failedCount)
|
|
112
|
+
})
|
|
113
|
+
}), /*#__PURE__*/_jsx(FlatList, {
|
|
114
|
+
data: filtered,
|
|
115
|
+
renderItem: renderItem,
|
|
116
|
+
keyExtractor: keyExtractor,
|
|
117
|
+
keyboardShouldPersistTaps: "handled",
|
|
118
|
+
keyboardDismissMode: "on-drag",
|
|
119
|
+
initialNumToRender: 15,
|
|
120
|
+
windowSize: 7,
|
|
121
|
+
ListEmptyComponent: emptyState,
|
|
122
|
+
contentContainerStyle: filtered.length === 0 && styles.emptyContent
|
|
123
|
+
}), /*#__PURE__*/_jsx(ActionSheet, {
|
|
124
|
+
visible: menuVisible,
|
|
125
|
+
onClose: () => setMenuVisible(false),
|
|
126
|
+
actions: menuActions
|
|
127
|
+
})]
|
|
128
|
+
});
|
|
129
|
+
};
|
|
130
|
+
const styles = StyleSheet.create({
|
|
131
|
+
container: {
|
|
132
|
+
flex: 1
|
|
133
|
+
},
|
|
134
|
+
toolbar: {
|
|
135
|
+
paddingHorizontal: 8,
|
|
136
|
+
paddingVertical: 8,
|
|
137
|
+
borderBottomWidth: StyleSheet.hairlineWidth
|
|
138
|
+
},
|
|
139
|
+
searchRow: {
|
|
140
|
+
flexDirection: 'row',
|
|
141
|
+
alignItems: 'center'
|
|
142
|
+
},
|
|
143
|
+
search: {
|
|
144
|
+
flex: 1,
|
|
145
|
+
marginRight: 4
|
|
146
|
+
},
|
|
147
|
+
statusBar: {
|
|
148
|
+
paddingHorizontal: 12,
|
|
149
|
+
paddingVertical: 4
|
|
150
|
+
},
|
|
151
|
+
statusText: {
|
|
152
|
+
fontSize: 11,
|
|
153
|
+
fontWeight: '600'
|
|
154
|
+
},
|
|
155
|
+
statusTextPaused: {
|
|
156
|
+
color: '#ffffff'
|
|
157
|
+
},
|
|
158
|
+
emptyContent: {
|
|
159
|
+
flexGrow: 1
|
|
160
|
+
}
|
|
161
|
+
});
|
|
162
|
+
export default RequestList;
|
|
163
|
+
//# sourceMappingURL=RequestList.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useCallback","useMemo","useState","FlatList","Share","StyleSheet","Text","View","useTheme","ActionSheet","EmptyState","IconButton","SearchInput","FilterBar","RequestRow","applyFilter","collectHosts","collectMethods","emptyFilter","isFilterActive","jsx","_jsx","jsxs","_jsxs","keyExtractor","row","id","summaryText","total","shown","failed","parts","push","join","RequestList","requests","sort","compact","maxRows","paused","loggingEnabled","onPressItem","menuActions","header","theme","search","setSearch","filter","setFilter","showFilters","setShowFilters","menuVisible","setMenuVisible","rows","mapped","map","request","toRow","reverse","filtered","result","slice","methods","hosts","failedCount","r","statusGroup","length","onLongPress","find","share","message","curl","catch","undefined","renderItem","item","onPress","emptyState","title","subtitle","style","styles","container","backgroundColor","colors","background","children","toolbar","surface","borderBottomColor","border","searchRow","value","onChangeText","placeholder","glyph","accessibilityLabel","active","v","onChange","onClear","statusBar","statusWarning","surfaceAlt","statusText","statusTextPaused","color","textMuted","numberOfLines","data","keyboardShouldPersistTaps","keyboardDismissMode","initialNumToRender","windowSize","ListEmptyComponent","contentContainerStyle","emptyContent","visible","onClose","actions","create","flex","paddingHorizontal","paddingVertical","borderBottomWidth","hairlineWidth","flexDirection","alignItems","marginRight","fontSize","fontWeight","flexGrow"],"sourceRoot":"../../../../src","sources":["components/RequestList/RequestList.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import React from 'react';
|
|
4
|
+
import { ActivityIndicator, Pressable, StyleSheet, Text, View } from 'react-native';
|
|
5
|
+
import { methodColor, statusColor, useTheme } from "../../theme.js";
|
|
6
|
+
import { formatBytes, formatDuration, formatTime } from "../../utils/format.js";
|
|
7
|
+
import { Pill } from "../ui/index.js";
|
|
8
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
9
|
+
const RequestRow = ({
|
|
10
|
+
row,
|
|
11
|
+
compact,
|
|
12
|
+
onPress,
|
|
13
|
+
onLongPress
|
|
14
|
+
}) => {
|
|
15
|
+
const theme = useTheme();
|
|
16
|
+
const failed = row.state === 'failed';
|
|
17
|
+
const pending = row.state === 'pending';
|
|
18
|
+
const color = statusColor(theme, row.status, failed);
|
|
19
|
+
const statusLabel = failed ? (row.failureReason ?? 'ERR').toUpperCase() : row.status > 0 ? String(row.status) : '…';
|
|
20
|
+
const pathAndQuery = row.url.slice(row.url.indexOf(row.host) + row.host.length) || row.url;
|
|
21
|
+
return /*#__PURE__*/_jsxs(Pressable, {
|
|
22
|
+
accessibilityRole: "button",
|
|
23
|
+
accessibilityLabel: `${row.method} ${row.url}, status ${statusLabel}`,
|
|
24
|
+
onPress: () => onPress(row.id),
|
|
25
|
+
onLongPress: onLongPress ? () => onLongPress(row.id) : undefined,
|
|
26
|
+
delayLongPress: 350,
|
|
27
|
+
style: ({
|
|
28
|
+
pressed
|
|
29
|
+
}) => [styles.row, compact && styles.rowCompact, {
|
|
30
|
+
backgroundColor: pressed ? theme.colors.surfaceAlt : theme.colors.surface,
|
|
31
|
+
borderBottomColor: theme.colors.border
|
|
32
|
+
}],
|
|
33
|
+
children: [/*#__PURE__*/_jsx(View, {
|
|
34
|
+
style: [styles.accent, {
|
|
35
|
+
backgroundColor: color
|
|
36
|
+
}]
|
|
37
|
+
}), /*#__PURE__*/_jsxs(View, {
|
|
38
|
+
style: styles.left,
|
|
39
|
+
children: [/*#__PURE__*/_jsx(Pill, {
|
|
40
|
+
label: row.method,
|
|
41
|
+
color: methodColor(theme, row.method),
|
|
42
|
+
small: true,
|
|
43
|
+
style: styles.methodPill
|
|
44
|
+
}), pending ? /*#__PURE__*/_jsx(ActivityIndicator, {
|
|
45
|
+
size: "small",
|
|
46
|
+
color: theme.colors.statusPending,
|
|
47
|
+
style: styles.spinner
|
|
48
|
+
}) : /*#__PURE__*/_jsx(Text, {
|
|
49
|
+
style: [styles.status, {
|
|
50
|
+
color
|
|
51
|
+
}],
|
|
52
|
+
children: statusLabel
|
|
53
|
+
})]
|
|
54
|
+
}), /*#__PURE__*/_jsxs(View, {
|
|
55
|
+
style: styles.center,
|
|
56
|
+
children: [/*#__PURE__*/_jsx(Text, {
|
|
57
|
+
numberOfLines: compact ? 1 : 2,
|
|
58
|
+
style: [styles.path, {
|
|
59
|
+
color: failed || row.status >= 400 ? color : theme.colors.text
|
|
60
|
+
}],
|
|
61
|
+
children: pathAndQuery
|
|
62
|
+
}), !compact && /*#__PURE__*/_jsxs(Text, {
|
|
63
|
+
numberOfLines: 1,
|
|
64
|
+
style: [styles.host, {
|
|
65
|
+
color: theme.colors.textMuted
|
|
66
|
+
}],
|
|
67
|
+
children: [row.host || '—', row.gqlOperation ? /*#__PURE__*/_jsxs(Text, {
|
|
68
|
+
style: {
|
|
69
|
+
color: theme.colors.primary
|
|
70
|
+
},
|
|
71
|
+
children: [' ', "gql: ", row.gqlOperation]
|
|
72
|
+
}) : null]
|
|
73
|
+
})]
|
|
74
|
+
}), /*#__PURE__*/_jsxs(View, {
|
|
75
|
+
style: styles.right,
|
|
76
|
+
children: [/*#__PURE__*/_jsx(Text, {
|
|
77
|
+
style: [styles.meta, {
|
|
78
|
+
color: theme.colors.textMuted
|
|
79
|
+
}],
|
|
80
|
+
children: formatTime(row.startTime)
|
|
81
|
+
}), /*#__PURE__*/_jsx(Text, {
|
|
82
|
+
style: [styles.meta, {
|
|
83
|
+
color: theme.colors.textMuted
|
|
84
|
+
}],
|
|
85
|
+
children: row.duration >= 0 ? formatDuration(row.duration) : pending ? 'pending' : ''
|
|
86
|
+
}), !compact && row.responseSize > 0 && /*#__PURE__*/_jsx(Text, {
|
|
87
|
+
style: [styles.meta, {
|
|
88
|
+
color: theme.colors.textMuted
|
|
89
|
+
}],
|
|
90
|
+
children: formatBytes(row.responseSize)
|
|
91
|
+
})]
|
|
92
|
+
})]
|
|
93
|
+
});
|
|
94
|
+
};
|
|
95
|
+
const areEqual = (prev, next) => prev.row.updatedAt === next.row.updatedAt && prev.row.id === next.row.id && prev.compact === next.compact && prev.onPress === next.onPress && prev.onLongPress === next.onLongPress;
|
|
96
|
+
export default /*#__PURE__*/React.memo(RequestRow, areEqual);
|
|
97
|
+
const styles = StyleSheet.create({
|
|
98
|
+
row: {
|
|
99
|
+
flexDirection: 'row',
|
|
100
|
+
alignItems: 'center',
|
|
101
|
+
paddingVertical: 10,
|
|
102
|
+
paddingRight: 10,
|
|
103
|
+
borderBottomWidth: StyleSheet.hairlineWidth,
|
|
104
|
+
minHeight: 60
|
|
105
|
+
},
|
|
106
|
+
rowCompact: {
|
|
107
|
+
paddingVertical: 6,
|
|
108
|
+
minHeight: 44
|
|
109
|
+
},
|
|
110
|
+
accent: {
|
|
111
|
+
width: 3,
|
|
112
|
+
alignSelf: 'stretch',
|
|
113
|
+
borderRadius: 2,
|
|
114
|
+
marginLeft: 6
|
|
115
|
+
},
|
|
116
|
+
left: {
|
|
117
|
+
width: 64,
|
|
118
|
+
alignItems: 'center',
|
|
119
|
+
marginLeft: 6
|
|
120
|
+
},
|
|
121
|
+
methodPill: {
|
|
122
|
+
alignSelf: 'center',
|
|
123
|
+
minWidth: 52,
|
|
124
|
+
alignItems: 'center'
|
|
125
|
+
},
|
|
126
|
+
status: {
|
|
127
|
+
fontSize: 12,
|
|
128
|
+
fontWeight: '700',
|
|
129
|
+
marginTop: 4,
|
|
130
|
+
fontVariant: ['tabular-nums']
|
|
131
|
+
},
|
|
132
|
+
spinner: {
|
|
133
|
+
marginTop: 2,
|
|
134
|
+
transform: [{
|
|
135
|
+
scale: 0.7
|
|
136
|
+
}]
|
|
137
|
+
},
|
|
138
|
+
center: {
|
|
139
|
+
flex: 1,
|
|
140
|
+
paddingHorizontal: 8
|
|
141
|
+
},
|
|
142
|
+
path: {
|
|
143
|
+
fontSize: 14,
|
|
144
|
+
fontWeight: '500',
|
|
145
|
+
lineHeight: 18
|
|
146
|
+
},
|
|
147
|
+
host: {
|
|
148
|
+
fontSize: 12,
|
|
149
|
+
marginTop: 2
|
|
150
|
+
},
|
|
151
|
+
right: {
|
|
152
|
+
alignItems: 'flex-end',
|
|
153
|
+
minWidth: 56
|
|
154
|
+
},
|
|
155
|
+
meta: {
|
|
156
|
+
fontSize: 11,
|
|
157
|
+
lineHeight: 15,
|
|
158
|
+
fontVariant: ['tabular-nums']
|
|
159
|
+
}
|
|
160
|
+
});
|
|
161
|
+
//# sourceMappingURL=RequestRow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["React","ActivityIndicator","Pressable","StyleSheet","Text","View","methodColor","statusColor","useTheme","formatBytes","formatDuration","formatTime","Pill","jsx","_jsx","jsxs","_jsxs","RequestRow","row","compact","onPress","onLongPress","theme","failed","state","pending","color","status","statusLabel","failureReason","toUpperCase","String","pathAndQuery","url","slice","indexOf","host","length","accessibilityRole","accessibilityLabel","method","id","undefined","delayLongPress","style","pressed","styles","rowCompact","backgroundColor","colors","surfaceAlt","surface","borderBottomColor","border","children","accent","left","label","small","methodPill","size","statusPending","spinner","center","numberOfLines","path","text","textMuted","gqlOperation","primary","right","meta","startTime","duration","responseSize","areEqual","prev","next","updatedAt","memo","create","flexDirection","alignItems","paddingVertical","paddingRight","borderBottomWidth","hairlineWidth","minHeight","width","alignSelf","borderRadius","marginLeft","minWidth","fontSize","fontWeight","marginTop","fontVariant","transform","scale","flex","paddingHorizontal","lineHeight"],"sourceRoot":"../../../../src","sources":["components/RequestList/RequestRow.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
export const emptyFilter = () => ({
|
|
4
|
+
methods: new Set(),
|
|
5
|
+
statusGroups: new Set(),
|
|
6
|
+
hosts: new Set()
|
|
7
|
+
});
|
|
8
|
+
export const isFilterActive = filter => filter.methods.size > 0 || filter.statusGroups.size > 0 || filter.hosts.size > 0;
|
|
9
|
+
export const STATUS_GROUPS = ['2xx', '3xx', '4xx', '5xx', 'pending', 'failed'];
|
|
10
|
+
export const applyFilter = (rows, search, filter) => {
|
|
11
|
+
const needle = search.trim().toLowerCase();
|
|
12
|
+
return rows.filter(row => {
|
|
13
|
+
if (needle) {
|
|
14
|
+
const haystack = `${row.method} ${row.url} ${row.gqlOperation ?? ''} ${row.status}`.toLowerCase();
|
|
15
|
+
if (!haystack.includes(needle)) return false;
|
|
16
|
+
}
|
|
17
|
+
if (filter.methods.size && !filter.methods.has(row.method)) return false;
|
|
18
|
+
if (filter.statusGroups.size && !filter.statusGroups.has(row.statusGroup)) return false;
|
|
19
|
+
if (filter.hosts.size && !filter.hosts.has(row.host)) return false;
|
|
20
|
+
return true;
|
|
21
|
+
});
|
|
22
|
+
};
|
|
23
|
+
const toggleIn = (set, value) => {
|
|
24
|
+
const next = new Set(set);
|
|
25
|
+
if (next.has(value)) next.delete(value);else next.add(value);
|
|
26
|
+
return next;
|
|
27
|
+
};
|
|
28
|
+
export const toggleMethod = (filter, method) => ({
|
|
29
|
+
...filter,
|
|
30
|
+
methods: toggleIn(filter.methods, method)
|
|
31
|
+
});
|
|
32
|
+
export const toggleStatusGroup = (filter, group) => ({
|
|
33
|
+
...filter,
|
|
34
|
+
statusGroups: toggleIn(filter.statusGroups, group)
|
|
35
|
+
});
|
|
36
|
+
export const toggleHost = (filter, host) => ({
|
|
37
|
+
...filter,
|
|
38
|
+
hosts: toggleIn(filter.hosts, host)
|
|
39
|
+
});
|
|
40
|
+
|
|
41
|
+
/** Hosts seen in the captured requests, most frequent first. */
|
|
42
|
+
export const collectHosts = rows => {
|
|
43
|
+
const counts = new Map();
|
|
44
|
+
for (const row of rows) counts.set(row.host, (counts.get(row.host) ?? 0) + 1);
|
|
45
|
+
return [...counts.entries()].sort((a, b) => b[1] - a[1]).map(([host]) => host);
|
|
46
|
+
};
|
|
47
|
+
export const collectMethods = rows => {
|
|
48
|
+
const seen = new Set();
|
|
49
|
+
for (const row of rows) seen.add(row.method);
|
|
50
|
+
const order = ['GET', 'POST', 'PUT', 'PATCH', 'DELETE'];
|
|
51
|
+
return [...seen].sort((a, b) => {
|
|
52
|
+
const ia = order.indexOf(a);
|
|
53
|
+
const ib = order.indexOf(b);
|
|
54
|
+
return (ia === -1 ? 99 : ia) - (ib === -1 ? 99 : ib) || a.localeCompare(b);
|
|
55
|
+
});
|
|
56
|
+
};
|
|
57
|
+
//# sourceMappingURL=filters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["emptyFilter","methods","Set","statusGroups","hosts","isFilterActive","filter","size","STATUS_GROUPS","applyFilter","rows","search","needle","trim","toLowerCase","row","haystack","method","url","gqlOperation","status","includes","has","statusGroup","host","toggleIn","set","value","next","delete","add","toggleMethod","toggleStatusGroup","group","toggleHost","collectHosts","counts","Map","get","entries","sort","a","b","map","collectMethods","seen","order","ia","indexOf","ib","localeCompare"],"sourceRoot":"../../../../src","sources":["components/RequestList/filters.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { Modal, Pressable, ScrollView, StyleSheet, Text, View } from 'react-native';
|
|
4
|
+
import { useTheme } from "../../theme.js";
|
|
5
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
6
|
+
/** Cross-platform bottom sheet built on Modal, so no native dependency is needed. */
|
|
7
|
+
export const ActionSheet = ({
|
|
8
|
+
visible,
|
|
9
|
+
onClose,
|
|
10
|
+
actions,
|
|
11
|
+
title
|
|
12
|
+
}) => {
|
|
13
|
+
const theme = useTheme();
|
|
14
|
+
return /*#__PURE__*/_jsxs(Modal, {
|
|
15
|
+
visible: visible,
|
|
16
|
+
transparent: true,
|
|
17
|
+
animationType: "fade",
|
|
18
|
+
onRequestClose: onClose,
|
|
19
|
+
children: [/*#__PURE__*/_jsx(Pressable, {
|
|
20
|
+
style: styles.backdrop,
|
|
21
|
+
onPress: onClose,
|
|
22
|
+
accessibilityLabel: "Close menu"
|
|
23
|
+
}), /*#__PURE__*/_jsxs(View, {
|
|
24
|
+
style: [styles.sheet, {
|
|
25
|
+
backgroundColor: theme.colors.surface
|
|
26
|
+
}],
|
|
27
|
+
children: [title ? /*#__PURE__*/_jsx(Text, {
|
|
28
|
+
numberOfLines: 1,
|
|
29
|
+
style: [styles.title, {
|
|
30
|
+
color: theme.colors.textMuted
|
|
31
|
+
}],
|
|
32
|
+
children: title
|
|
33
|
+
}) : null, /*#__PURE__*/_jsx(ScrollView, {
|
|
34
|
+
bounces: false,
|
|
35
|
+
children: actions.map(action => /*#__PURE__*/_jsx(Pressable, {
|
|
36
|
+
accessibilityRole: "button",
|
|
37
|
+
onPress: () => {
|
|
38
|
+
onClose();
|
|
39
|
+
action.onPress();
|
|
40
|
+
},
|
|
41
|
+
style: ({
|
|
42
|
+
pressed
|
|
43
|
+
}) => [styles.item, {
|
|
44
|
+
borderTopColor: theme.colors.border
|
|
45
|
+
}, pressed && styles.pressed],
|
|
46
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
47
|
+
style: [styles.label, {
|
|
48
|
+
color: action.destructive ? theme.colors.statusBad : theme.colors.text
|
|
49
|
+
}],
|
|
50
|
+
children: action.label
|
|
51
|
+
})
|
|
52
|
+
}, action.label))
|
|
53
|
+
})]
|
|
54
|
+
})]
|
|
55
|
+
});
|
|
56
|
+
};
|
|
57
|
+
const styles = StyleSheet.create({
|
|
58
|
+
backdrop: {
|
|
59
|
+
position: 'absolute',
|
|
60
|
+
top: 0,
|
|
61
|
+
left: 0,
|
|
62
|
+
right: 0,
|
|
63
|
+
bottom: 0,
|
|
64
|
+
backgroundColor: 'rgba(0,0,0,0.35)'
|
|
65
|
+
},
|
|
66
|
+
sheet: {
|
|
67
|
+
position: 'absolute',
|
|
68
|
+
left: 12,
|
|
69
|
+
right: 12,
|
|
70
|
+
bottom: 24,
|
|
71
|
+
borderRadius: 14,
|
|
72
|
+
overflow: 'hidden',
|
|
73
|
+
maxHeight: '70%'
|
|
74
|
+
},
|
|
75
|
+
title: {
|
|
76
|
+
fontSize: 12,
|
|
77
|
+
fontWeight: '700',
|
|
78
|
+
padding: 12,
|
|
79
|
+
letterSpacing: 0.6
|
|
80
|
+
},
|
|
81
|
+
item: {
|
|
82
|
+
paddingVertical: 14,
|
|
83
|
+
paddingHorizontal: 16,
|
|
84
|
+
borderTopWidth: StyleSheet.hairlineWidth
|
|
85
|
+
},
|
|
86
|
+
label: {
|
|
87
|
+
fontSize: 16,
|
|
88
|
+
fontWeight: '500'
|
|
89
|
+
},
|
|
90
|
+
pressed: {
|
|
91
|
+
opacity: 0.6
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
//# sourceMappingURL=ActionSheet.js.map
|