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.
Files changed (102) hide show
  1. package/README.md +80 -0
  2. package/lib/commonjs/Backstage.js +130 -0
  3. package/lib/commonjs/Backstage.js.map +1 -0
  4. package/lib/commonjs/components/BackstagePanel.js +192 -0
  5. package/lib/commonjs/components/BackstagePanel.js.map +1 -0
  6. package/lib/commonjs/components/FloatingPill.js +147 -0
  7. package/lib/commonjs/components/FloatingPill.js.map +1 -0
  8. package/lib/commonjs/components/InfoTab.js +260 -0
  9. package/lib/commonjs/components/InfoTab.js.map +1 -0
  10. package/lib/commonjs/components/JsonTreeView.js +245 -0
  11. package/lib/commonjs/components/JsonTreeView.js.map +1 -0
  12. package/lib/commonjs/components/LogItem.js +191 -0
  13. package/lib/commonjs/components/LogItem.js.map +1 -0
  14. package/lib/commonjs/components/LogsTab.js +235 -0
  15. package/lib/commonjs/components/LogsTab.js.map +1 -0
  16. package/lib/commonjs/components/TabBar.js +132 -0
  17. package/lib/commonjs/components/TabBar.js.map +1 -0
  18. package/lib/commonjs/constants.js +89 -0
  19. package/lib/commonjs/constants.js.map +1 -0
  20. package/lib/commonjs/index.js +20 -0
  21. package/lib/commonjs/index.js.map +1 -0
  22. package/lib/commonjs/log-interceptor.js +114 -0
  23. package/lib/commonjs/log-interceptor.js.map +1 -0
  24. package/lib/commonjs/package.json +1 -0
  25. package/lib/commonjs/types.js +21 -0
  26. package/lib/commonjs/types.js.map +1 -0
  27. package/lib/commonjs/utils/formatTimestamp.js +26 -0
  28. package/lib/commonjs/utils/formatTimestamp.js.map +1 -0
  29. package/lib/commonjs/utils/stringify.js +78 -0
  30. package/lib/commonjs/utils/stringify.js.map +1 -0
  31. package/lib/module/Backstage.js +125 -0
  32. package/lib/module/Backstage.js.map +1 -0
  33. package/lib/module/components/BackstagePanel.js +187 -0
  34. package/lib/module/components/BackstagePanel.js.map +1 -0
  35. package/lib/module/components/FloatingPill.js +142 -0
  36. package/lib/module/components/FloatingPill.js.map +1 -0
  37. package/lib/module/components/InfoTab.js +255 -0
  38. package/lib/module/components/InfoTab.js.map +1 -0
  39. package/lib/module/components/JsonTreeView.js +241 -0
  40. package/lib/module/components/JsonTreeView.js.map +1 -0
  41. package/lib/module/components/LogItem.js +186 -0
  42. package/lib/module/components/LogItem.js.map +1 -0
  43. package/lib/module/components/LogsTab.js +230 -0
  44. package/lib/module/components/LogsTab.js.map +1 -0
  45. package/lib/module/components/TabBar.js +127 -0
  46. package/lib/module/components/TabBar.js.map +1 -0
  47. package/lib/module/constants.js +85 -0
  48. package/lib/module/constants.js.map +1 -0
  49. package/lib/module/index.js +5 -0
  50. package/lib/module/index.js.map +1 -0
  51. package/lib/module/log-interceptor.js +108 -0
  52. package/lib/module/log-interceptor.js.map +1 -0
  53. package/lib/module/package.json +1 -0
  54. package/lib/module/types.js +25 -0
  55. package/lib/module/types.js.map +1 -0
  56. package/lib/module/utils/formatTimestamp.js +22 -0
  57. package/lib/module/utils/formatTimestamp.js.map +1 -0
  58. package/lib/module/utils/stringify.js +73 -0
  59. package/lib/module/utils/stringify.js.map +1 -0
  60. package/lib/typescript/Backstage.d.ts +4 -0
  61. package/lib/typescript/Backstage.d.ts.map +1 -0
  62. package/lib/typescript/components/BackstagePanel.d.ts +21 -0
  63. package/lib/typescript/components/BackstagePanel.d.ts.map +1 -0
  64. package/lib/typescript/components/FloatingPill.d.ts +13 -0
  65. package/lib/typescript/components/FloatingPill.d.ts.map +1 -0
  66. package/lib/typescript/components/InfoTab.d.ts +16 -0
  67. package/lib/typescript/components/InfoTab.d.ts.map +1 -0
  68. package/lib/typescript/components/JsonTreeView.d.ts +10 -0
  69. package/lib/typescript/components/JsonTreeView.d.ts.map +1 -0
  70. package/lib/typescript/components/LogItem.d.ts +10 -0
  71. package/lib/typescript/components/LogItem.d.ts.map +1 -0
  72. package/lib/typescript/components/LogsTab.d.ts +11 -0
  73. package/lib/typescript/components/LogsTab.d.ts.map +1 -0
  74. package/lib/typescript/components/TabBar.d.ts +14 -0
  75. package/lib/typescript/components/TabBar.d.ts.map +1 -0
  76. package/lib/typescript/constants.d.ts +43 -0
  77. package/lib/typescript/constants.d.ts.map +1 -0
  78. package/lib/typescript/index.d.ts +4 -0
  79. package/lib/typescript/index.d.ts.map +1 -0
  80. package/lib/typescript/log-interceptor.d.ts +16 -0
  81. package/lib/typescript/log-interceptor.d.ts.map +1 -0
  82. package/lib/typescript/types.d.ts +110 -0
  83. package/lib/typescript/types.d.ts.map +1 -0
  84. package/lib/typescript/utils/formatTimestamp.d.ts +7 -0
  85. package/lib/typescript/utils/formatTimestamp.d.ts.map +1 -0
  86. package/lib/typescript/utils/stringify.d.ts +9 -0
  87. package/lib/typescript/utils/stringify.d.ts.map +1 -0
  88. package/package.json +91 -0
  89. package/src/Backstage.tsx +145 -0
  90. package/src/components/BackstagePanel.tsx +208 -0
  91. package/src/components/FloatingPill.tsx +150 -0
  92. package/src/components/InfoTab.tsx +264 -0
  93. package/src/components/JsonTreeView.tsx +259 -0
  94. package/src/components/LogItem.tsx +189 -0
  95. package/src/components/LogsTab.tsx +239 -0
  96. package/src/components/TabBar.tsx +150 -0
  97. package/src/constants.ts +82 -0
  98. package/src/index.ts +14 -0
  99. package/src/log-interceptor.ts +137 -0
  100. package/src/types.ts +147 -0
  101. package/src/utils/formatTimestamp.ts +22 -0
  102. package/src/utils/stringify.ts +90 -0
