@buoy-gg/assets 7.0.16
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +58 -0
- package/README.md +55 -0
- package/lib/commonjs/capture/expo.js +46 -0
- package/lib/commonjs/capture/expo.js.map +1 -0
- package/lib/commonjs/capture/install.js +78 -0
- package/lib/commonjs/capture/install.js.map +1 -0
- package/lib/commonjs/capture/measure.js +186 -0
- package/lib/commonjs/capture/measure.js.map +1 -0
- package/lib/commonjs/capture/metroGraph.js +148 -0
- package/lib/commonjs/capture/metroGraph.js.map +1 -0
- package/lib/commonjs/capture/registry.js +124 -0
- package/lib/commonjs/capture/registry.js.map +1 -0
- package/lib/commonjs/components/AssetDetail.js +205 -0
- package/lib/commonjs/components/AssetDetail.js.map +1 -0
- package/lib/commonjs/components/AssetRow.js +246 -0
- package/lib/commonjs/components/AssetRow.js.map +1 -0
- package/lib/commonjs/components/AssetsFilterBar.js +92 -0
- package/lib/commonjs/components/AssetsFilterBar.js.map +1 -0
- package/lib/commonjs/components/AssetsHeader.js +66 -0
- package/lib/commonjs/components/AssetsHeader.js.map +1 -0
- package/lib/commonjs/components/AssetsIcon.js +19 -0
- package/lib/commonjs/components/AssetsIcon.js.map +1 -0
- package/lib/commonjs/components/AssetsListControls.js +94 -0
- package/lib/commonjs/components/AssetsListControls.js.map +1 -0
- package/lib/commonjs/components/AssetsModal.js +338 -0
- package/lib/commonjs/components/AssetsModal.js.map +1 -0
- package/lib/commonjs/components/BaselineBar.js +110 -0
- package/lib/commonjs/components/BaselineBar.js.map +1 -0
- package/lib/commonjs/export.js +62 -0
- package/lib/commonjs/export.js.map +1 -0
- package/lib/commonjs/format.js +59 -0
- package/lib/commonjs/format.js.map +1 -0
- package/lib/commonjs/hooks/useAssetRecords.js +22 -0
- package/lib/commonjs/hooks/useAssetRecords.js.map +1 -0
- package/lib/commonjs/index.js +260 -0
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/package.json +1 -0
- package/lib/commonjs/preset.js +45 -0
- package/lib/commonjs/preset.js.map +1 -0
- package/lib/commonjs/remote.js +65 -0
- package/lib/commonjs/remote.js.map +1 -0
- package/lib/commonjs/state.js +51 -0
- package/lib/commonjs/state.js.map +1 -0
- package/lib/commonjs/store/assetStore.js +234 -0
- package/lib/commonjs/store/assetStore.js.map +1 -0
- package/lib/commonjs/store/baseline.js +165 -0
- package/lib/commonjs/store/baseline.js.map +1 -0
- package/lib/commonjs/store/insights.js +129 -0
- package/lib/commonjs/store/insights.js.map +1 -0
- package/lib/commonjs/sync/assetsSyncAdapter.js +157 -0
- package/lib/commonjs/sync/assetsSyncAdapter.js.map +1 -0
- package/lib/commonjs/types.js +2 -0
- package/lib/commonjs/types.js.map +1 -0
- package/lib/module/capture/expo.js +41 -0
- package/lib/module/capture/expo.js.map +1 -0
- package/lib/module/capture/install.js +72 -0
- package/lib/module/capture/install.js.map +1 -0
- package/lib/module/capture/measure.js +179 -0
- package/lib/module/capture/measure.js.map +1 -0
- package/lib/module/capture/metroGraph.js +141 -0
- package/lib/module/capture/metroGraph.js.map +1 -0
- package/lib/module/capture/registry.js +117 -0
- package/lib/module/capture/registry.js.map +1 -0
- package/lib/module/components/AssetDetail.js +201 -0
- package/lib/module/components/AssetDetail.js.map +1 -0
- package/lib/module/components/AssetRow.js +242 -0
- package/lib/module/components/AssetRow.js.map +1 -0
- package/lib/module/components/AssetsFilterBar.js +88 -0
- package/lib/module/components/AssetsFilterBar.js.map +1 -0
- package/lib/module/components/AssetsHeader.js +62 -0
- package/lib/module/components/AssetsHeader.js.map +1 -0
- package/lib/module/components/AssetsIcon.js +12 -0
- package/lib/module/components/AssetsIcon.js.map +1 -0
- package/lib/module/components/AssetsListControls.js +90 -0
- package/lib/module/components/AssetsListControls.js.map +1 -0
- package/lib/module/components/AssetsModal.js +333 -0
- package/lib/module/components/AssetsModal.js.map +1 -0
- package/lib/module/components/BaselineBar.js +106 -0
- package/lib/module/components/BaselineBar.js.map +1 -0
- package/lib/module/export.js +57 -0
- package/lib/module/export.js.map +1 -0
- package/lib/module/format.js +51 -0
- package/lib/module/format.js.map +1 -0
- package/lib/module/hooks/useAssetRecords.js +18 -0
- package/lib/module/hooks/useAssetRecords.js.map +1 -0
- package/lib/module/index.js +59 -0
- package/lib/module/index.js.map +1 -0
- package/lib/module/preset.js +40 -0
- package/lib/module/preset.js.map +1 -0
- package/lib/module/remote.js +58 -0
- package/lib/module/remote.js.map +1 -0
- package/lib/module/state.js +47 -0
- package/lib/module/state.js.map +1 -0
- package/lib/module/store/assetStore.js +219 -0
- package/lib/module/store/assetStore.js.map +1 -0
- package/lib/module/store/baseline.js +157 -0
- package/lib/module/store/baseline.js.map +1 -0
- package/lib/module/store/insights.js +125 -0
- package/lib/module/store/insights.js.map +1 -0
- package/lib/module/sync/assetsSyncAdapter.js +153 -0
- package/lib/module/sync/assetsSyncAdapter.js.map +1 -0
- package/lib/module/types.js +2 -0
- package/lib/module/types.js.map +1 -0
- package/lib/typescript/capture/expo.d.ts +18 -0
- package/lib/typescript/capture/expo.d.ts.map +1 -0
- package/lib/typescript/capture/install.d.ts +17 -0
- package/lib/typescript/capture/install.d.ts.map +1 -0
- package/lib/typescript/capture/measure.d.ts +38 -0
- package/lib/typescript/capture/measure.d.ts.map +1 -0
- package/lib/typescript/capture/metroGraph.d.ts +33 -0
- package/lib/typescript/capture/metroGraph.d.ts.map +1 -0
- package/lib/typescript/capture/registry.d.ts +45 -0
- package/lib/typescript/capture/registry.d.ts.map +1 -0
- package/lib/typescript/components/AssetDetail.d.ts +17 -0
- package/lib/typescript/components/AssetDetail.d.ts.map +1 -0
- package/lib/typescript/components/AssetRow.d.ts +32 -0
- package/lib/typescript/components/AssetRow.d.ts.map +1 -0
- package/lib/typescript/components/AssetsFilterBar.d.ts +16 -0
- package/lib/typescript/components/AssetsFilterBar.d.ts.map +1 -0
- package/lib/typescript/components/AssetsHeader.d.ts +22 -0
- package/lib/typescript/components/AssetsHeader.d.ts.map +1 -0
- package/lib/typescript/components/AssetsIcon.d.ts +9 -0
- package/lib/typescript/components/AssetsIcon.d.ts.map +1 -0
- package/lib/typescript/components/AssetsListControls.d.ts +18 -0
- package/lib/typescript/components/AssetsListControls.d.ts.map +1 -0
- package/lib/typescript/components/AssetsModal.d.ts +24 -0
- package/lib/typescript/components/AssetsModal.d.ts.map +1 -0
- package/lib/typescript/components/BaselineBar.d.ts +13 -0
- package/lib/typescript/components/BaselineBar.d.ts.map +1 -0
- package/lib/typescript/export.d.ts +8 -0
- package/lib/typescript/export.d.ts.map +1 -0
- package/lib/typescript/format.d.ts +13 -0
- package/lib/typescript/format.d.ts.map +1 -0
- package/lib/typescript/hooks/useAssetRecords.d.ts +11 -0
- package/lib/typescript/hooks/useAssetRecords.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +26 -0
- package/lib/typescript/index.d.ts.map +1 -0
- package/lib/typescript/preset.d.ts +38 -0
- package/lib/typescript/preset.d.ts.map +1 -0
- package/lib/typescript/remote.d.ts +17 -0
- package/lib/typescript/remote.d.ts.map +1 -0
- package/lib/typescript/state.d.ts +41 -0
- package/lib/typescript/state.d.ts.map +1 -0
- package/lib/typescript/store/assetStore.d.ts +51 -0
- package/lib/typescript/store/assetStore.d.ts.map +1 -0
- package/lib/typescript/store/baseline.d.ts +22 -0
- package/lib/typescript/store/baseline.d.ts.map +1 -0
- package/lib/typescript/store/insights.d.ts +7 -0
- package/lib/typescript/store/insights.d.ts.map +1 -0
- package/lib/typescript/sync/assetsSyncAdapter.d.ts +83 -0
- package/lib/typescript/sync/assetsSyncAdapter.d.ts.map +1 -0
- package/lib/typescript/types.d.ts +162 -0
- package/lib/typescript/types.d.ts.map +1 -0
- package/package.json +77 -0
- package/src/capture/expo.ts +45 -0
- package/src/capture/install.ts +73 -0
- package/src/capture/measure.ts +167 -0
- package/src/capture/metroGraph.ts +146 -0
- package/src/capture/registry.ts +134 -0
- package/src/components/AssetDetail.tsx +207 -0
- package/src/components/AssetRow.tsx +243 -0
- package/src/components/AssetsFilterBar.tsx +99 -0
- package/src/components/AssetsHeader.tsx +75 -0
- package/src/components/AssetsIcon.tsx +9 -0
- package/src/components/AssetsListControls.tsx +101 -0
- package/src/components/AssetsModal.tsx +368 -0
- package/src/components/BaselineBar.tsx +98 -0
- package/src/export.ts +108 -0
- package/src/format.ts +53 -0
- package/src/hooks/useAssetRecords.ts +26 -0
- package/src/index.tsx +87 -0
- package/src/preset.tsx +35 -0
- package/src/remote.ts +65 -0
- package/src/state.ts +84 -0
- package/src/store/assetStore.ts +209 -0
- package/src/store/baseline.ts +152 -0
- package/src/store/insights.ts +145 -0
- package/src/sync/assetsSyncAdapter.ts +151 -0
- package/src/types.ts +160 -0
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.AssetsFilterBar = AssetsFilterBar;
|
|
7
|
+
var _reactNative = require("react-native");
|
|
8
|
+
var _sharedUi = require("@buoy-gg/shared-ui");
|
|
9
|
+
var _format = require("../format");
|
|
10
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
11
|
+
/**
|
|
12
|
+
* AssetsFilterBar — kind filter pills with counts, styled like the network
|
|
13
|
+
* tool's bordered pills: outlined, kind-accent-colored when active. Wrapping
|
|
14
|
+
* row, not a horizontal ScrollView (same height-measurement pitfall the
|
|
15
|
+
* images tool documents).
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
function AssetsFilterBar({
|
|
19
|
+
stats,
|
|
20
|
+
filter,
|
|
21
|
+
onChange
|
|
22
|
+
}) {
|
|
23
|
+
const chips = [{
|
|
24
|
+
key: "all",
|
|
25
|
+
label: `ALL ${stats.total}`,
|
|
26
|
+
accent: _sharedUi.macOSColors.text.secondary
|
|
27
|
+
}];
|
|
28
|
+
for (const kind of Object.keys(stats.byKind)) {
|
|
29
|
+
const entry = stats.byKind[kind];
|
|
30
|
+
if (entry.count > 0) {
|
|
31
|
+
chips.push({
|
|
32
|
+
key: kind,
|
|
33
|
+
label: `${_format.KIND_LABELS[kind]} ${entry.count}`,
|
|
34
|
+
accent: _format.KIND_COLORS[kind]
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
if (stats.neverLoaded > 0) {
|
|
39
|
+
// Amber, not semantic.warning — the bright yellow reads as an alarm.
|
|
40
|
+
chips.push({
|
|
41
|
+
key: "unused",
|
|
42
|
+
label: `UNUSED ${stats.neverLoaded}`,
|
|
43
|
+
accent: "#FF9F1C"
|
|
44
|
+
});
|
|
45
|
+
}
|
|
46
|
+
if (chips.length <= 1) return null;
|
|
47
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
48
|
+
style: styles.bar,
|
|
49
|
+
children: chips.map(chip => {
|
|
50
|
+
const active = chip.key === filter;
|
|
51
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
|
|
52
|
+
style: [styles.chip, active && {
|
|
53
|
+
borderColor: chip.accent,
|
|
54
|
+
backgroundColor: `${chip.accent}1A`
|
|
55
|
+
}]
|
|
56
|
+
// Tapping the active chip again untoggles back to ALL.
|
|
57
|
+
,
|
|
58
|
+
onPress: () => onChange(active ? "all" : chip.key),
|
|
59
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
60
|
+
style: [styles.chipText, {
|
|
61
|
+
color: active ? chip.accent : _sharedUi.macOSColors.text.secondary
|
|
62
|
+
}],
|
|
63
|
+
children: chip.label
|
|
64
|
+
})
|
|
65
|
+
}, chip.key);
|
|
66
|
+
})
|
|
67
|
+
});
|
|
68
|
+
}
|
|
69
|
+
const styles = _reactNative.StyleSheet.create({
|
|
70
|
+
bar: {
|
|
71
|
+
flexDirection: "row",
|
|
72
|
+
flexWrap: "wrap",
|
|
73
|
+
gap: 6,
|
|
74
|
+
paddingHorizontal: 10,
|
|
75
|
+
paddingVertical: 8
|
|
76
|
+
},
|
|
77
|
+
chip: {
|
|
78
|
+
borderWidth: 1,
|
|
79
|
+
borderColor: _sharedUi.macOSColors.border.default,
|
|
80
|
+
backgroundColor: _sharedUi.macOSColors.background.card,
|
|
81
|
+
borderRadius: 999,
|
|
82
|
+
paddingHorizontal: 10,
|
|
83
|
+
paddingVertical: 5
|
|
84
|
+
},
|
|
85
|
+
chipText: {
|
|
86
|
+
fontSize: 10,
|
|
87
|
+
fontWeight: "700",
|
|
88
|
+
letterSpacing: 0.4,
|
|
89
|
+
lineHeight: 13
|
|
90
|
+
}
|
|
91
|
+
});
|
|
92
|
+
//# sourceMappingURL=AssetsFilterBar.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_sharedUi","_format","_jsxRuntime","AssetsFilterBar","stats","filter","onChange","chips","key","label","total","accent","macOSColors","text","secondary","kind","Object","keys","byKind","entry","count","push","KIND_LABELS","KIND_COLORS","neverLoaded","length","jsx","View","style","styles","bar","children","map","chip","active","TouchableOpacity","borderColor","backgroundColor","onPress","Text","chipText","color","StyleSheet","create","flexDirection","flexWrap","gap","paddingHorizontal","paddingVertical","borderWidth","border","default","background","card","borderRadius","fontSize","fontWeight","letterSpacing","lineHeight"],"sourceRoot":"../../../src","sources":["components/AssetsFilterBar.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.AssetsHeader = AssetsHeader;
|
|
7
|
+
var _sharedUi = require("@buoy-gg/shared-ui");
|
|
8
|
+
var _format = require("../format");
|
|
9
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
10
|
+
/**
|
|
11
|
+
* AssetsHeader — shared ModalHeader wiring, matching the Images/Console
|
|
12
|
+
* header pattern. List mode shows inventory totals plus the shared
|
|
13
|
+
* ToolbarCopyButton (full markdown report); detail mode shows back
|
|
14
|
+
* navigation and the single-asset report.
|
|
15
|
+
*/
|
|
16
|
+
|
|
17
|
+
function AssetsHeader({
|
|
18
|
+
stats,
|
|
19
|
+
measuring,
|
|
20
|
+
detailOpen,
|
|
21
|
+
detailIndex = -1,
|
|
22
|
+
detailTotal = 0,
|
|
23
|
+
onCloseDetail,
|
|
24
|
+
onClear,
|
|
25
|
+
getReport,
|
|
26
|
+
onBack
|
|
27
|
+
}) {
|
|
28
|
+
if (detailOpen) {
|
|
29
|
+
const counter = detailIndex >= 0 && detailTotal > 0 ? `${detailIndex + 1} of ${detailTotal}` : undefined;
|
|
30
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_sharedUi.ModalHeader, {
|
|
31
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ModalHeader.Navigation, {
|
|
32
|
+
onBack: onCloseDetail
|
|
33
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ModalHeader.Content, {
|
|
34
|
+
title: "Asset detail",
|
|
35
|
+
subtitle: counter
|
|
36
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ModalHeader.Actions, {
|
|
37
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ToolbarCopyButton, {
|
|
38
|
+
value: getReport
|
|
39
|
+
})
|
|
40
|
+
})]
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
const subtitleParts = [`${stats.total} assets`];
|
|
44
|
+
// A mid-measure byte total reads as nonsense ("653 B+") — wait it out.
|
|
45
|
+
if (stats.totalBytes > 0 && !measuring) {
|
|
46
|
+
const partial = stats.measuredCount < stats.total ? "+" : "";
|
|
47
|
+
subtitleParts.push(`${(0, _format.formatBytes)(stats.totalBytes)}${partial}`);
|
|
48
|
+
}
|
|
49
|
+
if (stats.neverLoaded > 0) subtitleParts.push(`${stats.neverLoaded} never loaded`);
|
|
50
|
+
if (stats.fontFamilies > 0) subtitleParts.push(`${stats.fontFamilies} fonts`);
|
|
51
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_sharedUi.ModalHeader, {
|
|
52
|
+
children: [onBack ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ModalHeader.Navigation, {
|
|
53
|
+
onBack: onBack
|
|
54
|
+
}) : null, /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ModalHeader.Content, {
|
|
55
|
+
title: "Assets",
|
|
56
|
+
subtitle: subtitleParts.join(" · ")
|
|
57
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_sharedUi.ModalHeader.Actions, {
|
|
58
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ToolbarCopyButton, {
|
|
59
|
+
value: getReport
|
|
60
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ToolbarClearButton, {
|
|
61
|
+
onPress: onClear
|
|
62
|
+
})]
|
|
63
|
+
})]
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
//# sourceMappingURL=AssetsHeader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_sharedUi","require","_format","_jsxRuntime","AssetsHeader","stats","measuring","detailOpen","detailIndex","detailTotal","onCloseDetail","onClear","getReport","onBack","counter","undefined","jsxs","ModalHeader","children","jsx","Navigation","Content","title","subtitle","Actions","ToolbarCopyButton","value","subtitleParts","total","totalBytes","partial","measuredCount","push","formatBytes","neverLoaded","fontFamilies","join","ToolbarClearButton","onPress"],"sourceRoot":"../../../src","sources":["components/AssetsHeader.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "ASSETS_ICON_COLOR", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _sharedUi.ASSETS_ICON_COLOR;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
Object.defineProperty(exports, "AssetsIcon", {
|
|
13
|
+
enumerable: true,
|
|
14
|
+
get: function () {
|
|
15
|
+
return _sharedUi.AssetsIcon;
|
|
16
|
+
}
|
|
17
|
+
});
|
|
18
|
+
var _sharedUi = require("@buoy-gg/shared-ui");
|
|
19
|
+
//# sourceMappingURL=AssetsIcon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_sharedUi","require"],"sourceRoot":"../../../src","sources":["components/AssetsIcon.tsx"],"mappings":";;;;;;;;;;;;;;;;;AAQA,IAAAA,SAAA,GAAAC,OAAA","ignoreList":[]}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.AssetsListControls = AssetsListControls;
|
|
7
|
+
var _reactNative = require("react-native");
|
|
8
|
+
var _sharedUi = require("@buoy-gg/shared-ui");
|
|
9
|
+
var _baseline = require("../store/baseline");
|
|
10
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
11
|
+
/**
|
|
12
|
+
* AssetsListControls — one compact row: name search, sort cycle (SIZE →
|
|
13
|
+
* NAME → TYPE), and — when no baseline exists yet — the BASE button that
|
|
14
|
+
* saves one. Once a baseline exists the BaselineBar takes over the diff UI,
|
|
15
|
+
* so this row never wastes space on a hint sentence.
|
|
16
|
+
*/
|
|
17
|
+
|
|
18
|
+
const NEXT_SORT = {
|
|
19
|
+
size: "name",
|
|
20
|
+
name: "type",
|
|
21
|
+
type: "size"
|
|
22
|
+
};
|
|
23
|
+
function AssetsListControls({
|
|
24
|
+
query,
|
|
25
|
+
onQueryChange,
|
|
26
|
+
sort,
|
|
27
|
+
onSortChange,
|
|
28
|
+
showBaselineButton
|
|
29
|
+
}) {
|
|
30
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
31
|
+
style: styles.row,
|
|
32
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TextInput, {
|
|
33
|
+
style: styles.input,
|
|
34
|
+
value: query,
|
|
35
|
+
onChangeText: onQueryChange,
|
|
36
|
+
placeholder: "Search assets\u2026",
|
|
37
|
+
placeholderTextColor: _sharedUi.macOSColors.text.muted,
|
|
38
|
+
autoCapitalize: "none",
|
|
39
|
+
autoCorrect: false,
|
|
40
|
+
testID: "buoy-assets-search"
|
|
41
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
|
|
42
|
+
style: styles.button,
|
|
43
|
+
onPress: () => onSortChange(NEXT_SORT[sort]),
|
|
44
|
+
testID: "buoy-assets-sort",
|
|
45
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
|
|
46
|
+
style: styles.buttonText,
|
|
47
|
+
children: ["\u2193 ", sort.toUpperCase()]
|
|
48
|
+
})
|
|
49
|
+
}), showBaselineButton ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
|
|
50
|
+
style: styles.button,
|
|
51
|
+
onPress: () => void (0, _baseline.saveBaseline)(),
|
|
52
|
+
testID: "buoy-assets-save-baseline",
|
|
53
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
54
|
+
style: styles.buttonText,
|
|
55
|
+
children: "BASE"
|
|
56
|
+
})
|
|
57
|
+
}) : null]
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
const styles = _reactNative.StyleSheet.create({
|
|
61
|
+
row: {
|
|
62
|
+
flexDirection: "row",
|
|
63
|
+
alignItems: "center",
|
|
64
|
+
gap: 8,
|
|
65
|
+
paddingHorizontal: 10,
|
|
66
|
+
paddingBottom: 8
|
|
67
|
+
},
|
|
68
|
+
input: {
|
|
69
|
+
flex: 1,
|
|
70
|
+
backgroundColor: _sharedUi.macOSColors.background.input,
|
|
71
|
+
borderWidth: 1,
|
|
72
|
+
borderColor: _sharedUi.macOSColors.border.default,
|
|
73
|
+
borderRadius: 8,
|
|
74
|
+
paddingHorizontal: 10,
|
|
75
|
+
paddingVertical: 6,
|
|
76
|
+
color: _sharedUi.macOSColors.text.primary,
|
|
77
|
+
fontSize: 12
|
|
78
|
+
},
|
|
79
|
+
button: {
|
|
80
|
+
backgroundColor: _sharedUi.macOSColors.background.card,
|
|
81
|
+
borderWidth: 1,
|
|
82
|
+
borderColor: _sharedUi.macOSColors.border.default,
|
|
83
|
+
borderRadius: 8,
|
|
84
|
+
paddingHorizontal: 10,
|
|
85
|
+
paddingVertical: 7
|
|
86
|
+
},
|
|
87
|
+
buttonText: {
|
|
88
|
+
color: _sharedUi.macOSColors.text.secondary,
|
|
89
|
+
fontSize: 10,
|
|
90
|
+
fontWeight: "700",
|
|
91
|
+
letterSpacing: 0.5
|
|
92
|
+
}
|
|
93
|
+
});
|
|
94
|
+
//# sourceMappingURL=AssetsListControls.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_reactNative","require","_sharedUi","_baseline","_jsxRuntime","NEXT_SORT","size","name","type","AssetsListControls","query","onQueryChange","sort","onSortChange","showBaselineButton","jsxs","View","style","styles","row","children","jsx","TextInput","input","value","onChangeText","placeholder","placeholderTextColor","macOSColors","text","muted","autoCapitalize","autoCorrect","testID","TouchableOpacity","button","onPress","Text","buttonText","toUpperCase","saveBaseline","StyleSheet","create","flexDirection","alignItems","gap","paddingHorizontal","paddingBottom","flex","backgroundColor","background","borderWidth","borderColor","border","default","borderRadius","paddingVertical","color","primary","fontSize","card","secondary","fontWeight","letterSpacing"],"sourceRoot":"../../../src","sources":["components/AssetsListControls.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,338 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.AssetsModal = AssetsModal;
|
|
7
|
+
exports.AssetsToolView = AssetsToolView;
|
|
8
|
+
var _react = require("react");
|
|
9
|
+
var _reactNative = require("react-native");
|
|
10
|
+
var _sharedUi = require("@buoy-gg/shared-ui");
|
|
11
|
+
var _install = require("../capture/install");
|
|
12
|
+
var _export = require("../export");
|
|
13
|
+
var _useAssetRecords = require("../hooks/useAssetRecords");
|
|
14
|
+
var _remote = require("../remote");
|
|
15
|
+
var _assetStore = require("../store/assetStore");
|
|
16
|
+
var _baseline = require("../store/baseline");
|
|
17
|
+
var _AssetDetail = require("./AssetDetail");
|
|
18
|
+
var _AssetRow = require("./AssetRow");
|
|
19
|
+
var _AssetsFilterBar = require("./AssetsFilterBar");
|
|
20
|
+
var _AssetsHeader = require("./AssetsHeader");
|
|
21
|
+
var _AssetsListControls = require("./AssetsListControls");
|
|
22
|
+
var _BaselineBar = require("./BaselineBar");
|
|
23
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
24
|
+
/**
|
|
25
|
+
* AssetsModal — bottom-sheet wrapper rendered by FloatingDevTools when the
|
|
26
|
+
* Assets tool is opened. Inventory list (largest first) → tap for detail.
|
|
27
|
+
* Opening triggers a full rescan (registry walk + Metro graph + size
|
|
28
|
+
* measurement); merely installing the package never hits the network.
|
|
29
|
+
*/
|
|
30
|
+
|
|
31
|
+
function ScanNotice() {
|
|
32
|
+
const status = (0, _install.getScanStatus)();
|
|
33
|
+
const notices = [];
|
|
34
|
+
if (!status.registryAvailable) {
|
|
35
|
+
notices.push("Asset registry unavailable — this environment doesn't expose @react-native/assets-registry.");
|
|
36
|
+
} else if (!status.graphSupported && status.graphError) {
|
|
37
|
+
notices.push("No Metro dev server — showing runtime-registered assets only. The full bundle inventory and byte sizes need a dev build.");
|
|
38
|
+
}
|
|
39
|
+
if (status.measuring) notices.push("Measuring sizes from the dev server…");
|
|
40
|
+
if (notices.length === 0) return null;
|
|
41
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
42
|
+
style: styles.notice,
|
|
43
|
+
children: notices.map(n => /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
44
|
+
style: styles.noticeText,
|
|
45
|
+
children: n
|
|
46
|
+
}, n))
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
function FontFamilies() {
|
|
50
|
+
const families = (0, _install.getScanStatus)().fontFamilies;
|
|
51
|
+
if (!families.length) return null;
|
|
52
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
53
|
+
style: styles.fontsBox,
|
|
54
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
|
|
55
|
+
style: styles.fontsTitle,
|
|
56
|
+
children: ["LOADED FONT FAMILIES (", families.length, ")"]
|
|
57
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
58
|
+
style: styles.fontsWrap,
|
|
59
|
+
children: families.map(family => /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
60
|
+
style: styles.fontChip,
|
|
61
|
+
children: family
|
|
62
|
+
}, family))
|
|
63
|
+
})]
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
function EmptyState() {
|
|
67
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
68
|
+
style: styles.empty,
|
|
69
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
70
|
+
style: styles.emptyTitle,
|
|
71
|
+
children: "No assets found yet"
|
|
72
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
73
|
+
style: styles.emptyText,
|
|
74
|
+
children: "Every bundled asset \u2014 images, fonts, video, audio \u2014 appears here with sizes, scale coverage, and never-loaded detection. Try Rescan after navigating around the app."
|
|
75
|
+
})]
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
/** Largest first — measured bytes, falling back to decoded estimate. */
|
|
80
|
+
function bySizeDesc(a, b) {
|
|
81
|
+
return (b.sizeBytes ?? (0, _assetStore.estDecodedBytes)(b)) - (a.sizeBytes ?? (0, _assetStore.estDecodedBytes)(a));
|
|
82
|
+
}
|
|
83
|
+
const COMPARATORS = {
|
|
84
|
+
size: bySizeDesc,
|
|
85
|
+
name: (a, b) => a.name.localeCompare(b.name) || a.type.localeCompare(b.type),
|
|
86
|
+
type: (a, b) => a.type.localeCompare(b.type) || bySizeDesc(a, b)
|
|
87
|
+
};
|
|
88
|
+
function AssetsModal({
|
|
89
|
+
visible,
|
|
90
|
+
onClose,
|
|
91
|
+
onBack,
|
|
92
|
+
onMinimize,
|
|
93
|
+
persistenceKey,
|
|
94
|
+
inline = false
|
|
95
|
+
}) {
|
|
96
|
+
// Safety net: the index import normally installed this already.
|
|
97
|
+
(0, _install.installAssetCapture)();
|
|
98
|
+
const {
|
|
99
|
+
records,
|
|
100
|
+
stats,
|
|
101
|
+
insights
|
|
102
|
+
} = (0, _useAssetRecords.useAssetRecords)();
|
|
103
|
+
const [selectedId, setSelectedId] = (0, _react.useState)(null);
|
|
104
|
+
const [filter, setFilter] = (0, _react.useState)("all");
|
|
105
|
+
const [query, setQuery] = (0, _react.useState)("");
|
|
106
|
+
const [sort, setSort] = (0, _react.useState)("size");
|
|
107
|
+
const selected = selectedId != null ? (0, _assetStore.getRecord)(selectedId) : undefined;
|
|
108
|
+
|
|
109
|
+
// Full scan on open — locally on device, forwarded on dashboard mirrors.
|
|
110
|
+
// The baseline load is async and re-renders through the store emit.
|
|
111
|
+
(0, _react.useEffect)(() => {
|
|
112
|
+
if (!visible) return;
|
|
113
|
+
void (0, _baseline.loadBaseline)();
|
|
114
|
+
const remote = (0, _remote.remoteAssetsDispatch)();
|
|
115
|
+
if (remote) {
|
|
116
|
+
remote("rescan").catch(() => {});
|
|
117
|
+
} else {
|
|
118
|
+
void (0, _install.rescan)();
|
|
119
|
+
}
|
|
120
|
+
}, [visible]);
|
|
121
|
+
const sorted = [...records].sort(COMPARATORS[sort]);
|
|
122
|
+
const trimmedQuery = query.trim().toLowerCase();
|
|
123
|
+
const filtered = sorted.filter(r => {
|
|
124
|
+
if (filter === "unused" && r.loaded) return false;
|
|
125
|
+
if (filter !== "all" && filter !== "unused" && r.kind !== filter) return false;
|
|
126
|
+
if (trimmedQuery && !`${r.name}.${r.type}`.toLowerCase().includes(trimmedQuery)) {
|
|
127
|
+
return false;
|
|
128
|
+
}
|
|
129
|
+
return true;
|
|
130
|
+
});
|
|
131
|
+
const selectedIndex = selected ? filtered.findIndex(r => r.id === selected.id) : -1;
|
|
132
|
+
const stepTo = index => {
|
|
133
|
+
const target = filtered[index];
|
|
134
|
+
if (target) setSelectedId(target.id);
|
|
135
|
+
};
|
|
136
|
+
|
|
137
|
+
// Set lookups so each row's badge checks are O(1).
|
|
138
|
+
const flagSets = {
|
|
139
|
+
scaleGaps: new Set(insights.scaleGaps),
|
|
140
|
+
scaleAnomalies: new Set(insights.scaleAnomalies),
|
|
141
|
+
duplicates: new Set(insights.duplicates.flatMap(d => d.ids)),
|
|
142
|
+
webpCandidates: new Set(insights.webpCandidates),
|
|
143
|
+
overDecode: new Set(insights.overDecode),
|
|
144
|
+
heavy: new Set([...insights.heavyGifs, ...insights.heavyFonts])
|
|
145
|
+
};
|
|
146
|
+
const diff = (0, _baseline.getDiff)();
|
|
147
|
+
|
|
148
|
+
// The proportional size bar is relative to the largest asset in view.
|
|
149
|
+
let maxBytes = 0;
|
|
150
|
+
for (const r of filtered) {
|
|
151
|
+
const bytes = r.sizeBytes ?? (0, _assetStore.estDecodedBytes)(r);
|
|
152
|
+
if (bytes > maxBytes) maxBytes = bytes;
|
|
153
|
+
}
|
|
154
|
+
const getReport = () => selected ? (0, _export.formatAssetMarkdown)(selected) : (0, _export.formatInventoryMarkdown)(sorted, stats, insights, (0, _install.getScanStatus)(), (0, _baseline.getDiff)());
|
|
155
|
+
const headerContent = /*#__PURE__*/(0, _jsxRuntime.jsx)(_AssetsHeader.AssetsHeader, {
|
|
156
|
+
stats: stats,
|
|
157
|
+
measuring: (0, _install.getScanStatus)().measuring,
|
|
158
|
+
detailOpen: selected != null,
|
|
159
|
+
detailIndex: selectedIndex,
|
|
160
|
+
detailTotal: filtered.length,
|
|
161
|
+
onCloseDetail: () => setSelectedId(null),
|
|
162
|
+
onClear: _assetStore.clearRecords,
|
|
163
|
+
getReport: getReport,
|
|
164
|
+
onBack: onBack
|
|
165
|
+
});
|
|
166
|
+
const body = selected ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
167
|
+
style: styles.detailContainer,
|
|
168
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_AssetDetail.AssetDetail, {
|
|
169
|
+
record: selected,
|
|
170
|
+
insights: insights
|
|
171
|
+
}), selectedIndex >= 0 ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.EventStepperFooter, {
|
|
172
|
+
currentIndex: selectedIndex,
|
|
173
|
+
totalItems: filtered.length,
|
|
174
|
+
itemLabel: "Asset",
|
|
175
|
+
onPrevious: () => stepTo(selectedIndex - 1),
|
|
176
|
+
onNext: () => stepTo(selectedIndex + 1)
|
|
177
|
+
}) : null]
|
|
178
|
+
}) : /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
179
|
+
style: styles.listContainer,
|
|
180
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_AssetsFilterBar.AssetsFilterBar, {
|
|
181
|
+
stats: stats,
|
|
182
|
+
filter: filter,
|
|
183
|
+
onChange: setFilter
|
|
184
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_AssetsListControls.AssetsListControls, {
|
|
185
|
+
query: query,
|
|
186
|
+
onQueryChange: setQuery,
|
|
187
|
+
sort: sort,
|
|
188
|
+
onSortChange: setSort,
|
|
189
|
+
showBaselineButton: diff == null
|
|
190
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_BaselineBar.BaselineBar, {
|
|
191
|
+
diff: diff
|
|
192
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(ScanNotice, {}), filter === "font" ? /*#__PURE__*/(0, _jsxRuntime.jsx)(FontFamilies, {}) : null, /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.FlatList, {
|
|
193
|
+
data: filtered,
|
|
194
|
+
keyExtractor: item => String(item.id),
|
|
195
|
+
contentContainerStyle: styles.listContent,
|
|
196
|
+
renderItem: ({
|
|
197
|
+
item
|
|
198
|
+
}) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_AssetRow.AssetRow, {
|
|
199
|
+
record: item,
|
|
200
|
+
flags: {
|
|
201
|
+
scaleGap: flagSets.scaleGaps.has(item.id),
|
|
202
|
+
scaleAnomaly: flagSets.scaleAnomalies.has(item.id),
|
|
203
|
+
duplicate: flagSets.duplicates.has(item.id),
|
|
204
|
+
webp: flagSets.webpCandidates.has(item.id),
|
|
205
|
+
oversize: flagSets.overDecode.has(item.id),
|
|
206
|
+
heavy: flagSets.heavy.has(item.id)
|
|
207
|
+
},
|
|
208
|
+
sizeFraction: maxBytes > 0 ? (item.sizeBytes ?? (0, _assetStore.estDecodedBytes)(item)) / maxBytes : 0
|
|
209
|
+
// Guarded: programmatic invocations (automation) can call this
|
|
210
|
+
// with an event object instead of an id.
|
|
211
|
+
,
|
|
212
|
+
onPress: id => setSelectedId(typeof id === "number" ? id : null)
|
|
213
|
+
}),
|
|
214
|
+
ListEmptyComponent: /*#__PURE__*/(0, _jsxRuntime.jsx)(EmptyState, {})
|
|
215
|
+
})]
|
|
216
|
+
});
|
|
217
|
+
|
|
218
|
+
// The ONLY difference between phone and desktop is which shell the header
|
|
219
|
+
// and body go in (same pattern as ImagesModal).
|
|
220
|
+
if (inline) {
|
|
221
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
222
|
+
style: styles.inlineRoot,
|
|
223
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
224
|
+
style: styles.inlineHeader,
|
|
225
|
+
children: headerContent
|
|
226
|
+
}), body]
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.JsModal, {
|
|
230
|
+
visible: visible,
|
|
231
|
+
onClose: onClose,
|
|
232
|
+
onMinimize: onMinimize,
|
|
233
|
+
persistenceKey: persistenceKey,
|
|
234
|
+
header: {
|
|
235
|
+
showToggleButton: true,
|
|
236
|
+
customContent: headerContent
|
|
237
|
+
},
|
|
238
|
+
enablePersistence: true,
|
|
239
|
+
initialMode: "bottomSheet",
|
|
240
|
+
disableScrollWrapper: true,
|
|
241
|
+
children: body
|
|
242
|
+
});
|
|
243
|
+
}
|
|
244
|
+
|
|
245
|
+
/**
|
|
246
|
+
* The same Assets tool rendered INLINE for hosts that place tools in a panel
|
|
247
|
+
* rather than a modal (the desktop dashboard). One implementation only.
|
|
248
|
+
*/
|
|
249
|
+
function AssetsToolView(props = {}) {
|
|
250
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(AssetsModal, {
|
|
251
|
+
...props,
|
|
252
|
+
inline: true,
|
|
253
|
+
visible: true,
|
|
254
|
+
onClose: () => {}
|
|
255
|
+
});
|
|
256
|
+
}
|
|
257
|
+
const styles = _reactNative.StyleSheet.create({
|
|
258
|
+
inlineRoot: {
|
|
259
|
+
flex: 1,
|
|
260
|
+
minHeight: 0,
|
|
261
|
+
backgroundColor: _sharedUi.macOSColors.background.base
|
|
262
|
+
},
|
|
263
|
+
inlineHeader: {
|
|
264
|
+
paddingHorizontal: 12,
|
|
265
|
+
paddingVertical: 8,
|
|
266
|
+
borderBottomWidth: 1,
|
|
267
|
+
borderBottomColor: _sharedUi.macOSColors.border.default,
|
|
268
|
+
backgroundColor: _sharedUi.macOSColors.background.card
|
|
269
|
+
},
|
|
270
|
+
listContainer: {
|
|
271
|
+
flex: 1
|
|
272
|
+
},
|
|
273
|
+
listContent: {
|
|
274
|
+
paddingBottom: 16
|
|
275
|
+
},
|
|
276
|
+
detailContainer: {
|
|
277
|
+
flex: 1
|
|
278
|
+
},
|
|
279
|
+
notice: {
|
|
280
|
+
marginHorizontal: 10,
|
|
281
|
+
marginBottom: 8,
|
|
282
|
+
padding: 10,
|
|
283
|
+
borderRadius: 8,
|
|
284
|
+
borderWidth: 1,
|
|
285
|
+
borderColor: _sharedUi.macOSColors.border.default,
|
|
286
|
+
backgroundColor: _sharedUi.macOSColors.background.card,
|
|
287
|
+
gap: 4
|
|
288
|
+
},
|
|
289
|
+
noticeText: {
|
|
290
|
+
color: _sharedUi.macOSColors.text.secondary,
|
|
291
|
+
fontSize: 11
|
|
292
|
+
},
|
|
293
|
+
fontsBox: {
|
|
294
|
+
marginHorizontal: 10,
|
|
295
|
+
marginTop: 8,
|
|
296
|
+
padding: 10,
|
|
297
|
+
borderRadius: 8,
|
|
298
|
+
backgroundColor: _sharedUi.macOSColors.background.card,
|
|
299
|
+
gap: 6
|
|
300
|
+
},
|
|
301
|
+
fontsTitle: {
|
|
302
|
+
color: _sharedUi.macOSColors.text.muted,
|
|
303
|
+
fontSize: 9,
|
|
304
|
+
fontWeight: "700",
|
|
305
|
+
letterSpacing: 0.5
|
|
306
|
+
},
|
|
307
|
+
fontsWrap: {
|
|
308
|
+
flexDirection: "row",
|
|
309
|
+
flexWrap: "wrap",
|
|
310
|
+
gap: 6
|
|
311
|
+
},
|
|
312
|
+
fontChip: {
|
|
313
|
+
color: _sharedUi.macOSColors.text.secondary,
|
|
314
|
+
fontSize: 10,
|
|
315
|
+
backgroundColor: _sharedUi.macOSColors.background.input,
|
|
316
|
+
borderRadius: 999,
|
|
317
|
+
paddingHorizontal: 8,
|
|
318
|
+
paddingVertical: 3,
|
|
319
|
+
overflow: "hidden"
|
|
320
|
+
},
|
|
321
|
+
empty: {
|
|
322
|
+
alignItems: "center",
|
|
323
|
+
padding: 32,
|
|
324
|
+
gap: 8
|
|
325
|
+
},
|
|
326
|
+
emptyTitle: {
|
|
327
|
+
color: _sharedUi.macOSColors.text.primary,
|
|
328
|
+
fontSize: 13,
|
|
329
|
+
fontWeight: "600"
|
|
330
|
+
},
|
|
331
|
+
emptyText: {
|
|
332
|
+
color: _sharedUi.macOSColors.text.secondary,
|
|
333
|
+
fontSize: 11,
|
|
334
|
+
textAlign: "center",
|
|
335
|
+
lineHeight: 16
|
|
336
|
+
}
|
|
337
|
+
});
|
|
338
|
+
//# sourceMappingURL=AssetsModal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","require","_reactNative","_sharedUi","_install","_export","_useAssetRecords","_remote","_assetStore","_baseline","_AssetDetail","_AssetRow","_AssetsFilterBar","_AssetsHeader","_AssetsListControls","_BaselineBar","_jsxRuntime","ScanNotice","status","getScanStatus","notices","registryAvailable","push","graphSupported","graphError","measuring","length","jsx","View","style","styles","notice","children","map","n","Text","noticeText","FontFamilies","families","fontFamilies","jsxs","fontsBox","fontsTitle","fontsWrap","family","fontChip","EmptyState","empty","emptyTitle","emptyText","bySizeDesc","a","b","sizeBytes","estDecodedBytes","COMPARATORS","size","name","localeCompare","type","AssetsModal","visible","onClose","onBack","onMinimize","persistenceKey","inline","installAssetCapture","records","stats","insights","useAssetRecords","selectedId","setSelectedId","useState","filter","setFilter","query","setQuery","sort","setSort","selected","getRecord","undefined","useEffect","loadBaseline","remote","remoteAssetsDispatch","catch","rescan","sorted","trimmedQuery","trim","toLowerCase","filtered","r","loaded","kind","includes","selectedIndex","findIndex","id","stepTo","index","target","flagSets","scaleGaps","Set","scaleAnomalies","duplicates","flatMap","d","ids","webpCandidates","overDecode","heavy","heavyGifs","heavyFonts","diff","getDiff","maxBytes","bytes","getReport","formatAssetMarkdown","formatInventoryMarkdown","headerContent","AssetsHeader","detailOpen","detailIndex","detailTotal","onCloseDetail","onClear","clearRecords","body","detailContainer","AssetDetail","record","EventStepperFooter","currentIndex","totalItems","itemLabel","onPrevious","onNext","listContainer","AssetsFilterBar","onChange","AssetsListControls","onQueryChange","onSortChange","showBaselineButton","BaselineBar","FlatList","data","keyExtractor","item","String","contentContainerStyle","listContent","renderItem","AssetRow","flags","scaleGap","has","scaleAnomaly","duplicate","webp","oversize","sizeFraction","onPress","ListEmptyComponent","inlineRoot","inlineHeader","JsModal","header","showToggleButton","customContent","enablePersistence","initialMode","disableScrollWrapper","AssetsToolView","props","StyleSheet","create","flex","minHeight","backgroundColor","macOSColors","background","base","paddingHorizontal","paddingVertical","borderBottomWidth","borderBottomColor","border","default","card","paddingBottom","marginHorizontal","marginBottom","padding","borderRadius","borderWidth","borderColor","gap","color","text","secondary","fontSize","marginTop","muted","fontWeight","letterSpacing","flexDirection","flexWrap","input","overflow","alignItems","primary","textAlign","lineHeight"],"sourceRoot":"../../../src","sources":["components/AssetsModal.tsx"],"mappings":"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","ignoreList":[]}
|