@buoy-gg/assets 7.0.16

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 (179) hide show
  1. package/LICENSE +58 -0
  2. package/README.md +55 -0
  3. package/lib/commonjs/capture/expo.js +46 -0
  4. package/lib/commonjs/capture/expo.js.map +1 -0
  5. package/lib/commonjs/capture/install.js +78 -0
  6. package/lib/commonjs/capture/install.js.map +1 -0
  7. package/lib/commonjs/capture/measure.js +186 -0
  8. package/lib/commonjs/capture/measure.js.map +1 -0
  9. package/lib/commonjs/capture/metroGraph.js +148 -0
  10. package/lib/commonjs/capture/metroGraph.js.map +1 -0
  11. package/lib/commonjs/capture/registry.js +124 -0
  12. package/lib/commonjs/capture/registry.js.map +1 -0
  13. package/lib/commonjs/components/AssetDetail.js +205 -0
  14. package/lib/commonjs/components/AssetDetail.js.map +1 -0
  15. package/lib/commonjs/components/AssetRow.js +246 -0
  16. package/lib/commonjs/components/AssetRow.js.map +1 -0
  17. package/lib/commonjs/components/AssetsFilterBar.js +92 -0
  18. package/lib/commonjs/components/AssetsFilterBar.js.map +1 -0
  19. package/lib/commonjs/components/AssetsHeader.js +66 -0
  20. package/lib/commonjs/components/AssetsHeader.js.map +1 -0
  21. package/lib/commonjs/components/AssetsIcon.js +19 -0
  22. package/lib/commonjs/components/AssetsIcon.js.map +1 -0
  23. package/lib/commonjs/components/AssetsListControls.js +94 -0
  24. package/lib/commonjs/components/AssetsListControls.js.map +1 -0
  25. package/lib/commonjs/components/AssetsModal.js +338 -0
  26. package/lib/commonjs/components/AssetsModal.js.map +1 -0
  27. package/lib/commonjs/components/BaselineBar.js +110 -0
  28. package/lib/commonjs/components/BaselineBar.js.map +1 -0
  29. package/lib/commonjs/export.js +62 -0
  30. package/lib/commonjs/export.js.map +1 -0
  31. package/lib/commonjs/format.js +59 -0
  32. package/lib/commonjs/format.js.map +1 -0
  33. package/lib/commonjs/hooks/useAssetRecords.js +22 -0
  34. package/lib/commonjs/hooks/useAssetRecords.js.map +1 -0
  35. package/lib/commonjs/index.js +260 -0
  36. package/lib/commonjs/index.js.map +1 -0
  37. package/lib/commonjs/package.json +1 -0
  38. package/lib/commonjs/preset.js +45 -0
  39. package/lib/commonjs/preset.js.map +1 -0
  40. package/lib/commonjs/remote.js +65 -0
  41. package/lib/commonjs/remote.js.map +1 -0
  42. package/lib/commonjs/state.js +51 -0
  43. package/lib/commonjs/state.js.map +1 -0
  44. package/lib/commonjs/store/assetStore.js +234 -0
  45. package/lib/commonjs/store/assetStore.js.map +1 -0
  46. package/lib/commonjs/store/baseline.js +165 -0
  47. package/lib/commonjs/store/baseline.js.map +1 -0
  48. package/lib/commonjs/store/insights.js +129 -0
  49. package/lib/commonjs/store/insights.js.map +1 -0
  50. package/lib/commonjs/sync/assetsSyncAdapter.js +157 -0
  51. package/lib/commonjs/sync/assetsSyncAdapter.js.map +1 -0
  52. package/lib/commonjs/types.js +2 -0
  53. package/lib/commonjs/types.js.map +1 -0
  54. package/lib/module/capture/expo.js +41 -0
  55. package/lib/module/capture/expo.js.map +1 -0
  56. package/lib/module/capture/install.js +72 -0
  57. package/lib/module/capture/install.js.map +1 -0
  58. package/lib/module/capture/measure.js +179 -0
  59. package/lib/module/capture/measure.js.map +1 -0
  60. package/lib/module/capture/metroGraph.js +141 -0
  61. package/lib/module/capture/metroGraph.js.map +1 -0
  62. package/lib/module/capture/registry.js +117 -0
  63. package/lib/module/capture/registry.js.map +1 -0
  64. package/lib/module/components/AssetDetail.js +201 -0
  65. package/lib/module/components/AssetDetail.js.map +1 -0
  66. package/lib/module/components/AssetRow.js +242 -0
  67. package/lib/module/components/AssetRow.js.map +1 -0
  68. package/lib/module/components/AssetsFilterBar.js +88 -0
  69. package/lib/module/components/AssetsFilterBar.js.map +1 -0
  70. package/lib/module/components/AssetsHeader.js +62 -0
  71. package/lib/module/components/AssetsHeader.js.map +1 -0
  72. package/lib/module/components/AssetsIcon.js +12 -0
  73. package/lib/module/components/AssetsIcon.js.map +1 -0
  74. package/lib/module/components/AssetsListControls.js +90 -0
  75. package/lib/module/components/AssetsListControls.js.map +1 -0
  76. package/lib/module/components/AssetsModal.js +333 -0
  77. package/lib/module/components/AssetsModal.js.map +1 -0
  78. package/lib/module/components/BaselineBar.js +106 -0
  79. package/lib/module/components/BaselineBar.js.map +1 -0
  80. package/lib/module/export.js +57 -0
  81. package/lib/module/export.js.map +1 -0
  82. package/lib/module/format.js +51 -0
  83. package/lib/module/format.js.map +1 -0
  84. package/lib/module/hooks/useAssetRecords.js +18 -0
  85. package/lib/module/hooks/useAssetRecords.js.map +1 -0
  86. package/lib/module/index.js +59 -0
  87. package/lib/module/index.js.map +1 -0
  88. package/lib/module/preset.js +40 -0
  89. package/lib/module/preset.js.map +1 -0
  90. package/lib/module/remote.js +58 -0
  91. package/lib/module/remote.js.map +1 -0
  92. package/lib/module/state.js +47 -0
  93. package/lib/module/state.js.map +1 -0
  94. package/lib/module/store/assetStore.js +219 -0
  95. package/lib/module/store/assetStore.js.map +1 -0
  96. package/lib/module/store/baseline.js +157 -0
  97. package/lib/module/store/baseline.js.map +1 -0
  98. package/lib/module/store/insights.js +125 -0
  99. package/lib/module/store/insights.js.map +1 -0
  100. package/lib/module/sync/assetsSyncAdapter.js +153 -0
  101. package/lib/module/sync/assetsSyncAdapter.js.map +1 -0
  102. package/lib/module/types.js +2 -0
  103. package/lib/module/types.js.map +1 -0
  104. package/lib/typescript/capture/expo.d.ts +18 -0
  105. package/lib/typescript/capture/expo.d.ts.map +1 -0
  106. package/lib/typescript/capture/install.d.ts +17 -0
  107. package/lib/typescript/capture/install.d.ts.map +1 -0
  108. package/lib/typescript/capture/measure.d.ts +38 -0
  109. package/lib/typescript/capture/measure.d.ts.map +1 -0
  110. package/lib/typescript/capture/metroGraph.d.ts +33 -0
  111. package/lib/typescript/capture/metroGraph.d.ts.map +1 -0
  112. package/lib/typescript/capture/registry.d.ts +45 -0
  113. package/lib/typescript/capture/registry.d.ts.map +1 -0
  114. package/lib/typescript/components/AssetDetail.d.ts +17 -0
  115. package/lib/typescript/components/AssetDetail.d.ts.map +1 -0
  116. package/lib/typescript/components/AssetRow.d.ts +32 -0
  117. package/lib/typescript/components/AssetRow.d.ts.map +1 -0
  118. package/lib/typescript/components/AssetsFilterBar.d.ts +16 -0
  119. package/lib/typescript/components/AssetsFilterBar.d.ts.map +1 -0
  120. package/lib/typescript/components/AssetsHeader.d.ts +22 -0
  121. package/lib/typescript/components/AssetsHeader.d.ts.map +1 -0
  122. package/lib/typescript/components/AssetsIcon.d.ts +9 -0
  123. package/lib/typescript/components/AssetsIcon.d.ts.map +1 -0
  124. package/lib/typescript/components/AssetsListControls.d.ts +18 -0
  125. package/lib/typescript/components/AssetsListControls.d.ts.map +1 -0
  126. package/lib/typescript/components/AssetsModal.d.ts +24 -0
  127. package/lib/typescript/components/AssetsModal.d.ts.map +1 -0
  128. package/lib/typescript/components/BaselineBar.d.ts +13 -0
  129. package/lib/typescript/components/BaselineBar.d.ts.map +1 -0
  130. package/lib/typescript/export.d.ts +8 -0
  131. package/lib/typescript/export.d.ts.map +1 -0
  132. package/lib/typescript/format.d.ts +13 -0
  133. package/lib/typescript/format.d.ts.map +1 -0
  134. package/lib/typescript/hooks/useAssetRecords.d.ts +11 -0
  135. package/lib/typescript/hooks/useAssetRecords.d.ts.map +1 -0
  136. package/lib/typescript/index.d.ts +26 -0
  137. package/lib/typescript/index.d.ts.map +1 -0
  138. package/lib/typescript/preset.d.ts +38 -0
  139. package/lib/typescript/preset.d.ts.map +1 -0
  140. package/lib/typescript/remote.d.ts +17 -0
  141. package/lib/typescript/remote.d.ts.map +1 -0
  142. package/lib/typescript/state.d.ts +41 -0
  143. package/lib/typescript/state.d.ts.map +1 -0
  144. package/lib/typescript/store/assetStore.d.ts +51 -0
  145. package/lib/typescript/store/assetStore.d.ts.map +1 -0
  146. package/lib/typescript/store/baseline.d.ts +22 -0
  147. package/lib/typescript/store/baseline.d.ts.map +1 -0
  148. package/lib/typescript/store/insights.d.ts +7 -0
  149. package/lib/typescript/store/insights.d.ts.map +1 -0
  150. package/lib/typescript/sync/assetsSyncAdapter.d.ts +83 -0
  151. package/lib/typescript/sync/assetsSyncAdapter.d.ts.map +1 -0
  152. package/lib/typescript/types.d.ts +162 -0
  153. package/lib/typescript/types.d.ts.map +1 -0
  154. package/package.json +77 -0
  155. package/src/capture/expo.ts +45 -0
  156. package/src/capture/install.ts +73 -0
  157. package/src/capture/measure.ts +167 -0
  158. package/src/capture/metroGraph.ts +146 -0
  159. package/src/capture/registry.ts +134 -0
  160. package/src/components/AssetDetail.tsx +207 -0
  161. package/src/components/AssetRow.tsx +243 -0
  162. package/src/components/AssetsFilterBar.tsx +99 -0
  163. package/src/components/AssetsHeader.tsx +75 -0
  164. package/src/components/AssetsIcon.tsx +9 -0
  165. package/src/components/AssetsListControls.tsx +101 -0
  166. package/src/components/AssetsModal.tsx +368 -0
  167. package/src/components/BaselineBar.tsx +98 -0
  168. package/src/export.ts +108 -0
  169. package/src/format.ts +53 -0
  170. package/src/hooks/useAssetRecords.ts +26 -0
  171. package/src/index.tsx +87 -0
  172. package/src/preset.tsx +35 -0
  173. package/src/remote.ts +65 -0
  174. package/src/state.ts +84 -0
  175. package/src/store/assetStore.ts +209 -0
  176. package/src/store/baseline.ts +152 -0
  177. package/src/store/insights.ts +145 -0
  178. package/src/sync/assetsSyncAdapter.ts +151 -0
  179. package/src/types.ts +160 -0
