@buoy-gg/images 7.0.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +58 -0
- package/README.md +58 -0
- package/lib/commonjs/capture/actions.js +227 -0
- package/lib/commonjs/capture/actions.js.map +1 -0
- package/lib/commonjs/capture/install.js +41 -0
- package/lib/commonjs/capture/install.js.map +1 -0
- package/lib/commonjs/capture/installExpoImage.js +99 -0
- package/lib/commonjs/capture/installExpoImage.js.map +1 -0
- package/lib/commonjs/capture/installRnImage.js +128 -0
- package/lib/commonjs/capture/installRnImage.js.map +1 -0
- package/lib/commonjs/capture/overrides.js +286 -0
- package/lib/commonjs/capture/overrides.js.map +1 -0
- package/lib/commonjs/capture/savings.js +193 -0
- package/lib/commonjs/capture/savings.js.map +1 -0
- package/lib/commonjs/capture/shared.js +367 -0
- package/lib/commonjs/capture/shared.js.map +1 -0
- package/lib/commonjs/components/ImageDetail.js +444 -0
- package/lib/commonjs/components/ImageDetail.js.map +1 -0
- package/lib/commonjs/components/ImageDetailFooter.js +232 -0
- package/lib/commonjs/components/ImageDetailFooter.js.map +1 -0
- package/lib/commonjs/components/ImageRow.js +164 -0
- package/lib/commonjs/components/ImageRow.js.map +1 -0
- package/lib/commonjs/components/ImagesHeader.js +63 -0
- package/lib/commonjs/components/ImagesHeader.js.map +1 -0
- package/lib/commonjs/components/ImagesIcon.js +59 -0
- package/lib/commonjs/components/ImagesIcon.js.map +1 -0
- package/lib/commonjs/components/ImagesListFooter.js +194 -0
- package/lib/commonjs/components/ImagesListFooter.js.map +1 -0
- package/lib/commonjs/components/ImagesModal.js +173 -0
- package/lib/commonjs/components/ImagesModal.js.map +1 -0
- package/lib/commonjs/components/ImagesRoot.js +24 -0
- package/lib/commonjs/components/ImagesRoot.js.map +1 -0
- package/lib/commonjs/components/InsightsBar.js +59 -0
- package/lib/commonjs/components/InsightsBar.js.map +1 -0
- package/lib/commonjs/export.js +81 -0
- package/lib/commonjs/export.js.map +1 -0
- package/lib/commonjs/format.js +117 -0
- package/lib/commonjs/format.js.map +1 -0
- package/lib/commonjs/hooks/useImageRecords.js +20 -0
- package/lib/commonjs/hooks/useImageRecords.js.map +1 -0
- package/lib/commonjs/index.js +236 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/package.json +1 -0
- package/lib/commonjs/preset.js +45 -0
- package/lib/commonjs/preset.js.map +1 -0
- package/lib/commonjs/register.js +19 -0
- package/lib/commonjs/register.js.map +1 -0
- package/lib/commonjs/state.js +54 -0
- package/lib/commonjs/state.js.map +1 -0
- package/lib/commonjs/store/imageEventStore.js +160 -0
- package/lib/commonjs/store/imageEventStore.js.map +1 -0
- package/lib/commonjs/store/insights.js +76 -0
- package/lib/commonjs/store/insights.js.map +1 -0
- package/lib/commonjs/sync/imagesSyncAdapter.js +315 -0
- package/lib/commonjs/sync/imagesSyncAdapter.js.map +1 -0
- package/lib/commonjs/types.js +2 -0
- package/lib/commonjs/types.js.map +1 -0
- package/lib/module/capture/actions.js +214 -0
- package/lib/module/capture/actions.js.map +1 -0
- package/lib/module/capture/install.js +36 -0
- package/lib/module/capture/install.js.map +1 -0
- package/lib/module/capture/installExpoImage.js +94 -0
- package/lib/module/capture/installExpoImage.js.map +1 -0
- package/lib/module/capture/installRnImage.js +122 -0
- package/lib/module/capture/installRnImage.js.map +1 -0
- package/lib/module/capture/overrides.js +269 -0
- package/lib/module/capture/overrides.js.map +1 -0
- package/lib/module/capture/savings.js +189 -0
- package/lib/module/capture/savings.js.map +1 -0
- package/lib/module/capture/shared.js +359 -0
- package/lib/module/capture/shared.js.map +1 -0
- package/lib/module/components/ImageDetail.js +440 -0
- package/lib/module/components/ImageDetail.js.map +1 -0
- package/lib/module/components/ImageDetailFooter.js +228 -0
- package/lib/module/components/ImageDetailFooter.js.map +1 -0
- package/lib/module/components/ImageRow.js +160 -0
- package/lib/module/components/ImageRow.js.map +1 -0
- package/lib/module/components/ImagesHeader.js +59 -0
- package/lib/module/components/ImagesHeader.js.map +1 -0
- package/lib/module/components/ImagesIcon.js +55 -0
- package/lib/module/components/ImagesIcon.js.map +1 -0
- package/lib/module/components/ImagesListFooter.js +190 -0
- package/lib/module/components/ImagesListFooter.js.map +1 -0
- package/lib/module/components/ImagesModal.js +169 -0
- package/lib/module/components/ImagesModal.js.map +1 -0
- package/lib/module/components/ImagesRoot.js +20 -0
- package/lib/module/components/ImagesRoot.js.map +1 -0
- package/lib/module/components/InsightsBar.js +55 -0
- package/lib/module/components/InsightsBar.js.map +1 -0
- package/lib/module/export.js +76 -0
- package/lib/module/export.js.map +1 -0
- package/lib/module/format.js +108 -0
- package/lib/module/format.js.map +1 -0
- package/lib/module/hooks/useImageRecords.js +16 -0
- package/lib/module/hooks/useImageRecords.js.map +1 -0
- package/lib/module/index.js +73 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/preset.js +40 -0
- package/lib/module/preset.js.map +1 -0
- package/lib/module/register.js +19 -0
- package/lib/module/register.js.map +1 -0
- package/lib/module/state.js +50 -0
- package/lib/module/state.js.map +1 -0
- package/lib/module/store/imageEventStore.js +146 -0
- package/lib/module/store/imageEventStore.js.map +1 -0
- package/lib/module/store/insights.js +71 -0
- package/lib/module/store/insights.js.map +1 -0
- package/lib/module/sync/imagesSyncAdapter.js +311 -0
- package/lib/module/sync/imagesSyncAdapter.js.map +1 -0
- package/lib/module/types.js +2 -0
- package/lib/module/types.js.map +1 -0
- package/lib/typescript/capture/actions.d.ts +49 -0
- package/lib/typescript/capture/actions.d.ts.map +1 -0
- package/lib/typescript/capture/install.d.ts +15 -0
- package/lib/typescript/capture/install.d.ts.map +1 -0
- package/lib/typescript/capture/installExpoImage.d.ts +23 -0
- package/lib/typescript/capture/installExpoImage.d.ts.map +1 -0
- package/lib/typescript/capture/installRnImage.d.ts +24 -0
- package/lib/typescript/capture/installRnImage.d.ts.map +1 -0
- package/lib/typescript/capture/overrides.d.ts +83 -0
- package/lib/typescript/capture/overrides.d.ts.map +1 -0
- package/lib/typescript/capture/savings.d.ts +37 -0
- package/lib/typescript/capture/savings.d.ts.map +1 -0
- package/lib/typescript/capture/shared.d.ts +61 -0
- package/lib/typescript/capture/shared.d.ts.map +1 -0
- package/lib/typescript/components/ImageDetail.d.ts +13 -0
- package/lib/typescript/components/ImageDetail.d.ts.map +1 -0
- package/lib/typescript/components/ImageDetailFooter.d.ts +19 -0
- package/lib/typescript/components/ImageDetailFooter.d.ts.map +1 -0
- package/lib/typescript/components/ImageRow.d.ts +15 -0
- package/lib/typescript/components/ImageRow.d.ts.map +1 -0
- package/lib/typescript/components/ImagesHeader.d.ts +25 -0
- package/lib/typescript/components/ImagesHeader.d.ts.map +1 -0
- package/lib/typescript/components/ImagesIcon.d.ts +13 -0
- package/lib/typescript/components/ImagesIcon.d.ts.map +1 -0
- package/lib/typescript/components/ImagesListFooter.d.ts +8 -0
- package/lib/typescript/components/ImagesListFooter.d.ts.map +1 -0
- package/lib/typescript/components/ImagesModal.d.ts +17 -0
- package/lib/typescript/components/ImagesModal.d.ts.map +1 -0
- package/lib/typescript/components/ImagesRoot.d.ts +11 -0
- package/lib/typescript/components/ImagesRoot.d.ts.map +1 -0
- package/lib/typescript/components/InsightsBar.d.ts +13 -0
- package/lib/typescript/components/InsightsBar.d.ts.map +1 -0
- package/lib/typescript/export.d.ts +12 -0
- package/lib/typescript/export.d.ts.map +1 -0
- package/lib/typescript/format.d.ts +26 -0
- package/lib/typescript/format.d.ts.map +1 -0
- package/lib/typescript/hooks/useImageRecords.d.ts +11 -0
- package/lib/typescript/hooks/useImageRecords.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +33 -0
- package/lib/typescript/index.d.ts.map +1 -0
- package/lib/typescript/preset.d.ts +38 -0
- package/lib/typescript/preset.d.ts.map +1 -0
- package/lib/typescript/register.d.ts +15 -0
- package/lib/typescript/register.d.ts.map +1 -0
- package/lib/typescript/state.d.ts +54 -0
- package/lib/typescript/state.d.ts.map +1 -0
- package/lib/typescript/store/imageEventStore.d.ts +34 -0
- package/lib/typescript/store/imageEventStore.d.ts.map +1 -0
- package/lib/typescript/store/insights.d.ts +11 -0
- package/lib/typescript/store/insights.d.ts.map +1 -0
- package/lib/typescript/sync/imagesSyncAdapter.d.ts +205 -0
- package/lib/typescript/sync/imagesSyncAdapter.d.ts.map +1 -0
- package/lib/typescript/types.d.ts +121 -0
- package/lib/typescript/types.d.ts.map +1 -0
- package/package.json +67 -0
- package/register.d.ts +1 -0
- package/register.js +15 -0
- package/src/capture/actions.ts +206 -0
- package/src/capture/install.ts +36 -0
- package/src/capture/installExpoImage.ts +115 -0
- package/src/capture/installRnImage.tsx +133 -0
- package/src/capture/overrides.ts +282 -0
- package/src/capture/savings.ts +193 -0
- package/src/capture/shared.ts +387 -0
- package/src/components/ImageDetail.tsx +456 -0
- package/src/components/ImageDetailFooter.tsx +270 -0
- package/src/components/ImageRow.tsx +148 -0
- package/src/components/ImagesHeader.tsx +77 -0
- package/src/components/ImagesIcon.tsx +66 -0
- package/src/components/ImagesListFooter.tsx +193 -0
- package/src/components/ImagesModal.tsx +195 -0
- package/src/components/ImagesRoot.tsx +18 -0
- package/src/components/InsightsBar.tsx +51 -0
- package/src/export.ts +100 -0
- package/src/format.ts +85 -0
- package/src/hooks/useImageRecords.ts +24 -0
- package/src/index.tsx +108 -0
- package/src/preset.tsx +35 -0
- package/src/register.ts +17 -0
- package/src/state.ts +88 -0
- package/src/store/imageEventStore.ts +162 -0
- package/src/store/insights.ts +66 -0
- package/src/sync/imagesSyncAdapter.ts +261 -0
- package/src/types.ts +111 -0
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* ImagesListFooter — the list screen's action bar: mass simulations applied
|
|
5
|
+
* to EVERY mounted image at once (error / loading / blank), mass hard-reload,
|
|
6
|
+
* flash everything, restore all — plus the global network simulation modes
|
|
7
|
+
* (Normal / Offline / Cold). Styled to match the detail footer.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import { useState, useSyncExternalStore } from "react";
|
|
11
|
+
import { StyleSheet, Text, TouchableOpacity, View } from "react-native";
|
|
12
|
+
import { macOSColors, useSafeAreaInsets } from "@buoy-gg/shared-ui";
|
|
13
|
+
import { hardReloadAllMounted, subscribeActions } from "../capture/actions";
|
|
14
|
+
import { clearAllOverrides, flashAllMounted, getGlobalModes, setNetworkMode, setOverrideForAllMounted } from "../capture/overrides";
|
|
15
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
16
|
+
const NETWORK_MODES = [{
|
|
17
|
+
key: "normal",
|
|
18
|
+
label: "Normal"
|
|
19
|
+
}, {
|
|
20
|
+
key: "offline",
|
|
21
|
+
label: "Offline"
|
|
22
|
+
}, {
|
|
23
|
+
key: "cold",
|
|
24
|
+
label: "Cold"
|
|
25
|
+
}];
|
|
26
|
+
export function ImagesListFooter() {
|
|
27
|
+
const insets = useSafeAreaInsets();
|
|
28
|
+
const [message, setMessage] = useState(null);
|
|
29
|
+
const network = useSyncExternalStore(subscribeActions, () => getGlobalModes().network);
|
|
30
|
+
const massOverride = (source, label) => {
|
|
31
|
+
const count = setOverrideForAllMounted(source, label);
|
|
32
|
+
setMessage(count > 0 ? `${label} on ${count} image${count === 1 ? "" : "s"} — Restore all to undo` : "No mounted images");
|
|
33
|
+
};
|
|
34
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
35
|
+
style: [styles.footer, {
|
|
36
|
+
paddingBottom: 10 + insets.bottom
|
|
37
|
+
}],
|
|
38
|
+
children: [message ? /*#__PURE__*/_jsx(Text, {
|
|
39
|
+
style: styles.message,
|
|
40
|
+
numberOfLines: 1,
|
|
41
|
+
children: message
|
|
42
|
+
}) : /*#__PURE__*/_jsx(Text, {
|
|
43
|
+
style: styles.caption,
|
|
44
|
+
children: "MASS ACTIONS \u2014 every image on screen"
|
|
45
|
+
}), /*#__PURE__*/_jsxs(View, {
|
|
46
|
+
style: styles.row,
|
|
47
|
+
children: [/*#__PURE__*/_jsx(MassButton, {
|
|
48
|
+
label: "Error",
|
|
49
|
+
onPress: () => massOverride({
|
|
50
|
+
type: "error"
|
|
51
|
+
}, "Forced error")
|
|
52
|
+
}), /*#__PURE__*/_jsx(MassButton, {
|
|
53
|
+
label: "Loading",
|
|
54
|
+
onPress: () => massOverride({
|
|
55
|
+
type: "hang"
|
|
56
|
+
}, "Forced loading")
|
|
57
|
+
}), /*#__PURE__*/_jsx(MassButton, {
|
|
58
|
+
label: "Blank",
|
|
59
|
+
onPress: () => massOverride({
|
|
60
|
+
type: "blank"
|
|
61
|
+
}, "Blanked")
|
|
62
|
+
}), /*#__PURE__*/_jsx(MassButton, {
|
|
63
|
+
label: "Reload",
|
|
64
|
+
onPress: () => {
|
|
65
|
+
setMessage("…");
|
|
66
|
+
hardReloadAllMounted().then(r => setMessage(r.message));
|
|
67
|
+
}
|
|
68
|
+
}), /*#__PURE__*/_jsx(MassButton, {
|
|
69
|
+
label: "Find",
|
|
70
|
+
onPress: () => {
|
|
71
|
+
const count = flashAllMounted();
|
|
72
|
+
setMessage(`Flashing ${count} image${count === 1 ? "" : "s"} (2.5s)`);
|
|
73
|
+
}
|
|
74
|
+
}), /*#__PURE__*/_jsx(MassButton, {
|
|
75
|
+
label: "Restore",
|
|
76
|
+
accent: true,
|
|
77
|
+
onPress: () => {
|
|
78
|
+
const count = clearAllOverrides();
|
|
79
|
+
setMessage(count > 0 ? `Restored ${count} image${count === 1 ? "" : "s"}` : "No overrides active");
|
|
80
|
+
}
|
|
81
|
+
})]
|
|
82
|
+
}), /*#__PURE__*/_jsxs(View, {
|
|
83
|
+
style: styles.row,
|
|
84
|
+
children: [/*#__PURE__*/_jsx(Text, {
|
|
85
|
+
style: styles.netLabel,
|
|
86
|
+
children: "NET"
|
|
87
|
+
}), NETWORK_MODES.map(mode => {
|
|
88
|
+
const active = network === mode.key;
|
|
89
|
+
return /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
90
|
+
onPress: () => {
|
|
91
|
+
setNetworkMode(mode.key);
|
|
92
|
+
// Modes only affect loads that happen AFTER they're set — an
|
|
93
|
+
// on-screen image keeps its bitmap until something reloads it.
|
|
94
|
+
setMessage(mode.key === "normal" ? "Network simulation off — tap RELOAD to load normally again" : mode.key === "offline" ? "Offline: network images FAIL (bundled assets still load) — tap RELOAD to apply to on-screen images" : "Cold (bypass caches) — tap RELOAD: everything refetches like first launch");
|
|
95
|
+
},
|
|
96
|
+
style: [styles.netButton, active && styles.netButtonActive],
|
|
97
|
+
activeOpacity: 0.7,
|
|
98
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
99
|
+
style: [styles.buttonText, active && styles.netTextActive],
|
|
100
|
+
children: mode.label
|
|
101
|
+
})
|
|
102
|
+
}, mode.key);
|
|
103
|
+
})]
|
|
104
|
+
})]
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
function MassButton({
|
|
108
|
+
label,
|
|
109
|
+
onPress,
|
|
110
|
+
accent
|
|
111
|
+
}) {
|
|
112
|
+
return /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
113
|
+
onPress: onPress,
|
|
114
|
+
style: styles.button,
|
|
115
|
+
activeOpacity: 0.7,
|
|
116
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
117
|
+
style: [styles.buttonText, accent && styles.buttonTextAccent],
|
|
118
|
+
children: label
|
|
119
|
+
})
|
|
120
|
+
});
|
|
121
|
+
}
|
|
122
|
+
const styles = StyleSheet.create({
|
|
123
|
+
footer: {
|
|
124
|
+
paddingHorizontal: 12,
|
|
125
|
+
paddingTop: 8,
|
|
126
|
+
backgroundColor: macOSColors.background.base,
|
|
127
|
+
borderTopWidth: 1,
|
|
128
|
+
borderTopColor: macOSColors.border.default,
|
|
129
|
+
gap: 8
|
|
130
|
+
},
|
|
131
|
+
caption: {
|
|
132
|
+
color: macOSColors.text.muted,
|
|
133
|
+
fontSize: 9,
|
|
134
|
+
fontWeight: "700",
|
|
135
|
+
letterSpacing: 0.8
|
|
136
|
+
},
|
|
137
|
+
message: {
|
|
138
|
+
color: macOSColors.semantic.info,
|
|
139
|
+
fontSize: 10,
|
|
140
|
+
fontFamily: "monospace"
|
|
141
|
+
},
|
|
142
|
+
row: {
|
|
143
|
+
flexDirection: "row",
|
|
144
|
+
gap: 6
|
|
145
|
+
},
|
|
146
|
+
button: {
|
|
147
|
+
flex: 1,
|
|
148
|
+
alignItems: "center",
|
|
149
|
+
paddingVertical: 8,
|
|
150
|
+
borderRadius: 6,
|
|
151
|
+
backgroundColor: macOSColors.background.card,
|
|
152
|
+
borderWidth: StyleSheet.hairlineWidth,
|
|
153
|
+
borderColor: macOSColors.border.default
|
|
154
|
+
},
|
|
155
|
+
buttonText: {
|
|
156
|
+
fontSize: 10,
|
|
157
|
+
fontWeight: "600",
|
|
158
|
+
color: macOSColors.text.secondary,
|
|
159
|
+
fontFamily: "monospace",
|
|
160
|
+
textTransform: "uppercase"
|
|
161
|
+
},
|
|
162
|
+
buttonTextAccent: {
|
|
163
|
+
color: macOSColors.semantic.warning
|
|
164
|
+
},
|
|
165
|
+
netLabel: {
|
|
166
|
+
color: macOSColors.text.muted,
|
|
167
|
+
fontSize: 9,
|
|
168
|
+
fontWeight: "700",
|
|
169
|
+
letterSpacing: 0.8,
|
|
170
|
+
alignSelf: "center",
|
|
171
|
+
marginRight: 2
|
|
172
|
+
},
|
|
173
|
+
netButton: {
|
|
174
|
+
flex: 1,
|
|
175
|
+
alignItems: "center",
|
|
176
|
+
paddingVertical: 6,
|
|
177
|
+
borderRadius: 6,
|
|
178
|
+
backgroundColor: macOSColors.background.card,
|
|
179
|
+
borderWidth: StyleSheet.hairlineWidth,
|
|
180
|
+
borderColor: macOSColors.border.default
|
|
181
|
+
},
|
|
182
|
+
netButtonActive: {
|
|
183
|
+
backgroundColor: macOSColors.semantic.infoBackground,
|
|
184
|
+
borderColor: macOSColors.semantic.info
|
|
185
|
+
},
|
|
186
|
+
netTextActive: {
|
|
187
|
+
color: macOSColors.semantic.info
|
|
188
|
+
}
|
|
189
|
+
});
|
|
190
|
+
//# sourceMappingURL=ImagesListFooter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useState","useSyncExternalStore","StyleSheet","Text","TouchableOpacity","View","macOSColors","useSafeAreaInsets","hardReloadAllMounted","subscribeActions","clearAllOverrides","flashAllMounted","getGlobalModes","setNetworkMode","setOverrideForAllMounted","jsx","_jsx","jsxs","_jsxs","NETWORK_MODES","key","label","ImagesListFooter","insets","message","setMessage","network","massOverride","source","count","style","styles","footer","paddingBottom","bottom","children","numberOfLines","caption","row","MassButton","onPress","type","then","r","accent","netLabel","map","mode","active","netButton","netButtonActive","activeOpacity","buttonText","netTextActive","button","buttonTextAccent","create","paddingHorizontal","paddingTop","backgroundColor","background","base","borderTopWidth","borderTopColor","border","default","gap","color","text","muted","fontSize","fontWeight","letterSpacing","semantic","info","fontFamily","flexDirection","flex","alignItems","paddingVertical","borderRadius","card","borderWidth","hairlineWidth","borderColor","secondary","textTransform","warning","alignSelf","marginRight","infoBackground"],"sourceRoot":"../../../src","sources":["components/ImagesListFooter.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,169 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* ImagesModal — bottom-sheet wrapper rendered by FloatingDevTools when the
|
|
5
|
+
* Images tool is opened. List of captured images → tap for detail. Also
|
|
6
|
+
* surfaces the capture status so a mis-ordered install is self-diagnosing
|
|
7
|
+
* instead of silently empty.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import { useState } from "react";
|
|
11
|
+
import { FlatList, StyleSheet, Text, View } from "react-native";
|
|
12
|
+
import { JsModal, macOSColors } from "@buoy-gg/shared-ui";
|
|
13
|
+
import { getCaptureStatus, installImageCapture } from "../capture/install";
|
|
14
|
+
import { getGlobalModes } from "../capture/overrides";
|
|
15
|
+
import { formatRecordMarkdown, formatRegistryMarkdown } from "../export";
|
|
16
|
+
import { useImageRecords } from "../hooks/useImageRecords";
|
|
17
|
+
import { clearRecords, getRecord } from "../store/imageEventStore";
|
|
18
|
+
import { ImageDetail } from "./ImageDetail";
|
|
19
|
+
import { ImageDetailFooter } from "./ImageDetailFooter";
|
|
20
|
+
import { ImageRow } from "./ImageRow";
|
|
21
|
+
import { ImagesHeader } from "./ImagesHeader";
|
|
22
|
+
import { ImagesListFooter } from "./ImagesListFooter";
|
|
23
|
+
import { InsightsBar } from "./InsightsBar";
|
|
24
|
+
import { computeInsights } from "../store/insights";
|
|
25
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
26
|
+
function CaptureNotice() {
|
|
27
|
+
const status = getCaptureStatus();
|
|
28
|
+
const notices = [];
|
|
29
|
+
if (status.rnDecoratorTooLate) {
|
|
30
|
+
notices.push('RN <Image> instrumentation missed the module-load race — add `import "@buoy-gg/images/register"` as the FIRST import of your entry file.');
|
|
31
|
+
}
|
|
32
|
+
if (!status.expoAvailable && !status.rnDecoratorActive && !status.rnDecoratorTooLate) {
|
|
33
|
+
notices.push("Waiting for images… render some <Image> components to populate the list.");
|
|
34
|
+
}
|
|
35
|
+
if (notices.length === 0) return null;
|
|
36
|
+
return /*#__PURE__*/_jsx(View, {
|
|
37
|
+
style: styles.notice,
|
|
38
|
+
children: notices.map(n => /*#__PURE__*/_jsx(Text, {
|
|
39
|
+
style: styles.noticeText,
|
|
40
|
+
children: n
|
|
41
|
+
}, n))
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
function EmptyState() {
|
|
45
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
46
|
+
style: styles.empty,
|
|
47
|
+
children: [/*#__PURE__*/_jsx(Text, {
|
|
48
|
+
style: styles.emptyTitle,
|
|
49
|
+
children: "No images captured yet"
|
|
50
|
+
}), /*#__PURE__*/_jsxs(Text, {
|
|
51
|
+
style: styles.emptyText,
|
|
52
|
+
children: ["Every RN ", "<Image>", " and expo-image load is recorded here with cache verdicts, timings, and oversize checks."]
|
|
53
|
+
})]
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
export function ImagesModal({
|
|
57
|
+
visible,
|
|
58
|
+
onClose,
|
|
59
|
+
onBack,
|
|
60
|
+
onMinimize,
|
|
61
|
+
persistenceKey
|
|
62
|
+
}) {
|
|
63
|
+
// Safety net: ensures capture is live even without the early register
|
|
64
|
+
// import (expo-image capture is timing-immune, so this still gets most data).
|
|
65
|
+
installImageCapture();
|
|
66
|
+
const {
|
|
67
|
+
records,
|
|
68
|
+
stats
|
|
69
|
+
} = useImageRecords();
|
|
70
|
+
const [selectedId, setSelectedId] = useState(null);
|
|
71
|
+
const selected = selectedId != null ? getRecord(selectedId) : undefined;
|
|
72
|
+
|
|
73
|
+
// Stepping is relative to the live list (newest first): previous = newer.
|
|
74
|
+
const selectedIndex = selected ? records.findIndex(r => r.id === selected.id) : -1;
|
|
75
|
+
const stepTo = index => {
|
|
76
|
+
const target = records[index];
|
|
77
|
+
if (target) setSelectedId(target.id);
|
|
78
|
+
};
|
|
79
|
+
|
|
80
|
+
// Mode-appropriate report: single record in detail, full registry (stats +
|
|
81
|
+
// insights + table) in the list. The shared ToolbarCopyButton resolves this
|
|
82
|
+
// lazily on press and handles clipboard + feedback + gating.
|
|
83
|
+
const getReport = () => selected ? formatRecordMarkdown(selected) : formatRegistryMarkdown(records, stats, computeInsights(records), getCaptureStatus(), getGlobalModes());
|
|
84
|
+
return /*#__PURE__*/_jsx(JsModal, {
|
|
85
|
+
visible: visible,
|
|
86
|
+
onClose: onClose,
|
|
87
|
+
onMinimize: onMinimize,
|
|
88
|
+
persistenceKey: persistenceKey,
|
|
89
|
+
header: {
|
|
90
|
+
showToggleButton: true,
|
|
91
|
+
customContent: /*#__PURE__*/_jsx(ImagesHeader, {
|
|
92
|
+
stats: stats,
|
|
93
|
+
detailOpen: selected != null,
|
|
94
|
+
detailIndex: selectedIndex,
|
|
95
|
+
detailTotal: records.length,
|
|
96
|
+
onCloseDetail: () => setSelectedId(null),
|
|
97
|
+
onClear: clearRecords,
|
|
98
|
+
getReport: getReport,
|
|
99
|
+
onBack: onBack
|
|
100
|
+
})
|
|
101
|
+
},
|
|
102
|
+
enablePersistence: true,
|
|
103
|
+
initialMode: "bottomSheet",
|
|
104
|
+
disableScrollWrapper: true,
|
|
105
|
+
children: selected ? /*#__PURE__*/_jsxs(View, {
|
|
106
|
+
style: styles.detailContainer,
|
|
107
|
+
children: [/*#__PURE__*/_jsx(ImageDetail, {
|
|
108
|
+
record: selected
|
|
109
|
+
}), /*#__PURE__*/_jsx(ImageDetailFooter, {
|
|
110
|
+
record: selected,
|
|
111
|
+
hasPrevious: selectedIndex > 0,
|
|
112
|
+
hasNext: selectedIndex >= 0 && selectedIndex < records.length - 1,
|
|
113
|
+
onPrevious: () => stepTo(selectedIndex - 1),
|
|
114
|
+
onNext: () => stepTo(selectedIndex + 1)
|
|
115
|
+
}, selected.id)]
|
|
116
|
+
}) : /*#__PURE__*/_jsxs(View, {
|
|
117
|
+
style: styles.listContainer,
|
|
118
|
+
children: [/*#__PURE__*/_jsx(InsightsBar, {
|
|
119
|
+
insights: computeInsights(records)
|
|
120
|
+
}), /*#__PURE__*/_jsx(CaptureNotice, {}), /*#__PURE__*/_jsx(FlatList, {
|
|
121
|
+
data: records,
|
|
122
|
+
keyExtractor: item => String(item.id),
|
|
123
|
+
renderItem: ({
|
|
124
|
+
item
|
|
125
|
+
}) => /*#__PURE__*/_jsx(ImageRow, {
|
|
126
|
+
record: item,
|
|
127
|
+
onPress: setSelectedId
|
|
128
|
+
}),
|
|
129
|
+
ListEmptyComponent: /*#__PURE__*/_jsx(EmptyState, {})
|
|
130
|
+
}), /*#__PURE__*/_jsx(ImagesListFooter, {})]
|
|
131
|
+
})
|
|
132
|
+
});
|
|
133
|
+
}
|
|
134
|
+
const styles = StyleSheet.create({
|
|
135
|
+
listContainer: {
|
|
136
|
+
flex: 1
|
|
137
|
+
},
|
|
138
|
+
detailContainer: {
|
|
139
|
+
flex: 1
|
|
140
|
+
},
|
|
141
|
+
notice: {
|
|
142
|
+
margin: 10,
|
|
143
|
+
padding: 10,
|
|
144
|
+
borderRadius: 8,
|
|
145
|
+
backgroundColor: macOSColors.semantic.warningBackground,
|
|
146
|
+
gap: 4
|
|
147
|
+
},
|
|
148
|
+
noticeText: {
|
|
149
|
+
color: macOSColors.semantic.warning,
|
|
150
|
+
fontSize: 11
|
|
151
|
+
},
|
|
152
|
+
empty: {
|
|
153
|
+
alignItems: "center",
|
|
154
|
+
padding: 32,
|
|
155
|
+
gap: 8
|
|
156
|
+
},
|
|
157
|
+
emptyTitle: {
|
|
158
|
+
color: macOSColors.text.primary,
|
|
159
|
+
fontSize: 13,
|
|
160
|
+
fontWeight: "600"
|
|
161
|
+
},
|
|
162
|
+
emptyText: {
|
|
163
|
+
color: macOSColors.text.secondary,
|
|
164
|
+
fontSize: 11,
|
|
165
|
+
textAlign: "center",
|
|
166
|
+
lineHeight: 16
|
|
167
|
+
}
|
|
168
|
+
});
|
|
169
|
+
//# sourceMappingURL=ImagesModal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useState","FlatList","StyleSheet","Text","View","JsModal","macOSColors","getCaptureStatus","installImageCapture","getGlobalModes","formatRecordMarkdown","formatRegistryMarkdown","useImageRecords","clearRecords","getRecord","ImageDetail","ImageDetailFooter","ImageRow","ImagesHeader","ImagesListFooter","InsightsBar","computeInsights","jsx","_jsx","jsxs","_jsxs","CaptureNotice","status","notices","rnDecoratorTooLate","push","expoAvailable","rnDecoratorActive","length","style","styles","notice","children","map","n","noticeText","EmptyState","empty","emptyTitle","emptyText","ImagesModal","visible","onClose","onBack","onMinimize","persistenceKey","records","stats","selectedId","setSelectedId","selected","undefined","selectedIndex","findIndex","r","id","stepTo","index","target","getReport","header","showToggleButton","customContent","detailOpen","detailIndex","detailTotal","onCloseDetail","onClear","enablePersistence","initialMode","disableScrollWrapper","detailContainer","record","hasPrevious","hasNext","onPrevious","onNext","listContainer","insights","data","keyExtractor","item","String","renderItem","onPress","ListEmptyComponent","create","flex","margin","padding","borderRadius","backgroundColor","semantic","warningBackground","gap","color","warning","fontSize","alignItems","text","primary","fontWeight","secondary","textAlign","lineHeight"],"sourceRoot":"../../../src","sources":["components/ImagesModal.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Mount once near the app root to start image capture immediately.
|
|
5
|
+
*
|
|
6
|
+
* NOTE: for full RN-core <Image> coverage prefer the side-effect import
|
|
7
|
+
* `import "@buoy-gg/images/register"` as the first import of your entry file —
|
|
8
|
+
* the RN decorator must be installed before React Native's Image module first
|
|
9
|
+
* evaluates. ImagesRoot alone still captures every expo-image instance
|
|
10
|
+
* (timing-immune) and reports whether the RN hook landed.
|
|
11
|
+
*/
|
|
12
|
+
|
|
13
|
+
import { installImageCapture } from "../capture/install";
|
|
14
|
+
export function ImagesRoot() {
|
|
15
|
+
// Synchronous on first render — earlier than an effect, though still later
|
|
16
|
+
// than the register import. Idempotent.
|
|
17
|
+
installImageCapture();
|
|
18
|
+
return null;
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=ImagesRoot.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["installImageCapture","ImagesRoot"],"sourceRoot":"../../../src","sources":["components/ImagesRoot.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,mBAAmB,QAAQ,oBAAoB;AAExD,OAAO,SAASC,UAAUA,CAAA,EAAS;EACjC;EACA;EACAD,mBAAmB,CAAC,CAAC;EACrB,OAAO,IAAI;AACb","ignoreList":[]}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* InsightsBar — compact warning chips above the list when cross-record
|
|
5
|
+
* findings exist (duplicates, retry storms, queue saturation, missing alt,
|
|
6
|
+
* layout shifts). Renders nothing when all clear.
|
|
7
|
+
*
|
|
8
|
+
* A wrapping row (not a horizontal ScrollView — that under-measures its
|
|
9
|
+
* height inside the modal's flex column and clips the chips).
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import { StyleSheet, Text, View } from "react-native";
|
|
13
|
+
import { macOSColors } from "@buoy-gg/shared-ui";
|
|
14
|
+
import { insightChips } from "../store/insights";
|
|
15
|
+
import { jsx as _jsx } from "react/jsx-runtime";
|
|
16
|
+
export function InsightsBar({
|
|
17
|
+
insights
|
|
18
|
+
}) {
|
|
19
|
+
const chips = insightChips(insights);
|
|
20
|
+
if (chips.length === 0) return null;
|
|
21
|
+
return /*#__PURE__*/_jsx(View, {
|
|
22
|
+
style: styles.bar,
|
|
23
|
+
children: chips.map(chip => /*#__PURE__*/_jsx(View, {
|
|
24
|
+
style: styles.chip,
|
|
25
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
26
|
+
style: styles.chipText,
|
|
27
|
+
children: chip
|
|
28
|
+
})
|
|
29
|
+
}, chip))
|
|
30
|
+
});
|
|
31
|
+
}
|
|
32
|
+
const styles = StyleSheet.create({
|
|
33
|
+
bar: {
|
|
34
|
+
flexDirection: "row",
|
|
35
|
+
flexWrap: "wrap",
|
|
36
|
+
gap: 6,
|
|
37
|
+
paddingHorizontal: 10,
|
|
38
|
+
paddingVertical: 8,
|
|
39
|
+
borderBottomWidth: StyleSheet.hairlineWidth,
|
|
40
|
+
borderBottomColor: macOSColors.border.default
|
|
41
|
+
},
|
|
42
|
+
chip: {
|
|
43
|
+
backgroundColor: macOSColors.semantic.warningBackground,
|
|
44
|
+
borderRadius: 999,
|
|
45
|
+
paddingHorizontal: 10,
|
|
46
|
+
paddingVertical: 5
|
|
47
|
+
},
|
|
48
|
+
chipText: {
|
|
49
|
+
color: macOSColors.semantic.warning,
|
|
50
|
+
fontSize: 10,
|
|
51
|
+
fontWeight: "600",
|
|
52
|
+
lineHeight: 13
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
//# sourceMappingURL=InsightsBar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["StyleSheet","Text","View","macOSColors","insightChips","jsx","_jsx","InsightsBar","insights","chips","length","style","styles","bar","children","map","chip","chipText","create","flexDirection","flexWrap","gap","paddingHorizontal","paddingVertical","borderBottomWidth","hairlineWidth","borderBottomColor","border","default","backgroundColor","semantic","warningBackground","borderRadius","color","warning","fontSize","fontWeight","lineHeight"],"sourceRoot":"../../../src","sources":["components/InsightsBar.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,UAAU,EAAEC,IAAI,EAAEC,IAAI,QAAQ,cAAc;AACrD,SAASC,WAAW,QAAQ,oBAAoB;AAChD,SAASC,YAAY,QAAQ,mBAAmB;AAAC,SAAAC,GAAA,IAAAC,IAAA;AAGjD,OAAO,SAASC,WAAWA,CAAC;EAAEC;AAAsC,CAAC,EAAE;EACrE,MAAMC,KAAK,GAAGL,YAAY,CAACI,QAAQ,CAAC;EACpC,IAAIC,KAAK,CAACC,MAAM,KAAK,CAAC,EAAE,OAAO,IAAI;EACnC,oBACEJ,IAAA,CAACJ,IAAI;IAACS,KAAK,EAAEC,MAAM,CAACC,GAAI;IAAAC,QAAA,EACrBL,KAAK,CAACM,GAAG,CAAEC,IAAI,iBACdV,IAAA,CAACJ,IAAI;MAAYS,KAAK,EAAEC,MAAM,CAACI,IAAK;MAAAF,QAAA,eAClCR,IAAA,CAACL,IAAI;QAACU,KAAK,EAAEC,MAAM,CAACK,QAAS;QAAAH,QAAA,EAAEE;MAAI,CAAO;IAAC,GADlCA,IAEL,CACP;EAAC,CACE,CAAC;AAEX;AAEA,MAAMJ,MAAM,GAAGZ,UAAU,CAACkB,MAAM,CAAC;EAC/BL,GAAG,EAAE;IACHM,aAAa,EAAE,KAAK;IACpBC,QAAQ,EAAE,MAAM;IAChBC,GAAG,EAAE,CAAC;IACNC,iBAAiB,EAAE,EAAE;IACrBC,eAAe,EAAE,CAAC;IAClBC,iBAAiB,EAAExB,UAAU,CAACyB,aAAa;IAC3CC,iBAAiB,EAAEvB,WAAW,CAACwB,MAAM,CAACC;EACxC,CAAC;EACDZ,IAAI,EAAE;IACJa,eAAe,EAAE1B,WAAW,CAAC2B,QAAQ,CAACC,iBAAiB;IACvDC,YAAY,EAAE,GAAG;IACjBV,iBAAiB,EAAE,EAAE;IACrBC,eAAe,EAAE;EACnB,CAAC;EACDN,QAAQ,EAAE;IACRgB,KAAK,EAAE9B,WAAW,CAAC2B,QAAQ,CAACI,OAAO;IACnCC,QAAQ,EAAE,EAAE;IACZC,UAAU,EAAE,KAAK;IACjBC,UAAU,EAAE;EACd;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Copy-friendly markdown reports — paste-ready context for an issue, PR, or
|
|
5
|
+
* an AI chat. One for the whole registry (list header copy) and one for a
|
|
6
|
+
* single record (detail header copy).
|
|
7
|
+
*/
|
|
8
|
+
|
|
9
|
+
import { PixelRatio } from "react-native";
|
|
10
|
+
import { estDecodedBytes, estWastedBytes, neededPixels } from "./store/imageEventStore";
|
|
11
|
+
import { insightChips } from "./store/insights";
|
|
12
|
+
import { cacheBadge, formatBytes, formatMs, sizeVerdict, uriTail } from "./format";
|
|
13
|
+
export function formatRecordMarkdown(record) {
|
|
14
|
+
const verdict = sizeVerdict(record);
|
|
15
|
+
const cache = cacheBadge(record);
|
|
16
|
+
const needed = neededPixels(record);
|
|
17
|
+
const decoded = estDecodedBytes(record);
|
|
18
|
+
const wasted = estWastedBytes(record);
|
|
19
|
+
const lines = [];
|
|
20
|
+
lines.push(`## Image report — ${uriTail(record.uri)}`);
|
|
21
|
+
lines.push("");
|
|
22
|
+
lines.push(`- URI: ${record.uri || "(none)"}`);
|
|
23
|
+
lines.push(`- Library: ${record.lib === "expo" ? "expo-image" : "RN <Image>"} · kind: ${record.sourceKind} · mounted: ${record.mounted ? "yes" : "no"}`);
|
|
24
|
+
lines.push(`- Status: ${record.status}${record.errorCode ? ` (HTTP ${record.errorCode})` : ""} · load cycles: ${record.loadCount}`);
|
|
25
|
+
lines.push(`- Cache: ${cache.label}${record.cacheVerdictSource ? ` (via ${record.cacheVerdictSource === "event" ? "expo onLoad" : "Image.queryCache"})` : ""}`);
|
|
26
|
+
lines.push(`- Load time: ${formatMs(record.durationMs)}${record.displayedAt && record.loadedAt ? ` · decode→display ${formatMs(Math.max(0, record.displayedAt - record.loadedAt))}` : ""}`);
|
|
27
|
+
if (record.intrinsic) {
|
|
28
|
+
lines.push(`- Decoded: ${record.intrinsic.width}×${record.intrinsic.height}px${record.mediaType ? ` (${record.mediaType})` : ""}${record.isAnimated ? " animated" : ""} ≈ ${formatBytes(decoded)} decoded memory`);
|
|
29
|
+
}
|
|
30
|
+
if (record.layout) {
|
|
31
|
+
lines.push(`- Displayed: ${Math.round(record.layout.width)}×${Math.round(record.layout.height)}dp @${PixelRatio.get()}x (needs ${needed ? `${needed.width}×${needed.height}px` : "?"})`);
|
|
32
|
+
}
|
|
33
|
+
if (verdict.label) {
|
|
34
|
+
lines.push(`- Size verdict: ${verdict.label}${wasted > 0 && needed ? ` — wasting ≈${formatBytes(wasted)}; serve ${needed.width}×${needed.height}` : ""}`);
|
|
35
|
+
}
|
|
36
|
+
if (record.progressSeen) {
|
|
37
|
+
lines.push(`- Network transfer: ${record.bytesTotal ? formatBytes(record.bytesTotal) : "observed"}`);
|
|
38
|
+
}
|
|
39
|
+
if (record.hasAltText === false) lines.push(`- Accessibility: MISSING alt/accessibilityLabel`);
|
|
40
|
+
if ((record.layoutShifts ?? 0) > 0) lines.push(`- Layout shifts after load: ${record.layoutShifts} (reserve explicit dimensions)`);
|
|
41
|
+
if (record.error) {
|
|
42
|
+
lines.push(`- Error: ${record.error}`);
|
|
43
|
+
if (record.errorHeaders) {
|
|
44
|
+
lines.push(`- Response headers: ${JSON.stringify(record.errorHeaders)}`);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
if (record.overrideLabel) lines.push(`- Simulation active: ${record.overrideLabel}`);
|
|
48
|
+
return lines.join("\n");
|
|
49
|
+
}
|
|
50
|
+
export function formatRegistryMarkdown(records, stats, insights, captureStatus, modes) {
|
|
51
|
+
const lines = [];
|
|
52
|
+
lines.push(`## Buoy Images registry (${stats.total} records)`);
|
|
53
|
+
lines.push("");
|
|
54
|
+
lines.push(`${stats.loaded} loaded · ${stats.errors} failed · ${stats.loading} in flight · ≈${formatBytes(stats.estDecodedBytes)} decoded` + (stats.estWastedBytes > 0 ? ` · ${formatBytes(stats.estWastedBytes)} wasted on oversized sources` : ""));
|
|
55
|
+
const chips = insightChips(insights);
|
|
56
|
+
if (chips.length > 0) lines.push(`Insights: ${chips.join(" · ")}`);
|
|
57
|
+
if (modes.network !== "normal" || modes.blank) {
|
|
58
|
+
lines.push(`Simulation active: network=${modes.network}${modes.blank ? ", blank images" : ""}`);
|
|
59
|
+
}
|
|
60
|
+
if (captureStatus.rnDecoratorTooLate) {
|
|
61
|
+
lines.push(`⚠ RN <Image> capture inactive (register import too late)`);
|
|
62
|
+
}
|
|
63
|
+
lines.push("");
|
|
64
|
+
lines.push("| image | lib | status | cache | ms | decoded px | shown dp | verdict | notes |");
|
|
65
|
+
lines.push("|---|---|---|---|---|---|---|---|---|");
|
|
66
|
+
for (const r of records) {
|
|
67
|
+
const verdict = sizeVerdict(r);
|
|
68
|
+
const cache = cacheBadge(r);
|
|
69
|
+
const dims = r.intrinsic ? `${r.intrinsic.width}×${r.intrinsic.height}` : "–";
|
|
70
|
+
const layout = r.layout ? `${Math.round(r.layout.width)}×${Math.round(r.layout.height)}` : "–";
|
|
71
|
+
const notes = [r.error ? `error: ${r.error}` : null, r.overrideLabel ? `sim: ${r.overrideLabel}` : null, r.hasAltText === false ? "no alt" : null, (r.layoutShifts ?? 0) > 0 ? `${r.layoutShifts} layout shifts` : null, r.mounted ? null : "unmounted"].filter(Boolean).join("; ");
|
|
72
|
+
lines.push(`| ${uriTail(r.uri)} | ${r.lib} | ${r.status} | ${cache.label} | ${r.durationMs != null ? Math.round(r.durationMs) : "–"} | ${dims} | ${layout} | ${verdict.label || "–"} | ${notes || "–"} |`);
|
|
73
|
+
}
|
|
74
|
+
return lines.join("\n");
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=export.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["PixelRatio","estDecodedBytes","estWastedBytes","neededPixels","insightChips","cacheBadge","formatBytes","formatMs","sizeVerdict","uriTail","formatRecordMarkdown","record","verdict","cache","needed","decoded","wasted","lines","push","uri","lib","sourceKind","mounted","status","errorCode","loadCount","label","cacheVerdictSource","durationMs","displayedAt","loadedAt","Math","max","intrinsic","width","height","mediaType","isAnimated","layout","round","get","progressSeen","bytesTotal","hasAltText","layoutShifts","error","errorHeaders","JSON","stringify","overrideLabel","join","formatRegistryMarkdown","records","stats","insights","captureStatus","modes","total","loaded","errors","loading","chips","length","network","blank","rnDecoratorTooLate","r","dims","notes","filter","Boolean"],"sourceRoot":"../../src","sources":["export.ts"],"mappings":"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","ignoreList":[]}
|