@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.
Files changed (195) hide show
  1. package/LICENSE +58 -0
  2. package/README.md +58 -0
  3. package/lib/commonjs/capture/actions.js +227 -0
  4. package/lib/commonjs/capture/actions.js.map +1 -0
  5. package/lib/commonjs/capture/install.js +41 -0
  6. package/lib/commonjs/capture/install.js.map +1 -0
  7. package/lib/commonjs/capture/installExpoImage.js +99 -0
  8. package/lib/commonjs/capture/installExpoImage.js.map +1 -0
  9. package/lib/commonjs/capture/installRnImage.js +128 -0
  10. package/lib/commonjs/capture/installRnImage.js.map +1 -0
  11. package/lib/commonjs/capture/overrides.js +286 -0
  12. package/lib/commonjs/capture/overrides.js.map +1 -0
  13. package/lib/commonjs/capture/savings.js +193 -0
  14. package/lib/commonjs/capture/savings.js.map +1 -0
  15. package/lib/commonjs/capture/shared.js +367 -0
  16. package/lib/commonjs/capture/shared.js.map +1 -0
  17. package/lib/commonjs/components/ImageDetail.js +444 -0
  18. package/lib/commonjs/components/ImageDetail.js.map +1 -0
  19. package/lib/commonjs/components/ImageDetailFooter.js +232 -0
  20. package/lib/commonjs/components/ImageDetailFooter.js.map +1 -0
  21. package/lib/commonjs/components/ImageRow.js +164 -0
  22. package/lib/commonjs/components/ImageRow.js.map +1 -0
  23. package/lib/commonjs/components/ImagesHeader.js +63 -0
  24. package/lib/commonjs/components/ImagesHeader.js.map +1 -0
  25. package/lib/commonjs/components/ImagesIcon.js +59 -0
  26. package/lib/commonjs/components/ImagesIcon.js.map +1 -0
  27. package/lib/commonjs/components/ImagesListFooter.js +194 -0
  28. package/lib/commonjs/components/ImagesListFooter.js.map +1 -0
  29. package/lib/commonjs/components/ImagesModal.js +173 -0
  30. package/lib/commonjs/components/ImagesModal.js.map +1 -0
  31. package/lib/commonjs/components/ImagesRoot.js +24 -0
  32. package/lib/commonjs/components/ImagesRoot.js.map +1 -0
  33. package/lib/commonjs/components/InsightsBar.js +59 -0
  34. package/lib/commonjs/components/InsightsBar.js.map +1 -0
  35. package/lib/commonjs/export.js +81 -0
  36. package/lib/commonjs/export.js.map +1 -0
  37. package/lib/commonjs/format.js +117 -0
  38. package/lib/commonjs/format.js.map +1 -0
  39. package/lib/commonjs/hooks/useImageRecords.js +20 -0
  40. package/lib/commonjs/hooks/useImageRecords.js.map +1 -0
  41. package/lib/commonjs/index.js +236 -0
  42. package/lib/commonjs/index.js.map +1 -0
  43. package/lib/commonjs/package.json +1 -0
  44. package/lib/commonjs/preset.js +45 -0
  45. package/lib/commonjs/preset.js.map +1 -0
  46. package/lib/commonjs/register.js +19 -0
  47. package/lib/commonjs/register.js.map +1 -0
  48. package/lib/commonjs/state.js +54 -0
  49. package/lib/commonjs/state.js.map +1 -0
  50. package/lib/commonjs/store/imageEventStore.js +160 -0
  51. package/lib/commonjs/store/imageEventStore.js.map +1 -0
  52. package/lib/commonjs/store/insights.js +76 -0
  53. package/lib/commonjs/store/insights.js.map +1 -0
  54. package/lib/commonjs/sync/imagesSyncAdapter.js +315 -0
  55. package/lib/commonjs/sync/imagesSyncAdapter.js.map +1 -0
  56. package/lib/commonjs/types.js +2 -0
  57. package/lib/commonjs/types.js.map +1 -0
  58. package/lib/module/capture/actions.js +214 -0
  59. package/lib/module/capture/actions.js.map +1 -0
  60. package/lib/module/capture/install.js +36 -0
  61. package/lib/module/capture/install.js.map +1 -0
  62. package/lib/module/capture/installExpoImage.js +94 -0
  63. package/lib/module/capture/installExpoImage.js.map +1 -0
  64. package/lib/module/capture/installRnImage.js +122 -0
  65. package/lib/module/capture/installRnImage.js.map +1 -0
  66. package/lib/module/capture/overrides.js +269 -0
  67. package/lib/module/capture/overrides.js.map +1 -0
  68. package/lib/module/capture/savings.js +189 -0
  69. package/lib/module/capture/savings.js.map +1 -0
  70. package/lib/module/capture/shared.js +359 -0
  71. package/lib/module/capture/shared.js.map +1 -0
  72. package/lib/module/components/ImageDetail.js +440 -0
  73. package/lib/module/components/ImageDetail.js.map +1 -0
  74. package/lib/module/components/ImageDetailFooter.js +228 -0
  75. package/lib/module/components/ImageDetailFooter.js.map +1 -0
  76. package/lib/module/components/ImageRow.js +160 -0
  77. package/lib/module/components/ImageRow.js.map +1 -0
  78. package/lib/module/components/ImagesHeader.js +59 -0
  79. package/lib/module/components/ImagesHeader.js.map +1 -0
  80. package/lib/module/components/ImagesIcon.js +55 -0
  81. package/lib/module/components/ImagesIcon.js.map +1 -0
  82. package/lib/module/components/ImagesListFooter.js +190 -0
  83. package/lib/module/components/ImagesListFooter.js.map +1 -0
  84. package/lib/module/components/ImagesModal.js +169 -0
  85. package/lib/module/components/ImagesModal.js.map +1 -0
  86. package/lib/module/components/ImagesRoot.js +20 -0
  87. package/lib/module/components/ImagesRoot.js.map +1 -0
  88. package/lib/module/components/InsightsBar.js +55 -0
  89. package/lib/module/components/InsightsBar.js.map +1 -0
  90. package/lib/module/export.js +76 -0
  91. package/lib/module/export.js.map +1 -0
  92. package/lib/module/format.js +108 -0
  93. package/lib/module/format.js.map +1 -0
  94. package/lib/module/hooks/useImageRecords.js +16 -0
  95. package/lib/module/hooks/useImageRecords.js.map +1 -0
  96. package/lib/module/index.js +73 -0
  97. package/lib/module/index.js.map +1 -0
  98. package/lib/module/preset.js +40 -0
  99. package/lib/module/preset.js.map +1 -0
  100. package/lib/module/register.js +19 -0
  101. package/lib/module/register.js.map +1 -0
  102. package/lib/module/state.js +50 -0
  103. package/lib/module/state.js.map +1 -0
  104. package/lib/module/store/imageEventStore.js +146 -0
  105. package/lib/module/store/imageEventStore.js.map +1 -0
  106. package/lib/module/store/insights.js +71 -0
  107. package/lib/module/store/insights.js.map +1 -0
  108. package/lib/module/sync/imagesSyncAdapter.js +311 -0
  109. package/lib/module/sync/imagesSyncAdapter.js.map +1 -0
  110. package/lib/module/types.js +2 -0
  111. package/lib/module/types.js.map +1 -0
  112. package/lib/typescript/capture/actions.d.ts +49 -0
  113. package/lib/typescript/capture/actions.d.ts.map +1 -0
  114. package/lib/typescript/capture/install.d.ts +15 -0
  115. package/lib/typescript/capture/install.d.ts.map +1 -0
  116. package/lib/typescript/capture/installExpoImage.d.ts +23 -0
  117. package/lib/typescript/capture/installExpoImage.d.ts.map +1 -0
  118. package/lib/typescript/capture/installRnImage.d.ts +24 -0
  119. package/lib/typescript/capture/installRnImage.d.ts.map +1 -0
  120. package/lib/typescript/capture/overrides.d.ts +83 -0
  121. package/lib/typescript/capture/overrides.d.ts.map +1 -0
  122. package/lib/typescript/capture/savings.d.ts +37 -0
  123. package/lib/typescript/capture/savings.d.ts.map +1 -0
  124. package/lib/typescript/capture/shared.d.ts +61 -0
  125. package/lib/typescript/capture/shared.d.ts.map +1 -0
  126. package/lib/typescript/components/ImageDetail.d.ts +13 -0
  127. package/lib/typescript/components/ImageDetail.d.ts.map +1 -0
  128. package/lib/typescript/components/ImageDetailFooter.d.ts +19 -0
  129. package/lib/typescript/components/ImageDetailFooter.d.ts.map +1 -0
  130. package/lib/typescript/components/ImageRow.d.ts +15 -0
  131. package/lib/typescript/components/ImageRow.d.ts.map +1 -0
  132. package/lib/typescript/components/ImagesHeader.d.ts +25 -0
  133. package/lib/typescript/components/ImagesHeader.d.ts.map +1 -0
  134. package/lib/typescript/components/ImagesIcon.d.ts +13 -0
  135. package/lib/typescript/components/ImagesIcon.d.ts.map +1 -0
  136. package/lib/typescript/components/ImagesListFooter.d.ts +8 -0
  137. package/lib/typescript/components/ImagesListFooter.d.ts.map +1 -0
  138. package/lib/typescript/components/ImagesModal.d.ts +17 -0
  139. package/lib/typescript/components/ImagesModal.d.ts.map +1 -0
  140. package/lib/typescript/components/ImagesRoot.d.ts +11 -0
  141. package/lib/typescript/components/ImagesRoot.d.ts.map +1 -0
  142. package/lib/typescript/components/InsightsBar.d.ts +13 -0
  143. package/lib/typescript/components/InsightsBar.d.ts.map +1 -0
  144. package/lib/typescript/export.d.ts +12 -0
  145. package/lib/typescript/export.d.ts.map +1 -0
  146. package/lib/typescript/format.d.ts +26 -0
  147. package/lib/typescript/format.d.ts.map +1 -0
  148. package/lib/typescript/hooks/useImageRecords.d.ts +11 -0
  149. package/lib/typescript/hooks/useImageRecords.d.ts.map +1 -0
  150. package/lib/typescript/index.d.ts +33 -0
  151. package/lib/typescript/index.d.ts.map +1 -0
  152. package/lib/typescript/preset.d.ts +38 -0
  153. package/lib/typescript/preset.d.ts.map +1 -0
  154. package/lib/typescript/register.d.ts +15 -0
  155. package/lib/typescript/register.d.ts.map +1 -0
  156. package/lib/typescript/state.d.ts +54 -0
  157. package/lib/typescript/state.d.ts.map +1 -0
  158. package/lib/typescript/store/imageEventStore.d.ts +34 -0
  159. package/lib/typescript/store/imageEventStore.d.ts.map +1 -0
  160. package/lib/typescript/store/insights.d.ts +11 -0
  161. package/lib/typescript/store/insights.d.ts.map +1 -0
  162. package/lib/typescript/sync/imagesSyncAdapter.d.ts +205 -0
  163. package/lib/typescript/sync/imagesSyncAdapter.d.ts.map +1 -0
  164. package/lib/typescript/types.d.ts +121 -0
  165. package/lib/typescript/types.d.ts.map +1 -0
  166. package/package.json +67 -0
  167. package/register.d.ts +1 -0
  168. package/register.js +15 -0
  169. package/src/capture/actions.ts +206 -0
  170. package/src/capture/install.ts +36 -0
  171. package/src/capture/installExpoImage.ts +115 -0
  172. package/src/capture/installRnImage.tsx +133 -0
  173. package/src/capture/overrides.ts +282 -0
  174. package/src/capture/savings.ts +193 -0
  175. package/src/capture/shared.ts +387 -0
  176. package/src/components/ImageDetail.tsx +456 -0
  177. package/src/components/ImageDetailFooter.tsx +270 -0
  178. package/src/components/ImageRow.tsx +148 -0
  179. package/src/components/ImagesHeader.tsx +77 -0
  180. package/src/components/ImagesIcon.tsx +66 -0
  181. package/src/components/ImagesListFooter.tsx +193 -0
  182. package/src/components/ImagesModal.tsx +195 -0
  183. package/src/components/ImagesRoot.tsx +18 -0
  184. package/src/components/InsightsBar.tsx +51 -0
  185. package/src/export.ts +100 -0
  186. package/src/format.ts +85 -0
  187. package/src/hooks/useImageRecords.ts +24 -0
  188. package/src/index.tsx +108 -0
  189. package/src/preset.tsx +35 -0
  190. package/src/register.ts +17 -0
  191. package/src/state.ts +88 -0
  192. package/src/store/imageEventStore.ts +162 -0
  193. package/src/store/insights.ts +66 -0
  194. package/src/sync/imagesSyncAdapter.ts +261 -0
  195. package/src/types.ts +111 -0
