@buoy-gg/assets 7.0.38 → 7.0.40
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/lib/commonjs/capture/expo.js +46 -1
- package/lib/commonjs/capture/expo.js.map +1 -0
- package/lib/commonjs/capture/install.js +91 -1
- package/lib/commonjs/capture/install.js.map +1 -0
- package/lib/commonjs/capture/isBuoyAsset.js +23 -1
- package/lib/commonjs/capture/isBuoyAsset.js.map +1 -0
- package/lib/commonjs/capture/measure.js +186 -1
- package/lib/commonjs/capture/measure.js.map +1 -0
- package/lib/commonjs/capture/metroGraph.js +175 -1
- package/lib/commonjs/capture/metroGraph.js.map +1 -0
- package/lib/commonjs/capture/registry.js +127 -1
- package/lib/commonjs/capture/registry.js.map +1 -0
- package/lib/commonjs/components/AssetDetail.js +211 -1
- package/lib/commonjs/components/AssetDetail.js.map +1 -0
- package/lib/commonjs/components/AssetImage.js +66 -1
- package/lib/commonjs/components/AssetImage.js.map +1 -0
- package/lib/commonjs/components/AssetRow.js +232 -1
- package/lib/commonjs/components/AssetRow.js.map +1 -0
- package/lib/commonjs/components/AssetsFilterBar.js +105 -1
- package/lib/commonjs/components/AssetsFilterBar.js.map +1 -0
- package/lib/commonjs/components/AssetsHeader.js +73 -1
- package/lib/commonjs/components/AssetsHeader.js.map +1 -0
- package/lib/commonjs/components/AssetsIcon.js +19 -1
- package/lib/commonjs/components/AssetsIcon.js.map +1 -0
- package/lib/commonjs/components/AssetsListControls.js +81 -1
- package/lib/commonjs/components/AssetsListControls.js.map +1 -0
- package/lib/commonjs/components/AssetsModal.js +378 -1
- package/lib/commonjs/components/AssetsModal.js.map +1 -0
- package/lib/commonjs/components/ScanNotice.js +85 -1
- package/lib/commonjs/components/ScanNotice.js.map +1 -0
- package/lib/commonjs/components/optionalExpoImage.js +16 -1
- package/lib/commonjs/components/optionalExpoImage.js.map +1 -0
- package/lib/commonjs/components/optionalExpoImage.web.js +11 -1
- package/lib/commonjs/components/optionalExpoImage.web.js.map +1 -0
- package/lib/commonjs/export.js +62 -1
- package/lib/commonjs/export.js.map +1 -0
- package/lib/commonjs/format.js +59 -1
- package/lib/commonjs/format.js.map +1 -0
- package/lib/commonjs/hooks/useAssetRecords.js +22 -1
- package/lib/commonjs/hooks/useAssetRecords.js.map +1 -0
- package/lib/commonjs/hooks/useAssetScanStatus.js +28 -1
- package/lib/commonjs/hooks/useAssetScanStatus.js.map +1 -0
- package/lib/commonjs/index.js +313 -1
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/preset.js +39 -1
- package/lib/commonjs/preset.js.map +1 -0
- package/lib/commonjs/remote.js +68 -1
- package/lib/commonjs/remote.js.map +1 -0
- package/lib/commonjs/state.js +51 -1
- package/lib/commonjs/state.js.map +1 -0
- package/lib/commonjs/store/assetStore.js +256 -1
- package/lib/commonjs/store/assetStore.js.map +1 -0
- package/lib/commonjs/store/baseline.js +175 -1
- package/lib/commonjs/store/baseline.js.map +1 -0
- package/lib/commonjs/store/insights.js +120 -1
- package/lib/commonjs/store/insights.js.map +1 -0
- package/lib/commonjs/sync/assetsSyncAdapter.js +157 -1
- package/lib/commonjs/sync/assetsSyncAdapter.js.map +1 -0
- package/lib/commonjs/types.js +2 -1
- package/lib/commonjs/types.js.map +1 -0
- package/lib/commonjs/utils/deviceScale.js +50 -1
- package/lib/commonjs/utils/deviceScale.js.map +1 -0
- package/lib/commonjs/utils/testIDs.js +110 -1
- package/lib/commonjs/utils/testIDs.js.map +1 -0
- package/lib/module/capture/expo.js +41 -1
- package/lib/module/capture/expo.js.map +1 -0
- package/lib/module/capture/install.js +85 -1
- package/lib/module/capture/install.js.map +1 -0
- package/lib/module/capture/isBuoyAsset.js +18 -1
- package/lib/module/capture/isBuoyAsset.js.map +1 -0
- package/lib/module/capture/measure.js +179 -1
- package/lib/module/capture/measure.js.map +1 -0
- package/lib/module/capture/metroGraph.js +168 -1
- package/lib/module/capture/metroGraph.js.map +1 -0
- package/lib/module/capture/registry.js +120 -1
- package/lib/module/capture/registry.js.map +1 -0
- package/lib/module/components/AssetDetail.js +207 -1
- package/lib/module/components/AssetDetail.js.map +1 -0
- package/lib/module/components/AssetImage.js +62 -1
- package/lib/module/components/AssetImage.js.map +1 -0
- package/lib/module/components/AssetRow.js +228 -1
- package/lib/module/components/AssetRow.js.map +1 -0
- package/lib/module/components/AssetsFilterBar.js +101 -1
- package/lib/module/components/AssetsFilterBar.js.map +1 -0
- package/lib/module/components/AssetsHeader.js +69 -1
- package/lib/module/components/AssetsHeader.js.map +1 -0
- package/lib/module/components/AssetsIcon.js +12 -1
- package/lib/module/components/AssetsIcon.js.map +1 -0
- package/lib/module/components/AssetsListControls.js +77 -1
- package/lib/module/components/AssetsListControls.js.map +1 -0
- package/lib/module/components/AssetsModal.js +373 -1
- package/lib/module/components/AssetsModal.js.map +1 -0
- package/lib/module/components/ScanNotice.js +81 -1
- package/lib/module/components/ScanNotice.js.map +1 -0
- package/lib/module/components/optionalExpoImage.js +12 -1
- package/lib/module/components/optionalExpoImage.js.map +1 -0
- package/lib/module/components/optionalExpoImage.web.js +7 -1
- package/lib/module/components/optionalExpoImage.web.js.map +1 -0
- package/lib/module/export.js +57 -1
- package/lib/module/export.js.map +1 -0
- package/lib/module/format.js +51 -1
- package/lib/module/format.js.map +1 -0
- package/lib/module/hooks/useAssetRecords.js +18 -1
- package/lib/module/hooks/useAssetRecords.js.map +1 -0
- package/lib/module/hooks/useAssetScanStatus.js +23 -1
- package/lib/module/hooks/useAssetScanStatus.js.map +1 -0
- package/lib/module/index.js +63 -1
- package/lib/module/index.js.map +1 -0
- package/lib/module/preset.js +35 -1
- package/lib/module/preset.js.map +1 -0
- package/lib/module/remote.js +61 -1
- package/lib/module/remote.js.map +1 -0
- package/lib/module/state.js +47 -1
- package/lib/module/state.js.map +1 -0
- package/lib/module/store/assetStore.js +240 -1
- package/lib/module/store/assetStore.js.map +1 -0
- package/lib/module/store/baseline.js +167 -1
- package/lib/module/store/baseline.js.map +1 -0
- package/lib/module/store/insights.js +116 -1
- package/lib/module/store/insights.js.map +1 -0
- package/lib/module/sync/assetsSyncAdapter.js +153 -1
- package/lib/module/sync/assetsSyncAdapter.js.map +1 -0
- package/lib/module/types.js +2 -1
- package/lib/module/types.js.map +1 -0
- package/lib/module/utils/deviceScale.js +46 -1
- package/lib/module/utils/deviceScale.js.map +1 -0
- package/lib/module/utils/testIDs.js +99 -1
- package/lib/module/utils/testIDs.js.map +1 -0
- package/lib/typescript/capture/expo.d.ts.map +1 -0
- package/lib/typescript/capture/install.d.ts.map +1 -0
- package/lib/typescript/capture/isBuoyAsset.d.ts.map +1 -0
- package/lib/typescript/capture/measure.d.ts.map +1 -0
- package/lib/typescript/capture/metroGraph.d.ts.map +1 -0
- package/lib/typescript/capture/registry.d.ts.map +1 -0
- package/lib/typescript/components/AssetDetail.d.ts.map +1 -0
- package/lib/typescript/components/AssetImage.d.ts.map +1 -0
- package/lib/typescript/components/AssetRow.d.ts.map +1 -0
- package/lib/typescript/components/AssetsFilterBar.d.ts.map +1 -0
- package/lib/typescript/components/AssetsHeader.d.ts.map +1 -0
- package/lib/typescript/components/AssetsIcon.d.ts.map +1 -0
- package/lib/typescript/components/AssetsListControls.d.ts.map +1 -0
- package/lib/typescript/components/AssetsModal.d.ts.map +1 -0
- package/lib/typescript/components/ScanNotice.d.ts.map +1 -0
- package/lib/typescript/components/optionalExpoImage.d.ts.map +1 -0
- package/lib/typescript/components/optionalExpoImage.web.d.ts.map +1 -0
- package/lib/typescript/export.d.ts.map +1 -0
- package/lib/typescript/format.d.ts.map +1 -0
- package/lib/typescript/hooks/useAssetRecords.d.ts.map +1 -0
- package/lib/typescript/hooks/useAssetScanStatus.d.ts.map +1 -0
- package/lib/typescript/index.d.ts.map +1 -0
- package/lib/typescript/preset.d.ts.map +1 -0
- package/lib/typescript/remote.d.ts.map +1 -0
- package/lib/typescript/state.d.ts.map +1 -0
- package/lib/typescript/store/assetStore.d.ts.map +1 -0
- package/lib/typescript/store/baseline.d.ts.map +1 -0
- package/lib/typescript/store/insights.d.ts.map +1 -0
- package/lib/typescript/sync/assetsSyncAdapter.d.ts.map +1 -0
- package/lib/typescript/types.d.ts.map +1 -0
- package/lib/typescript/utils/deviceScale.d.ts.map +1 -0
- package/lib/typescript/utils/testIDs.d.ts.map +1 -0
- package/package.json +2 -2
|
@@ -1 +1,127 @@
|
|
|
1
|
-
"use strict";
|
|
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
|
+
// Old RN layouts (< 0.72) don't ship @react-native/assets-registry as a
|
|
36
|
+
// resolvable package — the registry only exists at this deep path. RN's
|
|
37
|
+
// deep-import deprecation warning fires when this executes, but it only
|
|
38
|
+
// executes on those old layouts, where there is no other way in.
|
|
39
|
+
try {
|
|
40
|
+
mod = require("react-native/Libraries/Image/AssetRegistry");
|
|
41
|
+
} catch {
|
|
42
|
+
mod = null;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
cachedRegistry = mod && typeof mod.getAssetByID === "function" ? mod : null;
|
|
46
|
+
return cachedRegistry;
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
/** resolveAssetSource(id) → this environment's URI (dev URL / file:// / res id). */
|
|
50
|
+
function resolveRegistryAsset(registryId) {
|
|
51
|
+
try {
|
|
52
|
+
const {
|
|
53
|
+
Image
|
|
54
|
+
} = require("react-native");
|
|
55
|
+
const resolved = Image.resolveAssetSource(registryId);
|
|
56
|
+
if (resolved && typeof resolved.uri === "string") {
|
|
57
|
+
return {
|
|
58
|
+
uri: resolved.uri,
|
|
59
|
+
scale: resolved.scale ?? 1
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
} catch {
|
|
63
|
+
// resolution is enrichment — never let it break the walk
|
|
64
|
+
}
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
function upsertFromPackagerAsset(registryId, asset) {
|
|
68
|
+
const resolved = resolveRegistryAsset(registryId);
|
|
69
|
+
return (0, _assetStore.upsertRecord)({
|
|
70
|
+
key: (0, _assetStore.assetKey)(asset.httpServerLocation, asset.name, asset.type),
|
|
71
|
+
name: asset.name,
|
|
72
|
+
type: asset.type,
|
|
73
|
+
origin: "registry",
|
|
74
|
+
registryId,
|
|
75
|
+
hash: asset.hash,
|
|
76
|
+
httpServerLocation: asset.httpServerLocation,
|
|
77
|
+
width: asset.width ?? undefined,
|
|
78
|
+
height: asset.height ?? undefined,
|
|
79
|
+
scales: asset.scales,
|
|
80
|
+
resolvedUri: resolved?.uri,
|
|
81
|
+
resolvedScale: resolved?.scale,
|
|
82
|
+
loaded: true
|
|
83
|
+
});
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/** Enumerate every asset registered so far. Returns the highest id seen. */
|
|
87
|
+
function walkRegistry() {
|
|
88
|
+
const registry = getRegistryModule();
|
|
89
|
+
if (!registry) return 0;
|
|
90
|
+
let id = 0;
|
|
91
|
+
for (;;) {
|
|
92
|
+
const asset = registry.getAssetByID(id + 1);
|
|
93
|
+
if (!asset) break;
|
|
94
|
+
id++;
|
|
95
|
+
upsertFromPackagerAsset(id, asset);
|
|
96
|
+
}
|
|
97
|
+
return id;
|
|
98
|
+
}
|
|
99
|
+
const PATCH_MARKER = "__buoyAssetsPatched";
|
|
100
|
+
|
|
101
|
+
/**
|
|
102
|
+
* Wrap registerAsset so future registrations stream in live. Safe to call
|
|
103
|
+
* more than once (marker guard); the walk covers anything registered before.
|
|
104
|
+
*/
|
|
105
|
+
function patchRegisterAsset() {
|
|
106
|
+
const registry = getRegistryModule();
|
|
107
|
+
if (!registry) return false;
|
|
108
|
+
const original = registry.registerAsset;
|
|
109
|
+
if (original[PATCH_MARKER]) return true;
|
|
110
|
+
const wrapped = asset => {
|
|
111
|
+
const id = original.call(registry, asset);
|
|
112
|
+
try {
|
|
113
|
+
upsertFromPackagerAsset(id, asset);
|
|
114
|
+
} catch {
|
|
115
|
+
// never break app asset registration
|
|
116
|
+
}
|
|
117
|
+
return id;
|
|
118
|
+
};
|
|
119
|
+
wrapped[PATCH_MARKER] = true;
|
|
120
|
+
try {
|
|
121
|
+
registry.registerAsset = wrapped;
|
|
122
|
+
} catch {
|
|
123
|
+
return false;
|
|
124
|
+
}
|
|
125
|
+
return true;
|
|
126
|
+
}
|
|
127
|
+
//# 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":[]}
|
|
@@ -1 +1,211 @@
|
|
|
1
|
-
"use strict";
|
|
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 _AssetImage = require("./AssetImage");
|
|
10
|
+
var _format = require("../format");
|
|
11
|
+
var _assetStore = require("../store/assetStore");
|
|
12
|
+
var _testIDs = require("../utils/testIDs");
|
|
13
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
14
|
+
/**
|
|
15
|
+
* AssetDetail — full metadata for one asset: preview, identity, dimensions,
|
|
16
|
+
* per-scale sizes, resolution info, and which audit findings apply.
|
|
17
|
+
*
|
|
18
|
+
* Image previews use registry ids or asset URLs, with optional expo-image for
|
|
19
|
+
* native SVGs; fonts render a pangram with fontFamily set to the asset name
|
|
20
|
+
* — a best-effort guess (family ≠ filename for many fonts) that falls back
|
|
21
|
+
* to the system font silently when it misses.
|
|
22
|
+
*/
|
|
23
|
+
|
|
24
|
+
function Row({
|
|
25
|
+
label,
|
|
26
|
+
value
|
|
27
|
+
}) {
|
|
28
|
+
const testID = (0, _testIDs.assetDetailRowTestID)(label);
|
|
29
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
30
|
+
style: styles.kvRow,
|
|
31
|
+
testID: testID,
|
|
32
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
33
|
+
style: styles.kvLabel,
|
|
34
|
+
children: label
|
|
35
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
36
|
+
style: styles.kvValue,
|
|
37
|
+
selectable: true,
|
|
38
|
+
testID: `${testID}-value`,
|
|
39
|
+
children: value
|
|
40
|
+
})]
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
function Preview({
|
|
44
|
+
record
|
|
45
|
+
}) {
|
|
46
|
+
if (record.kind === "image") {
|
|
47
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
48
|
+
style: styles.previewBox,
|
|
49
|
+
testID: _testIDs.ASSETS_TEST_IDS.detailPreview,
|
|
50
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_AssetImage.AssetImage, {
|
|
51
|
+
testID: "buoy-internal-assets-preview",
|
|
52
|
+
record: record,
|
|
53
|
+
style: styles.previewImage
|
|
54
|
+
})
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
if (record.kind === "font") {
|
|
58
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
59
|
+
style: styles.previewBox,
|
|
60
|
+
testID: _testIDs.ASSETS_TEST_IDS.detailFontPreview,
|
|
61
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
62
|
+
style: [styles.fontPreview, {
|
|
63
|
+
fontFamily: record.name
|
|
64
|
+
}],
|
|
65
|
+
children: "The quick brown fox jumps over the lazy dog 0123456789"
|
|
66
|
+
})
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
return null;
|
|
70
|
+
}
|
|
71
|
+
function AssetDetail({
|
|
72
|
+
record,
|
|
73
|
+
insights
|
|
74
|
+
}) {
|
|
75
|
+
const findings = [];
|
|
76
|
+
if (insights.neverLoaded.includes(record.id)) {
|
|
77
|
+
findings.push("Not observed in the runtime registry this app run. This does not prove the asset is unused.");
|
|
78
|
+
}
|
|
79
|
+
if (insights.scaleGaps.includes(record.id)) {
|
|
80
|
+
findings.push("Scale gap — no variant covers this device's pixel ratio");
|
|
81
|
+
}
|
|
82
|
+
if (insights.webpCandidates.includes(record.id)) {
|
|
83
|
+
findings.push("WebP candidate — large png/jpeg, converting typically saves 20–40%");
|
|
84
|
+
}
|
|
85
|
+
const duplicate = insights.duplicates.find(d => d.ids.includes(record.id));
|
|
86
|
+
if (duplicate) {
|
|
87
|
+
findings.push(`Duplicate content — identical bytes shipped ${duplicate.ids.length} times`);
|
|
88
|
+
}
|
|
89
|
+
if (insights.overDecode.includes(record.id)) {
|
|
90
|
+
findings.push("Decodes larger than 2× this entire screen — resize the source, no view can need this many pixels");
|
|
91
|
+
}
|
|
92
|
+
if (insights.heavyGifs.includes(record.id)) {
|
|
93
|
+
findings.push("Heavy GIF — every frame decodes into memory; a video or Lottie is typically ~90% smaller");
|
|
94
|
+
}
|
|
95
|
+
if (insights.heavyFonts.includes(record.id)) {
|
|
96
|
+
findings.push("Heavy font — likely an unsubset icon font; subsetting to used glyphs usually saves most of it");
|
|
97
|
+
}
|
|
98
|
+
if (insights.scaleAnomalies.includes(record.id)) {
|
|
99
|
+
findings.push("Scale anomaly — a higher-resolution variant is smaller in bytes than a lower one; check the exports");
|
|
100
|
+
}
|
|
101
|
+
const estimate = (0, _assetStore.estDecodedBytes)(record);
|
|
102
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.ScrollView, {
|
|
103
|
+
style: styles.scroll,
|
|
104
|
+
contentContainerStyle: styles.content,
|
|
105
|
+
testID: _testIDs.ASSETS_TEST_IDS.detailScroll,
|
|
106
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(Preview, {
|
|
107
|
+
record: record
|
|
108
|
+
}), findings.length > 0 ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
109
|
+
style: styles.findings,
|
|
110
|
+
testID: _testIDs.ASSETS_TEST_IDS.detailFindings,
|
|
111
|
+
children: findings.map((finding, index) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
112
|
+
style: styles.findingText,
|
|
113
|
+
testID: (0, _testIDs.assetFindingTestID)(index),
|
|
114
|
+
children: finding
|
|
115
|
+
}, finding))
|
|
116
|
+
}) : null, /*#__PURE__*/(0, _jsxRuntime.jsx)(Row, {
|
|
117
|
+
label: "Name",
|
|
118
|
+
value: `${record.name}.${record.type}`
|
|
119
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(Row, {
|
|
120
|
+
label: "Kind",
|
|
121
|
+
value: record.kind
|
|
122
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(Row, {
|
|
123
|
+
label: "Status",
|
|
124
|
+
value: record.loaded ? "Loaded (registered at runtime)" : "Not observed in the runtime registry"
|
|
125
|
+
}), record.kind === "image" ? /*#__PURE__*/(0, _jsxRuntime.jsx)(Row, {
|
|
126
|
+
label: "Dimensions",
|
|
127
|
+
value: `${(0, _format.formatDimensions)(record)} (logical)`
|
|
128
|
+
}) : null, record.kind === "image" && record.scales.length ? /*#__PURE__*/(0, _jsxRuntime.jsx)(Row, {
|
|
129
|
+
label: "Scales",
|
|
130
|
+
value: (0, _format.formatScales)(record.scales)
|
|
131
|
+
}) : null, record.sizesByScale ? Object.entries(record.sizesByScale).map(([scale, bytes]) => /*#__PURE__*/(0, _jsxRuntime.jsx)(Row, {
|
|
132
|
+
label: `Size @${scale}x`,
|
|
133
|
+
value: (0, _format.formatBytes)(bytes)
|
|
134
|
+
}, scale)) : null, record.sizeBytes != null && record.sizeSource === "measured" ? /*#__PURE__*/(0, _jsxRuntime.jsx)(Row, {
|
|
135
|
+
label: "Total size",
|
|
136
|
+
value: (0, _format.formatBytes)(record.sizeBytes)
|
|
137
|
+
}) : null, estimate > 0 ? /*#__PURE__*/(0, _jsxRuntime.jsx)(Row, {
|
|
138
|
+
label: "Decoded memory",
|
|
139
|
+
value: `~${(0, _format.formatBytes)(estimate)} (RGBA)`
|
|
140
|
+
}) : null, record.registryId != null ? /*#__PURE__*/(0, _jsxRuntime.jsx)(Row, {
|
|
141
|
+
label: "Registry id",
|
|
142
|
+
value: String(record.registryId)
|
|
143
|
+
}) : null, record.hash ? /*#__PURE__*/(0, _jsxRuntime.jsx)(Row, {
|
|
144
|
+
label: "Hash",
|
|
145
|
+
value: record.hash
|
|
146
|
+
}) : null, record.httpServerLocation ? /*#__PURE__*/(0, _jsxRuntime.jsx)(Row, {
|
|
147
|
+
label: "Location",
|
|
148
|
+
value: record.httpServerLocation
|
|
149
|
+
}) : null, record.fileSystemLocation ? /*#__PURE__*/(0, _jsxRuntime.jsx)(Row, {
|
|
150
|
+
label: "Source dir",
|
|
151
|
+
value: record.fileSystemLocation
|
|
152
|
+
}) : null, record.resolvedUri ? /*#__PURE__*/(0, _jsxRuntime.jsx)(Row, {
|
|
153
|
+
label: "Resolved URI",
|
|
154
|
+
value: record.resolvedUri
|
|
155
|
+
}) : null]
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
const styles = _reactNative.StyleSheet.create({
|
|
159
|
+
scroll: {
|
|
160
|
+
flex: 1
|
|
161
|
+
},
|
|
162
|
+
content: {
|
|
163
|
+
padding: 12,
|
|
164
|
+
gap: 8
|
|
165
|
+
},
|
|
166
|
+
previewBox: {
|
|
167
|
+
borderRadius: 8,
|
|
168
|
+
backgroundColor: _sharedUi.night.color.bg,
|
|
169
|
+
padding: 12,
|
|
170
|
+
alignItems: "center",
|
|
171
|
+
justifyContent: "center",
|
|
172
|
+
minHeight: 96
|
|
173
|
+
},
|
|
174
|
+
previewImage: {
|
|
175
|
+
width: "100%",
|
|
176
|
+
height: 140
|
|
177
|
+
},
|
|
178
|
+
fontPreview: {
|
|
179
|
+
color: _sharedUi.night.color.text,
|
|
180
|
+
fontSize: 16,
|
|
181
|
+
textAlign: "center"
|
|
182
|
+
},
|
|
183
|
+
findings: {
|
|
184
|
+
borderRadius: 8,
|
|
185
|
+
borderWidth: 1,
|
|
186
|
+
borderColor: _sharedUi.night.color.border,
|
|
187
|
+
backgroundColor: _sharedUi.night.color.surface,
|
|
188
|
+
padding: 10,
|
|
189
|
+
gap: 6
|
|
190
|
+
},
|
|
191
|
+
findingText: {
|
|
192
|
+
color: _sharedUi.night.color.textSecondary,
|
|
193
|
+
fontSize: 11,
|
|
194
|
+
lineHeight: 15
|
|
195
|
+
},
|
|
196
|
+
kvRow: {
|
|
197
|
+
gap: 2
|
|
198
|
+
},
|
|
199
|
+
kvLabel: {
|
|
200
|
+
color: _sharedUi.night.color.textTertiary,
|
|
201
|
+
fontSize: 9,
|
|
202
|
+
fontWeight: "700",
|
|
203
|
+
letterSpacing: 0.5,
|
|
204
|
+
textTransform: "uppercase"
|
|
205
|
+
},
|
|
206
|
+
kvValue: {
|
|
207
|
+
color: _sharedUi.night.color.text,
|
|
208
|
+
fontSize: 12
|
|
209
|
+
}
|
|
210
|
+
});
|
|
211
|
+
//# sourceMappingURL=AssetDetail.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_sharedUi","_AssetImage","_format","_assetStore","_testIDs","_jsxRuntime","Row","label","value","testID","assetDetailRowTestID","jsxs","View","style","styles","kvRow","children","jsx","Text","kvLabel","kvValue","selectable","Preview","record","kind","previewBox","ASSETS_TEST_IDS","detailPreview","AssetImage","previewImage","detailFontPreview","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","detailScroll","detailFindings","map","finding","index","findingText","assetFindingTestID","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","night","color","bg","alignItems","justifyContent","minHeight","width","height","text","fontSize","textAlign","borderWidth","borderColor","border","surface","textSecondary","lineHeight","textTertiary","fontWeight","letterSpacing","textTransform"],"sourceRoot":"../../../src","sources":["components/AssetDetail.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1,66 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.AssetImage = AssetImage;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
var _reactNative = require("react-native");
|
|
9
|
+
var _sharedUi = require("@buoy-gg/shared-ui");
|
|
10
|
+
var _measure = require("../capture/measure");
|
|
11
|
+
var _optionalExpoImage = require("./optionalExpoImage");
|
|
12
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
13
|
+
function AssetImage({
|
|
14
|
+
record,
|
|
15
|
+
style,
|
|
16
|
+
testID,
|
|
17
|
+
compact = false
|
|
18
|
+
}) {
|
|
19
|
+
const source = (0, _measure.displaySource)(record);
|
|
20
|
+
const svg = record.type.toLowerCase() === "svg";
|
|
21
|
+
const ExpoImage = svg && _reactNative.Platform.OS !== "web" ? (0, _optionalExpoImage.getExpoPreviewImage)() : null;
|
|
22
|
+
const sourceKey = `${record.key}:${record.hash ?? ""}:${typeof source === "number" ? source : source?.uri ?? ""}`;
|
|
23
|
+
const [failedSource, setFailedSource] = (0, _react.useState)(null);
|
|
24
|
+
const unavailable = source == null || failedSource === sourceKey || svg && _reactNative.Platform.OS !== "web" && !ExpoImage;
|
|
25
|
+
if (unavailable) {
|
|
26
|
+
const label = svg ? "SVG preview unavailable" : "Image preview unavailable";
|
|
27
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
28
|
+
style: [style, styles.fallback],
|
|
29
|
+
accessibilityLabel: label,
|
|
30
|
+
testID: `${testID}-unavailable`,
|
|
31
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
32
|
+
style: styles.text,
|
|
33
|
+
children: compact ? svg ? "SVG" : "IMG" : label
|
|
34
|
+
})
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
const onError = () => setFailedSource(sourceKey);
|
|
38
|
+
if (ExpoImage) {
|
|
39
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(ExpoImage, {
|
|
40
|
+
source: source,
|
|
41
|
+
style: style,
|
|
42
|
+
contentFit: "contain",
|
|
43
|
+
onError: onError,
|
|
44
|
+
testID: testID
|
|
45
|
+
});
|
|
46
|
+
}
|
|
47
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Image, {
|
|
48
|
+
source: source,
|
|
49
|
+
style: style,
|
|
50
|
+
resizeMode: "contain",
|
|
51
|
+
onError: onError,
|
|
52
|
+
testID: testID
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
const styles = _reactNative.StyleSheet.create({
|
|
56
|
+
fallback: {
|
|
57
|
+
alignItems: "center",
|
|
58
|
+
justifyContent: "center"
|
|
59
|
+
},
|
|
60
|
+
text: {
|
|
61
|
+
color: _sharedUi.night.color.textSecondary,
|
|
62
|
+
fontSize: 10,
|
|
63
|
+
textAlign: "center"
|
|
64
|
+
}
|
|
65
|
+
});
|
|
66
|
+
//# sourceMappingURL=AssetImage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","require","_reactNative","_sharedUi","_measure","_optionalExpoImage","_jsxRuntime","AssetImage","record","style","testID","compact","source","displaySource","svg","type","toLowerCase","ExpoImage","Platform","OS","getExpoPreviewImage","sourceKey","key","hash","uri","failedSource","setFailedSource","useState","unavailable","label","jsx","View","styles","fallback","accessibilityLabel","children","Text","text","onError","contentFit","Image","resizeMode","StyleSheet","create","alignItems","justifyContent","color","night","textSecondary","fontSize","textAlign"],"sourceRoot":"../../../src","sources":["components/AssetImage.tsx"],"mappings":";;;;;;AAAA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AAEA,IAAAE,SAAA,GAAAF,OAAA;AACA,IAAAG,QAAA,GAAAH,OAAA;AAEA,IAAAI,kBAAA,GAAAJ,OAAA;AAA0D,IAAAK,WAAA,GAAAL,OAAA;AAEnD,SAASM,UAAUA,CAAC;EAAEC,MAAM;EAAEC,KAAK;EAAEC,MAAM;EAAEC,OAAO,GAAG;AAK9D,CAAC,EAAE;EACD,MAAMC,MAAM,GAAG,IAAAC,sBAAa,EAACL,MAAM,CAAC;EACpC,MAAMM,GAAG,GAAGN,MAAM,CAACO,IAAI,CAACC,WAAW,CAAC,CAAC,KAAK,KAAK;EAC/C,MAAMC,SAAS,GAAGH,GAAG,IAAII,qBAAQ,CAACC,EAAE,KAAK,KAAK,GAAG,IAAAC,sCAAmB,EAAC,CAAC,GAAG,IAAI;EAC7E,MAAMC,SAAS,GAAG,GAAGb,MAAM,CAACc,GAAG,IAAId,MAAM,CAACe,IAAI,IAAI,EAAE,IAAI,OAAOX,MAAM,KAAK,QAAQ,GAAGA,MAAM,GAAGA,MAAM,EAAEY,GAAG,IAAI,EAAE,EAAE;EACjH,MAAM,CAACC,YAAY,EAAEC,eAAe,CAAC,GAAG,IAAAC,eAAQ,EAAgB,IAAI,CAAC;EACrE,MAAMC,WAAW,GAAGhB,MAAM,IAAI,IAAI,IAAIa,YAAY,KAAKJ,SAAS,IAC7DP,GAAG,IAAII,qBAAQ,CAACC,EAAE,KAAK,KAAK,IAAI,CAACF,SAAU;EAE9C,IAAIW,WAAW,EAAE;IACf,MAAMC,KAAK,GAAGf,GAAG,GAAG,yBAAyB,GAAG,2BAA2B;IAC3E,oBACE,IAAAR,WAAA,CAAAwB,GAAA,EAAC5B,YAAA,CAAA6B,IAAI;MAACtB,KAAK,EAAE,CAACA,KAAK,EAAEuB,MAAM,CAACC,QAAQ,CAAE;MAACC,kBAAkB,EAAEL,KAAM;MAACnB,MAAM,EAAE,GAAGA,MAAM,cAAe;MAAAyB,QAAA,eAChG,IAAA7B,WAAA,CAAAwB,GAAA,EAAC5B,YAAA,CAAAkC,IAAI;QAAC3B,KAAK,EAAEuB,MAAM,CAACK,IAAK;QAAAF,QAAA,EAAExB,OAAO,GAAIG,GAAG,GAAG,KAAK,GAAG,KAAK,GAAIe;MAAK,CAAO;IAAC,CACtE,CAAC;EAEX;EAEA,MAAMS,OAAO,GAAGA,CAAA,KAAMZ,eAAe,CAACL,SAAS,CAAC;EAChD,IAAIJ,SAAS,EAAE;IACb,oBAAO,IAAAX,WAAA,CAAAwB,GAAA,EAACb,SAAS;MAACL,MAAM,EAAEA,MAAO;MAACH,KAAK,EAAEA,KAAM;MAAC8B,UAAU,EAAC,SAAS;MAACD,OAAO,EAAEA,OAAQ;MAAC5B,MAAM,EAAEA;IAAO,CAAE,CAAC;EAC3G;EACA,oBAAO,IAAAJ,WAAA,CAAAwB,GAAA,EAAC5B,YAAA,CAAAsC,KAAK;IAAC5B,MAAM,EAAEA,MAAO;IAACH,KAAK,EAAEA,KAAM;IAACgC,UAAU,EAAC,SAAS;IAACH,OAAO,EAAEA,OAAQ;IAAC5B,MAAM,EAAEA;EAAO,CAAE,CAAC;AACvG;AAEA,MAAMsB,MAAM,GAAGU,uBAAU,CAACC,MAAM,CAAC;EAC/BV,QAAQ,EAAE;IAAEW,UAAU,EAAE,QAAQ;IAAEC,cAAc,EAAE;EAAS,CAAC;EAC5DR,IAAI,EAAE;IAAES,KAAK,EAAEC,eAAK,CAACD,KAAK,CAACE,aAAa;IAAEC,QAAQ,EAAE,EAAE;IAAEC,SAAS,EAAE;EAAS;AAC9E,CAAC,CAAC","ignoreList":[]}
|