@@ -0,0 +1,124 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.getRegistryModule = getRegistryModule;
7
+ exports.patchRegisterAsset = patchRegisterAsset;
8
+ exports.resolveRegistryAsset = resolveRegistryAsset;
9
+ exports.upsertFromPackagerAsset = upsertFromPackagerAsset;
10
+ exports.walkRegistry = walkRegistry;
11
+ var _assetStore = require("../store/assetStore");
12
+ /**
13
+ * Runtime access to @react-native/assets-registry.
14
+ *
15
+ * Asset ids are contiguous 1..N (`assets.push` return value), so a plain
16
+ * getAssetByID walk enumerates every asset registered so far — including
17
+ * everything registered BEFORE this tool was evaluated. That's why, unlike
18
+ * the images tool, there is no "must be the first import" requirement here:
19
+ * the walk backfills whatever the patch missed.
20
+ *
21
+ * registerAsset is patched (plain non-frozen CommonJS export, looked up at
22
+ * call time by Metro's generated asset modules) purely for LIVE updates as
23
+ * lazily-required assets register later.
24
+ */
25
+
26
+ /** Runtime shape of a registry entry (fileSystemLocation/files are stripped by Metro). */
27
+
28
+ let cachedRegistry;
29
+ function getRegistryModule() {
30
+ if (cachedRegistry !== undefined) return cachedRegistry;
31
+ let mod = null;
32
+ try {
33
+ mod = require("@react-native/assets-registry/registry");
34
+ } catch {
35
+ try {
36
+ // Older RN layouts re-export from here; same module instance when both exist.
37
+ mod = require("react-native/Libraries/Image/AssetRegistry");
38
+ } catch {
39
+ mod = null;
40
+ }
41
+ }
42
+ cachedRegistry = mod && typeof mod.getAssetByID === "function" ? mod : null;
43
+ return cachedRegistry;
44
+ }
45
+
46
+ /** resolveAssetSource(id) → this environment's URI (dev URL / file:// / res id). */
47
+ function resolveRegistryAsset(registryId) {
48
+ try {
49
+ const {
50
+ Image
51
+ } = require("react-native");
52
+ const resolved = Image.resolveAssetSource(registryId);
53
+ if (resolved && typeof resolved.uri === "string") {
54
+ return {
55
+ uri: resolved.uri,
56
+ scale: resolved.scale ?? 1
57
+ };
58
+ }
59
+ } catch {
60
+ // resolution is enrichment — never let it break the walk
61
+ }
62
+ return null;
63
+ }
64
+ function upsertFromPackagerAsset(registryId, asset) {
65
+ const resolved = resolveRegistryAsset(registryId);
66
+ return (0, _assetStore.upsertRecord)({
67
+ key: (0, _assetStore.assetKey)(asset.httpServerLocation, asset.name, asset.type),
68
+ name: asset.name,
69
+ type: asset.type,
70
+ origin: "registry",
71
+ registryId,
72
+ hash: asset.hash,
73
+ httpServerLocation: asset.httpServerLocation,
74
+ width: asset.width ?? undefined,
75
+ height: asset.height ?? undefined,
76
+ scales: asset.scales,
77
+ resolvedUri: resolved?.uri,
78
+ resolvedScale: resolved?.scale,
79
+ loaded: true
80
+ });
81
+ }
82
+
83
+ /** Enumerate every asset registered so far. Returns the highest id seen. */
84
+ function walkRegistry() {
85
+ const registry = getRegistryModule();
86
+ if (!registry) return 0;
87
+ let id = 0;
88
+ for (;;) {
89
+ const asset = registry.getAssetByID(id + 1);
90
+ if (!asset) break;
91
+ id++;
92
+ upsertFromPackagerAsset(id, asset);
93
+ }
94
+ return id;
95
+ }
96
+ const PATCH_MARKER = "__buoyAssetsPatched";
97
+
98
+ /**
99
+ * Wrap registerAsset so future registrations stream in live. Safe to call
100
+ * more than once (marker guard); the walk covers anything registered before.
101
+ */
102
+ function patchRegisterAsset() {
103
+ const registry = getRegistryModule();
104
+ if (!registry) return false;
105
+ const original = registry.registerAsset;
106
+ if (original[PATCH_MARKER]) return true;
107
+ const wrapped = asset => {
108
+ const id = original.call(registry, asset);
109
+ try {
110
+ upsertFromPackagerAsset(id, asset);
111
+ } catch {
112
+ // never break app asset registration
113
+ }
114
+ return id;
115
+ };
116
+ wrapped[PATCH_MARKER] = true;
117
+ try {
118
+ registry.registerAsset = wrapped;
119
+ } catch {
120
+ return false;
121
+ }
122
+ return true;
123
+ }
124
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_assetStore","require","cachedRegistry","getRegistryModule","undefined","mod","getAssetByID","resolveRegistryAsset","registryId","Image","resolved","resolveAssetSource","uri","scale","upsertFromPackagerAsset","asset","upsertRecord","key","assetKey","httpServerLocation","name","type","origin","hash","width","height","scales","resolvedUri","resolvedScale","loaded","walkRegistry","registry","id","PATCH_MARKER","patchRegisterAsset","original","registerAsset","wrapped","call"],"sourceRoot":"../../../src","sources":["capture/registry.ts"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,205 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.AssetDetail = AssetDetail;
7
+ var _reactNative = require("react-native");
8
+ var _sharedUi = require("@buoy-gg/shared-ui");
9
+ var _measure = require("../capture/measure");
10
+ var _format = require("../format");
11
+ var _assetStore = require("../store/assetStore");
12
+ var _jsxRuntime = require("react/jsx-runtime");
13
+ /**
14
+ * AssetDetail — full metadata for one asset: preview, identity, dimensions,
15
+ * per-scale sizes, resolution info, and which audit findings apply.
16
+ *
17
+ * Image previews render through the numeric registry id (works in every
18
+ * environment); fonts render a pangram with fontFamily set to the asset name
19
+ * — a best-effort guess (family ≠ filename for many fonts) that falls back
20
+ * to the system font silently when it misses.
21
+ */
22
+
23
+ function Row({
24
+ label,
25
+ value
26
+ }) {
27
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
28
+ style: styles.kvRow,
29
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
30
+ style: styles.kvLabel,
31
+ children: label
32
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
33
+ style: styles.kvValue,
34
+ selectable: true,
35
+ children: value
36
+ })]
37
+ });
38
+ }
39
+ function Preview({
40
+ record
41
+ }) {
42
+ if (record.kind === "image") {
43
+ const source = (0, _measure.displaySource)(record);
44
+ if (source == null) return null;
45
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
46
+ style: styles.previewBox,
47
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Image, {
48
+ testID: "buoy-internal-assets-preview",
49
+ source: source,
50
+ style: styles.previewImage,
51
+ resizeMode: "contain"
52
+ })
53
+ });
54
+ }
55
+ if (record.kind === "font") {
56
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
57
+ style: styles.previewBox,
58
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
59
+ style: [styles.fontPreview, {
60
+ fontFamily: record.name
61
+ }],
62
+ children: "The quick brown fox jumps over the lazy dog 0123456789"
63
+ })
64
+ });
65
+ }
66
+ return null;
67
+ }
68
+ function AssetDetail({
69
+ record,
70
+ insights
71
+ }) {
72
+ const findings = [];
73
+ if (insights.neverLoaded.includes(record.id)) {
74
+ findings.push("Never loaded — shipped in the bundle but no code required it");
75
+ }
76
+ if (insights.scaleGaps.includes(record.id)) {
77
+ findings.push("Scale gap — no variant covers this device's pixel ratio");
78
+ }
79
+ if (insights.webpCandidates.includes(record.id)) {
80
+ findings.push("WebP candidate — large png/jpeg, converting typically saves 20–40%");
81
+ }
82
+ const duplicate = insights.duplicates.find(d => d.ids.includes(record.id));
83
+ if (duplicate) {
84
+ findings.push(`Duplicate content — identical bytes shipped ${duplicate.ids.length} times`);
85
+ }
86
+ if (insights.overDecode.includes(record.id)) {
87
+ findings.push("Decodes larger than 2× this entire screen — resize the source, no view can need this many pixels");
88
+ }
89
+ if (insights.heavyGifs.includes(record.id)) {
90
+ findings.push("Heavy GIF — every frame decodes into memory; a video or Lottie is typically ~90% smaller");
91
+ }
92
+ if (insights.heavyFonts.includes(record.id)) {
93
+ findings.push("Heavy font — likely an unsubset icon font; subsetting to used glyphs usually saves most of it");
94
+ }
95
+ if (insights.scaleAnomalies.includes(record.id)) {
96
+ findings.push("Scale anomaly — a higher-resolution variant is smaller in bytes than a lower one; check the exports");
97
+ }
98
+ const estimate = (0, _assetStore.estDecodedBytes)(record);
99
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.ScrollView, {
100
+ style: styles.scroll,
101
+ contentContainerStyle: styles.content,
102
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(Preview, {
103
+ record: record
104
+ }), findings.length > 0 ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
105
+ style: styles.findings,
106
+ children: findings.map(finding => /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
107
+ style: styles.findingText,
108
+ children: finding
109
+ }, finding))
110
+ }) : null, /*#__PURE__*/(0, _jsxRuntime.jsx)(Row, {
111
+ label: "Name",
112
+ value: `${record.name}.${record.type}`
113
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(Row, {
114
+ label: "Kind",
115
+ value: record.kind
116
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(Row, {
117
+ label: "Status",
118
+ value: record.loaded ? "Loaded (registered at runtime)" : "In bundle, never loaded"
119
+ }), record.kind === "image" ? /*#__PURE__*/(0, _jsxRuntime.jsx)(Row, {
120
+ label: "Dimensions",
121
+ value: `${(0, _format.formatDimensions)(record)} (logical)`
122
+ }) : null, record.kind === "image" && record.scales.length ? /*#__PURE__*/(0, _jsxRuntime.jsx)(Row, {
123
+ label: "Scales",
124
+ value: (0, _format.formatScales)(record.scales)
125
+ }) : null, record.sizesByScale ? Object.entries(record.sizesByScale).map(([scale, bytes]) => /*#__PURE__*/(0, _jsxRuntime.jsx)(Row, {
126
+ label: `Size @${scale}x`,
127
+ value: (0, _format.formatBytes)(bytes)
128
+ }, scale)) : null, record.sizeBytes != null && record.sizeSource === "measured" ? /*#__PURE__*/(0, _jsxRuntime.jsx)(Row, {
129
+ label: "Total size",
130
+ value: (0, _format.formatBytes)(record.sizeBytes)
131
+ }) : null, estimate > 0 ? /*#__PURE__*/(0, _jsxRuntime.jsx)(Row, {
132
+ label: "Decoded memory",
133
+ value: `~${(0, _format.formatBytes)(estimate)} (RGBA)`
134
+ }) : null, record.registryId != null ? /*#__PURE__*/(0, _jsxRuntime.jsx)(Row, {
135
+ label: "Registry id",
136
+ value: String(record.registryId)
137
+ }) : null, record.hash ? /*#__PURE__*/(0, _jsxRuntime.jsx)(Row, {
138
+ label: "Hash",
139
+ value: record.hash
140
+ }) : null, record.httpServerLocation ? /*#__PURE__*/(0, _jsxRuntime.jsx)(Row, {
141
+ label: "Location",
142
+ value: record.httpServerLocation
143
+ }) : null, record.fileSystemLocation ? /*#__PURE__*/(0, _jsxRuntime.jsx)(Row, {
144
+ label: "Source dir",
145
+ value: record.fileSystemLocation
146
+ }) : null, record.resolvedUri ? /*#__PURE__*/(0, _jsxRuntime.jsx)(Row, {
147
+ label: "Resolved URI",
148
+ value: record.resolvedUri
149
+ }) : null]
150
+ });
151
+ }
152
+ const styles = _reactNative.StyleSheet.create({
153
+ scroll: {
154
+ flex: 1
155
+ },
156
+ content: {
157
+ padding: 12,
158
+ gap: 8
159
+ },
160
+ previewBox: {
161
+ borderRadius: 8,
162
+ backgroundColor: _sharedUi.macOSColors.background.input,
163
+ padding: 12,
164
+ alignItems: "center",
165
+ justifyContent: "center",
166
+ minHeight: 96
167
+ },
168
+ previewImage: {
169
+ width: "100%",
170
+ height: 140
171
+ },
172
+ fontPreview: {
173
+ color: _sharedUi.macOSColors.text.primary,
174
+ fontSize: 16,
175
+ textAlign: "center"
176
+ },
177
+ findings: {
178
+ borderRadius: 8,
179
+ borderWidth: 1,
180
+ borderColor: _sharedUi.macOSColors.border.default,
181
+ backgroundColor: _sharedUi.macOSColors.background.card,
182
+ padding: 10,
183
+ gap: 6
184
+ },
185
+ findingText: {
186
+ color: _sharedUi.macOSColors.text.secondary,
187
+ fontSize: 11,
188
+ lineHeight: 15
189
+ },
190
+ kvRow: {
191
+ gap: 2
192
+ },
193
+ kvLabel: {
194
+ color: _sharedUi.macOSColors.text.muted,
195
+ fontSize: 9,
196
+ fontWeight: "700",
197
+ letterSpacing: 0.5,
198
+ textTransform: "uppercase"
199
+ },
200
+ kvValue: {
201
+ color: _sharedUi.macOSColors.text.primary,
202
+ fontSize: 12
203
+ }
204
+ });
205
+ //# sourceMappingURL=AssetDetail.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNative","require","_sharedUi","_measure","_format","_assetStore","_jsxRuntime","Row","label","value","jsxs","View","style","styles","kvRow","children","jsx","Text","kvLabel","kvValue","selectable","Preview","record","kind","source","displaySource","previewBox","Image","testID","previewImage","resizeMode","fontPreview","fontFamily","name","AssetDetail","insights","findings","neverLoaded","includes","id","push","scaleGaps","webpCandidates","duplicate","duplicates","find","d","ids","length","overDecode","heavyGifs","heavyFonts","scaleAnomalies","estimate","estDecodedBytes","ScrollView","scroll","contentContainerStyle","content","map","finding","findingText","type","loaded","formatDimensions","scales","formatScales","sizesByScale","Object","entries","scale","bytes","formatBytes","sizeBytes","sizeSource","registryId","String","hash","httpServerLocation","fileSystemLocation","resolvedUri","StyleSheet","create","flex","padding","gap","borderRadius","backgroundColor","macOSColors","background","input","alignItems","justifyContent","minHeight","width","height","color","text","primary","fontSize","textAlign","borderWidth","borderColor","border","default","card","secondary","lineHeight","muted","fontWeight","letterSpacing","textTransform"],"sourceRoot":"../../../src","sources":["components/AssetDetail.tsx"],"mappings":"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","ignoreList":[]}
@@ -0,0 +1,246 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.AssetRow = AssetRow;
7
+ var _reactNative = require("react-native");
8
+ var _sharedUi = require("@buoy-gg/shared-ui");
9
+ var _measure = require("../capture/measure");
10
+ var _format = require("../format");
11
+ var _assetStore = require("../store/assetStore");
12
+ var _jsxRuntime = require("react/jsx-runtime");
13
+ /**
14
+ * AssetRow — one bundled asset as a family-style card (matching the network
15
+ * tool's rows): rounded card, colored accent edge per kind, thumbnail, name,
16
+ * quiet metadata, bold right-aligned size, and finding badges ONLY when a
17
+ * finding exists. A thin proportional bar along the card bottom makes the
18
+ * heavy assets feel heavy at a glance.
19
+ *
20
+ * Thumbnails render through the NUMERIC registry id when available — that
21
+ * routes through resolveAssetSource natively, so it works in dev, iOS
22
+ * release (file://) and Android release (bare resource id) alike. They carry
23
+ * the buoy-internal testID so the images tool never records our own UI.
24
+ */
25
+
26
+ /** Which audit findings apply to this record (drives the row badges). */
27
+
28
+ function Badge({
29
+ label,
30
+ color
31
+ }) {
32
+ // Quiet chip: legibility from light-gray text on a neutral fill. Only the
33
+ // serious tiers (red) and WEBP (blue) carry a small dot; the rest are plain.
34
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
35
+ style: styles.badgePill,
36
+ children: [color ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
37
+ style: [styles.badgeDot, {
38
+ backgroundColor: color
39
+ }]
40
+ }) : null, /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
41
+ style: styles.badgePillText,
42
+ children: label
43
+ })]
44
+ });
45
+ }
46
+ function AssetRow({
47
+ record,
48
+ flags,
49
+ sizeFraction,
50
+ onPress
51
+ }) {
52
+ const accent = _format.KIND_COLORS[record.kind];
53
+ const thumbSource = record.kind === "image" ? (0, _measure.displaySource)(record) : null;
54
+ const badges = [];
55
+ if (!record.loaded) badges.push({
56
+ label: "UNUSED"
57
+ });
58
+ if (flags.oversize) badges.push({
59
+ label: "OVERSIZE",
60
+ color: _sharedUi.macOSColors.semantic.error
61
+ });
62
+ if (flags.duplicate) badges.push({
63
+ label: "DUP"
64
+ });
65
+ if (flags.heavy) badges.push({
66
+ label: "HEAVY"
67
+ });
68
+ if (flags.scaleAnomaly) badges.push({
69
+ label: "BAD SCALE",
70
+ color: _sharedUi.macOSColors.semantic.error
71
+ });else if (flags.scaleGap) badges.push({
72
+ label: "LOW-RES"
73
+ });
74
+ if (flags.webp) badges.push({
75
+ label: "WEBP",
76
+ color: _sharedUi.macOSColors.semantic.info
77
+ });
78
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.TouchableOpacity, {
79
+ style: styles.card,
80
+ testID: `buoy-asset-row-${record.id}`,
81
+ onPress: () => onPress(record.id),
82
+ activeOpacity: 0.7,
83
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
84
+ style: styles.body,
85
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
86
+ style: styles.thumbBox,
87
+ children: thumbSource != null ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Image, {
88
+ testID: "buoy-internal-assets-thumb",
89
+ source: thumbSource,
90
+ style: styles.thumb,
91
+ resizeMode: "contain"
92
+ }) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
93
+ style: [styles.thumbFallback, {
94
+ color: accent
95
+ }],
96
+ children: _format.KIND_LABELS[record.kind]
97
+ })
98
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
99
+ style: styles.main,
100
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
101
+ style: styles.name,
102
+ numberOfLines: 1,
103
+ children: [record.name, /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
104
+ style: styles.ext,
105
+ children: [".", record.type]
106
+ })]
107
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
108
+ style: styles.metaRow,
109
+ children: [record.kind === "image" && record.width != null ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
110
+ style: styles.meta,
111
+ children: (0, _format.formatDimensions)(record)
112
+ }) : null, record.kind === "image" && record.scales.length ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
113
+ style: styles.meta,
114
+ children: (0, _format.formatScales)(record.scales)
115
+ }) : null]
116
+ })]
117
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
118
+ style: styles.right,
119
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
120
+ style: styles.size,
121
+ children: (0, _format.formatSize)(record, (0, _assetStore.estDecodedBytes)(record))
122
+ }), badges.length ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
123
+ style: styles.badgeRow,
124
+ children: badges.slice(0, 3).map(b => /*#__PURE__*/(0, _jsxRuntime.jsx)(Badge, {
125
+ label: b.label,
126
+ color: b.color
127
+ }, b.label))
128
+ }) : null]
129
+ })]
130
+ }), sizeFraction > 0 ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
131
+ style: styles.sizeTrack,
132
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
133
+ style: [styles.sizeFill, {
134
+ backgroundColor: accent,
135
+ width: `${Math.max(2, Math.round(sizeFraction * 100))}%`
136
+ }]
137
+ })
138
+ }) : null]
139
+ });
140
+ }
141
+ const styles = _reactNative.StyleSheet.create({
142
+ card: {
143
+ marginHorizontal: 10,
144
+ marginTop: 6,
145
+ borderRadius: 10,
146
+ backgroundColor: _sharedUi.macOSColors.background.card,
147
+ borderWidth: 1,
148
+ borderColor: _sharedUi.macOSColors.border.default,
149
+ overflow: "hidden"
150
+ },
151
+ body: {
152
+ flexDirection: "row",
153
+ alignItems: "center",
154
+ paddingVertical: 8,
155
+ paddingHorizontal: 12,
156
+ gap: 10
157
+ },
158
+ thumbBox: {
159
+ width: 40,
160
+ height: 40,
161
+ borderRadius: 8,
162
+ // Light plate so dark glyph assets stay visible on the dark card.
163
+ backgroundColor: "rgba(255,255,255,0.10)",
164
+ borderWidth: 1,
165
+ borderColor: _sharedUi.macOSColors.border.default,
166
+ alignItems: "center",
167
+ justifyContent: "center",
168
+ overflow: "hidden"
169
+ },
170
+ thumb: {
171
+ width: 34,
172
+ height: 34
173
+ },
174
+ thumbFallback: {
175
+ fontSize: 9,
176
+ fontWeight: "700",
177
+ letterSpacing: 0.5
178
+ },
179
+ main: {
180
+ flex: 1,
181
+ gap: 3
182
+ },
183
+ name: {
184
+ color: _sharedUi.macOSColors.text.primary,
185
+ fontSize: 12,
186
+ fontWeight: "600"
187
+ },
188
+ ext: {
189
+ color: _sharedUi.macOSColors.text.muted,
190
+ fontWeight: "400"
191
+ },
192
+ metaRow: {
193
+ flexDirection: "row",
194
+ alignItems: "center",
195
+ gap: 8
196
+ },
197
+ meta: {
198
+ color: _sharedUi.macOSColors.text.secondary,
199
+ fontSize: 10,
200
+ fontVariant: ["tabular-nums"]
201
+ },
202
+ right: {
203
+ alignItems: "flex-end",
204
+ gap: 4
205
+ },
206
+ size: {
207
+ color: _sharedUi.macOSColors.text.primary,
208
+ fontSize: 12,
209
+ fontWeight: "700",
210
+ fontVariant: ["tabular-nums"]
211
+ },
212
+ badgeRow: {
213
+ flexDirection: "row",
214
+ gap: 4
215
+ },
216
+ badgePill: {
217
+ flexDirection: "row",
218
+ alignItems: "center",
219
+ gap: 4,
220
+ backgroundColor: "rgba(255,255,255,0.06)",
221
+ borderRadius: 4,
222
+ paddingHorizontal: 6,
223
+ paddingVertical: 2.5
224
+ },
225
+ badgeDot: {
226
+ width: 5,
227
+ height: 5,
228
+ borderRadius: 2.5
229
+ },
230
+ badgePillText: {
231
+ color: _sharedUi.macOSColors.text.secondary,
232
+ fontSize: 9,
233
+ fontWeight: "600",
234
+ letterSpacing: 0.3
235
+ },
236
+ sizeTrack: {
237
+ height: 2,
238
+ backgroundColor: "transparent"
239
+ },
240
+ sizeFill: {
241
+ height: 2,
242
+ opacity: 0.45,
243
+ borderTopRightRadius: 2
244
+ }
245
+ });
246
+ //# sourceMappingURL=AssetRow.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"names":["_reactNative","require","_sharedUi","_measure","_format","_assetStore","_jsxRuntime","Badge","label","color","jsxs","View","style","styles","badgePill","children","jsx","badgeDot","backgroundColor","Text","badgePillText","AssetRow","record","flags","sizeFraction","onPress","accent","KIND_COLORS","kind","thumbSource","displaySource","badges","loaded","push","oversize","macOSColors","semantic","error","duplicate","heavy","scaleAnomaly","scaleGap","webp","info","TouchableOpacity","card","testID","id","activeOpacity","body","thumbBox","Image","source","thumb","resizeMode","thumbFallback","KIND_LABELS","main","name","numberOfLines","ext","type","metaRow","width","meta","formatDimensions","scales","length","formatScales","right","size","formatSize","estDecodedBytes","badgeRow","slice","map","b","sizeTrack","sizeFill","Math","max","round","StyleSheet","create","marginHorizontal","marginTop","borderRadius","background","borderWidth","borderColor","border","default","overflow","flexDirection","alignItems","paddingVertical","paddingHorizontal","gap","height","justifyContent","fontSize","fontWeight","letterSpacing","flex","text","primary","muted","secondary","fontVariant","opacity","borderTopRightRadius"],"sourceRoot":"../../../src","sources":["components/AssetRow.tsx"],"mappings":"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","ignoreList":[]}