@@ -0,0 +1,440 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * ImageDetail — full record view: preview, source, load timeline, dimensions
5
+ * with the oversize verdict + estimated decoded/wasted memory, cache verdict,
6
+ * and error details (including HTTP status/headers when the platform provides
7
+ * them). Cache actions live here too (expo-image global clears).
8
+ */
9
+
10
+ import { useState } from "react";
11
+ import { Image, PixelRatio, ScrollView, StyleSheet, Text, TextInput, TouchableOpacity, View } from "react-native";
12
+ import { macOSColors } from "@buoy-gg/shared-ui";
13
+ import { clearOverride, setOverride } from "../capture/overrides";
14
+ import { proveSavings } from "../capture/savings";
15
+ import { estDecodedBytes, estWastedBytes, neededPixels } from "../store/imageEventStore";
16
+ import { cacheBadge, formatBytes, formatMs, sizeVerdict } from "../format";
17
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
18
+ function Section({
19
+ title,
20
+ children
21
+ }) {
22
+ return /*#__PURE__*/_jsxs(View, {
23
+ style: styles.section,
24
+ children: [/*#__PURE__*/_jsx(Text, {
25
+ style: styles.sectionTitle,
26
+ children: title
27
+ }), /*#__PURE__*/_jsx(View, {
28
+ style: styles.sectionBody,
29
+ children: children
30
+ })]
31
+ });
32
+ }
33
+ function Row({
34
+ label,
35
+ value,
36
+ color
37
+ }) {
38
+ return /*#__PURE__*/_jsxs(View, {
39
+ style: styles.kvRow,
40
+ children: [/*#__PURE__*/_jsx(Text, {
41
+ style: styles.kvLabel,
42
+ children: label
43
+ }), /*#__PURE__*/_jsx(Text, {
44
+ style: [styles.kvValue, color ? {
45
+ color
46
+ } : null],
47
+ selectable: true,
48
+ children: value
49
+ })]
50
+ });
51
+ }
52
+
53
+ /** expo-image global cache clears (no-ops if expo-image is absent). */
54
+ function clearExpoCache(kind) {
55
+ try {
56
+ const expo = require("expo-image");
57
+ if (kind === "memory") void expo.Image.clearMemoryCache();else void expo.Image.clearDiskCache();
58
+ } catch {
59
+ // expo-image not installed
60
+ }
61
+ }
62
+
63
+ /** Free-text source swap: test another URL/format/CDN param on the live view. */
64
+ function SwapUrlSection({
65
+ record
66
+ }) {
67
+ const [url, setUrl] = useState(record.uri);
68
+ const trimmed = url.trim();
69
+ const canApply = record.mounted && trimmed.length > 0 && trimmed !== record.uri;
70
+ return /*#__PURE__*/_jsxs(Section, {
71
+ title: "SWAP SOURCE URL",
72
+ children: [/*#__PURE__*/_jsx(TextInput, {
73
+ style: styles.urlInput,
74
+ value: url,
75
+ onChangeText: setUrl,
76
+ placeholder: "https://\u2026",
77
+ placeholderTextColor: macOSColors.text.muted,
78
+ autoCapitalize: "none",
79
+ autoCorrect: false,
80
+ multiline: true
81
+ }), /*#__PURE__*/_jsxs(View, {
82
+ style: styles.actionsRow,
83
+ children: [/*#__PURE__*/_jsx(TouchableOpacity, {
84
+ style: [styles.actionButton, !canApply && styles.actionDisabled],
85
+ disabled: !canApply,
86
+ onPress: () => setOverride(record.id, {
87
+ source: {
88
+ type: "url",
89
+ uri: trimmed
90
+ },
91
+ label: "URL swapped"
92
+ }),
93
+ children: /*#__PURE__*/_jsx(Text, {
94
+ style: styles.actionText,
95
+ children: "Apply"
96
+ })
97
+ }), /*#__PURE__*/_jsx(TouchableOpacity, {
98
+ style: styles.actionButton,
99
+ onPress: () => setUrl(record.uri),
100
+ children: /*#__PURE__*/_jsx(Text, {
101
+ style: styles.actionText,
102
+ children: "Reset field"
103
+ })
104
+ })]
105
+ })]
106
+ });
107
+ }
108
+
109
+ /**
110
+ * Real, on-device savings proof: re-encode at displayed size as WebP via
111
+ * expo-image-manipulator, report actual bytes, offer an in-place preview.
112
+ */
113
+ function SavingsSection({
114
+ record
115
+ }) {
116
+ const [busy, setBusy] = useState(false);
117
+ const [result, setResult] = useState(null);
118
+ const run = () => {
119
+ setBusy(true);
120
+ proveSavings(record).then(setResult).catch(error => setResult({
121
+ ok: false,
122
+ message: String(error?.message ?? error)
123
+ })).finally(() => setBusy(false));
124
+ };
125
+ return /*#__PURE__*/_jsx(Section, {
126
+ title: "PROVE SAVINGS (re-encode on device)",
127
+ children: result == null ? /*#__PURE__*/_jsx(View, {
128
+ style: styles.actionsRow,
129
+ children: /*#__PURE__*/_jsx(TouchableOpacity, {
130
+ style: styles.actionButton,
131
+ onPress: run,
132
+ disabled: busy,
133
+ children: /*#__PURE__*/_jsx(Text, {
134
+ style: styles.actionText,
135
+ children: busy ? "Re-encoding…" : "Re-encode at displayed size (WebP)"
136
+ })
137
+ })
138
+ }) : /*#__PURE__*/_jsxs(_Fragment, {
139
+ children: [/*#__PURE__*/_jsx(Row, {
140
+ label: "Result",
141
+ value: result.message || (result.ok ? "done" : "failed"),
142
+ color: result.ok ? macOSColors.semantic.success : macOSColors.semantic.error
143
+ }), result.originalBytes != null ? /*#__PURE__*/_jsx(Row, {
144
+ label: "Original",
145
+ value: `${formatBytes(result.originalBytes)} (${result.originalBytesSource})`
146
+ }) : null, result.optimizedBytes != null ? /*#__PURE__*/_jsx(Row, {
147
+ label: "Optimized",
148
+ value: `${formatBytes(result.optimizedBytes)} — ${result.optimizedDims?.width}×${result.optimizedDims?.height} WebP`,
149
+ color: macOSColors.semantic.success
150
+ }) : null, result.savedBytes != null ? /*#__PURE__*/_jsx(Row, {
151
+ label: "Saved",
152
+ value: `${formatBytes(result.savedBytes)} (${result.savedPct}%)`,
153
+ color: macOSColors.semantic.success
154
+ }) : null, /*#__PURE__*/_jsxs(View, {
155
+ style: styles.actionsRow,
156
+ children: [result.ok && result.optimizedUri && record.mounted ? /*#__PURE__*/_jsx(TouchableOpacity, {
157
+ style: styles.actionButton,
158
+ onPress: () => setOverride(record.id, {
159
+ source: {
160
+ type: "url",
161
+ uri: result.optimizedUri
162
+ },
163
+ label: "Optimized preview"
164
+ }),
165
+ children: /*#__PURE__*/_jsx(Text, {
166
+ style: styles.actionText,
167
+ children: "Preview in place"
168
+ })
169
+ }) : null, /*#__PURE__*/_jsx(TouchableOpacity, {
170
+ style: styles.actionButton,
171
+ onPress: run,
172
+ disabled: busy,
173
+ children: /*#__PURE__*/_jsx(Text, {
174
+ style: styles.actionText,
175
+ children: busy ? "Re-encoding…" : "Re-run"
176
+ })
177
+ })]
178
+ })]
179
+ })
180
+ });
181
+ }
182
+ export function ImageDetail({
183
+ record
184
+ }) {
185
+ const verdict = sizeVerdict(record);
186
+ const cache = cacheBadge(record);
187
+ const needed = neededPixels(record);
188
+ const decoded = estDecodedBytes(record);
189
+ const wasted = estWastedBytes(record);
190
+ return /*#__PURE__*/_jsxs(ScrollView, {
191
+ style: styles.container,
192
+ contentContainerStyle: styles.content,
193
+ children: [record.overrideLabel ? /*#__PURE__*/_jsxs(View, {
194
+ style: styles.overrideBanner,
195
+ children: [/*#__PURE__*/_jsxs(Text, {
196
+ style: styles.overrideText,
197
+ children: ["Simulation active: ", record.overrideLabel, " \u2014 stats below describe the override, not the original source."]
198
+ }), /*#__PURE__*/_jsx(TouchableOpacity, {
199
+ onPress: () => clearOverride(record.id),
200
+ children: /*#__PURE__*/_jsx(Text, {
201
+ style: styles.overrideRestore,
202
+ children: "RESTORE"
203
+ })
204
+ })]
205
+ }) : null, record.uri && record.sourceKind !== "data" ? /*#__PURE__*/_jsx(View, {
206
+ style: styles.previewBox,
207
+ children: /*#__PURE__*/_jsx(Image, {
208
+ testID: "buoy-internal-images-preview",
209
+ source: {
210
+ uri: record.uri
211
+ },
212
+ style: styles.preview,
213
+ resizeMode: "contain"
214
+ })
215
+ }) : null, /*#__PURE__*/_jsxs(Section, {
216
+ title: "SOURCE",
217
+ children: [/*#__PURE__*/_jsx(Row, {
218
+ label: "URI",
219
+ value: record.uri || "(none)"
220
+ }), /*#__PURE__*/_jsx(Row, {
221
+ label: "Kind",
222
+ value: record.sourceKind
223
+ }), /*#__PURE__*/_jsx(Row, {
224
+ label: "Library",
225
+ value: record.lib === "expo" ? "expo-image" : "RN <Image>"
226
+ }), record.hasAltText === false ? /*#__PURE__*/_jsx(Row, {
227
+ label: "Alt text",
228
+ value: "missing \u2014 add alt/accessibilityLabel",
229
+ color: macOSColors.semantic.warning
230
+ }) : null, record.mediaType != null ? /*#__PURE__*/_jsx(Row, {
231
+ label: "Media type",
232
+ value: String(record.mediaType)
233
+ }) : null, record.isAnimated != null ? /*#__PURE__*/_jsx(Row, {
234
+ label: "Animated",
235
+ value: record.isAnimated ? "yes" : "no"
236
+ }) : null]
237
+ }), /*#__PURE__*/_jsxs(Section, {
238
+ title: "LOAD",
239
+ children: [/*#__PURE__*/_jsx(Row, {
240
+ label: "Status",
241
+ value: record.status,
242
+ color: record.status === "error" ? macOSColors.semantic.error : record.status === "loaded" ? macOSColors.semantic.success : macOSColors.semantic.warning
243
+ }), /*#__PURE__*/_jsx(Row, {
244
+ label: "Duration",
245
+ value: formatMs(record.durationMs)
246
+ }), record.displayedAt && record.loadedAt ? /*#__PURE__*/_jsx(Row, {
247
+ label: "Decode \u2192 display",
248
+ value: formatMs(Math.max(0, record.displayedAt - record.loadedAt))
249
+ }) : null, /*#__PURE__*/_jsx(Row, {
250
+ label: "Cache",
251
+ value: `${cache.label}`,
252
+ color: cache.color
253
+ }), record.cacheVerdictSource ? /*#__PURE__*/_jsx(Row, {
254
+ label: "Cache source",
255
+ value: record.cacheVerdictSource === "event" ? "reported by expo-image onLoad" : "Image.queryCache after load"
256
+ }) : null, record.progressSeen ? /*#__PURE__*/_jsx(Row, {
257
+ label: "Downloaded",
258
+ value: record.bytesTotal ? `${formatBytes(record.bytesLoaded ?? 0)} / ${formatBytes(record.bytesTotal)}` : "network transfer observed"
259
+ }) : null, /*#__PURE__*/_jsx(Row, {
260
+ label: "Load cycles",
261
+ value: String(record.loadCount)
262
+ }), /*#__PURE__*/_jsx(Row, {
263
+ label: "Still mounted",
264
+ value: record.mounted ? "yes" : "no"
265
+ })]
266
+ }), /*#__PURE__*/_jsxs(Section, {
267
+ title: "DIMENSIONS",
268
+ children: [record.intrinsic ? /*#__PURE__*/_jsx(Row, {
269
+ label: "Decoded",
270
+ value: `${record.intrinsic.width}×${record.intrinsic.height} px`
271
+ }) : /*#__PURE__*/_jsx(Row, {
272
+ label: "Decoded",
273
+ value: "unknown"
274
+ }), record.layout ? /*#__PURE__*/_jsx(Row, {
275
+ label: "Displayed",
276
+ value: `${Math.round(record.layout.width)}×${Math.round(record.layout.height)} dp (needs ${needed ? `${needed.width}×${needed.height}` : "?"} px @${PixelRatio.get()}x)`
277
+ }) : /*#__PURE__*/_jsx(Row, {
278
+ label: "Displayed",
279
+ value: "no layout yet"
280
+ }), verdict.label ? /*#__PURE__*/_jsx(Row, {
281
+ label: "Verdict",
282
+ value: verdict.label,
283
+ color: verdict.color
284
+ }) : null, decoded > 0 ? /*#__PURE__*/_jsx(Row, {
285
+ label: "Est. decoded memory",
286
+ value: formatBytes(decoded)
287
+ }) : null, wasted > 0 ? /*#__PURE__*/_jsx(Row, {
288
+ label: "Est. wasted",
289
+ value: `${formatBytes(wasted)} — resize the source to ${needed ? `${needed.width}×${needed.height}` : "the displayed size"}`,
290
+ color: macOSColors.semantic.warning
291
+ }) : null, (record.layoutShifts ?? 0) > 0 ? /*#__PURE__*/_jsx(Row, {
292
+ label: "Layout shifts",
293
+ value: `${record.layoutShifts} — box resized after load; reserve explicit width/height`,
294
+ color: macOSColors.semantic.warning
295
+ }) : null]
296
+ }), record.sourceKind === "network" || record.sourceKind === "asset" ? /*#__PURE__*/_jsx(SavingsSection, {
297
+ record: record
298
+ }, `savings-${record.id}`) : null, record.status === "error" ? /*#__PURE__*/_jsxs(Section, {
299
+ title: "ERROR",
300
+ children: [/*#__PURE__*/_jsx(Row, {
301
+ label: "Message",
302
+ value: record.error ?? "unknown",
303
+ color: macOSColors.semantic.error
304
+ }), record.errorCode != null ? /*#__PURE__*/_jsx(Row, {
305
+ label: "HTTP status",
306
+ value: String(record.errorCode)
307
+ }) : null, record.errorHeaders ? Object.entries(record.errorHeaders).map(([k, v]) => /*#__PURE__*/_jsx(Row, {
308
+ label: k,
309
+ value: String(v)
310
+ }, k)) : null]
311
+ }) : null, record.sourceKind === "network" && record.mounted ? /*#__PURE__*/_jsx(SwapUrlSection, {
312
+ record: record
313
+ }, record.id) : null, record.lib === "expo" ? /*#__PURE__*/_jsx(Section, {
314
+ title: "CACHE ACTIONS (expo-image, global)",
315
+ children: /*#__PURE__*/_jsxs(View, {
316
+ style: styles.actionsRow,
317
+ children: [/*#__PURE__*/_jsx(TouchableOpacity, {
318
+ style: styles.actionButton,
319
+ onPress: () => clearExpoCache("memory"),
320
+ children: /*#__PURE__*/_jsx(Text, {
321
+ style: styles.actionText,
322
+ children: "Clear memory cache"
323
+ })
324
+ }), /*#__PURE__*/_jsx(TouchableOpacity, {
325
+ style: styles.actionButton,
326
+ onPress: () => clearExpoCache("disk"),
327
+ children: /*#__PURE__*/_jsx(Text, {
328
+ style: styles.actionText,
329
+ children: "Clear disk cache"
330
+ })
331
+ })]
332
+ })
333
+ }) : null]
334
+ });
335
+ }
336
+ const styles = StyleSheet.create({
337
+ container: {
338
+ flex: 1
339
+ },
340
+ content: {
341
+ padding: 12,
342
+ gap: 12
343
+ },
344
+ previewBox: {
345
+ height: 140,
346
+ borderRadius: 8,
347
+ backgroundColor: macOSColors.background.input,
348
+ overflow: "hidden"
349
+ },
350
+ preview: {
351
+ width: "100%",
352
+ height: "100%"
353
+ },
354
+ section: {
355
+ gap: 6
356
+ },
357
+ sectionTitle: {
358
+ color: macOSColors.text.muted,
359
+ fontSize: 10,
360
+ fontWeight: "700",
361
+ letterSpacing: 0.8
362
+ },
363
+ sectionBody: {
364
+ backgroundColor: macOSColors.background.card,
365
+ borderRadius: 8,
366
+ borderWidth: StyleSheet.hairlineWidth,
367
+ borderColor: macOSColors.border.default,
368
+ paddingHorizontal: 10,
369
+ paddingVertical: 4
370
+ },
371
+ kvRow: {
372
+ flexDirection: "row",
373
+ paddingVertical: 5,
374
+ gap: 12
375
+ },
376
+ kvLabel: {
377
+ color: macOSColors.text.secondary,
378
+ fontSize: 11,
379
+ width: 110
380
+ },
381
+ kvValue: {
382
+ color: macOSColors.text.primary,
383
+ fontSize: 11,
384
+ flex: 1
385
+ },
386
+ actionsRow: {
387
+ flexDirection: "row",
388
+ gap: 8,
389
+ paddingVertical: 8
390
+ },
391
+ actionButton: {
392
+ backgroundColor: macOSColors.background.hover,
393
+ borderRadius: 6,
394
+ paddingHorizontal: 10,
395
+ paddingVertical: 6,
396
+ borderWidth: StyleSheet.hairlineWidth,
397
+ borderColor: macOSColors.border.default
398
+ },
399
+ actionText: {
400
+ color: macOSColors.text.primary,
401
+ fontSize: 11,
402
+ fontWeight: "600"
403
+ },
404
+ actionDisabled: {
405
+ opacity: 0.4
406
+ },
407
+ urlInput: {
408
+ color: macOSColors.text.primary,
409
+ fontSize: 11,
410
+ fontFamily: "monospace",
411
+ backgroundColor: macOSColors.background.input,
412
+ borderRadius: 6,
413
+ borderWidth: StyleSheet.hairlineWidth,
414
+ borderColor: macOSColors.border.input,
415
+ paddingHorizontal: 8,
416
+ paddingVertical: 6,
417
+ marginTop: 8
418
+ },
419
+ overrideBanner: {
420
+ flexDirection: "row",
421
+ alignItems: "center",
422
+ gap: 10,
423
+ padding: 10,
424
+ borderRadius: 8,
425
+ backgroundColor: macOSColors.semantic.warningBackground
426
+ },
427
+ overrideText: {
428
+ flex: 1,
429
+ color: macOSColors.semantic.warning,
430
+ fontSize: 11,
431
+ lineHeight: 15
432
+ },
433
+ overrideRestore: {
434
+ color: macOSColors.semantic.warning,
435
+ fontSize: 11,
436
+ fontWeight: "700",
437
+ letterSpacing: 0.5
438
+ }
439
+ });
440
+ //# sourceMappingURL=ImageDetail.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["useState","Image","PixelRatio","ScrollView","StyleSheet","Text","TextInput","TouchableOpacity","View","macOSColors","clearOverride","setOverride","proveSavings","estDecodedBytes","estWastedBytes","neededPixels","cacheBadge","formatBytes","formatMs","sizeVerdict","jsx","_jsx","jsxs","_jsxs","Fragment","_Fragment","Section","title","children","style","styles","section","sectionTitle","sectionBody","Row","label","value","color","kvRow","kvLabel","kvValue","selectable","clearExpoCache","kind","expo","require","clearMemoryCache","clearDiskCache","SwapUrlSection","record","url","setUrl","uri","trimmed","trim","canApply","mounted","length","urlInput","onChangeText","placeholder","placeholderTextColor","text","muted","autoCapitalize","autoCorrect","multiline","actionsRow","actionButton","actionDisabled","disabled","onPress","id","source","type","actionText","SavingsSection","busy","setBusy","result","setResult","run","then","catch","error","ok","message","String","finally","semantic","success","originalBytes","originalBytesSource","optimizedBytes","optimizedDims","width","height","savedBytes","savedPct","optimizedUri","ImageDetail","verdict","cache","needed","decoded","wasted","container","contentContainerStyle","content","overrideLabel","overrideBanner","overrideText","overrideRestore","sourceKind","previewBox","testID","preview","resizeMode","lib","hasAltText","warning","mediaType","isAnimated","status","durationMs","displayedAt","loadedAt","Math","max","cacheVerdictSource","progressSeen","bytesTotal","bytesLoaded","loadCount","intrinsic","layout","round","get","layoutShifts","errorCode","errorHeaders","Object","entries","map","k","v","create","flex","padding","gap","borderRadius","backgroundColor","background","input","overflow","fontSize","fontWeight","letterSpacing","card","borderWidth","hairlineWidth","borderColor","border","default","paddingHorizontal","paddingVertical","flexDirection","secondary","primary","hover","opacity","fontFamily","marginTop","alignItems","warningBackground","lineHeight"],"sourceRoot":"../../../src","sources":["components/ImageDetail.tsx"],"mappings":"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","ignoreList":[]}