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 @@
1
+ {"version":3,"names":["React","useCallback","useMemo","useState","FlatList","StyleSheet","Text","TextInput","TouchableOpacity","View","DarkTheme","MonospaceFont","TestIDs","LogItem","formatTimestamp","jsx","_jsx","jsxs","_jsxs","LogsTab","logs","onRefresh","onCopyLogs","styles","propStyles","searchText","setSearchText","filteredLogs","trim","query","toLowerCase","filter","log","message","includes","level","handleCopyAll","text","map","toUpperCase","timestamp","join","handleCopyItem","renderItem","item","onCopy","undefined","keyExtractor","id","style","container","children","searchContainer","searchInputWrapper","searchIcon","testID","logsTab","searchInput","placeholder","placeholderTextColor","textMuted","value","onChangeText","autoCapitalize","autoCorrect","clearButtonMode","returnKeyType","copyButton","copyAllButton","onPress","activeOpacity","copyAllText","countBar","countText","length","pullHint","list","data","refreshing","contentContainerStyle","emptyContainer","ListEmptyComponent","emptyState","emptyIcon","emptyTitle","emptySubtitle","maxToRenderPerBatch","windowSize","initialNumToRender","removeClippedSubviews","getItemLayout","create","flex","flexDirection","alignItems","paddingHorizontal","paddingVertical","gap","borderBottomWidth","borderBottomColor","border","backgroundColor","surfaceElevated","borderRadius","borderWidth","borderColor","height","fontSize","color","marginRight","fontFamily","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,127 @@
1
+ "use strict";
2
+
3
+ import React, { useCallback, useRef, useEffect } from 'react';
4
+ import { Animated, ScrollView, StyleSheet, Text, TouchableOpacity, View } from 'react-native';
5
+ import { DarkTheme, MonospaceFont } from '../constants';
6
+
7
+ // ─── Types ───────────────────────────────────────────────────────────────────
8
+ import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
9
+ // ─── Component ───────────────────────────────────────────────────────────────
10
+
11
+ export const TabBar = ({
12
+ tabs,
13
+ activeTab,
14
+ onTabChange
15
+ }) => {
16
+ const indicatorAnim = useRef(new Animated.Value(0)).current;
17
+ const tabWidths = useRef({});
18
+ const tabOffsets = useRef({});
19
+ const scrollRef = useRef(null);
20
+
21
+ // Animate indicator when active tab changes
22
+ useEffect(() => {
23
+ const offset = tabOffsets.current[activeTab] || 0;
24
+ Animated.spring(indicatorAnim, {
25
+ toValue: offset,
26
+ useNativeDriver: true,
27
+ friction: 8,
28
+ tension: 60
29
+ }).start();
30
+ }, [activeTab, indicatorAnim]);
31
+ const handleTabLayout = useCallback(key => e => {
32
+ const {
33
+ x,
34
+ width
35
+ } = e.nativeEvent.layout;
36
+ tabWidths.current[key] = width;
37
+ tabOffsets.current[key] = x;
38
+
39
+ // Re-animate if this is the active tab
40
+ if (key === activeTab) {
41
+ indicatorAnim.setValue(x);
42
+ }
43
+ }, [activeTab, indicatorAnim]);
44
+ const activeWidth = tabWidths.current[activeTab] || 80;
45
+ return /*#__PURE__*/_jsx(View, {
46
+ style: styles.container,
47
+ children: /*#__PURE__*/_jsxs(ScrollView, {
48
+ ref: scrollRef,
49
+ horizontal: true,
50
+ showsHorizontalScrollIndicator: false,
51
+ contentContainerStyle: styles.scrollContent,
52
+ children: [tabs.map(tab => {
53
+ const isActive = tab.key === activeTab;
54
+ return /*#__PURE__*/_jsxs(TouchableOpacity, {
55
+ onPress: () => onTabChange(tab.key),
56
+ onLayout: handleTabLayout(tab.key),
57
+ style: styles.tab,
58
+ activeOpacity: 0.7,
59
+ testID: `backstage.tab.${tab.key}`,
60
+ children: [tab.icon && /*#__PURE__*/_jsx(Text, {
61
+ style: [styles.tabIcon, isActive && styles.tabIconActive],
62
+ children: tab.icon
63
+ }), /*#__PURE__*/_jsx(Text, {
64
+ style: [styles.tabText, isActive && styles.tabTextActive],
65
+ children: tab.title
66
+ })]
67
+ }, tab.key);
68
+ }), /*#__PURE__*/_jsx(Animated.View, {
69
+ style: [styles.indicator, {
70
+ width: activeWidth,
71
+ transform: [{
72
+ translateX: indicatorAnim
73
+ }]
74
+ }]
75
+ })]
76
+ })
77
+ });
78
+ };
79
+
80
+ // ─── Styles ──────────────────────────────────────────────────────────────────
81
+
82
+ const styles = StyleSheet.create({
83
+ container: {
84
+ borderBottomWidth: 1,
85
+ borderBottomColor: DarkTheme.border
86
+ },
87
+ scrollContent: {
88
+ flexDirection: 'row',
89
+ position: 'relative',
90
+ paddingBottom: 0
91
+ },
92
+ tab: {
93
+ flexDirection: 'row',
94
+ alignItems: 'center',
95
+ justifyContent: 'center',
96
+ paddingHorizontal: 20,
97
+ paddingVertical: 14,
98
+ minWidth: 80
99
+ },
100
+ tabIcon: {
101
+ fontSize: 14,
102
+ marginRight: 6,
103
+ opacity: 0.5
104
+ },
105
+ tabIconActive: {
106
+ opacity: 1
107
+ },
108
+ tabText: {
109
+ fontFamily: MonospaceFont,
110
+ fontSize: 13,
111
+ fontWeight: '600',
112
+ color: DarkTheme.textMuted,
113
+ textTransform: 'uppercase',
114
+ letterSpacing: 1
115
+ },
116
+ tabTextActive: {
117
+ color: DarkTheme.accent
118
+ },
119
+ indicator: {
120
+ position: 'absolute',
121
+ bottom: 0,
122
+ height: 2,
123
+ backgroundColor: DarkTheme.accent,
124
+ borderRadius: 1
125
+ }
126
+ });
127
+ //# sourceMappingURL=TabBar.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["React","useCallback","useRef","useEffect","Animated","ScrollView","StyleSheet","Text","TouchableOpacity","View","DarkTheme","MonospaceFont","jsx","_jsx","jsxs","_jsxs","TabBar","tabs","activeTab","onTabChange","indicatorAnim","Value","current","tabWidths","tabOffsets","scrollRef","offset","spring","toValue","useNativeDriver","friction","tension","start","handleTabLayout","key","e","x","width","nativeEvent","layout","setValue","activeWidth","style","styles","container","children","ref","horizontal","showsHorizontalScrollIndicator","contentContainerStyle","scrollContent","map","tab","isActive","onPress","onLayout","activeOpacity","testID","icon","tabIcon","tabIconActive","tabText","tabTextActive","title","indicator","transform","translateX","create","borderBottomWidth","borderBottomColor","border","flexDirection","position","paddingBottom","alignItems","justifyContent","paddingHorizontal","paddingVertical","minWidth","fontSize","marginRight","opacity","fontFamily","fontWeight","color","textMuted","textTransform","letterSpacing","accent","bottom","height","backgroundColor","borderRadius"],"sourceRoot":"../../../src","sources":["components/TabBar.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,85 @@
1
+ "use strict";
2
+
3
+ import { Dimensions, Platform } from 'react-native';
4
+ // ─── Metrics ─────────────────────────────────────────────────────────────────
5
+
6
+ const {
7
+ width: screenWidth,
8
+ height: screenHeight
9
+ } = Dimensions.get('window');
10
+ export const Metrics = {
11
+ screenWidth,
12
+ screenHeight,
13
+ isIOS: Platform.OS === 'ios',
14
+ pillWidth: 72,
15
+ pillHeight: 32,
16
+ panelBorderRadius: 20,
17
+ tabBarHeight: 48,
18
+ headerHeight: 52,
19
+ sectionSpacing: 16,
20
+ contentPadding: 16
21
+ };
22
+
23
+ // ─── Dark Theme ──────────────────────────────────────────────────────────────
24
+
25
+ export const DarkTheme = {
26
+ background: '#0D0D12',
27
+ surface: '#16161E',
28
+ surfaceElevated: '#1E1E2A',
29
+ border: '#2A2A3A',
30
+ text: '#E8E8ED',
31
+ textSecondary: '#A0A0B0',
32
+ textMuted: '#606075',
33
+ accent: '#7C5CFC',
34
+ accentDim: 'rgba(124, 92, 252, 0.15)',
35
+ error: '#FF4D6A',
36
+ errorDim: 'rgba(255, 77, 106, 0.12)',
37
+ warning: '#FFB224',
38
+ warningDim: 'rgba(255, 178, 36, 0.12)',
39
+ success: '#34D399',
40
+ info: '#38BDF8',
41
+ infoDim: 'rgba(56, 189, 248, 0.12)',
42
+ debugColor: '#A78BFA',
43
+ debugDim: 'rgba(167, 139, 250, 0.12)'
44
+ };
45
+
46
+ // ─── Max Logs ────────────────────────────────────────────────────────────────
47
+
48
+ export const DEFAULT_MAX_LOGS = 500;
49
+
50
+ // ─── Monospace Font ──────────────────────────────────────────────────────────
51
+
52
+ export const MonospaceFont = Platform.select({
53
+ ios: 'Menlo',
54
+ default: 'monospace'
55
+ });
56
+
57
+ // ─── Test IDs ────────────────────────────────────────────────────────────────
58
+
59
+ export const TestIDs = {
60
+ floatingPill: 'backstage.floating-pill',
61
+ panel: 'backstage.panel',
62
+ header: {
63
+ container: 'backstage.header',
64
+ title: 'backstage.header.title',
65
+ closeButton: 'backstage.header.close'
66
+ },
67
+ tabBar: 'backstage.tab-bar',
68
+ tabs: {
69
+ info: 'backstage.tab.info',
70
+ logs: 'backstage.tab.logs'
71
+ },
72
+ infoTab: {
73
+ section: 'backstage.info',
74
+ deviceInfo: 'backstage.info.device',
75
+ stateTree: 'backstage.info.state-tree',
76
+ quickActions: 'backstage.info.quick-actions'
77
+ },
78
+ logsTab: {
79
+ section: 'backstage.logs',
80
+ searchInput: 'backstage.logs.search',
81
+ copyButton: 'backstage.logs.copy',
82
+ list: 'backstage.logs.list'
83
+ }
84
+ };
85
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Dimensions","Platform","width","screenWidth","height","screenHeight","get","Metrics","isIOS","OS","pillWidth","pillHeight","panelBorderRadius","tabBarHeight","headerHeight","sectionSpacing","contentPadding","DarkTheme","background","surface","surfaceElevated","border","text","textSecondary","textMuted","accent","accentDim","error","errorDim","warning","warningDim","success","info","infoDim","debugColor","debugDim","DEFAULT_MAX_LOGS","MonospaceFont","select","ios","default","TestIDs","floatingPill","panel","header","container","title","closeButton","tabBar","tabs","logs","infoTab","section","deviceInfo","stateTree","quickActions","logsTab","searchInput","copyButton","list"],"sourceRoot":"../../src","sources":["constants.ts"],"mappings":";;AAAA,SAASA,UAAU,EAAEC,QAAQ,QAAQ,cAAc;AAGnD;;AAEA,MAAM;EAAEC,KAAK,EAAEC,WAAW;EAAEC,MAAM,EAAEC;AAAa,CAAC,GAAGL,UAAU,CAACM,GAAG,CAAC,QAAQ,CAAC;AAE7E,OAAO,MAAMC,OAAO,GAAG;EACrBJ,WAAW;EACXE,YAAY;EACZG,KAAK,EAAEP,QAAQ,CAACQ,EAAE,KAAK,KAAK;EAC5BC,SAAS,EAAE,EAAE;EACbC,UAAU,EAAE,EAAE;EACdC,iBAAiB,EAAE,EAAE;EACrBC,YAAY,EAAE,EAAE;EAChBC,YAAY,EAAE,EAAE;EAChBC,cAAc,EAAE,EAAE;EAClBC,cAAc,EAAE;AAClB,CAAC;;AAED;;AAEA,OAAO,MAAMC,SAAyB,GAAG;EACvCC,UAAU,EAAE,SAAS;EACrBC,OAAO,EAAE,SAAS;EAClBC,eAAe,EAAE,SAAS;EAC1BC,MAAM,EAAE,SAAS;EACjBC,IAAI,EAAE,SAAS;EACfC,aAAa,EAAE,SAAS;EACxBC,SAAS,EAAE,SAAS;EACpBC,MAAM,EAAE,SAAS;EACjBC,SAAS,EAAE,0BAA0B;EACrCC,KAAK,EAAE,SAAS;EAChBC,QAAQ,EAAE,0BAA0B;EACpCC,OAAO,EAAE,SAAS;EAClBC,UAAU,EAAE,0BAA0B;EACtCC,OAAO,EAAE,SAAS;EAClBC,IAAI,EAAE,SAAS;EACfC,OAAO,EAAE,0BAA0B;EACnCC,UAAU,EAAE,SAAS;EACrBC,QAAQ,EAAE;AACZ,CAAC;;AAED;;AAEA,OAAO,MAAMC,gBAAgB,GAAG,GAAG;;AAEnC;;AAEA,OAAO,MAAMC,aAAa,GAAGpC,QAAQ,CAACqC,MAAM,CAAC;EAC3CC,GAAG,EAAE,OAAO;EACZC,OAAO,EAAE;AACX,CAAC,CAAC;;AAEF;;AAEA,OAAO,MAAMC,OAAO,GAAG;EACrBC,YAAY,EAAE,yBAAyB;EACvCC,KAAK,EAAE,iBAAiB;EACxBC,MAAM,EAAE;IACNC,SAAS,EAAE,kBAAkB;IAC7BC,KAAK,EAAE,wBAAwB;IAC/BC,WAAW,EAAE;EACf,CAAC;EACDC,MAAM,EAAE,mBAAmB;EAC3BC,IAAI,EAAE;IACJjB,IAAI,EAAE,oBAAoB;IAC1BkB,IAAI,EAAE;EACR,CAAC;EACDC,OAAO,EAAE;IACPC,OAAO,EAAE,gBAAgB;IACzBC,UAAU,EAAE,uBAAuB;IACnCC,SAAS,EAAE,2BAA2B;IACtCC,YAAY,EAAE;EAChB,CAAC;EACDC,OAAO,EAAE;IACPJ,OAAO,EAAE,gBAAgB;IACzBK,WAAW,EAAE,uBAAuB;IACpCC,UAAU,EAAE,qBAAqB;IACjCC,IAAI,EAAE;EACR;AACF,CAAC","ignoreList":[]}
@@ -0,0 +1,5 @@
1
+ "use strict";
2
+
3
+ export { Backstage } from './Backstage';
4
+ export { LogLevel } from './types';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["Backstage","LogLevel"],"sourceRoot":"../../src","sources":["index.ts"],"mappings":";;AAAA,SAASA,SAAS,QAAQ,aAAa;AAavC,SAASC,QAAQ,QAAQ,SAAS","ignoreList":[]}
@@ -0,0 +1,108 @@
1
+ "use strict";
2
+
3
+ import { LogLevel } from './types';
4
+ import { formatLogMessage } from './utils/stringify';
5
+ import { DEFAULT_MAX_LOGS } from './constants';
6
+
7
+ // ─── Original Console Methods ────────────────────────────────────────────────
8
+
9
+ const originalConsole = {
10
+ log: console.log,
11
+ debug: console.debug,
12
+ info: console.info,
13
+ warn: console.warn,
14
+ error: console.error
15
+ };
16
+ let activeCallback = null;
17
+ let isInstalled = false;
18
+
19
+ // ─── Helpers ─────────────────────────────────────────────────────────────────
20
+
21
+ function generateId() {
22
+ return `${Date.now()}_${Math.random().toString(36).substring(2, 9)}`;
23
+ }
24
+ function createLogEntry(level, message, optionalParams) {
25
+ const formattedMessage = formatLogMessage(message, optionalParams);
26
+ const hasObjectData = typeof message === 'object' && message !== null || optionalParams.some(p => typeof p === 'object' && p !== null);
27
+ return {
28
+ id: generateId(),
29
+ level,
30
+ message: formattedMessage,
31
+ data: hasObjectData ? {
32
+ message,
33
+ params: optionalParams
34
+ } : undefined,
35
+ timestamp: Date.now()
36
+ };
37
+ }
38
+ function shouldLog(message, filters) {
39
+ if (filters.length === 0) return true;
40
+ const messageStr = typeof message === 'string' ? message.toLowerCase() : typeof message === 'object' && message !== null ? JSON.stringify(message).toLowerCase() : String(message).toLowerCase();
41
+ return !filters.some(filter => messageStr.includes(filter.toLowerCase()));
42
+ }
43
+
44
+ // ─── Install / Uninstall ─────────────────────────────────────────────────────
45
+
46
+ export function installInterceptor(callback, filters = []) {
47
+ if (isInstalled) {
48
+ // Just update callback if already installed
49
+ activeCallback = callback;
50
+ return;
51
+ }
52
+ activeCallback = callback;
53
+ isInstalled = true;
54
+ const levels = [[LogLevel.log, 'log'], [LogLevel.debug, 'debug'], [LogLevel.info, 'info'], [LogLevel.warn, 'warn'], [LogLevel.error, 'error']];
55
+ for (const [level, method] of levels) {
56
+ console[method] = (message, ...optionalParams) => {
57
+ // Always forward to original console
58
+ originalConsole[method](message, ...optionalParams);
59
+
60
+ // Check filters
61
+ if (!shouldLog(message, filters)) return;
62
+
63
+ // Create log entry and notify
64
+ if (activeCallback) {
65
+ const entry = createLogEntry(level, message, optionalParams);
66
+ activeCallback(entry);
67
+ }
68
+ };
69
+ }
70
+ }
71
+ export function uninstallInterceptor() {
72
+ if (!isInstalled) return;
73
+ console.log = originalConsole.log;
74
+ console.debug = originalConsole.debug;
75
+ console.info = originalConsole.info;
76
+ console.warn = originalConsole.warn;
77
+ console.error = originalConsole.error;
78
+ activeCallback = null;
79
+ isInstalled = false;
80
+ }
81
+
82
+ // ─── Log Buffer ──────────────────────────────────────────────────────────────
83
+
84
+ export class LogBuffer {
85
+ logs = [];
86
+ constructor(maxSize = DEFAULT_MAX_LOGS) {
87
+ this.maxSize = maxSize;
88
+ }
89
+ push(entry) {
90
+ this.logs.unshift(entry);
91
+ if (this.logs.length > this.maxSize) {
92
+ this.logs = this.logs.slice(0, this.maxSize);
93
+ }
94
+ }
95
+ getAll() {
96
+ return [...this.logs];
97
+ }
98
+ clear() {
99
+ this.logs = [];
100
+ }
101
+ get hasErrors() {
102
+ return this.logs.some(log => log.level === LogLevel.error);
103
+ }
104
+ get size() {
105
+ return this.logs.length;
106
+ }
107
+ }
108
+ //# sourceMappingURL=log-interceptor.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["LogLevel","formatLogMessage","DEFAULT_MAX_LOGS","originalConsole","log","console","debug","info","warn","error","activeCallback","isInstalled","generateId","Date","now","Math","random","toString","substring","createLogEntry","level","message","optionalParams","formattedMessage","hasObjectData","some","p","id","data","params","undefined","timestamp","shouldLog","filters","length","messageStr","toLowerCase","JSON","stringify","String","filter","includes","installInterceptor","callback","levels","method","entry","uninstallInterceptor","LogBuffer","logs","constructor","maxSize","push","unshift","slice","getAll","clear","hasErrors","size"],"sourceRoot":"../../src","sources":["log-interceptor.ts"],"mappings":";;AAAA,SAASA,QAAQ,QAAQ,SAAS;AAElC,SAASC,gBAAgB,QAAQ,mBAAmB;AACpD,SAASC,gBAAgB,QAAQ,aAAa;;AAE9C;;AAEA,MAAMC,eAAe,GAAG;EACtBC,GAAG,EAAEC,OAAO,CAACD,GAAG;EAChBE,KAAK,EAAED,OAAO,CAACC,KAAK;EACpBC,IAAI,EAAEF,OAAO,CAACE,IAAI;EAClBC,IAAI,EAAEH,OAAO,CAACG,IAAI;EAClBC,KAAK,EAAEJ,OAAO,CAACI;AACjB,CAAC;AAID,IAAIC,cAAkC,GAAG,IAAI;AAC7C,IAAIC,WAAW,GAAG,KAAK;;AAEvB;;AAEA,SAASC,UAAUA,CAAA,EAAW;EAC5B,OAAO,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC,IAAIC,IAAI,CAACC,MAAM,CAAC,CAAC,CAACC,QAAQ,CAAC,EAAE,CAAC,CAACC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE;AACtE;AAEA,SAASC,cAAcA,CAACC,KAAe,EAAEC,OAAgB,EAAEC,cAAyB,EAAY;EAC9F,MAAMC,gBAAgB,GAAGtB,gBAAgB,CAACoB,OAAO,EAAEC,cAAc,CAAC;EAClE,MAAME,aAAa,GAChB,OAAOH,OAAO,KAAK,QAAQ,IAAIA,OAAO,KAAK,IAAI,IAChDC,cAAc,CAACG,IAAI,CAACC,CAAC,IAAI,OAAOA,CAAC,KAAK,QAAQ,IAAIA,CAAC,KAAK,IAAI,CAAC;EAE/D,OAAO;IACLC,EAAE,EAAEf,UAAU,CAAC,CAAC;IAChBQ,KAAK;IACLC,OAAO,EAAEE,gBAAgB;IACzBK,IAAI,EAAEJ,aAAa,GAAG;MAAEH,OAAO;MAAEQ,MAAM,EAAEP;IAAe,CAAC,GAAGQ,SAAS;IACrEC,SAAS,EAAElB,IAAI,CAACC,GAAG,CAAC;EACtB,CAAC;AACH;AAEA,SAASkB,SAASA,CAACX,OAAgB,EAAEY,OAAiB,EAAW;EAC/D,IAAIA,OAAO,CAACC,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI;EAErC,MAAMC,UAAU,GACd,OAAOd,OAAO,KAAK,QAAQ,GACvBA,OAAO,CAACe,WAAW,CAAC,CAAC,GACrB,OAAOf,OAAO,KAAK,QAAQ,IAAIA,OAAO,KAAK,IAAI,GAC7CgB,IAAI,CAACC,SAAS,CAACjB,OAAO,CAAC,CAACe,WAAW,CAAC,CAAC,GACrCG,MAAM,CAAClB,OAAO,CAAC,CAACe,WAAW,CAAC,CAAC;EAErC,OAAO,CAACH,OAAO,CAACR,IAAI,CAACe,MAAM,IAAIL,UAAU,CAACM,QAAQ,CAACD,MAAM,CAACJ,WAAW,CAAC,CAAC,CAAC,CAAC;AAC3E;;AAEA;;AAEA,OAAO,SAASM,kBAAkBA,CAACC,QAAqB,EAAEV,OAAiB,GAAG,EAAE,EAAQ;EACtF,IAAItB,WAAW,EAAE;IACf;IACAD,cAAc,GAAGiC,QAAQ;IACzB;EACF;EAEAjC,cAAc,GAAGiC,QAAQ;EACzBhC,WAAW,GAAG,IAAI;EAElB,MAAMiC,MAAuD,GAAG,CAC9D,CAAC5C,QAAQ,CAACI,GAAG,EAAE,KAAK,CAAC,EACrB,CAACJ,QAAQ,CAACM,KAAK,EAAE,OAAO,CAAC,EACzB,CAACN,QAAQ,CAACO,IAAI,EAAE,MAAM,CAAC,EACvB,CAACP,QAAQ,CAACQ,IAAI,EAAE,MAAM,CAAC,EACvB,CAACR,QAAQ,CAACS,KAAK,EAAE,OAAO,CAAC,CAC1B;EAED,KAAK,MAAM,CAACW,KAAK,EAAEyB,MAAM,CAAC,IAAID,MAAM,EAAE;IACpCvC,OAAO,CAACwC,MAAM,CAAC,GAAG,CAACxB,OAAiB,EAAE,GAAGC,cAAyB,KAAK;MACrE;MACAnB,eAAe,CAAC0C,MAAM,CAAC,CAACxB,OAAO,EAAE,GAAGC,cAAc,CAAC;;MAEnD;MACA,IAAI,CAACU,SAAS,CAACX,OAAO,EAAEY,OAAO,CAAC,EAAE;;MAElC;MACA,IAAIvB,cAAc,EAAE;QAClB,MAAMoC,KAAK,GAAG3B,cAAc,CAACC,KAAK,EAAEC,OAAO,EAAEC,cAAc,CAAC;QAC5DZ,cAAc,CAACoC,KAAK,CAAC;MACvB;IACF,CAAC;EACH;AACF;AAEA,OAAO,SAASC,oBAAoBA,CAAA,EAAS;EAC3C,IAAI,CAACpC,WAAW,EAAE;EAElBN,OAAO,CAACD,GAAG,GAAGD,eAAe,CAACC,GAAG;EACjCC,OAAO,CAACC,KAAK,GAAGH,eAAe,CAACG,KAAK;EACrCD,OAAO,CAACE,IAAI,GAAGJ,eAAe,CAACI,IAAI;EACnCF,OAAO,CAACG,IAAI,GAAGL,eAAe,CAACK,IAAI;EACnCH,OAAO,CAACI,KAAK,GAAGN,eAAe,CAACM,KAAK;EAErCC,cAAc,GAAG,IAAI;EACrBC,WAAW,GAAG,KAAK;AACrB;;AAEA;;AAEA,OAAO,MAAMqC,SAAS,CAAC;EACbC,IAAI,GAAe,EAAE;EAG7BC,WAAWA,CAACC,OAAO,GAAGjD,gBAAgB,EAAE;IACtC,IAAI,CAACiD,OAAO,GAAGA,OAAO;EACxB;EAEAC,IAAIA,CAACN,KAAe,EAAQ;IAC1B,IAAI,CAACG,IAAI,CAACI,OAAO,CAACP,KAAK,CAAC;IACxB,IAAI,IAAI,CAACG,IAAI,CAACf,MAAM,GAAG,IAAI,CAACiB,OAAO,EAAE;MACnC,IAAI,CAACF,IAAI,GAAG,IAAI,CAACA,IAAI,CAACK,KAAK,CAAC,CAAC,EAAE,IAAI,CAACH,OAAO,CAAC;IAC9C;EACF;EAEAI,MAAMA,CAAA,EAAe;IACnB,OAAO,CAAC,GAAG,IAAI,CAACN,IAAI,CAAC;EACvB;EAEAO,KAAKA,CAAA,EAAS;IACZ,IAAI,CAACP,IAAI,GAAG,EAAE;EAChB;EAEA,IAAIQ,SAASA,CAAA,EAAY;IACvB,OAAO,IAAI,CAACR,IAAI,CAACxB,IAAI,CAACrB,GAAG,IAAIA,GAAG,CAACgB,KAAK,KAAKpB,QAAQ,CAACS,KAAK,CAAC;EAC5D;EAEA,IAAIiD,IAAIA,CAAA,EAAW;IACjB,OAAO,IAAI,CAACT,IAAI,CAACf,MAAM;EACzB;AACF","ignoreList":[]}
@@ -0,0 +1 @@
1
+ {"type":"module"}
@@ -0,0 +1,25 @@
1
+ "use strict";
2
+
3
+ // ─── Log Types ───────────────────────────────────────────────────────────────
4
+
5
+ export let LogLevel = /*#__PURE__*/function (LogLevel) {
6
+ LogLevel["log"] = "log";
7
+ LogLevel["debug"] = "debug";
8
+ LogLevel["info"] = "info";
9
+ LogLevel["warn"] = "warn";
10
+ LogLevel["error"] = "error";
11
+ return LogLevel;
12
+ }({});
13
+
14
+ // ─── App Info ────────────────────────────────────────────────────────────────
15
+
16
+ // ─── Quick Actions ───────────────────────────────────────────────────────────
17
+
18
+ // ─── Extensible Tabs ─────────────────────────────────────────────────────────
19
+
20
+ // ─── Theme ───────────────────────────────────────────────────────────────────
21
+
22
+ // ─── Main Props ──────────────────────────────────────────────────────────────
23
+
24
+ // ─── Ref Methods ─────────────────────────────────────────────────────────────
25
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["LogLevel"],"sourceRoot":"../../src","sources":["types.ts"],"mappings":";;AAGA;;AAEA,WAAYA,QAAQ,0BAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAARA,QAAQ;EAAA,OAARA,QAAQ;AAAA;;AAgBpB;;AAOA;;AAWA;;AASA;;AAuBA;;AAkEA","ignoreList":[]}
@@ -0,0 +1,22 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Formats a timestamp (Date.now()) into a human-readable local time string.
5
+ * Format: "h:mm:ss.SSS AM/PM"
6
+ * No external dependencies — uses native Date API.
7
+ */
8
+ export function formatTimestamp(timestamp) {
9
+ const date = new Date(timestamp);
10
+ let hours = date.getHours();
11
+ const minutes = date.getMinutes();
12
+ const seconds = date.getSeconds();
13
+ const milliseconds = date.getMilliseconds();
14
+ const ampm = hours >= 12 ? 'PM' : 'AM';
15
+ hours = hours % 12;
16
+ hours = hours || 12;
17
+ const mm = minutes.toString().padStart(2, '0');
18
+ const ss = seconds.toString().padStart(2, '0');
19
+ const ms = milliseconds.toString().padStart(3, '0');
20
+ return `${hours}:${mm}:${ss}.${ms} ${ampm}`;
21
+ }
22
+ //# sourceMappingURL=formatTimestamp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["formatTimestamp","timestamp","date","Date","hours","getHours","minutes","getMinutes","seconds","getSeconds","milliseconds","getMilliseconds","ampm","mm","toString","padStart","ss","ms"],"sourceRoot":"../../../src","sources":["utils/formatTimestamp.ts"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA,OAAO,SAASA,eAAeA,CAACC,SAAiB,EAAU;EACzD,MAAMC,IAAI,GAAG,IAAIC,IAAI,CAACF,SAAS,CAAC;EAChC,IAAIG,KAAK,GAAGF,IAAI,CAACG,QAAQ,CAAC,CAAC;EAC3B,MAAMC,OAAO,GAAGJ,IAAI,CAACK,UAAU,CAAC,CAAC;EACjC,MAAMC,OAAO,GAAGN,IAAI,CAACO,UAAU,CAAC,CAAC;EACjC,MAAMC,YAAY,GAAGR,IAAI,CAACS,eAAe,CAAC,CAAC;EAC3C,MAAMC,IAAI,GAAGR,KAAK,IAAI,EAAE,GAAG,IAAI,GAAG,IAAI;EAEtCA,KAAK,GAAGA,KAAK,GAAG,EAAE;EAClBA,KAAK,GAAGA,KAAK,IAAI,EAAE;EAEnB,MAAMS,EAAE,GAAGP,OAAO,CAACQ,QAAQ,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;EAC9C,MAAMC,EAAE,GAAGR,OAAO,CAACM,QAAQ,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;EAC9C,MAAME,EAAE,GAAGP,YAAY,CAACI,QAAQ,CAAC,CAAC,CAACC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC;EAEnD,OAAO,GAAGX,KAAK,IAAIS,EAAE,IAAIG,EAAE,IAAIC,EAAE,IAAIL,IAAI,EAAE;AAC7C","ignoreList":[]}
@@ -0,0 +1,73 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * Safely stringifies a value, handling circular references and Error objects.
5
+ */
6
+ export function safeStringify(value, indent = 2) {
7
+ if (value === undefined) return 'undefined';
8
+ if (value === null) return 'null';
9
+ if (value instanceof Error) {
10
+ return JSON.stringify({
11
+ name: value.name,
12
+ message: value.message,
13
+ stack: value.stack
14
+ }, null, indent);
15
+ }
16
+ const seen = new WeakSet();
17
+ try {
18
+ return JSON.stringify(value, (_key, val) => {
19
+ if (typeof val === 'object' && val !== null) {
20
+ if (seen.has(val)) {
21
+ return '[Circular]';
22
+ }
23
+ seen.add(val);
24
+ }
25
+ if (typeof val === 'bigint') {
26
+ return val.toString();
27
+ }
28
+ if (typeof val === 'function') {
29
+ return `[Function: ${val.name || 'anonymous'}]`;
30
+ }
31
+ if (typeof val === 'symbol') {
32
+ return val.toString();
33
+ }
34
+ return val;
35
+ }, indent);
36
+ } catch {
37
+ return String(value);
38
+ }
39
+ }
40
+
41
+ /**
42
+ * Formats a console message and its optional params into a single string.
43
+ */
44
+ export function formatLogMessage(message, optionalParams) {
45
+ const parts = [];
46
+ if (message instanceof Error) {
47
+ parts.push(`${message.name}: ${message.message}`);
48
+ } else if (typeof message === 'object' && message !== null) {
49
+ parts.push(safeStringify(message, 0));
50
+ } else if (typeof message === 'string') {
51
+ // Strip console color formatting (%c)
52
+ parts.push(message.replace(/%c/g, '').trim());
53
+ } else {
54
+ parts.push(String(message));
55
+ }
56
+ if (optionalParams && optionalParams.length > 0) {
57
+ for (const param of optionalParams) {
58
+ if (typeof param === 'string' && isColorString(param)) {
59
+ continue; // skip css color strings from console.log('%c ...', 'color: ...')
60
+ }
61
+ if (typeof param === 'object' && param !== null) {
62
+ parts.push(safeStringify(param, 0));
63
+ } else {
64
+ parts.push(String(param));
65
+ }
66
+ }
67
+ }
68
+ return parts.join(' ');
69
+ }
70
+ function isColorString(str) {
71
+ return str.includes('color:') || str.includes('background:') || str.includes('font-') || /^#[0-9A-Fa-f]{3,8}$/.test(str.trim());
72
+ }
73
+ //# sourceMappingURL=stringify.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["safeStringify","value","indent","undefined","Error","JSON","stringify","name","message","stack","seen","WeakSet","_key","val","has","add","toString","String","formatLogMessage","optionalParams","parts","push","replace","trim","length","param","isColorString","join","str","includes","test"],"sourceRoot":"../../../src","sources":["utils/stringify.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,4 @@
1
+ import React from 'react';
2
+ import type { BackstageProps, BackstageRef } from './types';
3
+ export declare const Backstage: React.ForwardRefExoticComponent<BackstageProps & React.RefAttributes<BackstageRef>>;
4
+ //# sourceMappingURL=Backstage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Backstage.d.ts","sourceRoot":"","sources":["../../src/Backstage.tsx"],"names":[],"mappings":"AAAA,OAAO,KAON,MAAM,OAAO,CAAA;AAMd,OAAO,KAAK,EAAE,cAAc,EAAE,YAAY,EAAY,MAAM,SAAS,CAAA;AAIrE,eAAO,MAAM,SAAS,qFAmHrB,CAAA"}
@@ -0,0 +1,21 @@
1
+ import React from 'react';
2
+ import type { AppInfoItem, BackstageStyleOverrides, BackstageTab, LogEntry, QuickAction } from '../types';
3
+ interface BackstagePanelProps {
4
+ visible: boolean;
5
+ onClose: () => void;
6
+ appVersion?: string;
7
+ buildNumber?: string;
8
+ bundleId?: string;
9
+ deviceInfo?: AppInfoItem[];
10
+ state?: Record<string, unknown>;
11
+ quickActions?: QuickAction[];
12
+ logs: LogEntry[];
13
+ onRefreshLogs: () => void;
14
+ onCopyLogs?: (logs: string) => void;
15
+ extraTabs?: BackstageTab[];
16
+ styles?: BackstageStyleOverrides;
17
+ children?: React.ReactNode;
18
+ }
19
+ export declare const BackstagePanel: React.FC<BackstagePanelProps>;
20
+ export {};
21
+ //# sourceMappingURL=BackstagePanel.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"BackstagePanel.d.ts","sourceRoot":"","sources":["../../../src/components/BackstagePanel.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAmB,MAAM,OAAO,CAAA;AAcvC,OAAO,KAAK,EACV,WAAW,EACX,uBAAuB,EACvB,YAAY,EACZ,QAAQ,EACR,WAAW,EACZ,MAAM,UAAU,CAAA;AAIjB,UAAU,mBAAmB;IAC3B,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,MAAM,IAAI,CAAA;IAGnB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,WAAW,EAAE,CAAA;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/B,YAAY,CAAC,EAAE,WAAW,EAAE,CAAA;IAG5B,IAAI,EAAE,QAAQ,EAAE,CAAA;IAChB,aAAa,EAAE,MAAM,IAAI,CAAA;IACzB,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAGnC,SAAS,CAAC,EAAE,YAAY,EAAE,CAAA;IAG1B,MAAM,CAAC,EAAE,uBAAuB,CAAA;IAChC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC3B;AAWD,eAAO,MAAM,cAAc,EAAE,KAAK,CAAC,EAAE,CAAC,mBAAmB,CAkGxD,CAAA"}
@@ -0,0 +1,13 @@
1
+ import React from 'react';
2
+ import type { BackstageStyleOverrides } from '../types';
3
+ interface FloatingPillProps {
4
+ text: string;
5
+ hasError: boolean;
6
+ onPress: () => void;
7
+ initialX?: number;
8
+ initialY?: number;
9
+ styles?: BackstageStyleOverrides;
10
+ }
11
+ export declare const FloatingPill: React.FC<FloatingPillProps>;
12
+ export {};
13
+ //# sourceMappingURL=FloatingPill.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"FloatingPill.d.ts","sourceRoot":"","sources":["../../../src/components/FloatingPill.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAiB,MAAM,OAAO,CAAA;AAGrC,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAA;AAIvD,UAAU,iBAAiB;IACzB,IAAI,EAAE,MAAM,CAAA;IACZ,QAAQ,EAAE,OAAO,CAAA;IACjB,OAAO,EAAE,MAAM,IAAI,CAAA;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,MAAM,CAAC,EAAE,uBAAuB,CAAA;CACjC;AAkBD,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CA2FpD,CAAA"}
@@ -0,0 +1,16 @@
1
+ import React from 'react';
2
+ import type { AppInfoItem, BackstageStyleOverrides, QuickAction } from '../types';
3
+ interface InfoTabProps {
4
+ appVersion?: string;
5
+ buildNumber?: string;
6
+ bundleId?: string;
7
+ deviceInfo?: AppInfoItem[];
8
+ state?: Record<string, unknown>;
9
+ quickActions?: QuickAction[];
10
+ onClosePanel?: () => void;
11
+ styles?: BackstageStyleOverrides;
12
+ children?: React.ReactNode;
13
+ }
14
+ export declare const InfoTab: React.FC<InfoTabProps>;
15
+ export {};
16
+ //# sourceMappingURL=InfoTab.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InfoTab.d.ts","sourceRoot":"","sources":["../../../src/components/InfoTab.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAA;AAIzB,OAAO,KAAK,EAAE,WAAW,EAAE,uBAAuB,EAAE,WAAW,EAAE,MAAM,UAAU,CAAA;AAIjF,UAAU,YAAY;IACpB,UAAU,CAAC,EAAE,MAAM,CAAA;IACnB,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,UAAU,CAAC,EAAE,WAAW,EAAE,CAAA;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC/B,YAAY,CAAC,EAAE,WAAW,EAAE,CAAA;IAC5B,YAAY,CAAC,EAAE,MAAM,IAAI,CAAA;IACzB,MAAM,CAAC,EAAE,uBAAuB,CAAA;IAChC,QAAQ,CAAC,EAAE,KAAK,CAAC,SAAS,CAAA;CAC3B;AAqED,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CAqF1C,CAAA"}
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ interface JsonTreeViewProps {
3
+ data: unknown;
4
+ hideRoot?: boolean;
5
+ initialExpanded?: boolean;
6
+ maxDepth?: number;
7
+ }
8
+ export declare const JsonTreeView: React.FC<JsonTreeViewProps>;
9
+ export {};
10
+ //# sourceMappingURL=JsonTreeView.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"JsonTreeView.d.ts","sourceRoot":"","sources":["../../../src/components/JsonTreeView.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgC,MAAM,OAAO,CAAA;AAmBpD,UAAU,iBAAiB;IACzB,IAAI,EAAE,OAAO,CAAA;IACb,QAAQ,CAAC,EAAE,OAAO,CAAA;IAClB,eAAe,CAAC,EAAE,OAAO,CAAA;IACzB,QAAQ,CAAC,EAAE,MAAM,CAAA;CAClB;AA4ID,eAAO,MAAM,YAAY,EAAE,KAAK,CAAC,EAAE,CAAC,iBAAiB,CA8CpD,CAAA"}
@@ -0,0 +1,10 @@
1
+ import React from 'react';
2
+ import type { LogEntry, BackstageStyleOverrides } from '../types';
3
+ interface LogItemProps {
4
+ item: LogEntry;
5
+ onCopy?: (text: string) => void;
6
+ styles?: BackstageStyleOverrides;
7
+ }
8
+ export declare const LogItem: React.FC<LogItemProps>;
9
+ export {};
10
+ //# sourceMappingURL=LogItem.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LogItem.d.ts","sourceRoot":"","sources":["../../../src/components/LogItem.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAgC,MAAM,OAAO,CAAA;AAIpD,OAAO,KAAK,EAAE,QAAQ,EAAE,uBAAuB,EAAE,MAAM,UAAU,CAAA;AAMjE,UAAU,YAAY;IACpB,IAAI,EAAE,QAAQ,CAAA;IACd,MAAM,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAA;IAC/B,MAAM,CAAC,EAAE,uBAAuB,CAAA;CACjC;AAmDD,eAAO,MAAM,OAAO,EAAE,KAAK,CAAC,EAAE,CAAC,YAAY,CA+D1C,CAAA"}