@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.
- package/LICENSE +58 -0
- package/README.md +55 -0
- package/lib/commonjs/capture/expo.js +46 -0
- package/lib/commonjs/capture/expo.js.map +1 -0
- package/lib/commonjs/capture/install.js +78 -0
- package/lib/commonjs/capture/install.js.map +1 -0
- package/lib/commonjs/capture/measure.js +186 -0
- package/lib/commonjs/capture/measure.js.map +1 -0
- package/lib/commonjs/capture/metroGraph.js +148 -0
- package/lib/commonjs/capture/metroGraph.js.map +1 -0
- package/lib/commonjs/capture/registry.js +124 -0
- package/lib/commonjs/capture/registry.js.map +1 -0
- package/lib/commonjs/components/AssetDetail.js +205 -0
- package/lib/commonjs/components/AssetDetail.js.map +1 -0
- package/lib/commonjs/components/AssetRow.js +246 -0
- package/lib/commonjs/components/AssetRow.js.map +1 -0
- package/lib/commonjs/components/AssetsFilterBar.js +92 -0
- package/lib/commonjs/components/AssetsFilterBar.js.map +1 -0
- package/lib/commonjs/components/AssetsHeader.js +66 -0
- package/lib/commonjs/components/AssetsHeader.js.map +1 -0
- package/lib/commonjs/components/AssetsIcon.js +19 -0
- package/lib/commonjs/components/AssetsIcon.js.map +1 -0
- package/lib/commonjs/components/AssetsListControls.js +94 -0
- package/lib/commonjs/components/AssetsListControls.js.map +1 -0
- package/lib/commonjs/components/AssetsModal.js +338 -0
- package/lib/commonjs/components/AssetsModal.js.map +1 -0
- package/lib/commonjs/components/BaselineBar.js +110 -0
- package/lib/commonjs/components/BaselineBar.js.map +1 -0
- package/lib/commonjs/export.js +62 -0
- package/lib/commonjs/export.js.map +1 -0
- package/lib/commonjs/format.js +59 -0
- package/lib/commonjs/format.js.map +1 -0
- package/lib/commonjs/hooks/useAssetRecords.js +22 -0
- package/lib/commonjs/hooks/useAssetRecords.js.map +1 -0
- package/lib/commonjs/index.js +260 -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/remote.js +65 -0
- package/lib/commonjs/remote.js.map +1 -0
- package/lib/commonjs/state.js +51 -0
- package/lib/commonjs/state.js.map +1 -0
- package/lib/commonjs/store/assetStore.js +234 -0
- package/lib/commonjs/store/assetStore.js.map +1 -0
- package/lib/commonjs/store/baseline.js +165 -0
- package/lib/commonjs/store/baseline.js.map +1 -0
- package/lib/commonjs/store/insights.js +129 -0
- package/lib/commonjs/store/insights.js.map +1 -0
- package/lib/commonjs/sync/assetsSyncAdapter.js +157 -0
- package/lib/commonjs/sync/assetsSyncAdapter.js.map +1 -0
- package/lib/commonjs/types.js +2 -0
- package/lib/commonjs/types.js.map +1 -0
- package/lib/module/capture/expo.js +41 -0
- package/lib/module/capture/expo.js.map +1 -0
- package/lib/module/capture/install.js +72 -0
- package/lib/module/capture/install.js.map +1 -0
- package/lib/module/capture/measure.js +179 -0
- package/lib/module/capture/measure.js.map +1 -0
- package/lib/module/capture/metroGraph.js +141 -0
- package/lib/module/capture/metroGraph.js.map +1 -0
- package/lib/module/capture/registry.js +117 -0
- package/lib/module/capture/registry.js.map +1 -0
- package/lib/module/components/AssetDetail.js +201 -0
- package/lib/module/components/AssetDetail.js.map +1 -0
- package/lib/module/components/AssetRow.js +242 -0
- package/lib/module/components/AssetRow.js.map +1 -0
- package/lib/module/components/AssetsFilterBar.js +88 -0
- package/lib/module/components/AssetsFilterBar.js.map +1 -0
- package/lib/module/components/AssetsHeader.js +62 -0
- package/lib/module/components/AssetsHeader.js.map +1 -0
- package/lib/module/components/AssetsIcon.js +12 -0
- package/lib/module/components/AssetsIcon.js.map +1 -0
- package/lib/module/components/AssetsListControls.js +90 -0
- package/lib/module/components/AssetsListControls.js.map +1 -0
- package/lib/module/components/AssetsModal.js +333 -0
- package/lib/module/components/AssetsModal.js.map +1 -0
- package/lib/module/components/BaselineBar.js +106 -0
- package/lib/module/components/BaselineBar.js.map +1 -0
- package/lib/module/export.js +57 -0
- package/lib/module/export.js.map +1 -0
- package/lib/module/format.js +51 -0
- package/lib/module/format.js.map +1 -0
- package/lib/module/hooks/useAssetRecords.js +18 -0
- package/lib/module/hooks/useAssetRecords.js.map +1 -0
- package/lib/module/index.js +59 -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/remote.js +58 -0
- package/lib/module/remote.js.map +1 -0
- package/lib/module/state.js +47 -0
- package/lib/module/state.js.map +1 -0
- package/lib/module/store/assetStore.js +219 -0
- package/lib/module/store/assetStore.js.map +1 -0
- package/lib/module/store/baseline.js +157 -0
- package/lib/module/store/baseline.js.map +1 -0
- package/lib/module/store/insights.js +125 -0
- package/lib/module/store/insights.js.map +1 -0
- package/lib/module/sync/assetsSyncAdapter.js +153 -0
- package/lib/module/sync/assetsSyncAdapter.js.map +1 -0
- package/lib/module/types.js +2 -0
- package/lib/module/types.js.map +1 -0
- package/lib/typescript/capture/expo.d.ts +18 -0
- package/lib/typescript/capture/expo.d.ts.map +1 -0
- package/lib/typescript/capture/install.d.ts +17 -0
- package/lib/typescript/capture/install.d.ts.map +1 -0
- package/lib/typescript/capture/measure.d.ts +38 -0
- package/lib/typescript/capture/measure.d.ts.map +1 -0
- package/lib/typescript/capture/metroGraph.d.ts +33 -0
- package/lib/typescript/capture/metroGraph.d.ts.map +1 -0
- package/lib/typescript/capture/registry.d.ts +45 -0
- package/lib/typescript/capture/registry.d.ts.map +1 -0
- package/lib/typescript/components/AssetDetail.d.ts +17 -0
- package/lib/typescript/components/AssetDetail.d.ts.map +1 -0
- package/lib/typescript/components/AssetRow.d.ts +32 -0
- package/lib/typescript/components/AssetRow.d.ts.map +1 -0
- package/lib/typescript/components/AssetsFilterBar.d.ts +16 -0
- package/lib/typescript/components/AssetsFilterBar.d.ts.map +1 -0
- package/lib/typescript/components/AssetsHeader.d.ts +22 -0
- package/lib/typescript/components/AssetsHeader.d.ts.map +1 -0
- package/lib/typescript/components/AssetsIcon.d.ts +9 -0
- package/lib/typescript/components/AssetsIcon.d.ts.map +1 -0
- package/lib/typescript/components/AssetsListControls.d.ts +18 -0
- package/lib/typescript/components/AssetsListControls.d.ts.map +1 -0
- package/lib/typescript/components/AssetsModal.d.ts +24 -0
- package/lib/typescript/components/AssetsModal.d.ts.map +1 -0
- package/lib/typescript/components/BaselineBar.d.ts +13 -0
- package/lib/typescript/components/BaselineBar.d.ts.map +1 -0
- package/lib/typescript/export.d.ts +8 -0
- package/lib/typescript/export.d.ts.map +1 -0
- package/lib/typescript/format.d.ts +13 -0
- package/lib/typescript/format.d.ts.map +1 -0
- package/lib/typescript/hooks/useAssetRecords.d.ts +11 -0
- package/lib/typescript/hooks/useAssetRecords.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +26 -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/remote.d.ts +17 -0
- package/lib/typescript/remote.d.ts.map +1 -0
- package/lib/typescript/state.d.ts +41 -0
- package/lib/typescript/state.d.ts.map +1 -0
- package/lib/typescript/store/assetStore.d.ts +51 -0
- package/lib/typescript/store/assetStore.d.ts.map +1 -0
- package/lib/typescript/store/baseline.d.ts +22 -0
- package/lib/typescript/store/baseline.d.ts.map +1 -0
- package/lib/typescript/store/insights.d.ts +7 -0
- package/lib/typescript/store/insights.d.ts.map +1 -0
- package/lib/typescript/sync/assetsSyncAdapter.d.ts +83 -0
- package/lib/typescript/sync/assetsSyncAdapter.d.ts.map +1 -0
- package/lib/typescript/types.d.ts +162 -0
- package/lib/typescript/types.d.ts.map +1 -0
- package/package.json +77 -0
- package/src/capture/expo.ts +45 -0
- package/src/capture/install.ts +73 -0
- package/src/capture/measure.ts +167 -0
- package/src/capture/metroGraph.ts +146 -0
- package/src/capture/registry.ts +134 -0
- package/src/components/AssetDetail.tsx +207 -0
- package/src/components/AssetRow.tsx +243 -0
- package/src/components/AssetsFilterBar.tsx +99 -0
- package/src/components/AssetsHeader.tsx +75 -0
- package/src/components/AssetsIcon.tsx +9 -0
- package/src/components/AssetsListControls.tsx +101 -0
- package/src/components/AssetsModal.tsx +368 -0
- package/src/components/BaselineBar.tsx +98 -0
- package/src/export.ts +108 -0
- package/src/format.ts +53 -0
- package/src/hooks/useAssetRecords.ts +26 -0
- package/src/index.tsx +87 -0
- package/src/preset.tsx +35 -0
- package/src/remote.ts +65 -0
- package/src/state.ts +84 -0
- package/src/store/assetStore.ts +209 -0
- package/src/store/baseline.ts +152 -0
- package/src/store/insights.ts +145 -0
- package/src/sync/assetsSyncAdapter.ts +151 -0
- 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":[]}
|