@buoy-gg/assets 7.0.36 → 7.0.39
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/README.md +41 -12
- package/lib/commonjs/capture/expo.js +1 -1
- package/lib/commonjs/capture/expo.js.map +1 -1
- package/lib/commonjs/capture/install.js +13 -0
- package/lib/commonjs/capture/install.js.map +1 -1
- package/lib/commonjs/capture/isBuoyAsset.js +23 -0
- package/lib/commonjs/capture/isBuoyAsset.js.map +1 -0
- package/lib/commonjs/capture/metroGraph.js +36 -9
- package/lib/commonjs/capture/metroGraph.js.map +1 -1
- package/lib/commonjs/capture/registry.js.map +1 -1
- package/lib/commonjs/components/AssetDetail.js +8 -11
- package/lib/commonjs/components/AssetDetail.js.map +1 -1
- package/lib/commonjs/components/AssetImage.js +66 -0
- package/lib/commonjs/components/AssetImage.js.map +1 -0
- package/lib/commonjs/components/AssetRow.js +5 -6
- package/lib/commonjs/components/AssetRow.js.map +1 -1
- package/lib/commonjs/components/AssetsFilterBar.js +10 -1
- package/lib/commonjs/components/AssetsFilterBar.js.map +1 -1
- package/lib/commonjs/components/AssetsHeader.js +4 -3
- package/lib/commonjs/components/AssetsHeader.js.map +1 -1
- package/lib/commonjs/components/AssetsListControls.js +3 -18
- package/lib/commonjs/components/AssetsListControls.js.map +1 -1
- package/lib/commonjs/components/AssetsModal.js +69 -38
- package/lib/commonjs/components/AssetsModal.js.map +1 -1
- package/lib/commonjs/components/ScanNotice.js +85 -0
- package/lib/commonjs/components/ScanNotice.js.map +1 -0
- package/lib/commonjs/components/optionalExpoImage.js +16 -0
- package/lib/commonjs/components/optionalExpoImage.js.map +1 -0
- package/lib/commonjs/components/optionalExpoImage.web.js +11 -0
- package/lib/commonjs/components/optionalExpoImage.web.js.map +1 -0
- package/lib/commonjs/export.js +3 -3
- package/lib/commonjs/export.js.map +1 -1
- package/lib/commonjs/hooks/useAssetScanStatus.js +28 -0
- package/lib/commonjs/hooks/useAssetScanStatus.js.map +1 -0
- package/lib/commonjs/remote.js +5 -2
- package/lib/commonjs/remote.js.map +1 -1
- package/lib/commonjs/state.js.map +1 -1
- package/lib/commonjs/store/assetStore.js +15 -0
- package/lib/commonjs/store/assetStore.js.map +1 -1
- package/lib/commonjs/store/baseline.js +2 -0
- package/lib/commonjs/store/baseline.js.map +1 -1
- package/lib/commonjs/utils/testIDs.js +2 -6
- package/lib/commonjs/utils/testIDs.js.map +1 -1
- package/lib/module/capture/expo.js +1 -1
- package/lib/module/capture/expo.js.map +1 -1
- package/lib/module/capture/install.js +14 -1
- package/lib/module/capture/install.js.map +1 -1
- package/lib/module/capture/isBuoyAsset.js +18 -0
- package/lib/module/capture/isBuoyAsset.js.map +1 -0
- package/lib/module/capture/metroGraph.js +36 -9
- package/lib/module/capture/metroGraph.js.map +1 -1
- package/lib/module/capture/registry.js.map +1 -1
- package/lib/module/components/AssetDetail.js +9 -12
- package/lib/module/components/AssetDetail.js.map +1 -1
- package/lib/module/components/AssetImage.js +62 -0
- package/lib/module/components/AssetImage.js.map +1 -0
- package/lib/module/components/AssetRow.js +6 -7
- package/lib/module/components/AssetRow.js.map +1 -1
- package/lib/module/components/AssetsFilterBar.js +10 -1
- package/lib/module/components/AssetsFilterBar.js.map +1 -1
- package/lib/module/components/AssetsHeader.js +4 -3
- package/lib/module/components/AssetsHeader.js.map +1 -1
- package/lib/module/components/AssetsListControls.js +3 -18
- package/lib/module/components/AssetsListControls.js.map +1 -1
- package/lib/module/components/AssetsModal.js +71 -40
- package/lib/module/components/AssetsModal.js.map +1 -1
- package/lib/module/components/ScanNotice.js +81 -0
- package/lib/module/components/ScanNotice.js.map +1 -0
- package/lib/module/components/optionalExpoImage.js +12 -0
- package/lib/module/components/optionalExpoImage.js.map +1 -0
- package/lib/module/components/optionalExpoImage.web.js +7 -0
- package/lib/module/components/optionalExpoImage.web.js.map +1 -0
- package/lib/module/export.js +3 -3
- package/lib/module/export.js.map +1 -1
- package/lib/module/hooks/useAssetScanStatus.js +23 -0
- package/lib/module/hooks/useAssetScanStatus.js.map +1 -0
- package/lib/module/remote.js +5 -2
- package/lib/module/remote.js.map +1 -1
- package/lib/module/state.js.map +1 -1
- package/lib/module/store/assetStore.js +14 -0
- package/lib/module/store/assetStore.js.map +1 -1
- package/lib/module/store/baseline.js +2 -0
- package/lib/module/store/baseline.js.map +1 -1
- package/lib/module/utils/testIDs.js +2 -6
- package/lib/module/utils/testIDs.js.map +1 -1
- package/lib/typescript/capture/install.d.ts.map +1 -1
- package/lib/typescript/capture/isBuoyAsset.d.ts +9 -0
- package/lib/typescript/capture/isBuoyAsset.d.ts.map +1 -0
- package/lib/typescript/capture/metroGraph.d.ts.map +1 -1
- package/lib/typescript/capture/registry.d.ts +1 -1
- package/lib/typescript/capture/registry.d.ts.map +1 -1
- package/lib/typescript/components/AssetDetail.d.ts +2 -2
- package/lib/typescript/components/AssetDetail.d.ts.map +1 -1
- package/lib/typescript/components/AssetImage.d.ts +9 -0
- package/lib/typescript/components/AssetImage.d.ts.map +1 -0
- package/lib/typescript/components/AssetRow.d.ts.map +1 -1
- package/lib/typescript/components/AssetsFilterBar.d.ts +3 -2
- package/lib/typescript/components/AssetsFilterBar.d.ts.map +1 -1
- package/lib/typescript/components/AssetsHeader.d.ts +2 -1
- package/lib/typescript/components/AssetsHeader.d.ts.map +1 -1
- package/lib/typescript/components/AssetsListControls.d.ts +2 -9
- package/lib/typescript/components/AssetsListControls.d.ts.map +1 -1
- package/lib/typescript/components/AssetsModal.d.ts.map +1 -1
- package/lib/typescript/components/ScanNotice.d.ts +7 -0
- package/lib/typescript/components/ScanNotice.d.ts.map +1 -0
- package/lib/typescript/components/optionalExpoImage.d.ts +13 -0
- package/lib/typescript/components/optionalExpoImage.d.ts.map +1 -0
- package/lib/typescript/components/optionalExpoImage.web.d.ts +3 -0
- package/lib/typescript/components/optionalExpoImage.web.d.ts.map +1 -0
- package/lib/typescript/hooks/useAssetScanStatus.d.ts +6 -0
- package/lib/typescript/hooks/useAssetScanStatus.d.ts.map +1 -0
- package/lib/typescript/state.d.ts +2 -0
- package/lib/typescript/state.d.ts.map +1 -1
- package/lib/typescript/store/assetStore.d.ts +3 -1
- package/lib/typescript/store/assetStore.d.ts.map +1 -1
- package/lib/typescript/store/baseline.d.ts.map +1 -1
- package/lib/typescript/types.d.ts +3 -0
- package/lib/typescript/types.d.ts.map +1 -1
- package/lib/typescript/utils/testIDs.d.ts +2 -5
- package/lib/typescript/utils/testIDs.d.ts.map +1 -1
- package/package.json +7 -3
- package/lib/commonjs/components/BaselineBar.js +0 -115
- package/lib/commonjs/components/BaselineBar.js.map +0 -1
- package/lib/module/components/BaselineBar.js +0 -111
- package/lib/module/components/BaselineBar.js.map +0 -1
- package/lib/typescript/components/BaselineBar.d.ts +0 -13
- package/lib/typescript/components/BaselineBar.d.ts.map +0 -1
package/README.md
CHANGED
|
@@ -2,11 +2,11 @@
|
|
|
2
2
|
|
|
3
3
|
[](https://www.npmjs.com/package/@buoy-gg/assets) [](https://www.npmjs.com/package/@buoy-gg/assets)
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
Inspect assets visible to the runtime registry and, in development, the Metro dependency graph. Compare sizes and find possible duplicates.
|
|
6
6
|
|
|
7
|
-
Part of [Buoy](https://github.com/Buoy-gg/buoy)
|
|
7
|
+
Part of [Buoy](https://github.com/Buoy-gg/buoy). Install the package, complete account setup, and follow the integration steps below.
|
|
8
8
|
|
|
9
|
-
|
|
9
|
+
Use the inventory to investigate large registered assets and possible duplication. Development builds can also query Metro; release builds have less source information.
|
|
10
10
|
|
|
11
11
|
## Install
|
|
12
12
|
|
|
@@ -14,6 +14,24 @@ How many megabytes of images are you shipping? Is that hero PNG in the bundle tw
|
|
|
14
14
|
npm install @buoy-gg/core @buoy-gg/assets
|
|
15
15
|
```
|
|
16
16
|
|
|
17
|
+
## Before you start
|
|
18
|
+
|
|
19
|
+
Use a development build with `@buoy-gg/core` and a Free or Pro Buoy account key. From your app’s directory, sign in:
|
|
20
|
+
|
|
21
|
+
```bash
|
|
22
|
+
npx --package=@buoy-gg/core buoy login
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
For Expo, initialize Buoy before rendering the menu:
|
|
26
|
+
|
|
27
|
+
```tsx
|
|
28
|
+
import { Buoy } from "@buoy-gg/core";
|
|
29
|
+
|
|
30
|
+
Buoy.init({ licenseKey: process.env.EXPO_PUBLIC_BUOY_KEY });
|
|
31
|
+
```
|
|
32
|
+
|
|
33
|
+
The login command writes the Expo key to `.env.local`. For React Native CLI, pass the key from your app’s environment configuration; React Native does not load `.env.local` automatically. Mount `FloatingDevTools` inside the same providers as your screens and restart the development server after installation. The [Quick Start](https://buoy.gg/buoy/latest/docs/quick-start) shows the complete root component setup.
|
|
34
|
+
|
|
17
35
|
## Quick start
|
|
18
36
|
|
|
19
37
|
```tsx
|
|
@@ -29,27 +47,38 @@ export default function App() {
|
|
|
29
47
|
}
|
|
30
48
|
```
|
|
31
49
|
|
|
32
|
-
The ASSETS tool appears in the menu. Open it and browse
|
|
50
|
+
The ASSETS tool appears in the menu. Open it and browse discovered assets, largest first.
|
|
51
|
+
|
|
52
|
+
Buoy's own package assets are excluded from the inventory and its totals. App assets and assets from other libraries remain visible.
|
|
53
|
+
|
|
54
|
+
SVG thumbnails and detail previews use `expo-image` when it is installed and available in the native app. It is an optional peer; `react-native-svg` is not required. Without a compatible renderer, the tool shows a preview-unavailable label. Desktop and web use browser image rendering. Some SVG paths may not render correctly with the iOS system decoder.
|
|
55
|
+
|
|
56
|
+
Registered assets appear immediately. A spinner and a "found so far" count stay visible while the tool queries the development server for more assets. After eight seconds, a message explains that discovery is taking longer than usual. Size checks run afterward. If discovery fails or exceeds 90 seconds, the existing list stays available with a Retry button.
|
|
57
|
+
|
|
58
|
+
## Check the integration
|
|
59
|
+
|
|
60
|
+
Find a known bundled asset and compare its source and dimensions. “Not observed” means not seen in React Native’s asset registry during this app run; it does not prove an asset is unused or safe to delete. Runtime coverage is not a complete inventory of native resources.
|
|
33
61
|
|
|
34
62
|
## What you get
|
|
35
63
|
|
|
36
|
-
- **
|
|
37
|
-
- **
|
|
38
|
-
- **
|
|
64
|
+
- **Inventory, largest first** — discovered assets with a thumbnail, dimensions, `@1x/@2x/@3x` scale coverage, and its size. Filter by kind, search by name, sort by size/name/type
|
|
65
|
+
- **Size information** — development builds can measure available variants through Metro. Release decoded-memory estimates are not encoded file sizes
|
|
66
|
+
- **Unobserved assets** — compare the available development bundle graph with assets registered during the session. Review candidates before deleting them
|
|
39
67
|
- **Duplicate content** — identical bytes shipped under different names, flagged by content hash (one of the cheapest app-size wins there is)
|
|
40
|
-
- **Baseline diff** — save a baseline, make your change, and see exactly what it added: new assets, removed assets, grown assets, net bytes. App-size regression prevention without CI tooling
|
|
41
68
|
- **Audit findings** — images that decode larger than the device screen, heavy GIFs (every frame decodes into memory), unsubset icon fonts, WebP conversion candidates, missing/broken scale variants
|
|
42
69
|
- **Loaded font families** — build-time embedded and runtime loaded (via the expo-font native module when present)
|
|
43
70
|
- **Markdown report** — the full inventory with findings, ready to paste into an issue or PR
|
|
44
71
|
|
|
45
72
|
## How it relates to @buoy-gg/images
|
|
46
73
|
|
|
47
|
-
[`@buoy-gg/images`](https://www.npmjs.com/package/@buoy-gg/images) shows what your app **renders** at runtime — per-load cache verdicts, timings, failures.
|
|
74
|
+
[`@buoy-gg/images`](https://www.npmjs.com/package/@buoy-gg/images) shows what your app **renders** at runtime — per-load cache verdicts, timings, failures. Assets inspects the available asset inventory. Use both views to investigate loading behavior and bundle size.
|
|
48
75
|
|
|
49
76
|
## Desktop & AI
|
|
50
77
|
|
|
51
|
-
|
|
78
|
+
To connect a React Native app to [Buoy Desktop](https://github.com/Buoy-gg/Buoy-Desktop) or MCP, install `@buoy-gg/external-sync` and follow the [Desktop connection guide](https://buoy.gg/buoy/latest/docs/desktop). Sign in to Desktop separately. [MCP setup](https://buoy.gg/buoy/latest/docs/mcp) also requires a process account and Pro access. Available remote actions depend on the tool and app integration.
|
|
79
|
+
|
|
80
|
+
## Account and plan requirements
|
|
52
81
|
|
|
53
|
-
|
|
82
|
+
Use a Free or Pro Buoy account. History limits and paid features vary by tool; see [pricing](https://buoy.gg/pricing). Production access requires Pro where supported. Development-only hooks and actions remain unavailable in release builds.
|
|
54
83
|
|
|
55
|
-
|
|
84
|
+
Use **Duplicates** at the top of the asset list to show every asset that shares a content hash with another asset. The count includes all copies. Selecting it clears the search; select **All** or tap **Duplicates** again to return to the full list.
|
|
@@ -23,7 +23,7 @@ function expoModules() {
|
|
|
23
23
|
function getLoadedFontFamilies() {
|
|
24
24
|
try {
|
|
25
25
|
const fonts = expoModules()?.ExpoFontLoader?.getLoadedFonts?.();
|
|
26
|
-
return Array.isArray(fonts) ? [...fonts].sort() : [];
|
|
26
|
+
return Array.isArray(fonts) ? [...new Set(fonts)].sort() : [];
|
|
27
27
|
} catch {
|
|
28
28
|
return [];
|
|
29
29
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["expoModules","globalThis","expo","modules","getLoadedFontFamilies","fonts","ExpoFontLoader","getLoadedFonts","Array","isArray","sort","getLocalAssets","map","ExpoUpdates","localAssets","Object","keys","length"],"sourceRoot":"../../../src","sources":["capture/expo.ts"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;;AASA,SAASA,WAAWA,CAAA,EAA0B;EAC5C,OAAQC,UAAU,CAA2BC,IAAI,EAAEC,OAAO;AAC5D;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASC,qBAAqBA,CAAA,EAAa;EAChD,IAAI;IACF,MAAMC,KAAK,GAAGL,WAAW,CAAC,CAAC,EAAEM,cAAc,EAAEC,cAAc,GAAG,CAAC;IAC/D,OAAOC,KAAK,CAACC,OAAO,CAACJ,KAAK,CAAC,GAAG,CAAC,
|
|
1
|
+
{"version":3,"names":["expoModules","globalThis","expo","modules","getLoadedFontFamilies","fonts","ExpoFontLoader","getLoadedFonts","Array","isArray","Set","sort","getLocalAssets","map","ExpoUpdates","localAssets","Object","keys","length"],"sourceRoot":"../../../src","sources":["capture/expo.ts"],"mappings":";;;;;;;AAAA;AACA;AACA;AACA;AACA;;AASA,SAASA,WAAWA,CAAA,EAA0B;EAC5C,OAAQC,UAAU,CAA2BC,IAAI,EAAEC,OAAO;AAC5D;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASC,qBAAqBA,CAAA,EAAa;EAChD,IAAI;IACF,MAAMC,KAAK,GAAGL,WAAW,CAAC,CAAC,EAAEM,cAAc,EAAEC,cAAc,GAAG,CAAC;IAC/D,OAAOC,KAAK,CAACC,OAAO,CAACJ,KAAK,CAAC,GAAG,CAAC,GAAG,IAAIK,GAAG,CAACL,KAAK,CAAC,CAAC,CAACM,IAAI,CAAC,CAAC,GAAG,EAAE;EAC/D,CAAC,CAAC,MAAM;IACN,OAAO,EAAE;EACX;AACF;;AAEA;AACA;AACA;AACA;AACA;AACO,SAASC,cAAcA,CAAA,EAAkC;EAC9D,IAAI;IACF,MAAMC,GAAG,GAAGb,WAAW,CAAC,CAAC,EAAEc,WAAW,EAAEC,WAAW;IACnD,IAAIF,GAAG,IAAI,OAAOA,GAAG,KAAK,QAAQ,IAAIG,MAAM,CAACC,IAAI,CAACJ,GAAG,CAAC,CAACK,MAAM,GAAG,CAAC,EAAE,OAAOL,GAAG;IAC7E,OAAO,IAAI;EACb,CAAC,CAAC,MAAM;IACN,OAAO,IAAI;EACb;AACF","ignoreList":[]}
|
|
@@ -46,6 +46,17 @@ function refreshEnrichment() {
|
|
|
46
46
|
async function rescan() {
|
|
47
47
|
const s = (0, _state.assetsState)();
|
|
48
48
|
if (s.captureDisabled) return getScanStatus();
|
|
49
|
+
if (s.scanPromise) return s.scanPromise;
|
|
50
|
+
s.scanPromise = runScan();
|
|
51
|
+
try {
|
|
52
|
+
return await s.scanPromise;
|
|
53
|
+
} finally {
|
|
54
|
+
s.scanPromise = undefined;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
async function runScan() {
|
|
58
|
+
const s = (0, _state.assetsState)();
|
|
59
|
+
(0, _assetStore.removeBuoyRecords)();
|
|
49
60
|
installAssetCapture();
|
|
50
61
|
(0, _registry.walkRegistry)();
|
|
51
62
|
refreshEnrichment();
|
|
@@ -68,6 +79,8 @@ function getScanStatus() {
|
|
|
68
79
|
graphSupported: s.graphSupported || (0, _metroGraph.getDevServerOrigin)() != null,
|
|
69
80
|
graphCount: s.graphCount,
|
|
70
81
|
graphError: s.graphError,
|
|
82
|
+
graphFetchInFlight: s.graphFetchInFlight,
|
|
83
|
+
graphFetchStartedAt: s.graphFetchStartedAt ?? null,
|
|
71
84
|
lastScanAt: s.lastScanAt,
|
|
72
85
|
measuring: s.measuring,
|
|
73
86
|
measuredCount: s.measuredCount,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_state","require","_assetStore","_expo","_measure","_metroGraph","_registry","installAssetCapture","s","assetsState","captureDisabled","installed","registryAvailable","getRegistryModule","patched","patchRegisterAsset","walkRegistry","refreshEnrichment","lastScanAt","Date","now","invalidate","fontFamilies","getLoadedFontFamilies","localAssets","getLocalAssets","localAssetCount","Object","keys","length","rescan","getScanStatus","fetchAssetGraph","measureSizes","mirrorScanStatus","registryCount","record","records","registryId","graphSupported","getDevServerOrigin","graphCount","graphError","measuring","measuredCount"],"sourceRoot":"../../../src","sources":["capture/install.ts"],"mappings":";;;;;;;;AASA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AACA,IAAAG,QAAA,GAAAH,OAAA;AACA,IAAAI,WAAA,GAAAJ,OAAA;AACA,IAAAK,SAAA,GAAAL,OAAA;AAdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAUO,SAASM,mBAAmBA,CAAA,EAAS;EAC1C,MAAMC,CAAC,GAAG,IAAAC,kBAAW,EAAC,CAAC;EACvB,IAAID,CAAC,CAACE,eAAe,IAAIF,CAAC,CAACG,SAAS,EAAE;EACtCH,CAAC,CAACG,SAAS,GAAG,IAAI;EAClBH,CAAC,CAACI,iBAAiB,GAAG,IAAAC,2BAAiB,EAAC,CAAC,IAAI,IAAI;EACjDL,CAAC,CAACM,OAAO,GAAG,IAAAC,4BAAkB,EAAC,CAAC;EAChC,IAAAC,sBAAY,EAAC,CAAC;EACdC,iBAAiB,CAAC,CAAC;EACnBT,CAAC,CAACU,UAAU,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC;EACzB,IAAAC,sBAAU,EAAC,CAAC;AACd;AAEA,SAASJ,iBAAiBA,CAAA,EAAS;EACjC,MAAMT,CAAC,GAAG,IAAAC,kBAAW,EAAC,CAAC;EACvBD,CAAC,CAACc,YAAY,GAAG,IAAAC,2BAAqB,EAAC,CAAC;EACxC,MAAMC,WAAW,GAAG,IAAAC,oBAAc,EAAC,CAAC;EACpCjB,CAAC,CAACkB,eAAe,GAAGF,WAAW,GAAGG,MAAM,CAACC,IAAI,CAACJ,WAAW,CAAC,CAACK,MAAM,GAAG,IAAI;AAC1E;;AAEA;AACA;AACA;AACA;AACO,eAAeC,MAAMA,CAAA,EAA8B;EACxD,MAAMtB,CAAC,GAAG,IAAAC,kBAAW,EAAC,CAAC;EACvB,IAAID,CAAC,CAACE,eAAe,EAAE,OAAOqB,aAAa,CAAC,CAAC;
|
|
1
|
+
{"version":3,"names":["_state","require","_assetStore","_expo","_measure","_metroGraph","_registry","installAssetCapture","s","assetsState","captureDisabled","installed","registryAvailable","getRegistryModule","patched","patchRegisterAsset","walkRegistry","refreshEnrichment","lastScanAt","Date","now","invalidate","fontFamilies","getLoadedFontFamilies","localAssets","getLocalAssets","localAssetCount","Object","keys","length","rescan","getScanStatus","scanPromise","runScan","undefined","removeBuoyRecords","fetchAssetGraph","measureSizes","mirrorScanStatus","registryCount","record","records","registryId","graphSupported","getDevServerOrigin","graphCount","graphError","graphFetchInFlight","graphFetchStartedAt","measuring","measuredCount"],"sourceRoot":"../../../src","sources":["capture/install.ts"],"mappings":";;;;;;;;AASA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,WAAA,GAAAD,OAAA;AACA,IAAAE,KAAA,GAAAF,OAAA;AACA,IAAAG,QAAA,GAAAH,OAAA;AACA,IAAAI,WAAA,GAAAJ,OAAA;AACA,IAAAK,SAAA,GAAAL,OAAA;AAdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAUO,SAASM,mBAAmBA,CAAA,EAAS;EAC1C,MAAMC,CAAC,GAAG,IAAAC,kBAAW,EAAC,CAAC;EACvB,IAAID,CAAC,CAACE,eAAe,IAAIF,CAAC,CAACG,SAAS,EAAE;EACtCH,CAAC,CAACG,SAAS,GAAG,IAAI;EAClBH,CAAC,CAACI,iBAAiB,GAAG,IAAAC,2BAAiB,EAAC,CAAC,IAAI,IAAI;EACjDL,CAAC,CAACM,OAAO,GAAG,IAAAC,4BAAkB,EAAC,CAAC;EAChC,IAAAC,sBAAY,EAAC,CAAC;EACdC,iBAAiB,CAAC,CAAC;EACnBT,CAAC,CAACU,UAAU,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC;EACzB,IAAAC,sBAAU,EAAC,CAAC;AACd;AAEA,SAASJ,iBAAiBA,CAAA,EAAS;EACjC,MAAMT,CAAC,GAAG,IAAAC,kBAAW,EAAC,CAAC;EACvBD,CAAC,CAACc,YAAY,GAAG,IAAAC,2BAAqB,EAAC,CAAC;EACxC,MAAMC,WAAW,GAAG,IAAAC,oBAAc,EAAC,CAAC;EACpCjB,CAAC,CAACkB,eAAe,GAAGF,WAAW,GAAGG,MAAM,CAACC,IAAI,CAACJ,WAAW,CAAC,CAACK,MAAM,GAAG,IAAI;AAC1E;;AAEA;AACA;AACA;AACA;AACO,eAAeC,MAAMA,CAAA,EAA8B;EACxD,MAAMtB,CAAC,GAAG,IAAAC,kBAAW,EAAC,CAAC;EACvB,IAAID,CAAC,CAACE,eAAe,EAAE,OAAOqB,aAAa,CAAC,CAAC;EAC7C,IAAIvB,CAAC,CAACwB,WAAW,EAAE,OAAOxB,CAAC,CAACwB,WAAW;EACvCxB,CAAC,CAACwB,WAAW,GAAGC,OAAO,CAAC,CAAC;EACzB,IAAI;IACF,OAAO,MAAMzB,CAAC,CAACwB,WAAW;EAC5B,CAAC,SAAS;IACRxB,CAAC,CAACwB,WAAW,GAAGE,SAAS;EAC3B;AACF;AAEA,eAAeD,OAAOA,CAAA,EAA8B;EAClD,MAAMzB,CAAC,GAAG,IAAAC,kBAAW,EAAC,CAAC;EACvB,IAAA0B,6BAAiB,EAAC,CAAC;EACnB5B,mBAAmB,CAAC,CAAC;EACrB,IAAAS,sBAAY,EAAC,CAAC;EACdC,iBAAiB,CAAC,CAAC;EACnB,MAAM,IAAAmB,2BAAe,EAAC,CAAC;EACvB5B,CAAC,CAACU,UAAU,GAAGC,IAAI,CAACC,GAAG,CAAC,CAAC;EACzB,IAAAC,sBAAU,EAAC,CAAC;EACZ,KAAK,IAAAgB,qBAAY,EAAC,CAAC;EACnB,OAAON,aAAa,CAAC,CAAC;AACxB;AAEO,SAASA,aAAaA,CAAA,EAAqB;EAChD,MAAMvB,CAAC,GAAG,IAAAC,kBAAW,EAAC,CAAC;EACvB;EACA,IAAID,CAAC,CAAC8B,gBAAgB,EAAE,OAAO9B,CAAC,CAAC8B,gBAAgB;EACjD,IAAIC,aAAa,GAAG,CAAC;EACrB,KAAK,MAAMC,MAAM,IAAIhC,CAAC,CAACiC,OAAO,EAAE,IAAID,MAAM,CAACE,UAAU,IAAI,IAAI,EAAEH,aAAa,EAAE;EAC9E,OAAO;IACL3B,iBAAiB,EAAEJ,CAAC,CAACI,iBAAiB;IACtCE,OAAO,EAAEN,CAAC,CAACM,OAAO;IAClByB,aAAa;IACbI,cAAc,EAAEnC,CAAC,CAACmC,cAAc,IAAI,IAAAC,8BAAkB,EAAC,CAAC,IAAI,IAAI;IAChEC,UAAU,EAAErC,CAAC,CAACqC,UAAU;IACxBC,UAAU,EAAEtC,CAAC,CAACsC,UAAU;IACxBC,kBAAkB,EAAEvC,CAAC,CAACuC,kBAAkB;IACxCC,mBAAmB,EAAExC,CAAC,CAACwC,mBAAmB,IAAI,IAAI;IAClD9B,UAAU,EAAEV,CAAC,CAACU,UAAU;IACxB+B,SAAS,EAAEzC,CAAC,CAACyC,SAAS;IACtBC,aAAa,EAAE1C,CAAC,CAAC0C,aAAa;IAC9B5B,YAAY,EAAEd,CAAC,CAACc,YAAY;IAC5BI,eAAe,EAAElB,CAAC,CAACkB;EACrB,CAAC;AACH","ignoreList":[]}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.isBuoyAsset = isBuoyAsset;
|
|
7
|
+
exports.isBuoyAssetPath = isBuoyAssetPath;
|
|
8
|
+
/** Identify Buoy-owned resources by package location, never by asset name. */
|
|
9
|
+
function isBuoyAssetPath(value) {
|
|
10
|
+
if (!value) return false;
|
|
11
|
+
let path = value;
|
|
12
|
+
try {
|
|
13
|
+
path = decodeURIComponent(path);
|
|
14
|
+
} catch {
|
|
15
|
+
// Keep readable path segments when an unrelated escape is malformed.
|
|
16
|
+
}
|
|
17
|
+
path = path.replace(/\\/g, "/");
|
|
18
|
+
return /(?:^|\/)node_modules\/@buoy-gg\/[^/]+(?:\/|$)/.test(path) || /(?:^|\/)buoy-packages\/packages\/[^/]+(?:\/|$)/.test(path) || /(?:^|\/)packages\/floating-tools-core\/(?:src|lib\/(?:module|commonjs))\/icons\/assets(?:\/|$)/.test(path);
|
|
19
|
+
}
|
|
20
|
+
function isBuoyAsset(asset) {
|
|
21
|
+
return [asset.key, asset.httpServerLocation, asset.fileSystemLocation, ...(asset.files ?? [])].some(isBuoyAssetPath);
|
|
22
|
+
}
|
|
23
|
+
//# sourceMappingURL=isBuoyAsset.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["isBuoyAssetPath","value","path","decodeURIComponent","replace","test","isBuoyAsset","asset","key","httpServerLocation","fileSystemLocation","files","some"],"sourceRoot":"../../../src","sources":["capture/isBuoyAsset.ts"],"mappings":";;;;;;;AAAA;AACO,SAASA,eAAeA,CAACC,KAAyB,EAAW;EAClE,IAAI,CAACA,KAAK,EAAE,OAAO,KAAK;EACxB,IAAIC,IAAI,GAAGD,KAAK;EAChB,IAAI;IACFC,IAAI,GAAGC,kBAAkB,CAACD,IAAI,CAAC;EACjC,CAAC,CAAC,MAAM;IACN;EAAA;EAEFA,IAAI,GAAGA,IAAI,CAACE,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC;EAC/B,OAAO,+CAA+C,CAACC,IAAI,CAACH,IAAI,CAAC,IAC/D,gDAAgD,CAACG,IAAI,CAACH,IAAI,CAAC,IAC3D,gGAAgG,CAACG,IAAI,CAACH,IAAI,CAAC;AAC/G;AAEO,SAASI,WAAWA,CAACC,KAK3B,EAAW;EACV,OAAO,CAACA,KAAK,CAACC,GAAG,EAAED,KAAK,CAACE,kBAAkB,EAAEF,KAAK,CAACG,kBAAkB,EAAE,IAAIH,KAAK,CAACI,KAAK,IAAI,EAAE,CAAC,CAAC,CAC3FC,IAAI,CAACZ,eAAe,CAAC;AAC1B","ignoreList":[]}
|
|
@@ -23,6 +23,29 @@ var _assetStore = require("../store/assetStore");
|
|
|
23
23
|
* "shipped but never loaded" set. Dev-only: no server, no graph.
|
|
24
24
|
*/
|
|
25
25
|
|
|
26
|
+
const GRAPH_TIMEOUT_MS = 90_000;
|
|
27
|
+
|
|
28
|
+
/** Bound the whole discovery pass, including response body reads. */
|
|
29
|
+
async function fetchGraphPayload(url, remainingMs) {
|
|
30
|
+
const controller = new AbortController();
|
|
31
|
+
let timer;
|
|
32
|
+
try {
|
|
33
|
+
return await Promise.race([(async () => {
|
|
34
|
+
const response = await fetch(url, {
|
|
35
|
+
signal: controller.signal
|
|
36
|
+
});
|
|
37
|
+
if (!response.ok) throw new Error(`Metro responded ${response.status} for ${url}`);
|
|
38
|
+
return response.json();
|
|
39
|
+
})(), new Promise((_, reject) => {
|
|
40
|
+
timer = setTimeout(() => {
|
|
41
|
+
reject(new Error("Asset discovery timed out. Try again."));
|
|
42
|
+
controller.abort();
|
|
43
|
+
}, Math.max(0, remainingMs));
|
|
44
|
+
})]);
|
|
45
|
+
} finally {
|
|
46
|
+
clearTimeout(timer);
|
|
47
|
+
}
|
|
48
|
+
}
|
|
26
49
|
function getScriptURL() {
|
|
27
50
|
try {
|
|
28
51
|
const {
|
|
@@ -84,17 +107,16 @@ async function fetchAssetGraph() {
|
|
|
84
107
|
message: "Graph fetch already running"
|
|
85
108
|
};
|
|
86
109
|
s.graphFetchInFlight = true;
|
|
110
|
+
s.graphFetchStartedAt = Date.now();
|
|
111
|
+
s.graphError = null;
|
|
112
|
+
(0, _assetStore.invalidate)();
|
|
113
|
+
const deadline = s.graphFetchStartedAt + GRAPH_TIMEOUT_MS;
|
|
87
114
|
try {
|
|
88
115
|
let data = null;
|
|
89
116
|
let lastError = "";
|
|
90
117
|
for (const url of candidates) {
|
|
91
118
|
try {
|
|
92
|
-
const
|
|
93
|
-
if (!response.ok) {
|
|
94
|
-
lastError = `Metro responded ${response.status} for ${url}`;
|
|
95
|
-
continue;
|
|
96
|
-
}
|
|
97
|
-
const parsed = await response.json();
|
|
119
|
+
const parsed = await fetchGraphPayload(url, deadline - Date.now());
|
|
98
120
|
if (Array.isArray(parsed)) {
|
|
99
121
|
data = parsed;
|
|
100
122
|
break;
|
|
@@ -102,15 +124,17 @@ async function fetchAssetGraph() {
|
|
|
102
124
|
lastError = "Unexpected .assets payload shape";
|
|
103
125
|
} catch (error) {
|
|
104
126
|
lastError = String(error?.message ?? error);
|
|
127
|
+
if (Date.now() >= deadline) break;
|
|
105
128
|
}
|
|
106
129
|
}
|
|
107
130
|
if (!Array.isArray(data)) throw new Error(lastError || "No graph endpoint answered");
|
|
108
131
|
const graph = data;
|
|
132
|
+
let count = 0;
|
|
109
133
|
for (const asset of graph) {
|
|
110
134
|
if (!asset || typeof asset.name !== "string" || typeof asset.type !== "string") {
|
|
111
135
|
continue;
|
|
112
136
|
}
|
|
113
|
-
(0, _assetStore.upsertRecord)({
|
|
137
|
+
const record = (0, _assetStore.upsertRecord)({
|
|
114
138
|
key: (0, _assetStore.assetKey)(asset.httpServerLocation, asset.name, asset.type),
|
|
115
139
|
name: asset.name,
|
|
116
140
|
type: asset.type,
|
|
@@ -124,14 +148,15 @@ async function fetchAssetGraph() {
|
|
|
124
148
|
files: asset.files,
|
|
125
149
|
fileHashes: asset.fileHashes
|
|
126
150
|
});
|
|
151
|
+
if (record) count++;
|
|
127
152
|
}
|
|
128
153
|
s.graphSupported = true;
|
|
129
|
-
s.graphCount =
|
|
154
|
+
s.graphCount = count;
|
|
130
155
|
s.graphError = null;
|
|
131
156
|
(0, _assetStore.invalidate)();
|
|
132
157
|
return {
|
|
133
158
|
ok: true,
|
|
134
|
-
count
|
|
159
|
+
count
|
|
135
160
|
};
|
|
136
161
|
} catch (error) {
|
|
137
162
|
s.graphSupported = getDevServerOrigin() != null;
|
|
@@ -143,6 +168,8 @@ async function fetchAssetGraph() {
|
|
|
143
168
|
};
|
|
144
169
|
} finally {
|
|
145
170
|
s.graphFetchInFlight = false;
|
|
171
|
+
s.graphFetchStartedAt = null;
|
|
172
|
+
(0, _assetStore.invalidate)();
|
|
146
173
|
}
|
|
147
174
|
}
|
|
148
175
|
//# sourceMappingURL=metroGraph.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_state","require","_assetStore","getScriptURL","NativeModules","sourceCode","SourceCode","
|
|
1
|
+
{"version":3,"names":["_state","require","_assetStore","GRAPH_TIMEOUT_MS","fetchGraphPayload","url","remainingMs","controller","AbortController","timer","Promise","race","response","fetch","signal","ok","Error","status","json","_","reject","setTimeout","abort","Math","max","clearTimeout","getScriptURL","NativeModules","sourceCode","SourceCode","getConstants","scriptURL","getDevServerOrigin","match","getGraphURLCandidates","test","origin","queryIndex","indexOf","query","slice","candidates","includes","push","replace","fetchAssetGraph","s","assetsState","length","graphSupported","graphError","invalidate","message","graphFetchInFlight","graphFetchStartedAt","Date","now","deadline","data","lastError","parsed","Array","isArray","error","String","graph","count","asset","name","type","record","upsertRecord","key","assetKey","httpServerLocation","hash","width","undefined","height","scales","fileSystemLocation","files","fileHashes","graphCount"],"sourceRoot":"../../../src","sources":["capture/metroGraph.ts"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +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":";;;;;;;;;;AAcA,IAAAA,WAAA,GAAAC,OAAA;AAdA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAKA;;AAiBA,IAAIC,cAAiD;AAE9C,SAASC,iBAAiBA,CAAA,EAA0B;EACzD,IAAID,cAAc,KAAKE,SAAS,EAAE,OAAOF,cAAc;EACvD,IAAIG,GAA0B,GAAG,IAAI;EACrC,IAAI;IACFA,GAAG,GAAGJ,OAAO,CAAC,wCAAwC,CAAC;EACzD,CAAC,CAAC,MAAM;IACN;IACA;IACA;IACA;IACA,IAAI;MACFI,GAAG,GAAGJ,OAAO,CAAC,4CAA4C,CAAC;IAC7D,CAAC,CAAC,MAAM;MACNI,GAAG,GAAG,IAAI;IACZ;EACF;EACAH,cAAc,GACZG,GAAG,IAAI,OAAOA,GAAG,CAACC,YAAY,KAAK,UAAU,GAAGD,GAAG,GAAG,IAAI;EAC5D,OAAOH,cAAc;AACvB;;AAEA;AACO,SAASK,oBAAoBA,CAClCC,UAAkB,EACqB;EACvC,IAAI;IACF,MAAM;MAAEC;IAAM,CAAC,GAAGR,OAAO,CAAC,cAAc,CAAC;IACzC,MAAMS,QAAQ,GAAGD,KAAK,CAACE,kBAAkB,CAACH,UAAU,CAAC;IACrD,IAAIE,QAAQ,IAAI,OAAOA,QAAQ,CAACE,GAAG,KAAK,QAAQ,EAAE;MAChD,OAAO;QAAEA,GAAG,EAAEF,QAAQ,CAACE,GAAG;QAAEC,KAAK,EAAEH,QAAQ,CAACG,KAAK,IAAI;MAAE,CAAC;IAC1D;EACF,CAAC,CAAC,MAAM;IACN;EAAA;EAEF,OAAO,IAAI;AACb;AAEO,SAASC,uBAAuBA,CACrCN,UAAkB,EAClBO,KAAoB,
|
|
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":[]}
|
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.AssetDetail = AssetDetail;
|
|
7
7
|
var _reactNative = require("react-native");
|
|
8
8
|
var _sharedUi = require("@buoy-gg/shared-ui");
|
|
9
|
-
var
|
|
9
|
+
var _AssetImage = require("./AssetImage");
|
|
10
10
|
var _format = require("../format");
|
|
11
11
|
var _assetStore = require("../store/assetStore");
|
|
12
12
|
var _testIDs = require("../utils/testIDs");
|
|
@@ -15,8 +15,8 @@ var _jsxRuntime = require("react/jsx-runtime");
|
|
|
15
15
|
* AssetDetail — full metadata for one asset: preview, identity, dimensions,
|
|
16
16
|
* per-scale sizes, resolution info, and which audit findings apply.
|
|
17
17
|
*
|
|
18
|
-
* Image previews
|
|
19
|
-
*
|
|
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
20
|
* — a best-effort guess (family ≠ filename for many fonts) that falls back
|
|
21
21
|
* to the system font silently when it misses.
|
|
22
22
|
*/
|
|
@@ -44,16 +44,13 @@ function Preview({
|
|
|
44
44
|
record
|
|
45
45
|
}) {
|
|
46
46
|
if (record.kind === "image") {
|
|
47
|
-
const source = (0, _measure.displaySource)(record);
|
|
48
|
-
if (source == null) return null;
|
|
49
47
|
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
50
48
|
style: styles.previewBox,
|
|
51
49
|
testID: _testIDs.ASSETS_TEST_IDS.detailPreview,
|
|
52
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(
|
|
50
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_AssetImage.AssetImage, {
|
|
53
51
|
testID: "buoy-internal-assets-preview",
|
|
54
|
-
|
|
55
|
-
style: styles.previewImage
|
|
56
|
-
resizeMode: "contain"
|
|
52
|
+
record: record,
|
|
53
|
+
style: styles.previewImage
|
|
57
54
|
})
|
|
58
55
|
});
|
|
59
56
|
}
|
|
@@ -77,7 +74,7 @@ function AssetDetail({
|
|
|
77
74
|
}) {
|
|
78
75
|
const findings = [];
|
|
79
76
|
if (insights.neverLoaded.includes(record.id)) {
|
|
80
|
-
findings.push("
|
|
77
|
+
findings.push("Not observed in the runtime registry this app run. This does not prove the asset is unused.");
|
|
81
78
|
}
|
|
82
79
|
if (insights.scaleGaps.includes(record.id)) {
|
|
83
80
|
findings.push("Scale gap — no variant covers this device's pixel ratio");
|
|
@@ -124,7 +121,7 @@ function AssetDetail({
|
|
|
124
121
|
value: record.kind
|
|
125
122
|
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(Row, {
|
|
126
123
|
label: "Status",
|
|
127
|
-
value: record.loaded ? "Loaded (registered at runtime)" : "
|
|
124
|
+
value: record.loaded ? "Loaded (registered at runtime)" : "Not observed in the runtime registry"
|
|
128
125
|
}), record.kind === "image" ? /*#__PURE__*/(0, _jsxRuntime.jsx)(Row, {
|
|
129
126
|
label: "Dimensions",
|
|
130
127
|
value: `${(0, _format.formatDimensions)(record)} (logical)`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"names":["_reactNative","require","_sharedUi","
|
|
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":";;;;;;AAUA,IAAAA,YAAA,GAAAC,OAAA;AACA,IAAAC,SAAA,GAAAD,OAAA;AACA,IAAAE,WAAA,GAAAF,OAAA;AACA,IAAAG,OAAA,GAAAH,OAAA;AACA,IAAAI,WAAA,GAAAJ,OAAA;AACA,IAAAK,QAAA,GAAAL,OAAA;AAI0B,IAAAM,WAAA,GAAAN,OAAA;AAnB1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAmBA,SAASO,GAAGA,CAAC;EAAEC,KAAK;EAAEC;AAAwC,CAAC,EAAE;EAC/D,MAAMC,MAAM,GAAG,IAAAC,6BAAoB,EAACH,KAAK,CAAC;EAC1C,oBACE,IAAAF,WAAA,CAAAM,IAAA,EAACb,YAAA,CAAAc,IAAI;IAACC,KAAK,EAAEC,MAAM,CAACC,KAAM;IAACN,MAAM,EAAEA,MAAO;IAAAO,QAAA,gBACxC,IAAAX,WAAA,CAAAY,GAAA,EAACnB,YAAA,CAAAoB,IAAI;MAACL,KAAK,EAAEC,MAAM,CAACK,OAAQ;MAAAH,QAAA,EAAET;IAAK,CAAO,CAAC,eAC3C,IAAAF,WAAA,CAAAY,GAAA,EAACnB,YAAA,CAAAoB,IAAI;MAACL,KAAK,EAAEC,MAAM,CAACM,OAAQ;MAACC,UAAU;MAACZ,MAAM,EAAE,GAAGA,MAAM,QAAS;MAAAO,QAAA,EAC/DR;IAAK,CACF,CAAC;EAAA,CACH,CAAC;AAEX;AAEA,SAASc,OAAOA,CAAC;EAAEC;AAAgC,CAAC,EAAE;EACpD,IAAIA,MAAM,CAACC,IAAI,KAAK,OAAO,EAAE;IAC3B,oBACE,IAAAnB,WAAA,CAAAY,GAAA,EAACnB,YAAA,CAAAc,IAAI;MAACC,KAAK,EAAEC,MAAM,CAACW,UAAW;MAAChB,MAAM,EAAEiB,wBAAe,CAACC,aAAc;MAAAX,QAAA,eACpE,IAAAX,WAAA,CAAAY,GAAA,EAAChB,WAAA,CAAA2B,UAAU;QACTnB,MAAM,EAAC,8BAA8B;QACrCc,MAAM,EAAEA,MAAO;QACfV,KAAK,EAAEC,MAAM,CAACe;MAAa,CAC5B;IAAC,CACE,CAAC;EAEX;EACA,IAAIN,MAAM,CAACC,IAAI,KAAK,MAAM,EAAE;IAC1B,oBACE,IAAAnB,WAAA,CAAAY,GAAA,EAACnB,YAAA,CAAAc,IAAI;MAACC,KAAK,EAAEC,MAAM,CAACW,UAAW;MAAChB,MAAM,EAAEiB,wBAAe,CAACI,iBAAkB;MAAAd,QAAA,eACxE,IAAAX,WAAA,CAAAY,GAAA,EAACnB,YAAA,CAAAoB,IAAI;QAACL,KAAK,EAAE,CAACC,MAAM,CAACiB,WAAW,EAAE;UAAEC,UAAU,EAAET,MAAM,CAACU;QAAK,CAAC,CAAE;QAAAjB,QAAA,EAAC;MAEhE,CAAM;IAAC,CACH,CAAC;EAEX;EACA,OAAO,IAAI;AACb;AAEO,SAASkB,WAAWA,CAAC;EAAEX,MAAM;EAAEY;AAA2B,CAAC,EAAE;EAClE,MAAMC,QAAkB,GAAG,EAAE;EAC7B,IAAID,QAAQ,CAACE,WAAW,CAACC,QAAQ,CAACf,MAAM,CAACgB,EAAE,CAAC,EAAE;IAC5CH,QAAQ,CAACI,IAAI,CAAC,6FAA6F,CAAC;EAC9G;EACA,IAAIL,QAAQ,CAACM,SAAS,CAACH,QAAQ,CAACf,MAAM,CAACgB,EAAE,CAAC,EAAE;IAC1CH,QAAQ,CAACI,IAAI,CAAC,yDAAyD,CAAC;EAC1E;EACA,IAAIL,QAAQ,CAACO,cAAc,CAACJ,QAAQ,CAACf,MAAM,CAACgB,EAAE,CAAC,EAAE;IAC/CH,QAAQ,CAACI,IAAI,CAAC,oEAAoE,CAAC;EACrF;EACA,MAAMG,SAAS,GAAGR,QAAQ,CAACS,UAAU,CAACC,IAAI,CAAEC,CAAC,IAAKA,CAAC,CAACC,GAAG,CAACT,QAAQ,CAACf,MAAM,CAACgB,EAAE,CAAC,CAAC;EAC5E,IAAII,SAAS,EAAE;IACbP,QAAQ,CAACI,IAAI,CACX,+CAA+CG,SAAS,CAACI,GAAG,CAACC,MAAM,QACrE,CAAC;EACH;EACA,IAAIb,QAAQ,CAACc,UAAU,CAACX,QAAQ,CAACf,MAAM,CAACgB,EAAE,CAAC,EAAE;IAC3CH,QAAQ,CAACI,IAAI,CACX,kGACF,CAAC;EACH;EACA,IAAIL,QAAQ,CAACe,SAAS,CAACZ,QAAQ,CAACf,MAAM,CAACgB,EAAE,CAAC,EAAE;IAC1CH,QAAQ,CAACI,IAAI,CACX,0FACF,CAAC;EACH;EACA,IAAIL,QAAQ,CAACgB,UAAU,CAACb,QAAQ,CAACf,MAAM,CAACgB,EAAE,CAAC,EAAE;IAC3CH,QAAQ,CAACI,IAAI,CACX,+FACF,CAAC;EACH;EACA,IAAIL,QAAQ,CAACiB,cAAc,CAACd,QAAQ,CAACf,MAAM,CAACgB,EAAE,CAAC,EAAE;IAC/CH,QAAQ,CAACI,IAAI,CACX,qGACF,CAAC;EACH;EAEA,MAAMa,QAAQ,GAAG,IAAAC,2BAAe,EAAC/B,MAAM,CAAC;EAExC,oBACE,IAAAlB,WAAA,CAAAM,IAAA,EAACb,YAAA,CAAAyD,UAAU;IACT1C,KAAK,EAAEC,MAAM,CAAC0C,MAAO;IACrBC,qBAAqB,EAAE3C,MAAM,CAAC4C,OAAQ;IACtCjD,MAAM,EAAEiB,wBAAe,CAACiC,YAAa;IAAA3C,QAAA,gBAErC,IAAAX,WAAA,CAAAY,GAAA,EAACK,OAAO;MAACC,MAAM,EAAEA;IAAO,CAAE,CAAC,EAE1Ba,QAAQ,CAACY,MAAM,GAAG,CAAC,gBAClB,IAAA3C,WAAA,CAAAY,GAAA,EAACnB,YAAA,CAAAc,IAAI;MAACC,KAAK,EAAEC,MAAM,CAACsB,QAAS;MAAC3B,MAAM,EAAEiB,wBAAe,CAACkC,cAAe;MAAA5C,QAAA,EAClEoB,QAAQ,CAACyB,GAAG,CAAC,CAACC,OAAO,EAAEC,KAAK,kBAC3B,IAAA1D,WAAA,CAAAY,GAAA,EAACnB,YAAA,CAAAoB,IAAI;QAEHL,KAAK,EAAEC,MAAM,CAACkD,WAAY;QAC1BvD,MAAM,EAAE,IAAAwD,2BAAkB,EAACF,KAAK,CAAE;QAAA/C,QAAA,EAEjC8C;MAAO,GAJHA,OAKD,CACP;IAAC,CACE,CAAC,GACL,IAAI,eAER,IAAAzD,WAAA,CAAAY,GAAA,EAACX,GAAG;MAACC,KAAK,EAAC,MAAM;MAACC,KAAK,EAAE,GAAGe,MAAM,CAACU,IAAI,IAAIV,MAAM,CAAC2C,IAAI;IAAG,CAAE,CAAC,eAC5D,IAAA7D,WAAA,CAAAY,GAAA,EAACX,GAAG;MAACC,KAAK,EAAC,MAAM;MAACC,KAAK,EAAEe,MAAM,CAACC;IAAK,CAAE,CAAC,eACxC,IAAAnB,WAAA,CAAAY,GAAA,EAACX,GAAG;MACFC,KAAK,EAAC,QAAQ;MACdC,KAAK,EAAEe,MAAM,CAAC4C,MAAM,GAAG,gCAAgC,GAAG;IAAuC,CAClG,CAAC,EACD5C,MAAM,CAACC,IAAI,KAAK,OAAO,gBACtB,IAAAnB,WAAA,CAAAY,GAAA,EAACX,GAAG;MAACC,KAAK,EAAC,YAAY;MAACC,KAAK,EAAE,GAAG,IAAA4D,wBAAgB,EAAC7C,MAAM,CAAC;IAAa,CAAE,CAAC,GACxE,IAAI,EACPA,MAAM,CAACC,IAAI,KAAK,OAAO,IAAID,MAAM,CAAC8C,MAAM,CAACrB,MAAM,gBAC9C,IAAA3C,WAAA,CAAAY,GAAA,EAACX,GAAG;MAACC,KAAK,EAAC,QAAQ;MAACC,KAAK,EAAE,IAAA8D,oBAAY,EAAC/C,MAAM,CAAC8C,MAAM;IAAE,CAAE,CAAC,GACxD,IAAI,EAEP9C,MAAM,CAACgD,YAAY,GAChBC,MAAM,CAACC,OAAO,CAAClD,MAAM,CAACgD,YAAY,CAAC,CAACV,GAAG,CAAC,CAAC,CAACa,KAAK,EAAEC,KAAK,CAAC,kBACrD,IAAAtE,WAAA,CAAAY,GAAA,EAACX,GAAG;MAAaC,KAAK,EAAE,SAASmE,KAAK,GAAI;MAAClE,KAAK,EAAE,IAAAoE,mBAAW,EAACD,KAAK;IAAE,GAA3DD,KAA6D,CACxE,CAAC,GACF,IAAI,EACPnD,MAAM,CAACsD,SAAS,IAAI,IAAI,IAAItD,MAAM,CAACuD,UAAU,KAAK,UAAU,gBAC3D,IAAAzE,WAAA,CAAAY,GAAA,EAACX,GAAG;MAACC,KAAK,EAAC,YAAY;MAACC,KAAK,EAAE,IAAAoE,mBAAW,EAACrD,MAAM,CAACsD,SAAS;IAAE,CAAE,CAAC,GAC9D,IAAI,EACPxB,QAAQ,GAAG,CAAC,gBACX,IAAAhD,WAAA,CAAAY,GAAA,EAACX,GAAG;MAACC,KAAK,EAAC,gBAAgB;MAACC,KAAK,EAAE,IAAI,IAAAoE,mBAAW,EAACvB,QAAQ,CAAC;IAAU,CAAE,CAAC,GACvE,IAAI,EAEP9B,MAAM,CAACwD,UAAU,IAAI,IAAI,gBACxB,IAAA1E,WAAA,CAAAY,GAAA,EAACX,GAAG;MAACC,KAAK,EAAC,aAAa;MAACC,KAAK,EAAEwE,MAAM,CAACzD,MAAM,CAACwD,UAAU;IAAE,CAAE,CAAC,GAC3D,IAAI,EACPxD,MAAM,CAAC0D,IAAI,gBAAG,IAAA5E,WAAA,CAAAY,GAAA,EAACX,GAAG;MAACC,KAAK,EAAC,MAAM;MAACC,KAAK,EAAEe,MAAM,CAAC0D;IAAK,CAAE,CAAC,GAAG,IAAI,EAC7D1D,MAAM,CAAC2D,kBAAkB,gBACxB,IAAA7E,WAAA,CAAAY,GAAA,EAACX,GAAG;MAACC,KAAK,EAAC,UAAU;MAACC,KAAK,EAAEe,MAAM,CAAC2D;IAAmB,CAAE,CAAC,GACxD,IAAI,EACP3D,MAAM,CAAC4D,kBAAkB,gBACxB,IAAA9E,WAAA,CAAAY,GAAA,EAACX,GAAG;MAACC,KAAK,EAAC,YAAY;MAACC,KAAK,EAAEe,MAAM,CAAC4D;IAAmB,CAAE,CAAC,GAC1D,IAAI,EACP5D,MAAM,CAAC6D,WAAW,gBAAG,IAAA/E,WAAA,CAAAY,GAAA,EAACX,GAAG;MAACC,KAAK,EAAC,cAAc;MAACC,KAAK,EAAEe,MAAM,CAAC6D;IAAY,CAAE,CAAC,GAAG,IAAI;EAAA,CAC1E,CAAC;AAEjB;AAEA,MAAMtE,MAAM,GAAGuE,uBAAU,CAACC,MAAM,CAAC;EAC/B9B,MAAM,EAAE;IACN+B,IAAI,EAAE;EACR,CAAC;EACD7B,OAAO,EAAE;IACP8B,OAAO,EAAE,EAAE;IACXC,GAAG,EAAE;EACP,CAAC;EACDhE,UAAU,EAAE;IACViE,YAAY,EAAE,CAAC;IACfC,eAAe,EAAEC,eAAK,CAACC,KAAK,CAACC,EAAE;IAC/BN,OAAO,EAAE,EAAE;IACXO,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE,QAAQ;IACxBC,SAAS,EAAE;EACb,CAAC;EACDpE,YAAY,EAAE;IACZqE,KAAK,EAAE,MAAM;IACbC,MAAM,EAAE;EACV,CAAC;EACDpE,WAAW,EAAE;IACX8D,KAAK,EAAED,eAAK,CAACC,KAAK,CAACO,IAAI;IACvBC,QAAQ,EAAE,EAAE;IACZC,SAAS,EAAE;EACb,CAAC;EACDlE,QAAQ,EAAE;IACRsD,YAAY,EAAE,CAAC;IACfa,WAAW,EAAE,CAAC;IACdC,WAAW,EAAEZ,eAAK,CAACC,KAAK,CAACY,MAAM;IAC/Bd,eAAe,EAAEC,eAAK,CAACC,KAAK,CAACa,OAAO;IACpClB,OAAO,EAAE,EAAE;IACXC,GAAG,EAAE;EACP,CAAC;EACDzB,WAAW,EAAE;IACX6B,KAAK,EAAED,eAAK,CAACC,KAAK,CAACc,aAAa;IAChCN,QAAQ,EAAE,EAAE;IACZO,UAAU,EAAE;EACd,CAAC;EACD7F,KAAK,EAAE;IACL0E,GAAG,EAAE;EACP,CAAC;EACDtE,OAAO,EAAE;IACP0E,KAAK,EAAED,eAAK,CAACC,KAAK,CAACgB,YAAY;IAC/BR,QAAQ,EAAE,CAAC;IACXS,UAAU,EAAE,KAAK;IACjBC,aAAa,EAAE,GAAG;IAClBC,aAAa,EAAE;EACjB,CAAC;EACD5F,OAAO,EAAE;IACPyE,KAAK,EAAED,eAAK,CAACC,KAAK,CAACO,IAAI;IACvBC,QAAQ,EAAE;EACZ;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -0,0 +1,66 @@
|
|
|
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":[]}
|
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.AssetRow = AssetRow;
|
|
7
7
|
var _reactNative = require("react-native");
|
|
8
8
|
var _sharedUi = require("@buoy-gg/shared-ui");
|
|
9
|
-
var
|
|
9
|
+
var _AssetImage = require("./AssetImage");
|
|
10
10
|
var _format = require("../format");
|
|
11
11
|
var _assetStore = require("../store/assetStore");
|
|
12
12
|
var _testIDs = require("../utils/testIDs");
|
|
@@ -51,10 +51,9 @@ function AssetRow({
|
|
|
51
51
|
onPress
|
|
52
52
|
}) {
|
|
53
53
|
const accent = _format.KIND_COLORS[record.kind];
|
|
54
|
-
const thumbSource = record.kind === "image" ? (0, _measure.displaySource)(record) : null;
|
|
55
54
|
const badges = [];
|
|
56
55
|
if (!record.loaded) badges.push({
|
|
57
|
-
label: "
|
|
56
|
+
label: "NOT OBSERVED"
|
|
58
57
|
});
|
|
59
58
|
if (flags.oversize) badges.push({
|
|
60
59
|
label: "OVERSIZE",
|
|
@@ -85,14 +84,14 @@ function AssetRow({
|
|
|
85
84
|
style: styles.body,
|
|
86
85
|
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
87
86
|
style: styles.thumbBox,
|
|
88
|
-
children:
|
|
87
|
+
children: record.kind === "image" ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_AssetImage.AssetImage
|
|
89
88
|
// buoy-internal- prefix: the images tool skips its own toolchain's
|
|
90
89
|
// views, so previewing an asset never records a render of itself.
|
|
91
90
|
, {
|
|
92
91
|
testID: "buoy-internal-assets-thumb",
|
|
93
|
-
|
|
92
|
+
record: record,
|
|
94
93
|
style: styles.thumb,
|
|
95
|
-
|
|
94
|
+
compact: true
|
|
96
95
|
}) : /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
97
96
|
style: [styles.thumbFallback, {
|
|
98
97
|
color: accent
|