@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
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["StyleSheet","Text","TouchableOpacity","View","night","KIND_COLORS","KIND_LABELS","ASSETS_TEST_IDS","assetFilterTestID","jsx","_jsx","AssetsFilterBar","stats","duplicateCount","filter","onChange","chips","key","label","total","accent","color","textSecondary","kind","Object","keys","byKind","entry","count","push","neverLoaded","length","style","styles","bar","testID","filterBar","children","map","chip","active","accessibilityRole","accessibilityState","selected","borderColor","backgroundColor","onPress","chipText","create","flexDirection","flexWrap","gap","paddingHorizontal","paddingVertical","borderWidth","border","surface","borderRadius","fontSize","fontWeight","letterSpacing","lineHeight"],"sourceRoot":"../../../src","sources":["components/AssetsFilterBar.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1,69 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* AssetsHeader — shared ModalHeader wiring, matching the Images/Console
|
|
5
|
+
* header pattern. List mode shows inventory totals plus the shared
|
|
6
|
+
* ToolbarCopyButton (full markdown report); detail mode shows back
|
|
7
|
+
* navigation and the single-asset report.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import { ModalHeader, ToolbarClearButton, ToolbarCopyButton } from "@buoy-gg/shared-ui";
|
|
11
|
+
import { formatBytes } from "../format";
|
|
12
|
+
import { ASSETS_TEST_IDS } from "../utils/testIDs";
|
|
13
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
14
|
+
export function AssetsHeader({
|
|
15
|
+
stats,
|
|
16
|
+
measuring,
|
|
17
|
+
discovering = false,
|
|
18
|
+
detailOpen,
|
|
19
|
+
detailIndex = -1,
|
|
20
|
+
detailTotal = 0,
|
|
21
|
+
onCloseDetail,
|
|
22
|
+
onClear,
|
|
23
|
+
getReport,
|
|
24
|
+
onBack
|
|
25
|
+
}) {
|
|
26
|
+
if (detailOpen) {
|
|
27
|
+
const counter = detailIndex >= 0 && detailTotal > 0 ? `${detailIndex + 1} of ${detailTotal}` : undefined;
|
|
28
|
+
return /*#__PURE__*/_jsxs(ModalHeader, {
|
|
29
|
+
children: [/*#__PURE__*/_jsx(ModalHeader.Navigation, {
|
|
30
|
+
onBack: onCloseDetail
|
|
31
|
+
}), /*#__PURE__*/_jsx(ModalHeader.Content, {
|
|
32
|
+
title: "Asset detail",
|
|
33
|
+
subtitle: counter,
|
|
34
|
+
testID: ASSETS_TEST_IDS.title
|
|
35
|
+
}), /*#__PURE__*/_jsx(ModalHeader.Actions, {
|
|
36
|
+
children: /*#__PURE__*/_jsx(ToolbarCopyButton, {
|
|
37
|
+
value: getReport,
|
|
38
|
+
testID: ASSETS_TEST_IDS.copy
|
|
39
|
+
})
|
|
40
|
+
})]
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
const subtitleParts = [`${stats.total} assets${discovering ? " so far" : ""}`];
|
|
44
|
+
// A mid-measure byte total reads as nonsense ("653 B+") — wait it out.
|
|
45
|
+
if (stats.totalBytes > 0 && !measuring && !discovering) {
|
|
46
|
+
const partial = stats.measuredCount < stats.total ? "+" : "";
|
|
47
|
+
subtitleParts.push(`${formatBytes(stats.totalBytes)}${partial}`);
|
|
48
|
+
}
|
|
49
|
+
if (stats.neverLoaded > 0) subtitleParts.push(`${stats.neverLoaded} not observed`);
|
|
50
|
+
if (stats.fontFamilies > 0) subtitleParts.push(`${stats.fontFamilies} fonts`);
|
|
51
|
+
return /*#__PURE__*/_jsxs(ModalHeader, {
|
|
52
|
+
children: [onBack ? /*#__PURE__*/_jsx(ModalHeader.Navigation, {
|
|
53
|
+
onBack: onBack
|
|
54
|
+
}) : null, /*#__PURE__*/_jsx(ModalHeader.Content, {
|
|
55
|
+
title: "Assets",
|
|
56
|
+
subtitle: subtitleParts.join(" · "),
|
|
57
|
+
testID: ASSETS_TEST_IDS.title
|
|
58
|
+
}), /*#__PURE__*/_jsxs(ModalHeader.Actions, {
|
|
59
|
+
children: [/*#__PURE__*/_jsx(ToolbarCopyButton, {
|
|
60
|
+
value: getReport,
|
|
61
|
+
testID: ASSETS_TEST_IDS.copy
|
|
62
|
+
}), /*#__PURE__*/_jsx(ToolbarClearButton, {
|
|
63
|
+
onPress: onClear,
|
|
64
|
+
testID: ASSETS_TEST_IDS.clear
|
|
65
|
+
})]
|
|
66
|
+
})]
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
//# sourceMappingURL=AssetsHeader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["ModalHeader","ToolbarClearButton","ToolbarCopyButton","formatBytes","ASSETS_TEST_IDS","jsx","_jsx","jsxs","_jsxs","AssetsHeader","stats","measuring","discovering","detailOpen","detailIndex","detailTotal","onCloseDetail","onClear","getReport","onBack","counter","undefined","children","Navigation","Content","title","subtitle","testID","Actions","value","copy","subtitleParts","total","totalBytes","partial","measuredCount","push","neverLoaded","fontFamilies","join","onPress","clear"],"sourceRoot":"../../../src","sources":["components/AssetsHeader.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1,12 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* AssetsIcon — re-exported from the Buoy Icon Format.
|
|
5
|
+
*
|
|
6
|
+
* The artwork lives in shared/icons/assets.json and is generated into
|
|
7
|
+
* @buoy-gg/floating-tools-core, so React Native, the desktop dashboard and
|
|
8
|
+
* Flutter all render the same drawing. Edit the JSON, then `pnpm icons`.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
export { AssetsIcon, ASSETS_ICON_COLOR } from "@buoy-gg/shared-ui";
|
|
12
|
+
//# sourceMappingURL=AssetsIcon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["AssetsIcon","ASSETS_ICON_COLOR"],"sourceRoot":"../../../src","sources":["components/AssetsIcon.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SAASA,UAAU,EAAEC,iBAAiB,QAAQ,oBAAoB","ignoreList":[]}
|
|
@@ -1 +1,77 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/** Asset list search and sort controls. */
|
|
4
|
+
|
|
5
|
+
import { StyleSheet, Text, TextInput, TouchableOpacity, View } from "react-native";
|
|
6
|
+
import { night } from "@buoy-gg/shared-ui";
|
|
7
|
+
import { ASSETS_TEST_IDS } from "../utils/testIDs";
|
|
8
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
9
|
+
const NEXT_SORT = {
|
|
10
|
+
size: "name",
|
|
11
|
+
name: "type",
|
|
12
|
+
type: "size"
|
|
13
|
+
};
|
|
14
|
+
export function AssetsListControls({
|
|
15
|
+
query,
|
|
16
|
+
onQueryChange,
|
|
17
|
+
sort,
|
|
18
|
+
onSortChange
|
|
19
|
+
}) {
|
|
20
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
21
|
+
style: styles.row,
|
|
22
|
+
children: [/*#__PURE__*/_jsx(TextInput, {
|
|
23
|
+
style: styles.input,
|
|
24
|
+
value: query,
|
|
25
|
+
onChangeText: onQueryChange,
|
|
26
|
+
placeholder: "Search assets\u2026",
|
|
27
|
+
placeholderTextColor: night.color.placeholder,
|
|
28
|
+
autoCapitalize: "none",
|
|
29
|
+
autoCorrect: false,
|
|
30
|
+
testID: ASSETS_TEST_IDS.search
|
|
31
|
+
}), /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
32
|
+
style: styles.button,
|
|
33
|
+
onPress: () => onSortChange(NEXT_SORT[sort]),
|
|
34
|
+
testID: ASSETS_TEST_IDS.sort,
|
|
35
|
+
children: /*#__PURE__*/_jsxs(Text, {
|
|
36
|
+
style: styles.buttonText,
|
|
37
|
+
testID: `${ASSETS_TEST_IDS.sort}-label`,
|
|
38
|
+
children: ["\u2193 ", sort.toUpperCase()]
|
|
39
|
+
})
|
|
40
|
+
})]
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
const styles = StyleSheet.create({
|
|
44
|
+
row: {
|
|
45
|
+
flexDirection: "row",
|
|
46
|
+
alignItems: "center",
|
|
47
|
+
gap: 8,
|
|
48
|
+
paddingHorizontal: 10,
|
|
49
|
+
paddingBottom: 8
|
|
50
|
+
},
|
|
51
|
+
input: {
|
|
52
|
+
flex: 1,
|
|
53
|
+
backgroundColor: night.color.surfaceElevated,
|
|
54
|
+
borderWidth: 1,
|
|
55
|
+
borderColor: night.color.border,
|
|
56
|
+
borderRadius: 8,
|
|
57
|
+
paddingHorizontal: 10,
|
|
58
|
+
paddingVertical: 6,
|
|
59
|
+
color: night.color.text,
|
|
60
|
+
fontSize: 12
|
|
61
|
+
},
|
|
62
|
+
button: {
|
|
63
|
+
backgroundColor: night.color.surface,
|
|
64
|
+
borderWidth: 1,
|
|
65
|
+
borderColor: night.color.border,
|
|
66
|
+
borderRadius: 8,
|
|
67
|
+
paddingHorizontal: 10,
|
|
68
|
+
paddingVertical: 7
|
|
69
|
+
},
|
|
70
|
+
buttonText: {
|
|
71
|
+
color: night.color.textSecondary,
|
|
72
|
+
fontSize: 10,
|
|
73
|
+
fontWeight: "700",
|
|
74
|
+
letterSpacing: 0.5
|
|
75
|
+
}
|
|
76
|
+
});
|
|
77
|
+
//# sourceMappingURL=AssetsListControls.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["StyleSheet","Text","TextInput","TouchableOpacity","View","night","ASSETS_TEST_IDS","jsx","_jsx","jsxs","_jsxs","NEXT_SORT","size","name","type","AssetsListControls","query","onQueryChange","sort","onSortChange","style","styles","row","children","input","value","onChangeText","placeholder","placeholderTextColor","color","autoCapitalize","autoCorrect","testID","search","button","onPress","buttonText","toUpperCase","create","flexDirection","alignItems","gap","paddingHorizontal","paddingBottom","flex","backgroundColor","surfaceElevated","borderWidth","borderColor","border","borderRadius","paddingVertical","text","fontSize","surface","textSecondary","fontWeight","letterSpacing"],"sourceRoot":"../../../src","sources":["components/AssetsListControls.tsx"],"mappings":";;AAAA;;AAEA,SAASA,UAAU,EAAEC,IAAI,EAAEC,SAAS,EAAEC,gBAAgB,EAAEC,IAAI,QAAQ,cAAc;AAClF,SAASC,KAAK,QAAQ,oBAAoB;AAC1C,SAASC,eAAe,QAAQ,kBAAkB;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAInD,MAAMC,SAAuC,GAAG;EAC9CC,IAAI,EAAE,MAAM;EACZC,IAAI,EAAE,MAAM;EACZC,IAAI,EAAE;AACR,CAAC;AASD,OAAO,SAASC,kBAAkBA,CAAC;EACjCC,KAAK;EACLC,aAAa;EACbC,IAAI;EACJC;AACuB,CAAC,EAAE;EAC1B,oBACET,KAAA,CAACN,IAAI;IAACgB,KAAK,EAAEC,MAAM,CAACC,GAAI;IAAAC,QAAA,gBACtBf,IAAA,CAACN,SAAS;MACRkB,KAAK,EAAEC,MAAM,CAACG,KAAM;MACpBC,KAAK,EAAET,KAAM;MACbU,YAAY,EAAET,aAAc;MAC5BU,WAAW,EAAC,qBAAgB;MAC5BC,oBAAoB,EAAEvB,KAAK,CAACwB,KAAK,CAACF,WAAY;MAC9CG,cAAc,EAAC,MAAM;MACrBC,WAAW,EAAE,KAAM;MACnBC,MAAM,EAAE1B,eAAe,CAAC2B;IAAO,CAChC,CAAC,eACFzB,IAAA,CAACL,gBAAgB;MACfiB,KAAK,EAAEC,MAAM,CAACa,MAAO;MACrBC,OAAO,EAAEA,CAAA,KAAMhB,YAAY,CAACR,SAAS,CAACO,IAAI,CAAC,CAAE;MAC7Cc,MAAM,EAAE1B,eAAe,CAACY,IAAK;MAAAK,QAAA,eAE7Bb,KAAA,CAACT,IAAI;QAACmB,KAAK,EAAEC,MAAM,CAACe,UAAW;QAACJ,MAAM,EAAE,GAAG1B,eAAe,CAACY,IAAI,QAAS;QAAAK,QAAA,GAAC,SACrE,EAACL,IAAI,CAACmB,WAAW,CAAC,CAAC;MAAA,CACjB;IAAC,CACS,CAAC;EAAA,CACf,CAAC;AAEX;AAEA,MAAMhB,MAAM,GAAGrB,UAAU,CAACsC,MAAM,CAAC;EAC/BhB,GAAG,EAAE;IACHiB,aAAa,EAAE,KAAK;IACpBC,UAAU,EAAE,QAAQ;IACpBC,GAAG,EAAE,CAAC;IACNC,iBAAiB,EAAE,EAAE;IACrBC,aAAa,EAAE;EACjB,CAAC;EACDnB,KAAK,EAAE;IACLoB,IAAI,EAAE,CAAC;IACPC,eAAe,EAAExC,KAAK,CAACwB,KAAK,CAACiB,eAAe;IAC5CC,WAAW,EAAE,CAAC;IACdC,WAAW,EAAE3C,KAAK,CAACwB,KAAK,CAACoB,MAAM;IAC/BC,YAAY,EAAE,CAAC;IACfR,iBAAiB,EAAE,EAAE;IACrBS,eAAe,EAAE,CAAC;IAClBtB,KAAK,EAAExB,KAAK,CAACwB,KAAK,CAACuB,IAAI;IACvBC,QAAQ,EAAE;EACZ,CAAC;EACDnB,MAAM,EAAE;IACNW,eAAe,EAAExC,KAAK,CAACwB,KAAK,CAACyB,OAAO;IACpCP,WAAW,EAAE,CAAC;IACdC,WAAW,EAAE3C,KAAK,CAACwB,KAAK,CAACoB,MAAM;IAC/BC,YAAY,EAAE,CAAC;IACfR,iBAAiB,EAAE,EAAE;IACrBS,eAAe,EAAE;EACnB,CAAC;EACDf,UAAU,EAAE;IACVP,KAAK,EAAExB,KAAK,CAACwB,KAAK,CAAC0B,aAAa;IAChCF,QAAQ,EAAE,EAAE;IACZG,UAAU,EAAE,KAAK;IACjBC,aAAa,EAAE;EACjB;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1 +1,373 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* AssetsModal — bottom-sheet wrapper rendered by FloatingDevTools when the
|
|
5
|
+
* Assets tool is opened. Inventory list (largest first) → tap for detail.
|
|
6
|
+
* Opening triggers a full rescan (registry walk + Metro graph + size
|
|
7
|
+
* measurement); merely installing the package never hits the network.
|
|
8
|
+
*/
|
|
9
|
+
|
|
10
|
+
import { useEffect, useState } from "react";
|
|
11
|
+
import { FlatList, StyleSheet, Text, TouchableOpacity, View } from "react-native";
|
|
12
|
+
import { EventStepperFooter, JsModal, macOSColors, night, windowDragProps, ToolEmptyState } from "@buoy-gg/shared-ui";
|
|
13
|
+
import { getScanStatus, installAssetCapture, rescan } from "../capture/install";
|
|
14
|
+
import { formatAssetMarkdown, formatInventoryMarkdown } from "../export";
|
|
15
|
+
import { useAssetRecords } from "../hooks/useAssetRecords";
|
|
16
|
+
import { useAssetScanStatus } from "../hooks/useAssetScanStatus";
|
|
17
|
+
import { remoteAssetsDispatch } from "../remote";
|
|
18
|
+
import { clearRecords, estDecodedBytes, getRecord } from "../store/assetStore";
|
|
19
|
+
import { getDiff, loadBaseline } from "../store/baseline";
|
|
20
|
+
import { AssetDetail } from "./AssetDetail";
|
|
21
|
+
import { AssetRow } from "./AssetRow";
|
|
22
|
+
import { AssetsFilterBar } from "./AssetsFilterBar";
|
|
23
|
+
import { AssetsHeader } from "./AssetsHeader";
|
|
24
|
+
import { AssetsListControls } from "./AssetsListControls";
|
|
25
|
+
import { ScanNotice } from "./ScanNotice";
|
|
26
|
+
import { ASSETS_TEST_IDS, assetFontChipTestID } from "../utils/testIDs";
|
|
27
|
+
import { jsxs as _jsxs, jsx as _jsx } from "react/jsx-runtime";
|
|
28
|
+
function FontFamilies({
|
|
29
|
+
names
|
|
30
|
+
}) {
|
|
31
|
+
const families = [...new Set(names)];
|
|
32
|
+
if (!families.length) return null;
|
|
33
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
34
|
+
style: styles.fontsBox,
|
|
35
|
+
testID: ASSETS_TEST_IDS.fonts,
|
|
36
|
+
children: [/*#__PURE__*/_jsxs(Text, {
|
|
37
|
+
style: styles.fontsTitle,
|
|
38
|
+
testID: ASSETS_TEST_IDS.fontsTitle,
|
|
39
|
+
children: ["LOADED FONT FAMILIES (", families.length, ")"]
|
|
40
|
+
}), /*#__PURE__*/_jsx(View, {
|
|
41
|
+
style: styles.fontsWrap,
|
|
42
|
+
children: families.map(family => /*#__PURE__*/_jsx(Text, {
|
|
43
|
+
style: styles.fontChip,
|
|
44
|
+
testID: assetFontChipTestID(family),
|
|
45
|
+
children: family
|
|
46
|
+
}, family))
|
|
47
|
+
})]
|
|
48
|
+
});
|
|
49
|
+
}
|
|
50
|
+
function EmptyState({
|
|
51
|
+
duplicates = false
|
|
52
|
+
}) {
|
|
53
|
+
return /*#__PURE__*/_jsx(ToolEmptyState, {
|
|
54
|
+
testID: ASSETS_TEST_IDS.empty
|
|
55
|
+
// scanning: a scan ran and found nothing — the copy says "try Rescan".
|
|
56
|
+
,
|
|
57
|
+
otto: "scanning",
|
|
58
|
+
title: duplicates ? "No duplicates found" : "No assets found yet",
|
|
59
|
+
message: duplicates ? "No assets in this view share a content hash." : "Every bundled asset — images, fonts, video, audio — appears here with sizes, scale coverage, and runtime registration status. Try Rescan after navigating around the app."
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
/** Largest first — measured bytes, falling back to decoded estimate. */
|
|
64
|
+
function bySizeDesc(a, b) {
|
|
65
|
+
return (b.sizeBytes ?? estDecodedBytes(b)) - (a.sizeBytes ?? estDecodedBytes(a));
|
|
66
|
+
}
|
|
67
|
+
const COMPARATORS = {
|
|
68
|
+
size: bySizeDesc,
|
|
69
|
+
name: (a, b) => a.name.localeCompare(b.name) || a.type.localeCompare(b.type),
|
|
70
|
+
type: (a, b) => a.type.localeCompare(b.type) || bySizeDesc(a, b)
|
|
71
|
+
};
|
|
72
|
+
export function AssetsModal({
|
|
73
|
+
visible,
|
|
74
|
+
onClose,
|
|
75
|
+
onBack,
|
|
76
|
+
onMinimize,
|
|
77
|
+
persistenceKey,
|
|
78
|
+
inline = false
|
|
79
|
+
}) {
|
|
80
|
+
// Safety net: the index import normally installed this already.
|
|
81
|
+
installAssetCapture();
|
|
82
|
+
const {
|
|
83
|
+
records,
|
|
84
|
+
stats,
|
|
85
|
+
insights
|
|
86
|
+
} = useAssetRecords();
|
|
87
|
+
const status = useAssetScanStatus();
|
|
88
|
+
const [remoteError, setRemoteError] = useState(false);
|
|
89
|
+
useEffect(() => {
|
|
90
|
+
setRemoteError(false);
|
|
91
|
+
}, [status.graphFetchInFlight, status.lastScanAt]);
|
|
92
|
+
const retry = () => {
|
|
93
|
+
setRemoteError(false);
|
|
94
|
+
const remote = remoteAssetsDispatch();
|
|
95
|
+
if (remote) void remote("rescan").catch(() => setRemoteError(true));else void rescan();
|
|
96
|
+
};
|
|
97
|
+
const [selectedId, setSelectedId] = useState(null);
|
|
98
|
+
const [filter, setFilter] = useState("all");
|
|
99
|
+
const [query, setQuery] = useState("");
|
|
100
|
+
const [sort, setSort] = useState("size");
|
|
101
|
+
const selected = selectedId != null ? getRecord(selectedId) : undefined;
|
|
102
|
+
|
|
103
|
+
// Full scan on open — locally on device, forwarded on dashboard mirrors.
|
|
104
|
+
// The baseline load is async and re-renders through the store emit.
|
|
105
|
+
useEffect(() => {
|
|
106
|
+
if (!visible) return;
|
|
107
|
+
void loadBaseline();
|
|
108
|
+
setRemoteError(false);
|
|
109
|
+
const remote = remoteAssetsDispatch();
|
|
110
|
+
if (remote) {
|
|
111
|
+
remote("rescan").catch(() => setRemoteError(true));
|
|
112
|
+
} else {
|
|
113
|
+
void rescan();
|
|
114
|
+
}
|
|
115
|
+
}, [visible]);
|
|
116
|
+
const duplicateIds = new Set(insights.duplicates.flatMap(group => group.ids));
|
|
117
|
+
const sorted = [...records].sort(COMPARATORS[sort]);
|
|
118
|
+
const trimmedQuery = query.trim().toLowerCase();
|
|
119
|
+
const filtered = sorted.filter(r => {
|
|
120
|
+
if (filter === "unused" && r.loaded) return false;
|
|
121
|
+
if (filter === "duplicates" && !duplicateIds.has(r.id)) return false;
|
|
122
|
+
if (filter !== "all" && filter !== "unused" && filter !== "duplicates" && r.kind !== filter) return false;
|
|
123
|
+
if (trimmedQuery && !`${r.name}.${r.type}`.toLowerCase().includes(trimmedQuery)) {
|
|
124
|
+
return false;
|
|
125
|
+
}
|
|
126
|
+
return true;
|
|
127
|
+
});
|
|
128
|
+
const selectedIndex = selected ? filtered.findIndex(r => r.id === selected.id) : -1;
|
|
129
|
+
const stepTo = index => {
|
|
130
|
+
const target = filtered[index];
|
|
131
|
+
if (target) setSelectedId(target.id);
|
|
132
|
+
};
|
|
133
|
+
|
|
134
|
+
// Set lookups so each row's badge checks are O(1).
|
|
135
|
+
const flagSets = {
|
|
136
|
+
scaleGaps: new Set(insights.scaleGaps),
|
|
137
|
+
scaleAnomalies: new Set(insights.scaleAnomalies),
|
|
138
|
+
duplicates: duplicateIds,
|
|
139
|
+
webpCandidates: new Set(insights.webpCandidates),
|
|
140
|
+
overDecode: new Set(insights.overDecode),
|
|
141
|
+
heavy: new Set([...insights.heavyGifs, ...insights.heavyFonts])
|
|
142
|
+
};
|
|
143
|
+
|
|
144
|
+
// The proportional size bar is relative to the largest asset in view.
|
|
145
|
+
let maxBytes = 0;
|
|
146
|
+
for (const r of filtered) {
|
|
147
|
+
const bytes = r.sizeBytes ?? estDecodedBytes(r);
|
|
148
|
+
if (bytes > maxBytes) maxBytes = bytes;
|
|
149
|
+
}
|
|
150
|
+
const getReport = () => selected ? formatAssetMarkdown(selected) : formatInventoryMarkdown(sorted, stats, insights, getScanStatus(), getDiff());
|
|
151
|
+
const headerContent = /*#__PURE__*/_jsx(AssetsHeader, {
|
|
152
|
+
stats: stats,
|
|
153
|
+
measuring: status.measuring,
|
|
154
|
+
discovering: status.graphFetchInFlight,
|
|
155
|
+
detailOpen: selected != null,
|
|
156
|
+
detailIndex: selectedIndex,
|
|
157
|
+
detailTotal: filtered.length,
|
|
158
|
+
onCloseDetail: () => setSelectedId(null),
|
|
159
|
+
onClear: clearRecords,
|
|
160
|
+
getReport: getReport,
|
|
161
|
+
onBack: onBack
|
|
162
|
+
});
|
|
163
|
+
const body = selected ? /*#__PURE__*/_jsxs(View, {
|
|
164
|
+
style: styles.detailContainer,
|
|
165
|
+
children: [/*#__PURE__*/_jsx(AssetDetail, {
|
|
166
|
+
record: selected,
|
|
167
|
+
insights: insights
|
|
168
|
+
}), selectedIndex >= 0 ? /*#__PURE__*/_jsx(EventStepperFooter, {
|
|
169
|
+
currentIndex: selectedIndex,
|
|
170
|
+
totalItems: filtered.length,
|
|
171
|
+
itemLabel: "Asset",
|
|
172
|
+
onPrevious: () => stepTo(selectedIndex - 1),
|
|
173
|
+
onNext: () => stepTo(selectedIndex + 1)
|
|
174
|
+
}) : null]
|
|
175
|
+
}) : /*#__PURE__*/_jsxs(View, {
|
|
176
|
+
style: styles.listContainer,
|
|
177
|
+
children: [/*#__PURE__*/_jsx(AssetsFilterBar, {
|
|
178
|
+
stats: stats,
|
|
179
|
+
duplicateCount: duplicateIds.size,
|
|
180
|
+
filter: filter,
|
|
181
|
+
onChange: next => {
|
|
182
|
+
setFilter(next);
|
|
183
|
+
if (next === "duplicates") setQuery("");
|
|
184
|
+
}
|
|
185
|
+
}), /*#__PURE__*/_jsx(AssetsListControls, {
|
|
186
|
+
query: query,
|
|
187
|
+
onQueryChange: setQuery,
|
|
188
|
+
sort: sort,
|
|
189
|
+
onSortChange: setSort
|
|
190
|
+
}), /*#__PURE__*/_jsx(ScanNotice, {
|
|
191
|
+
status: status,
|
|
192
|
+
total: stats.total,
|
|
193
|
+
onRetry: retry
|
|
194
|
+
}), remoteError && !status.graphFetchInFlight ? /*#__PURE__*/_jsxs(View, {
|
|
195
|
+
style: styles.notice,
|
|
196
|
+
children: [/*#__PURE__*/_jsx(Text, {
|
|
197
|
+
style: styles.noticeText,
|
|
198
|
+
children: "Couldn't request an asset scan from the device."
|
|
199
|
+
}), /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
200
|
+
accessibilityRole: "button",
|
|
201
|
+
onPress: retry,
|
|
202
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
203
|
+
style: styles.retryText,
|
|
204
|
+
children: "Retry"
|
|
205
|
+
})
|
|
206
|
+
})]
|
|
207
|
+
}) : null, filter === "unused" ? /*#__PURE__*/_jsx(View, {
|
|
208
|
+
style: styles.notice,
|
|
209
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
210
|
+
style: styles.noticeText,
|
|
211
|
+
children: "Not seen in React Native's asset registry this app run. Assets loaded through other paths may appear here; this does not prove they are unused."
|
|
212
|
+
})
|
|
213
|
+
}) : null, filter === "font" ? /*#__PURE__*/_jsx(FontFamilies, {
|
|
214
|
+
names: status.fontFamilies
|
|
215
|
+
}) : null, /*#__PURE__*/_jsx(FlatList, {
|
|
216
|
+
testID: ASSETS_TEST_IDS.list,
|
|
217
|
+
data: filtered,
|
|
218
|
+
keyExtractor: item => String(item.id),
|
|
219
|
+
contentContainerStyle: styles.listContent,
|
|
220
|
+
renderItem: ({
|
|
221
|
+
item
|
|
222
|
+
}) => /*#__PURE__*/_jsx(AssetRow, {
|
|
223
|
+
record: item,
|
|
224
|
+
flags: {
|
|
225
|
+
scaleGap: flagSets.scaleGaps.has(item.id),
|
|
226
|
+
scaleAnomaly: flagSets.scaleAnomalies.has(item.id),
|
|
227
|
+
duplicate: flagSets.duplicates.has(item.id),
|
|
228
|
+
webp: flagSets.webpCandidates.has(item.id),
|
|
229
|
+
oversize: flagSets.overDecode.has(item.id),
|
|
230
|
+
heavy: flagSets.heavy.has(item.id)
|
|
231
|
+
},
|
|
232
|
+
sizeFraction: maxBytes > 0 ? (item.sizeBytes ?? estDecodedBytes(item)) / maxBytes : 0
|
|
233
|
+
// Guarded: programmatic invocations (automation) can call this
|
|
234
|
+
// with an event object instead of an id.
|
|
235
|
+
,
|
|
236
|
+
onPress: id => setSelectedId(typeof id === "number" ? id : null)
|
|
237
|
+
}),
|
|
238
|
+
ListEmptyComponent: status.graphFetchInFlight ? null : /*#__PURE__*/_jsx(EmptyState, {
|
|
239
|
+
duplicates: filter === "duplicates"
|
|
240
|
+
})
|
|
241
|
+
})]
|
|
242
|
+
});
|
|
243
|
+
|
|
244
|
+
// The ONLY difference between phone and desktop is which shell the header
|
|
245
|
+
// and body go in (same pattern as ImagesModal).
|
|
246
|
+
if (inline) {
|
|
247
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
248
|
+
style: styles.inlineRoot,
|
|
249
|
+
children: [/*#__PURE__*/_jsx(View, {
|
|
250
|
+
style: styles.inlineHeader,
|
|
251
|
+
...windowDragProps,
|
|
252
|
+
children: headerContent
|
|
253
|
+
}), body]
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
return /*#__PURE__*/_jsx(JsModal, {
|
|
257
|
+
visible: visible,
|
|
258
|
+
onClose: onClose,
|
|
259
|
+
onMinimize: onMinimize,
|
|
260
|
+
persistenceKey: persistenceKey,
|
|
261
|
+
header: {
|
|
262
|
+
showToggleButton: true,
|
|
263
|
+
customContent: headerContent
|
|
264
|
+
},
|
|
265
|
+
enablePersistence: true,
|
|
266
|
+
initialMode: "bottomSheet",
|
|
267
|
+
disableScrollWrapper: true,
|
|
268
|
+
children: body
|
|
269
|
+
});
|
|
270
|
+
}
|
|
271
|
+
|
|
272
|
+
/**
|
|
273
|
+
* The same Assets tool rendered INLINE for hosts that place tools in a panel
|
|
274
|
+
* rather than a modal (the desktop dashboard). One implementation only.
|
|
275
|
+
*/
|
|
276
|
+
export function AssetsToolView(props = {}) {
|
|
277
|
+
return /*#__PURE__*/_jsx(AssetsModal, {
|
|
278
|
+
...props,
|
|
279
|
+
inline: true,
|
|
280
|
+
visible: true,
|
|
281
|
+
onClose: () => {}
|
|
282
|
+
});
|
|
283
|
+
}
|
|
284
|
+
const styles = StyleSheet.create({
|
|
285
|
+
inlineRoot: {
|
|
286
|
+
flex: 1,
|
|
287
|
+
minHeight: 0,
|
|
288
|
+
// Transparent so the desktop workbench's hoisted sky (one field spanning
|
|
289
|
+
// sidebar + panel) shows through — the shell paints its base beneath it.
|
|
290
|
+
backgroundColor: "transparent"
|
|
291
|
+
},
|
|
292
|
+
inlineHeader: {
|
|
293
|
+
paddingHorizontal: 12,
|
|
294
|
+
paddingVertical: 8,
|
|
295
|
+
borderBottomWidth: 1,
|
|
296
|
+
borderBottomColor: macOSColors.border.default,
|
|
297
|
+
// Clear, like Bench — the host's hoisted sky shows through the header.
|
|
298
|
+
backgroundColor: "transparent"
|
|
299
|
+
},
|
|
300
|
+
listContainer: {
|
|
301
|
+
flex: 1
|
|
302
|
+
},
|
|
303
|
+
listContent: {
|
|
304
|
+
paddingBottom: 16
|
|
305
|
+
},
|
|
306
|
+
detailContainer: {
|
|
307
|
+
flex: 1
|
|
308
|
+
},
|
|
309
|
+
notice: {
|
|
310
|
+
marginHorizontal: 10,
|
|
311
|
+
marginBottom: 8,
|
|
312
|
+
padding: 10,
|
|
313
|
+
borderRadius: 8,
|
|
314
|
+
borderWidth: 1,
|
|
315
|
+
borderColor: night.color.border,
|
|
316
|
+
backgroundColor: night.color.surface,
|
|
317
|
+
gap: 4
|
|
318
|
+
},
|
|
319
|
+
noticeText: {
|
|
320
|
+
color: night.color.textSecondary,
|
|
321
|
+
fontSize: 11
|
|
322
|
+
},
|
|
323
|
+
retryText: {
|
|
324
|
+
color: night.color.text,
|
|
325
|
+
fontSize: 12,
|
|
326
|
+
paddingVertical: 6
|
|
327
|
+
},
|
|
328
|
+
fontsBox: {
|
|
329
|
+
marginHorizontal: 10,
|
|
330
|
+
marginTop: 8,
|
|
331
|
+
padding: 10,
|
|
332
|
+
borderRadius: 8,
|
|
333
|
+
backgroundColor: night.color.surface,
|
|
334
|
+
gap: 6
|
|
335
|
+
},
|
|
336
|
+
fontsTitle: {
|
|
337
|
+
color: night.color.textTertiary,
|
|
338
|
+
fontSize: 9,
|
|
339
|
+
fontWeight: "700",
|
|
340
|
+
letterSpacing: 0.5
|
|
341
|
+
},
|
|
342
|
+
fontsWrap: {
|
|
343
|
+
flexDirection: "row",
|
|
344
|
+
flexWrap: "wrap",
|
|
345
|
+
gap: 6
|
|
346
|
+
},
|
|
347
|
+
fontChip: {
|
|
348
|
+
color: night.color.textSecondary,
|
|
349
|
+
fontSize: 10,
|
|
350
|
+
backgroundColor: night.color.bg,
|
|
351
|
+
borderRadius: 999,
|
|
352
|
+
paddingHorizontal: 8,
|
|
353
|
+
paddingVertical: 3,
|
|
354
|
+
overflow: "hidden"
|
|
355
|
+
},
|
|
356
|
+
empty: {
|
|
357
|
+
alignItems: "center",
|
|
358
|
+
padding: 32,
|
|
359
|
+
gap: 8
|
|
360
|
+
},
|
|
361
|
+
emptyTitle: {
|
|
362
|
+
color: night.color.text,
|
|
363
|
+
fontSize: 13,
|
|
364
|
+
fontWeight: "600"
|
|
365
|
+
},
|
|
366
|
+
emptyText: {
|
|
367
|
+
color: night.color.textSecondary,
|
|
368
|
+
fontSize: 11,
|
|
369
|
+
textAlign: "center",
|
|
370
|
+
lineHeight: 16
|
|
371
|
+
}
|
|
372
|
+
});
|
|
373
|
+
//# sourceMappingURL=AssetsModal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useEffect","useState","FlatList","StyleSheet","Text","TouchableOpacity","View","EventStepperFooter","JsModal","macOSColors","night","windowDragProps","ToolEmptyState","getScanStatus","installAssetCapture","rescan","formatAssetMarkdown","formatInventoryMarkdown","useAssetRecords","useAssetScanStatus","remoteAssetsDispatch","clearRecords","estDecodedBytes","getRecord","getDiff","loadBaseline","AssetDetail","AssetRow","AssetsFilterBar","AssetsHeader","AssetsListControls","ScanNotice","ASSETS_TEST_IDS","assetFontChipTestID","jsxs","_jsxs","jsx","_jsx","FontFamilies","names","families","Set","length","style","styles","fontsBox","testID","fonts","children","fontsTitle","fontsWrap","map","family","fontChip","EmptyState","duplicates","empty","otto","title","message","bySizeDesc","a","b","sizeBytes","COMPARATORS","size","name","localeCompare","type","AssetsModal","visible","onClose","onBack","onMinimize","persistenceKey","inline","records","stats","insights","status","remoteError","setRemoteError","graphFetchInFlight","lastScanAt","retry","remote","catch","selectedId","setSelectedId","filter","setFilter","query","setQuery","sort","setSort","selected","undefined","duplicateIds","flatMap","group","ids","sorted","trimmedQuery","trim","toLowerCase","filtered","r","loaded","has","id","kind","includes","selectedIndex","findIndex","stepTo","index","target","flagSets","scaleGaps","scaleAnomalies","webpCandidates","overDecode","heavy","heavyGifs","heavyFonts","maxBytes","bytes","getReport","headerContent","measuring","discovering","detailOpen","detailIndex","detailTotal","onCloseDetail","onClear","body","detailContainer","record","currentIndex","totalItems","itemLabel","onPrevious","onNext","listContainer","duplicateCount","onChange","next","onQueryChange","onSortChange","total","onRetry","notice","noticeText","accessibilityRole","onPress","retryText","fontFamilies","list","data","keyExtractor","item","String","contentContainerStyle","listContent","renderItem","flags","scaleGap","scaleAnomaly","duplicate","webp","oversize","sizeFraction","ListEmptyComponent","inlineRoot","inlineHeader","header","showToggleButton","customContent","enablePersistence","initialMode","disableScrollWrapper","AssetsToolView","props","create","flex","minHeight","backgroundColor","paddingHorizontal","paddingVertical","borderBottomWidth","borderBottomColor","border","default","paddingBottom","marginHorizontal","marginBottom","padding","borderRadius","borderWidth","borderColor","color","surface","gap","textSecondary","fontSize","text","marginTop","textTertiary","fontWeight","letterSpacing","flexDirection","flexWrap","bg","overflow","alignItems","emptyTitle","emptyText","textAlign","lineHeight"],"sourceRoot":"../../../src","sources":["components/AssetsModal.tsx"],"mappings":"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","ignoreList":[]}
|