@@ -0,0 +1,260 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.InfoTab = void 0;
7
+ var _react = _interopRequireDefault(require("react"));
8
+ var _reactNative = require("react-native");
9
+ var _constants = require("../constants");
10
+ var _JsonTreeView = require("./JsonTreeView");
11
+ var _jsxRuntime = require("react/jsx-runtime");
12
+ function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
13
+ // ─── Types ───────────────────────────────────────────────────────────────────
14
+
15
+ // ─── Info Row ────────────────────────────────────────────────────────────────
16
+
17
+ const InfoRow = ({
18
+ label,
19
+ value,
20
+ labelStyle,
21
+ valueStyle
22
+ }) => /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
23
+ style: styles.infoRow,
24
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
25
+ style: [styles.infoLabel, labelStyle],
26
+ numberOfLines: 1,
27
+ children: label
28
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
29
+ style: [styles.infoValue, valueStyle],
30
+ numberOfLines: 2,
31
+ selectable: true,
32
+ children: value
33
+ })]
34
+ });
35
+
36
+ // ─── Section Header ──────────────────────────────────────────────────────────
37
+
38
+ const SectionHeader = ({
39
+ title,
40
+ titleStyle
41
+ }) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
42
+ style: [styles.sectionTitle, titleStyle],
43
+ children: title
44
+ });
45
+
46
+ // ─── Action Button ───────────────────────────────────────────────────────────
47
+
48
+ const ActionButton = ({
49
+ action,
50
+ onClosePanel,
51
+ buttonStyle,
52
+ buttonTitleStyle
53
+ }) => {
54
+ const handlePress = () => {
55
+ action.onPress();
56
+ if (action.closeOnPress && onClosePanel) {
57
+ onClosePanel();
58
+ }
59
+ };
60
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.TouchableOpacity, {
61
+ testID: action.testID,
62
+ style: [styles.actionButton, action.destructive && styles.actionButtonDestructive, buttonStyle],
63
+ onPress: handlePress,
64
+ activeOpacity: 0.7,
65
+ children: [action.icon && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
66
+ style: styles.actionIcon,
67
+ children: action.icon
68
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
69
+ style: [styles.actionButtonTitle, action.destructive && styles.actionButtonTitleDestructive, buttonTitleStyle],
70
+ children: action.title
71
+ })]
72
+ });
73
+ };
74
+
75
+ // ─── Main Component ──────────────────────────────────────────────────────────
76
+
77
+ const InfoTab = ({
78
+ appVersion,
79
+ buildNumber,
80
+ bundleId,
81
+ deviceInfo = [],
82
+ state,
83
+ quickActions = [],
84
+ onClosePanel,
85
+ styles: propStyles,
86
+ children
87
+ }) => {
88
+ // Built-in device info from Platform API
89
+ const builtInInfo = [{
90
+ label: 'Platform',
91
+ value: _reactNative.Platform.OS.toUpperCase()
92
+ }, {
93
+ label: 'OS Version',
94
+ value: String(_reactNative.Platform.Version)
95
+ }];
96
+ if (appVersion) {
97
+ builtInInfo.push({
98
+ label: 'App Version',
99
+ value: appVersion
100
+ });
101
+ }
102
+ if (buildNumber) {
103
+ builtInInfo.push({
104
+ label: 'Build Number',
105
+ value: buildNumber
106
+ });
107
+ }
108
+ if (bundleId) {
109
+ builtInInfo.push({
110
+ label: 'Bundle ID',
111
+ value: bundleId
112
+ });
113
+ }
114
+ const allInfo = [...builtInInfo, ...deviceInfo];
115
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.ScrollView, {
116
+ style: styles.container,
117
+ contentContainerStyle: styles.scrollContent,
118
+ showsVerticalScrollIndicator: false,
119
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
120
+ style: styles.section,
121
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(SectionHeader, {
122
+ title: "DEVICE INFO",
123
+ titleStyle: propStyles?.sectionTitleStyle
124
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
125
+ style: styles.card,
126
+ children: allInfo.map((item, index) => /*#__PURE__*/(0, _jsxRuntime.jsxs)(_react.default.Fragment, {
127
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(InfoRow, {
128
+ label: item.label,
129
+ value: item.value,
130
+ labelStyle: propStyles?.infoLabelStyle,
131
+ valueStyle: propStyles?.infoValueStyle
132
+ }), index < allInfo.length - 1 && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
133
+ style: styles.divider
134
+ })]
135
+ }, `info_${index}`))
136
+ })]
137
+ }), state && Object.keys(state).length > 0 && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
138
+ style: styles.section,
139
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(SectionHeader, {
140
+ title: "STATE TREE",
141
+ titleStyle: propStyles?.sectionTitleStyle
142
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
143
+ style: styles.card,
144
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_JsonTreeView.JsonTreeView, {
145
+ data: state,
146
+ hideRoot: true
147
+ })
148
+ })]
149
+ }), quickActions.length > 0 && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
150
+ style: styles.section,
151
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(SectionHeader, {
152
+ title: "QUICK ACTIONS",
153
+ titleStyle: propStyles?.sectionTitleStyle
154
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
155
+ style: styles.actionsGrid,
156
+ children: quickActions.map((action, index) => /*#__PURE__*/(0, _jsxRuntime.jsx)(ActionButton, {
157
+ action: action,
158
+ onClosePanel: onClosePanel,
159
+ buttonStyle: propStyles?.actionButtonStyle,
160
+ buttonTitleStyle: propStyles?.actionButtonTitleStyle
161
+ }, `action_${index}`))
162
+ })]
163
+ }), children && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
164
+ style: styles.section,
165
+ children: children
166
+ })]
167
+ });
168
+ };
169
+
170
+ // ─── Styles ──────────────────────────────────────────────────────────────────
171
+ exports.InfoTab = InfoTab;
172
+ const styles = _reactNative.StyleSheet.create({
173
+ container: {
174
+ flex: 1
175
+ },
176
+ scrollContent: {
177
+ padding: 16,
178
+ paddingBottom: 32
179
+ },
180
+ section: {
181
+ marginBottom: 20
182
+ },
183
+ sectionTitle: {
184
+ fontFamily: _constants.MonospaceFont,
185
+ fontSize: 11,
186
+ fontWeight: '700',
187
+ color: _constants.DarkTheme.textMuted,
188
+ letterSpacing: 1.5,
189
+ marginBottom: 8,
190
+ paddingLeft: 4
191
+ },
192
+ card: {
193
+ backgroundColor: _constants.DarkTheme.surfaceElevated,
194
+ borderRadius: 12,
195
+ borderWidth: 1,
196
+ borderColor: _constants.DarkTheme.border,
197
+ padding: 12,
198
+ overflow: 'hidden'
199
+ },
200
+ infoRow: {
201
+ flexDirection: 'row',
202
+ justifyContent: 'space-between',
203
+ alignItems: 'center',
204
+ paddingVertical: 8,
205
+ paddingHorizontal: 4
206
+ },
207
+ infoLabel: {
208
+ fontFamily: _constants.MonospaceFont,
209
+ fontSize: 13,
210
+ color: _constants.DarkTheme.textSecondary,
211
+ flex: 1
212
+ },
213
+ infoValue: {
214
+ fontFamily: _constants.MonospaceFont,
215
+ fontSize: 13,
216
+ color: _constants.DarkTheme.text,
217
+ fontWeight: '600',
218
+ textAlign: 'right',
219
+ flex: 1,
220
+ marginLeft: 12
221
+ },
222
+ divider: {
223
+ height: 1,
224
+ backgroundColor: _constants.DarkTheme.border,
225
+ marginHorizontal: 4
226
+ },
227
+ actionsGrid: {
228
+ flexDirection: 'row',
229
+ flexWrap: 'wrap',
230
+ gap: 10
231
+ },
232
+ actionButton: {
233
+ backgroundColor: _constants.DarkTheme.accentDim,
234
+ borderRadius: 10,
235
+ borderWidth: 1,
236
+ borderColor: _constants.DarkTheme.accent,
237
+ paddingVertical: 10,
238
+ paddingHorizontal: 18,
239
+ flexDirection: 'row',
240
+ alignItems: 'center'
241
+ },
242
+ actionButtonDestructive: {
243
+ backgroundColor: _constants.DarkTheme.errorDim,
244
+ borderColor: _constants.DarkTheme.error
245
+ },
246
+ actionIcon: {
247
+ fontSize: 14,
248
+ marginRight: 6
249
+ },
250
+ actionButtonTitle: {
251
+ fontFamily: _constants.MonospaceFont,
252
+ fontSize: 13,
253
+ fontWeight: '600',
254
+ color: _constants.DarkTheme.accent
255
+ },
256
+ actionButtonTitleDestructive: {
257
+ color: _constants.DarkTheme.error
258
+ }
259
+ });
260
+ //# sourceMappingURL=InfoTab.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_react","_interopRequireDefault","require","_reactNative","_constants","_JsonTreeView","_jsxRuntime","e","__esModule","default","InfoRow","label","value","labelStyle","valueStyle","jsxs","View","style","styles","infoRow","children","jsx","Text","infoLabel","numberOfLines","infoValue","selectable","SectionHeader","title","titleStyle","sectionTitle","ActionButton","action","onClosePanel","buttonStyle","buttonTitleStyle","handlePress","onPress","closeOnPress","TouchableOpacity","testID","actionButton","destructive","actionButtonDestructive","activeOpacity","icon","actionIcon","actionButtonTitle","actionButtonTitleDestructive","InfoTab","appVersion","buildNumber","bundleId","deviceInfo","state","quickActions","propStyles","builtInInfo","Platform","OS","toUpperCase","String","Version","push","allInfo","ScrollView","container","contentContainerStyle","scrollContent","showsVerticalScrollIndicator","section","sectionTitleStyle","card","map","item","index","Fragment","infoLabelStyle","infoValueStyle","length","divider","Object","keys","JsonTreeView","data","hideRoot","actionsGrid","actionButtonStyle","actionButtonTitleStyle","exports","StyleSheet","create","flex","padding","paddingBottom","marginBottom","fontFamily","MonospaceFont","fontSize","fontWeight","color","DarkTheme","textMuted","letterSpacing","paddingLeft","backgroundColor","surfaceElevated","borderRadius","borderWidth","borderColor","border","overflow","flexDirection","justifyContent","alignItems","paddingVertical","paddingHorizontal","textSecondary","text","textAlign","marginLeft","height","marginHorizontal","flexWrap","gap","accentDim","accent","errorDim","error","marginRight"],"sourceRoot":"../../../src","sources":["components/InfoTab.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,245 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.JsonTreeView = 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
+ // Enable LayoutAnimation on Android
13
+ if (_reactNative.Platform.OS === 'android' && _reactNative.UIManager.setLayoutAnimationEnabledExperimental) {
14
+ _reactNative.UIManager.setLayoutAnimationEnabledExperimental(true);
15
+ }
16
+
17
+ // ─── Types ───────────────────────────────────────────────────────────────────
18
+
19
+ // ─── Color Mapping ───────────────────────────────────────────────────────────
20
+
21
+ function getValueColor(value) {
22
+ if (value === null || value === undefined) return _constants.DarkTheme.textMuted;
23
+ if (typeof value === 'string') return '#98C379'; // green
24
+ if (typeof value === 'number') return '#61AFEF'; // cyan
25
+ if (typeof value === 'boolean') return '#C678DD'; // purple
26
+ return _constants.DarkTheme.text;
27
+ }
28
+ function getPreview(value) {
29
+ if (Array.isArray(value)) {
30
+ return `[ ${value.length} item${value.length !== 1 ? 's' : ''} ]`;
31
+ }
32
+ if (typeof value === 'object' && value !== null) {
33
+ const keys = Object.keys(value);
34
+ return `{ ${keys.length} key${keys.length !== 1 ? 's' : ''} }`;
35
+ }
36
+ return '';
37
+ }
38
+ function formatValue(value) {
39
+ if (value === null) return 'null';
40
+ if (value === undefined) return 'undefined';
41
+ if (typeof value === 'string') return `"${value}"`;
42
+ if (typeof value === 'boolean') return value ? 'true' : 'false';
43
+ if (typeof value === 'number') return String(value);
44
+ if (typeof value === 'function') return `[Function: ${value.name || 'anonymous'}]`;
45
+ if (typeof value === 'symbol') return value.toString();
46
+ return String(value);
47
+ }
48
+ function isExpandable(value) {
49
+ return typeof value === 'object' && value !== null || Array.isArray(value);
50
+ }
51
+
52
+ // ─── JsonNode Component ──────────────────────────────────────────────────────
53
+
54
+ const JsonNode = ({
55
+ keyName,
56
+ value,
57
+ depth,
58
+ maxDepth,
59
+ isLast,
60
+ hideKey = false
61
+ }) => {
62
+ const [expanded, setExpanded] = (0, _react.useState)(depth < 1);
63
+ const expandable = isExpandable(value);
64
+ const reachedMaxDepth = depth >= maxDepth;
65
+ const toggleExpand = (0, _react.useCallback)(() => {
66
+ _reactNative.LayoutAnimation.configureNext(_reactNative.LayoutAnimation.Presets.easeInEaseOut);
67
+ setExpanded(prev => !prev);
68
+ }, []);
69
+ const indent = depth * 16;
70
+
71
+ // Primitive value
72
+ if (!expandable || reachedMaxDepth) {
73
+ const displayValue = reachedMaxDepth && expandable ? getPreview(value) : formatValue(value);
74
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
75
+ style: [styles.row, {
76
+ paddingLeft: indent
77
+ }],
78
+ children: [!hideKey && keyName !== null && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
79
+ style: styles.key,
80
+ children: `${keyName}: `
81
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
82
+ style: [styles.value, {
83
+ color: reachedMaxDepth ? _constants.DarkTheme.textMuted : getValueColor(value)
84
+ }],
85
+ numberOfLines: 3,
86
+ children: displayValue
87
+ }), !isLast && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
88
+ style: styles.comma,
89
+ children: ","
90
+ })]
91
+ });
92
+ }
93
+
94
+ // Expandable object/array
95
+ const entries = Array.isArray(value) ? value.map((v, i) => [String(i), v]) : Object.entries(value);
96
+ const bracketOpen = Array.isArray(value) ? '[' : '{';
97
+ const bracketClose = Array.isArray(value) ? ']' : '}';
98
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
99
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.TouchableOpacity, {
100
+ onPress: toggleExpand,
101
+ activeOpacity: 0.7,
102
+ style: [styles.row, {
103
+ paddingLeft: indent
104
+ }],
105
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
106
+ style: styles.chevron,
107
+ children: expanded ? '▼' : '▶'
108
+ }), !hideKey && keyName !== null && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
109
+ style: styles.key,
110
+ children: `${keyName}: `
111
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
112
+ style: styles.bracket,
113
+ children: bracketOpen
114
+ }), !expanded && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
115
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
116
+ style: styles.preview,
117
+ children: ` ${getPreview(value)} `
118
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
119
+ style: styles.bracket,
120
+ children: bracketClose
121
+ }), !isLast && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
122
+ style: styles.comma,
123
+ children: ","
124
+ })]
125
+ })]
126
+ }), expanded && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_jsxRuntime.Fragment, {
127
+ children: [entries.map(([k, v], i) => /*#__PURE__*/(0, _jsxRuntime.jsx)(JsonNode, {
128
+ keyName: Array.isArray(value) ? String(i) : k,
129
+ value: v,
130
+ depth: depth + 1,
131
+ maxDepth: maxDepth,
132
+ isLast: i === entries.length - 1
133
+ }, `${k}_${i}`)), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
134
+ style: [styles.row, {
135
+ paddingLeft: indent
136
+ }],
137
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
138
+ style: styles.bracket,
139
+ children: bracketClose
140
+ }), !isLast && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
141
+ style: styles.comma,
142
+ children: ","
143
+ })]
144
+ })]
145
+ })]
146
+ });
147
+ };
148
+
149
+ // ─── Main Component ──────────────────────────────────────────────────────────
150
+
151
+ const JsonTreeView = ({
152
+ data,
153
+ hideRoot = false,
154
+ maxDepth = 10
155
+ }) => {
156
+ if (data === null || data === undefined) {
157
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
158
+ style: [styles.value, {
159
+ color: _constants.DarkTheme.textMuted
160
+ }],
161
+ children: String(data)
162
+ });
163
+ }
164
+ if (!isExpandable(data)) {
165
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
166
+ style: [styles.value, {
167
+ color: getValueColor(data)
168
+ }],
169
+ children: formatValue(data)
170
+ });
171
+ }
172
+ if (hideRoot) {
173
+ const entries = Array.isArray(data) ? data.map((v, i) => [String(i), v]) : Object.entries(data);
174
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
175
+ style: styles.container,
176
+ children: entries.map(([k, v], i) => /*#__PURE__*/(0, _jsxRuntime.jsx)(JsonNode, {
177
+ keyName: k,
178
+ value: v,
179
+ depth: 0,
180
+ maxDepth: maxDepth,
181
+ isLast: i === entries.length - 1
182
+ }, `${k}_${i}`))
183
+ });
184
+ }
185
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
186
+ style: styles.container,
187
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(JsonNode, {
188
+ keyName: null,
189
+ value: data,
190
+ depth: 0,
191
+ maxDepth: maxDepth,
192
+ isLast: true,
193
+ hideKey: true
194
+ })
195
+ });
196
+ };
197
+
198
+ // ─── Styles ──────────────────────────────────────────────────────────────────
199
+ exports.JsonTreeView = JsonTreeView;
200
+ const styles = _reactNative.StyleSheet.create({
201
+ container: {
202
+ paddingVertical: 4
203
+ },
204
+ row: {
205
+ flexDirection: 'row',
206
+ alignItems: 'flex-start',
207
+ paddingVertical: 2,
208
+ flexWrap: 'wrap'
209
+ },
210
+ chevron: {
211
+ fontFamily: _constants.MonospaceFont,
212
+ fontSize: 10,
213
+ color: _constants.DarkTheme.textMuted,
214
+ marginRight: 6,
215
+ marginTop: 2,
216
+ width: 12
217
+ },
218
+ key: {
219
+ fontFamily: _constants.MonospaceFont,
220
+ fontSize: 13,
221
+ color: '#E06C75' // red-ish for keys
222
+ },
223
+ value: {
224
+ fontFamily: _constants.MonospaceFont,
225
+ fontSize: 13,
226
+ flexShrink: 1
227
+ },
228
+ bracket: {
229
+ fontFamily: _constants.MonospaceFont,
230
+ fontSize: 13,
231
+ color: _constants.DarkTheme.textSecondary
232
+ },
233
+ preview: {
234
+ fontFamily: _constants.MonospaceFont,
235
+ fontSize: 13,
236
+ color: _constants.DarkTheme.textMuted,
237
+ fontStyle: 'italic'
238
+ },
239
+ comma: {
240
+ fontFamily: _constants.MonospaceFont,
241
+ fontSize: 13,
242
+ color: _constants.DarkTheme.textMuted
243
+ }
244
+ });
245
+ //# sourceMappingURL=JsonTreeView.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","Platform","OS","UIManager","setLayoutAnimationEnabledExperimental","getValueColor","value","undefined","DarkTheme","textMuted","text","getPreview","Array","isArray","length","keys","formatValue","String","name","toString","isExpandable","JsonNode","keyName","depth","maxDepth","isLast","hideKey","expanded","setExpanded","useState","expandable","reachedMaxDepth","toggleExpand","useCallback","LayoutAnimation","configureNext","Presets","easeInEaseOut","prev","indent","displayValue","jsxs","View","style","styles","row","paddingLeft","children","jsx","Text","key","color","numberOfLines","comma","entries","map","v","bracketOpen","bracketClose","TouchableOpacity","onPress","activeOpacity","chevron","bracket","Fragment","preview","k","JsonTreeView","data","hideRoot","container","exports","StyleSheet","create","paddingVertical","flexDirection","alignItems","flexWrap","fontFamily","MonospaceFont","fontSize","marginRight","marginTop","width","flexShrink","textSecondary","fontStyle"],"sourceRoot":"../../../src","sources":["components/JsonTreeView.tsx"],"mappings":"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","ignoreList":[]}