rn-backstage 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +80 -0
- package/lib/commonjs/Backstage.js +130 -0
- package/lib/commonjs/Backstage.js.map +1 -0
- package/lib/commonjs/components/BackstagePanel.js +192 -0
- package/lib/commonjs/components/BackstagePanel.js.map +1 -0
- package/lib/commonjs/components/FloatingPill.js +147 -0
- package/lib/commonjs/components/FloatingPill.js.map +1 -0
- package/lib/commonjs/components/InfoTab.js +260 -0
- package/lib/commonjs/components/InfoTab.js.map +1 -0
- package/lib/commonjs/components/JsonTreeView.js +245 -0
- package/lib/commonjs/components/JsonTreeView.js.map +1 -0
- package/lib/commonjs/components/LogItem.js +191 -0
- package/lib/commonjs/components/LogItem.js.map +1 -0
- package/lib/commonjs/components/LogsTab.js +235 -0
- package/lib/commonjs/components/LogsTab.js.map +1 -0
- package/lib/commonjs/components/TabBar.js +132 -0
- package/lib/commonjs/components/TabBar.js.map +1 -0
- package/lib/commonjs/constants.js +89 -0
- package/lib/commonjs/constants.js.map +1 -0
- package/lib/commonjs/index.js +20 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/log-interceptor.js +114 -0
- package/lib/commonjs/log-interceptor.js.map +1 -0
- package/lib/commonjs/package.json +1 -0
- package/lib/commonjs/types.js +21 -0
- package/lib/commonjs/types.js.map +1 -0
- package/lib/commonjs/utils/formatTimestamp.js +26 -0
- package/lib/commonjs/utils/formatTimestamp.js.map +1 -0
- package/lib/commonjs/utils/stringify.js +78 -0
- package/lib/commonjs/utils/stringify.js.map +1 -0
- package/lib/module/Backstage.js +125 -0
- package/lib/module/Backstage.js.map +1 -0
- package/lib/module/components/BackstagePanel.js +187 -0
- package/lib/module/components/BackstagePanel.js.map +1 -0
- package/lib/module/components/FloatingPill.js +142 -0
- package/lib/module/components/FloatingPill.js.map +1 -0
- package/lib/module/components/InfoTab.js +255 -0
- package/lib/module/components/InfoTab.js.map +1 -0
- package/lib/module/components/JsonTreeView.js +241 -0
- package/lib/module/components/JsonTreeView.js.map +1 -0
- package/lib/module/components/LogItem.js +186 -0
- package/lib/module/components/LogItem.js.map +1 -0
- package/lib/module/components/LogsTab.js +230 -0
- package/lib/module/components/LogsTab.js.map +1 -0
- package/lib/module/components/TabBar.js +127 -0
- package/lib/module/components/TabBar.js.map +1 -0
- package/lib/module/constants.js +85 -0
- package/lib/module/constants.js.map +1 -0
- package/lib/module/index.js +5 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/log-interceptor.js +108 -0
- package/lib/module/log-interceptor.js.map +1 -0
- package/lib/module/package.json +1 -0
- package/lib/module/types.js +25 -0
- package/lib/module/types.js.map +1 -0
- package/lib/module/utils/formatTimestamp.js +22 -0
- package/lib/module/utils/formatTimestamp.js.map +1 -0
- package/lib/module/utils/stringify.js +73 -0
- package/lib/module/utils/stringify.js.map +1 -0
- package/lib/typescript/Backstage.d.ts +4 -0
- package/lib/typescript/Backstage.d.ts.map +1 -0
- package/lib/typescript/components/BackstagePanel.d.ts +21 -0
- package/lib/typescript/components/BackstagePanel.d.ts.map +1 -0
- package/lib/typescript/components/FloatingPill.d.ts +13 -0
- package/lib/typescript/components/FloatingPill.d.ts.map +1 -0
- package/lib/typescript/components/InfoTab.d.ts +16 -0
- package/lib/typescript/components/InfoTab.d.ts.map +1 -0
- package/lib/typescript/components/JsonTreeView.d.ts +10 -0
- package/lib/typescript/components/JsonTreeView.d.ts.map +1 -0
- package/lib/typescript/components/LogItem.d.ts +10 -0
- package/lib/typescript/components/LogItem.d.ts.map +1 -0
- package/lib/typescript/components/LogsTab.d.ts +11 -0
- package/lib/typescript/components/LogsTab.d.ts.map +1 -0
- package/lib/typescript/components/TabBar.d.ts +14 -0
- package/lib/typescript/components/TabBar.d.ts.map +1 -0
- package/lib/typescript/constants.d.ts +43 -0
- package/lib/typescript/constants.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +4 -0
- package/lib/typescript/index.d.ts.map +1 -0
- package/lib/typescript/log-interceptor.d.ts +16 -0
- package/lib/typescript/log-interceptor.d.ts.map +1 -0
- package/lib/typescript/types.d.ts +110 -0
- package/lib/typescript/types.d.ts.map +1 -0
- package/lib/typescript/utils/formatTimestamp.d.ts +7 -0
- package/lib/typescript/utils/formatTimestamp.d.ts.map +1 -0
- package/lib/typescript/utils/stringify.d.ts +9 -0
- package/lib/typescript/utils/stringify.d.ts.map +1 -0
- package/package.json +91 -0
- package/src/Backstage.tsx +145 -0
- package/src/components/BackstagePanel.tsx +208 -0
- package/src/components/FloatingPill.tsx +150 -0
- package/src/components/InfoTab.tsx +264 -0
- package/src/components/JsonTreeView.tsx +259 -0
- package/src/components/LogItem.tsx +189 -0
- package/src/components/LogsTab.tsx +239 -0
- package/src/components/TabBar.tsx +150 -0
- package/src/constants.ts +82 -0
- package/src/index.ts +14 -0
- package/src/log-interceptor.ts +137 -0
- package/src/types.ts +147 -0
- package/src/utils/formatTimestamp.ts +22 -0
- package/src/utils/stringify.ts +90 -0
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.LogItem = void 0;
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _reactNative = require("react-native");
|
|
9
|
+
var _constants = require("../constants");
|
|
10
|
+
var _types = require("../types");
|
|
11
|
+
var _formatTimestamp = require("../utils/formatTimestamp");
|
|
12
|
+
var _JsonTreeView = require("./JsonTreeView");
|
|
13
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
14
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
15
|
+
// ─── Types ───────────────────────────────────────────────────────────────────
|
|
16
|
+
|
|
17
|
+
// ─── Badge Colors ────────────────────────────────────────────────────────────
|
|
18
|
+
|
|
19
|
+
function getBadgeConfig(level) {
|
|
20
|
+
switch (level) {
|
|
21
|
+
case _types.LogLevel.error:
|
|
22
|
+
return {
|
|
23
|
+
label: 'ERROR',
|
|
24
|
+
color: _constants.DarkTheme.error,
|
|
25
|
+
bgColor: _constants.DarkTheme.errorDim,
|
|
26
|
+
rowBg: 'rgba(255, 77, 106, 0.06)'
|
|
27
|
+
};
|
|
28
|
+
case _types.LogLevel.warn:
|
|
29
|
+
return {
|
|
30
|
+
label: 'WARN',
|
|
31
|
+
color: _constants.DarkTheme.warning,
|
|
32
|
+
bgColor: _constants.DarkTheme.warningDim,
|
|
33
|
+
rowBg: 'rgba(255, 178, 36, 0.06)'
|
|
34
|
+
};
|
|
35
|
+
case _types.LogLevel.info:
|
|
36
|
+
return {
|
|
37
|
+
label: 'INFO',
|
|
38
|
+
color: _constants.DarkTheme.info,
|
|
39
|
+
bgColor: _constants.DarkTheme.infoDim,
|
|
40
|
+
rowBg: 'transparent'
|
|
41
|
+
};
|
|
42
|
+
case _types.LogLevel.debug:
|
|
43
|
+
return {
|
|
44
|
+
label: 'DEBUG',
|
|
45
|
+
color: _constants.DarkTheme.debugColor,
|
|
46
|
+
bgColor: _constants.DarkTheme.debugDim,
|
|
47
|
+
rowBg: 'transparent'
|
|
48
|
+
};
|
|
49
|
+
default:
|
|
50
|
+
return {
|
|
51
|
+
label: 'LOG',
|
|
52
|
+
color: _constants.DarkTheme.textSecondary,
|
|
53
|
+
bgColor: 'rgba(160, 160, 176, 0.1)',
|
|
54
|
+
rowBg: 'transparent'
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
|
|
59
|
+
// ─── Component ───────────────────────────────────────────────────────────────
|
|
60
|
+
|
|
61
|
+
const LogItem = exports.LogItem = /*#__PURE__*/_react.default.memo(({
|
|
62
|
+
item,
|
|
63
|
+
onCopy,
|
|
64
|
+
styles: propStyles
|
|
65
|
+
}) => {
|
|
66
|
+
const [expanded, setExpanded] = (0, _react.useState)(false);
|
|
67
|
+
const badge = getBadgeConfig(item.level);
|
|
68
|
+
const hasData = item.data !== undefined;
|
|
69
|
+
const toggleExpand = (0, _react.useCallback)(() => {
|
|
70
|
+
setExpanded(prev => !prev);
|
|
71
|
+
}, []);
|
|
72
|
+
const handleCopy = (0, _react.useCallback)(() => {
|
|
73
|
+
if (onCopy) {
|
|
74
|
+
const text = `[${badge.label}] ${(0, _formatTimestamp.formatTimestamp)(item.timestamp)} ${item.message}`;
|
|
75
|
+
onCopy(text);
|
|
76
|
+
}
|
|
77
|
+
}, [item, badge.label, onCopy]);
|
|
78
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.TouchableOpacity, {
|
|
79
|
+
style: [styles.container, {
|
|
80
|
+
backgroundColor: badge.rowBg
|
|
81
|
+
}],
|
|
82
|
+
onPress: hasData ? toggleExpand : undefined,
|
|
83
|
+
onLongPress: handleCopy,
|
|
84
|
+
activeOpacity: hasData ? 0.7 : 1,
|
|
85
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
86
|
+
style: styles.headerRow,
|
|
87
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
88
|
+
style: [styles.badge, {
|
|
89
|
+
backgroundColor: badge.bgColor
|
|
90
|
+
}],
|
|
91
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
92
|
+
style: [styles.badgeText, {
|
|
93
|
+
color: badge.color
|
|
94
|
+
}],
|
|
95
|
+
children: badge.label
|
|
96
|
+
})
|
|
97
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
98
|
+
style: [styles.timestamp, propStyles?.logTimestampStyle],
|
|
99
|
+
children: (0, _formatTimestamp.formatTimestamp)(item.timestamp)
|
|
100
|
+
}), onCopy && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
|
|
101
|
+
style: styles.copyButton,
|
|
102
|
+
onPress: handleCopy,
|
|
103
|
+
hitSlop: {
|
|
104
|
+
top: 8,
|
|
105
|
+
bottom: 8,
|
|
106
|
+
left: 8,
|
|
107
|
+
right: 8
|
|
108
|
+
},
|
|
109
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
110
|
+
style: styles.copyButtonText,
|
|
111
|
+
children: "\u29C9"
|
|
112
|
+
})
|
|
113
|
+
})]
|
|
114
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
115
|
+
style: [styles.message, propStyles?.logMessageStyle],
|
|
116
|
+
numberOfLines: expanded ? undefined : 3,
|
|
117
|
+
children: item.message
|
|
118
|
+
}), expanded && hasData && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
119
|
+
style: styles.dataContainer,
|
|
120
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_JsonTreeView.JsonTreeView, {
|
|
121
|
+
data: item.data,
|
|
122
|
+
hideRoot: true,
|
|
123
|
+
maxDepth: 5
|
|
124
|
+
})
|
|
125
|
+
}), hasData && !expanded && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
126
|
+
style: styles.expandHint,
|
|
127
|
+
children: "tap to expand \u25BE"
|
|
128
|
+
})]
|
|
129
|
+
});
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
// ─── Styles ──────────────────────────────────────────────────────────────────
|
|
133
|
+
|
|
134
|
+
const styles = _reactNative.StyleSheet.create({
|
|
135
|
+
container: {
|
|
136
|
+
paddingHorizontal: 14,
|
|
137
|
+
paddingVertical: 10,
|
|
138
|
+
borderBottomWidth: 1,
|
|
139
|
+
borderBottomColor: _constants.DarkTheme.border
|
|
140
|
+
},
|
|
141
|
+
headerRow: {
|
|
142
|
+
flexDirection: 'row',
|
|
143
|
+
alignItems: 'center',
|
|
144
|
+
marginBottom: 4
|
|
145
|
+
},
|
|
146
|
+
badge: {
|
|
147
|
+
borderRadius: 4,
|
|
148
|
+
paddingHorizontal: 6,
|
|
149
|
+
paddingVertical: 2,
|
|
150
|
+
marginRight: 8
|
|
151
|
+
},
|
|
152
|
+
badgeText: {
|
|
153
|
+
fontFamily: _constants.MonospaceFont,
|
|
154
|
+
fontSize: 10,
|
|
155
|
+
fontWeight: '800',
|
|
156
|
+
letterSpacing: 0.5
|
|
157
|
+
},
|
|
158
|
+
timestamp: {
|
|
159
|
+
fontFamily: _constants.MonospaceFont,
|
|
160
|
+
fontSize: 11,
|
|
161
|
+
color: _constants.DarkTheme.textMuted,
|
|
162
|
+
flex: 1
|
|
163
|
+
},
|
|
164
|
+
copyButton: {
|
|
165
|
+
padding: 4
|
|
166
|
+
},
|
|
167
|
+
copyButtonText: {
|
|
168
|
+
fontSize: 16,
|
|
169
|
+
color: _constants.DarkTheme.textMuted
|
|
170
|
+
},
|
|
171
|
+
message: {
|
|
172
|
+
fontFamily: _constants.MonospaceFont,
|
|
173
|
+
fontSize: 12,
|
|
174
|
+
color: _constants.DarkTheme.text,
|
|
175
|
+
lineHeight: 18
|
|
176
|
+
},
|
|
177
|
+
dataContainer: {
|
|
178
|
+
marginTop: 8,
|
|
179
|
+
paddingTop: 8,
|
|
180
|
+
borderTopWidth: 1,
|
|
181
|
+
borderTopColor: _constants.DarkTheme.border
|
|
182
|
+
},
|
|
183
|
+
expandHint: {
|
|
184
|
+
fontFamily: _constants.MonospaceFont,
|
|
185
|
+
fontSize: 10,
|
|
186
|
+
color: _constants.DarkTheme.textMuted,
|
|
187
|
+
marginTop: 4,
|
|
188
|
+
fontStyle: 'italic'
|
|
189
|
+
}
|
|
190
|
+
});
|
|
191
|
+
//# sourceMappingURL=LogItem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_constants","_types","_formatTimestamp","_JsonTreeView","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","getBadgeConfig","level","LogLevel","error","label","color","DarkTheme","bgColor","errorDim","rowBg","warn","warning","warningDim","info","infoDim","debug","debugColor","debugDim","textSecondary","LogItem","exports","React","memo","item","onCopy","styles","propStyles","expanded","setExpanded","useState","badge","hasData","data","undefined","toggleExpand","useCallback","prev","handleCopy","text","formatTimestamp","timestamp","message","jsxs","TouchableOpacity","style","container","backgroundColor","onPress","onLongPress","activeOpacity","children","View","headerRow","jsx","Text","badgeText","logTimestampStyle","copyButton","hitSlop","top","bottom","left","right","copyButtonText","logMessageStyle","numberOfLines","dataContainer","JsonTreeView","hideRoot","maxDepth","expandHint","StyleSheet","create","paddingHorizontal","paddingVertical","borderBottomWidth","borderBottomColor","border","flexDirection","alignItems","marginBottom","borderRadius","marginRight","fontFamily","MonospaceFont","fontSize","fontWeight","letterSpacing","textMuted","flex","padding","lineHeight","marginTop","paddingTop","borderTopWidth","borderTopColor","fontStyle"],"sourceRoot":"../../../src","sources":["components/LogItem.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,235 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.LogsTab = void 0;
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _reactNative = require("react-native");
|
|
9
|
+
var _constants = require("../constants");
|
|
10
|
+
var _LogItem = require("./LogItem");
|
|
11
|
+
var _formatTimestamp = require("../utils/formatTimestamp");
|
|
12
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
13
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
14
|
+
// ─── Types ───────────────────────────────────────────────────────────────────
|
|
15
|
+
|
|
16
|
+
// ─── Component ───────────────────────────────────────────────────────────────
|
|
17
|
+
|
|
18
|
+
const LogsTab = ({
|
|
19
|
+
logs,
|
|
20
|
+
onRefresh,
|
|
21
|
+
onCopyLogs,
|
|
22
|
+
styles: propStyles
|
|
23
|
+
}) => {
|
|
24
|
+
const [searchText, setSearchText] = (0, _react.useState)('');
|
|
25
|
+
|
|
26
|
+
// Filter logs based on search text
|
|
27
|
+
const filteredLogs = (0, _react.useMemo)(() => {
|
|
28
|
+
if (!searchText.trim()) return logs;
|
|
29
|
+
const query = searchText.toLowerCase();
|
|
30
|
+
return logs.filter(log => {
|
|
31
|
+
return log.message.toLowerCase().includes(query) || log.level.toLowerCase().includes(query);
|
|
32
|
+
});
|
|
33
|
+
}, [logs, searchText]);
|
|
34
|
+
|
|
35
|
+
// Copy all visible logs to text
|
|
36
|
+
const handleCopyAll = (0, _react.useCallback)(() => {
|
|
37
|
+
if (!onCopyLogs) return;
|
|
38
|
+
const text = filteredLogs.map(log => `[${log.level.toUpperCase()}] ${(0, _formatTimestamp.formatTimestamp)(log.timestamp)} ${log.message}`).join('\n');
|
|
39
|
+
onCopyLogs(text);
|
|
40
|
+
}, [filteredLogs, onCopyLogs]);
|
|
41
|
+
|
|
42
|
+
// Copy individual log
|
|
43
|
+
const handleCopyItem = (0, _react.useCallback)(text => {
|
|
44
|
+
if (onCopyLogs) {
|
|
45
|
+
onCopyLogs(text);
|
|
46
|
+
}
|
|
47
|
+
}, [onCopyLogs]);
|
|
48
|
+
|
|
49
|
+
// Render log item
|
|
50
|
+
const renderItem = (0, _react.useCallback)(({
|
|
51
|
+
item
|
|
52
|
+
}) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_LogItem.LogItem, {
|
|
53
|
+
item: item,
|
|
54
|
+
onCopy: onCopyLogs ? handleCopyItem : undefined,
|
|
55
|
+
styles: propStyles
|
|
56
|
+
}), [handleCopyItem, onCopyLogs, propStyles]);
|
|
57
|
+
const keyExtractor = (0, _react.useCallback)(item => item.id, []);
|
|
58
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
59
|
+
style: styles.container,
|
|
60
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
61
|
+
style: styles.searchContainer,
|
|
62
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
63
|
+
style: styles.searchInputWrapper,
|
|
64
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
65
|
+
style: styles.searchIcon,
|
|
66
|
+
children: "\u2315"
|
|
67
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TextInput, {
|
|
68
|
+
testID: _constants.TestIDs.logsTab.searchInput,
|
|
69
|
+
style: styles.searchInput,
|
|
70
|
+
placeholder: "Filter logs...",
|
|
71
|
+
placeholderTextColor: _constants.DarkTheme.textMuted,
|
|
72
|
+
value: searchText,
|
|
73
|
+
onChangeText: setSearchText,
|
|
74
|
+
autoCapitalize: "none",
|
|
75
|
+
autoCorrect: false,
|
|
76
|
+
clearButtonMode: "while-editing",
|
|
77
|
+
returnKeyType: "search"
|
|
78
|
+
})]
|
|
79
|
+
}), onCopyLogs && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
|
|
80
|
+
testID: _constants.TestIDs.logsTab.copyButton,
|
|
81
|
+
style: styles.copyAllButton,
|
|
82
|
+
onPress: handleCopyAll,
|
|
83
|
+
activeOpacity: 0.7,
|
|
84
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
85
|
+
style: styles.copyAllText,
|
|
86
|
+
children: "Copy All"
|
|
87
|
+
})
|
|
88
|
+
})]
|
|
89
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
90
|
+
style: styles.countBar,
|
|
91
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
92
|
+
style: styles.countText,
|
|
93
|
+
children: filteredLogs.length === logs.length ? `${logs.length} log${logs.length !== 1 ? 's' : ''}` : `${filteredLogs.length} of ${logs.length} logs`
|
|
94
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
95
|
+
style: styles.pullHint,
|
|
96
|
+
children: "\u2193 pull to refresh"
|
|
97
|
+
})]
|
|
98
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.FlatList, {
|
|
99
|
+
testID: _constants.TestIDs.logsTab.list,
|
|
100
|
+
data: filteredLogs,
|
|
101
|
+
renderItem: renderItem,
|
|
102
|
+
keyExtractor: keyExtractor,
|
|
103
|
+
refreshing: false,
|
|
104
|
+
onRefresh: onRefresh,
|
|
105
|
+
style: styles.list,
|
|
106
|
+
contentContainerStyle: filteredLogs.length === 0 ? styles.emptyContainer : undefined,
|
|
107
|
+
ListEmptyComponent: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
108
|
+
style: styles.emptyState,
|
|
109
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
110
|
+
style: styles.emptyIcon,
|
|
111
|
+
children: "\uD83D\uDCCB"
|
|
112
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
113
|
+
style: styles.emptyTitle,
|
|
114
|
+
children: "No logs yet"
|
|
115
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
116
|
+
style: styles.emptySubtitle,
|
|
117
|
+
children: "Console output will appear here"
|
|
118
|
+
})]
|
|
119
|
+
})
|
|
120
|
+
// Perf optimizations
|
|
121
|
+
,
|
|
122
|
+
maxToRenderPerBatch: 20,
|
|
123
|
+
windowSize: 10,
|
|
124
|
+
initialNumToRender: 20,
|
|
125
|
+
removeClippedSubviews: true,
|
|
126
|
+
getItemLayout: undefined
|
|
127
|
+
})]
|
|
128
|
+
});
|
|
129
|
+
};
|
|
130
|
+
|
|
131
|
+
// ─── Styles ──────────────────────────────────────────────────────────────────
|
|
132
|
+
exports.LogsTab = LogsTab;
|
|
133
|
+
const styles = _reactNative.StyleSheet.create({
|
|
134
|
+
container: {
|
|
135
|
+
flex: 1
|
|
136
|
+
},
|
|
137
|
+
searchContainer: {
|
|
138
|
+
flexDirection: 'row',
|
|
139
|
+
alignItems: 'center',
|
|
140
|
+
paddingHorizontal: 14,
|
|
141
|
+
paddingVertical: 10,
|
|
142
|
+
gap: 10,
|
|
143
|
+
borderBottomWidth: 1,
|
|
144
|
+
borderBottomColor: _constants.DarkTheme.border
|
|
145
|
+
},
|
|
146
|
+
searchInputWrapper: {
|
|
147
|
+
flex: 1,
|
|
148
|
+
flexDirection: 'row',
|
|
149
|
+
alignItems: 'center',
|
|
150
|
+
backgroundColor: _constants.DarkTheme.surfaceElevated,
|
|
151
|
+
borderRadius: 10,
|
|
152
|
+
borderWidth: 1,
|
|
153
|
+
borderColor: _constants.DarkTheme.border,
|
|
154
|
+
paddingHorizontal: 12,
|
|
155
|
+
height: 38
|
|
156
|
+
},
|
|
157
|
+
searchIcon: {
|
|
158
|
+
fontSize: 16,
|
|
159
|
+
color: _constants.DarkTheme.textMuted,
|
|
160
|
+
marginRight: 8
|
|
161
|
+
},
|
|
162
|
+
searchInput: {
|
|
163
|
+
flex: 1,
|
|
164
|
+
fontFamily: _constants.MonospaceFont,
|
|
165
|
+
fontSize: 13,
|
|
166
|
+
color: _constants.DarkTheme.text,
|
|
167
|
+
padding: 0
|
|
168
|
+
},
|
|
169
|
+
copyAllButton: {
|
|
170
|
+
backgroundColor: _constants.DarkTheme.accentDim,
|
|
171
|
+
borderRadius: 8,
|
|
172
|
+
borderWidth: 1,
|
|
173
|
+
borderColor: _constants.DarkTheme.accent,
|
|
174
|
+
paddingHorizontal: 14,
|
|
175
|
+
height: 38,
|
|
176
|
+
justifyContent: 'center'
|
|
177
|
+
},
|
|
178
|
+
copyAllText: {
|
|
179
|
+
fontFamily: _constants.MonospaceFont,
|
|
180
|
+
fontSize: 12,
|
|
181
|
+
fontWeight: '700',
|
|
182
|
+
color: _constants.DarkTheme.accent,
|
|
183
|
+
letterSpacing: 0.5
|
|
184
|
+
},
|
|
185
|
+
countBar: {
|
|
186
|
+
flexDirection: 'row',
|
|
187
|
+
justifyContent: 'space-between',
|
|
188
|
+
alignItems: 'center',
|
|
189
|
+
paddingHorizontal: 16,
|
|
190
|
+
paddingVertical: 6,
|
|
191
|
+
backgroundColor: _constants.DarkTheme.surface
|
|
192
|
+
},
|
|
193
|
+
countText: {
|
|
194
|
+
fontFamily: _constants.MonospaceFont,
|
|
195
|
+
fontSize: 11,
|
|
196
|
+
color: _constants.DarkTheme.textMuted
|
|
197
|
+
},
|
|
198
|
+
pullHint: {
|
|
199
|
+
fontFamily: _constants.MonospaceFont,
|
|
200
|
+
fontSize: 10,
|
|
201
|
+
color: _constants.DarkTheme.textMuted,
|
|
202
|
+
fontStyle: 'italic'
|
|
203
|
+
},
|
|
204
|
+
list: {
|
|
205
|
+
flex: 1
|
|
206
|
+
},
|
|
207
|
+
emptyContainer: {
|
|
208
|
+
flex: 1,
|
|
209
|
+
justifyContent: 'center'
|
|
210
|
+
},
|
|
211
|
+
emptyState: {
|
|
212
|
+
alignItems: 'center',
|
|
213
|
+
justifyContent: 'center',
|
|
214
|
+
padding: 40
|
|
215
|
+
},
|
|
216
|
+
emptyIcon: {
|
|
217
|
+
fontSize: 48,
|
|
218
|
+
marginBottom: 16,
|
|
219
|
+
opacity: 0.5
|
|
220
|
+
},
|
|
221
|
+
emptyTitle: {
|
|
222
|
+
fontFamily: _constants.MonospaceFont,
|
|
223
|
+
fontSize: 16,
|
|
224
|
+
fontWeight: '700',
|
|
225
|
+
color: _constants.DarkTheme.textSecondary,
|
|
226
|
+
marginBottom: 8
|
|
227
|
+
},
|
|
228
|
+
emptySubtitle: {
|
|
229
|
+
fontFamily: _constants.MonospaceFont,
|
|
230
|
+
fontSize: 13,
|
|
231
|
+
color: _constants.DarkTheme.textMuted,
|
|
232
|
+
textAlign: 'center'
|
|
233
|
+
}
|
|
234
|
+
});
|
|
235
|
+
//# sourceMappingURL=LogsTab.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_constants","_LogItem","_formatTimestamp","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","LogsTab","logs","onRefresh","onCopyLogs","styles","propStyles","searchText","setSearchText","useState","filteredLogs","useMemo","trim","query","toLowerCase","filter","log","message","includes","level","handleCopyAll","useCallback","text","map","toUpperCase","formatTimestamp","timestamp","join","handleCopyItem","renderItem","item","jsx","LogItem","onCopy","undefined","keyExtractor","id","jsxs","View","style","container","children","searchContainer","searchInputWrapper","Text","searchIcon","TextInput","testID","TestIDs","logsTab","searchInput","placeholder","placeholderTextColor","DarkTheme","textMuted","value","onChangeText","autoCapitalize","autoCorrect","clearButtonMode","returnKeyType","TouchableOpacity","copyButton","copyAllButton","onPress","activeOpacity","copyAllText","countBar","countText","length","pullHint","FlatList","list","data","refreshing","contentContainerStyle","emptyContainer","ListEmptyComponent","emptyState","emptyIcon","emptyTitle","emptySubtitle","maxToRenderPerBatch","windowSize","initialNumToRender","removeClippedSubviews","getItemLayout","exports","StyleSheet","create","flex","flexDirection","alignItems","paddingHorizontal","paddingVertical","gap","borderBottomWidth","borderBottomColor","border","backgroundColor","surfaceElevated","borderRadius","borderWidth","borderColor","height","fontSize","color","marginRight","fontFamily","MonospaceFont","padding","accentDim","accent","justifyContent","fontWeight","letterSpacing","surface","fontStyle","marginBottom","opacity","textSecondary","textAlign"],"sourceRoot":"../../../src","sources":["components/LogsTab.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.TabBar = void 0;
|
|
7
|
+
var _react = _interopRequireWildcard(require("react"));
|
|
8
|
+
var _reactNative = require("react-native");
|
|
9
|
+
var _constants = require("../constants");
|
|
10
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
11
|
+
function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
|
|
12
|
+
// ─── Types ───────────────────────────────────────────────────────────────────
|
|
13
|
+
|
|
14
|
+
// ─── Component ───────────────────────────────────────────────────────────────
|
|
15
|
+
|
|
16
|
+
const TabBar = ({
|
|
17
|
+
tabs,
|
|
18
|
+
activeTab,
|
|
19
|
+
onTabChange
|
|
20
|
+
}) => {
|
|
21
|
+
const indicatorAnim = (0, _react.useRef)(new _reactNative.Animated.Value(0)).current;
|
|
22
|
+
const tabWidths = (0, _react.useRef)({});
|
|
23
|
+
const tabOffsets = (0, _react.useRef)({});
|
|
24
|
+
const scrollRef = (0, _react.useRef)(null);
|
|
25
|
+
|
|
26
|
+
// Animate indicator when active tab changes
|
|
27
|
+
(0, _react.useEffect)(() => {
|
|
28
|
+
const offset = tabOffsets.current[activeTab] || 0;
|
|
29
|
+
_reactNative.Animated.spring(indicatorAnim, {
|
|
30
|
+
toValue: offset,
|
|
31
|
+
useNativeDriver: true,
|
|
32
|
+
friction: 8,
|
|
33
|
+
tension: 60
|
|
34
|
+
}).start();
|
|
35
|
+
}, [activeTab, indicatorAnim]);
|
|
36
|
+
const handleTabLayout = (0, _react.useCallback)(key => e => {
|
|
37
|
+
const {
|
|
38
|
+
x,
|
|
39
|
+
width
|
|
40
|
+
} = e.nativeEvent.layout;
|
|
41
|
+
tabWidths.current[key] = width;
|
|
42
|
+
tabOffsets.current[key] = x;
|
|
43
|
+
|
|
44
|
+
// Re-animate if this is the active tab
|
|
45
|
+
if (key === activeTab) {
|
|
46
|
+
indicatorAnim.setValue(x);
|
|
47
|
+
}
|
|
48
|
+
}, [activeTab, indicatorAnim]);
|
|
49
|
+
const activeWidth = tabWidths.current[activeTab] || 80;
|
|
50
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
51
|
+
style: styles.container,
|
|
52
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.ScrollView, {
|
|
53
|
+
ref: scrollRef,
|
|
54
|
+
horizontal: true,
|
|
55
|
+
showsHorizontalScrollIndicator: false,
|
|
56
|
+
contentContainerStyle: styles.scrollContent,
|
|
57
|
+
children: [tabs.map(tab => {
|
|
58
|
+
const isActive = tab.key === activeTab;
|
|
59
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.TouchableOpacity, {
|
|
60
|
+
onPress: () => onTabChange(tab.key),
|
|
61
|
+
onLayout: handleTabLayout(tab.key),
|
|
62
|
+
style: styles.tab,
|
|
63
|
+
activeOpacity: 0.7,
|
|
64
|
+
testID: `backstage.tab.${tab.key}`,
|
|
65
|
+
children: [tab.icon && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
66
|
+
style: [styles.tabIcon, isActive && styles.tabIconActive],
|
|
67
|
+
children: tab.icon
|
|
68
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
69
|
+
style: [styles.tabText, isActive && styles.tabTextActive],
|
|
70
|
+
children: tab.title
|
|
71
|
+
})]
|
|
72
|
+
}, tab.key);
|
|
73
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Animated.View, {
|
|
74
|
+
style: [styles.indicator, {
|
|
75
|
+
width: activeWidth,
|
|
76
|
+
transform: [{
|
|
77
|
+
translateX: indicatorAnim
|
|
78
|
+
}]
|
|
79
|
+
}]
|
|
80
|
+
})]
|
|
81
|
+
})
|
|
82
|
+
});
|
|
83
|
+
};
|
|
84
|
+
|
|
85
|
+
// ─── Styles ──────────────────────────────────────────────────────────────────
|
|
86
|
+
exports.TabBar = TabBar;
|
|
87
|
+
const styles = _reactNative.StyleSheet.create({
|
|
88
|
+
container: {
|
|
89
|
+
borderBottomWidth: 1,
|
|
90
|
+
borderBottomColor: _constants.DarkTheme.border
|
|
91
|
+
},
|
|
92
|
+
scrollContent: {
|
|
93
|
+
flexDirection: 'row',
|
|
94
|
+
position: 'relative',
|
|
95
|
+
paddingBottom: 0
|
|
96
|
+
},
|
|
97
|
+
tab: {
|
|
98
|
+
flexDirection: 'row',
|
|
99
|
+
alignItems: 'center',
|
|
100
|
+
justifyContent: 'center',
|
|
101
|
+
paddingHorizontal: 20,
|
|
102
|
+
paddingVertical: 14,
|
|
103
|
+
minWidth: 80
|
|
104
|
+
},
|
|
105
|
+
tabIcon: {
|
|
106
|
+
fontSize: 14,
|
|
107
|
+
marginRight: 6,
|
|
108
|
+
opacity: 0.5
|
|
109
|
+
},
|
|
110
|
+
tabIconActive: {
|
|
111
|
+
opacity: 1
|
|
112
|
+
},
|
|
113
|
+
tabText: {
|
|
114
|
+
fontFamily: _constants.MonospaceFont,
|
|
115
|
+
fontSize: 13,
|
|
116
|
+
fontWeight: '600',
|
|
117
|
+
color: _constants.DarkTheme.textMuted,
|
|
118
|
+
textTransform: 'uppercase',
|
|
119
|
+
letterSpacing: 1
|
|
120
|
+
},
|
|
121
|
+
tabTextActive: {
|
|
122
|
+
color: _constants.DarkTheme.accent
|
|
123
|
+
},
|
|
124
|
+
indicator: {
|
|
125
|
+
position: 'absolute',
|
|
126
|
+
bottom: 0,
|
|
127
|
+
height: 2,
|
|
128
|
+
backgroundColor: _constants.DarkTheme.accent,
|
|
129
|
+
borderRadius: 1
|
|
130
|
+
}
|
|
131
|
+
});
|
|
132
|
+
//# sourceMappingURL=TabBar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","_interopRequireWildcard","require","_reactNative","_constants","_jsxRuntime","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","TabBar","tabs","activeTab","onTabChange","indicatorAnim","useRef","Animated","Value","current","tabWidths","tabOffsets","scrollRef","useEffect","offset","spring","toValue","useNativeDriver","friction","tension","start","handleTabLayout","useCallback","key","x","width","nativeEvent","layout","setValue","activeWidth","jsx","View","style","styles","container","children","jsxs","ScrollView","ref","horizontal","showsHorizontalScrollIndicator","contentContainerStyle","scrollContent","map","tab","isActive","TouchableOpacity","onPress","onLayout","activeOpacity","testID","icon","Text","tabIcon","tabIconActive","tabText","tabTextActive","title","indicator","transform","translateX","exports","StyleSheet","create","borderBottomWidth","borderBottomColor","DarkTheme","border","flexDirection","position","paddingBottom","alignItems","justifyContent","paddingHorizontal","paddingVertical","minWidth","fontSize","marginRight","opacity","fontFamily","MonospaceFont","fontWeight","color","textMuted","textTransform","letterSpacing","accent","bottom","height","backgroundColor","borderRadius"],"sourceRoot":"../../../src","sources":["components/TabBar.tsx"],"mappings":"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","ignoreList":[]}
|