@buoy-gg/assets 7.0.38 → 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/lib/commonjs/capture/expo.js +46 -1
- package/lib/commonjs/capture/expo.js.map +1 -0
- package/lib/commonjs/capture/install.js +91 -1
- package/lib/commonjs/capture/install.js.map +1 -0
- package/lib/commonjs/capture/isBuoyAsset.js +23 -1
- package/lib/commonjs/capture/isBuoyAsset.js.map +1 -0
- package/lib/commonjs/capture/measure.js +186 -1
- package/lib/commonjs/capture/measure.js.map +1 -0
- package/lib/commonjs/capture/metroGraph.js +175 -1
- package/lib/commonjs/capture/metroGraph.js.map +1 -0
- package/lib/commonjs/capture/registry.js +127 -1
- package/lib/commonjs/capture/registry.js.map +1 -0
- package/lib/commonjs/components/AssetDetail.js +211 -1
- package/lib/commonjs/components/AssetDetail.js.map +1 -0
- package/lib/commonjs/components/AssetImage.js +66 -1
- package/lib/commonjs/components/AssetImage.js.map +1 -0
- package/lib/commonjs/components/AssetRow.js +232 -1
- package/lib/commonjs/components/AssetRow.js.map +1 -0
- package/lib/commonjs/components/AssetsFilterBar.js +105 -1
- package/lib/commonjs/components/AssetsFilterBar.js.map +1 -0
- package/lib/commonjs/components/AssetsHeader.js +73 -1
- package/lib/commonjs/components/AssetsHeader.js.map +1 -0
- package/lib/commonjs/components/AssetsIcon.js +19 -1
- package/lib/commonjs/components/AssetsIcon.js.map +1 -0
- package/lib/commonjs/components/AssetsListControls.js +81 -1
- package/lib/commonjs/components/AssetsListControls.js.map +1 -0
- package/lib/commonjs/components/AssetsModal.js +378 -1
- package/lib/commonjs/components/AssetsModal.js.map +1 -0
- package/lib/commonjs/components/ScanNotice.js +85 -1
- package/lib/commonjs/components/ScanNotice.js.map +1 -0
- package/lib/commonjs/components/optionalExpoImage.js +16 -1
- package/lib/commonjs/components/optionalExpoImage.js.map +1 -0
- package/lib/commonjs/components/optionalExpoImage.web.js +11 -1
- package/lib/commonjs/components/optionalExpoImage.web.js.map +1 -0
- package/lib/commonjs/export.js +62 -1
- package/lib/commonjs/export.js.map +1 -0
- package/lib/commonjs/format.js +59 -1
- package/lib/commonjs/format.js.map +1 -0
- package/lib/commonjs/hooks/useAssetRecords.js +22 -1
- package/lib/commonjs/hooks/useAssetRecords.js.map +1 -0
- package/lib/commonjs/hooks/useAssetScanStatus.js +28 -1
- package/lib/commonjs/hooks/useAssetScanStatus.js.map +1 -0
- package/lib/commonjs/index.js +313 -1
- package/lib/commonjs/index.js.map +1 -0
- package/lib/commonjs/preset.js +39 -1
- package/lib/commonjs/preset.js.map +1 -0
- package/lib/commonjs/remote.js +68 -1
- package/lib/commonjs/remote.js.map +1 -0
- package/lib/commonjs/state.js +51 -1
- package/lib/commonjs/state.js.map +1 -0
- package/lib/commonjs/store/assetStore.js +256 -1
- package/lib/commonjs/store/assetStore.js.map +1 -0
- package/lib/commonjs/store/baseline.js +175 -1
- package/lib/commonjs/store/baseline.js.map +1 -0
- package/lib/commonjs/store/insights.js +120 -1
- package/lib/commonjs/store/insights.js.map +1 -0
- package/lib/commonjs/sync/assetsSyncAdapter.js +157 -1
- package/lib/commonjs/sync/assetsSyncAdapter.js.map +1 -0
- package/lib/commonjs/types.js +2 -1
- package/lib/commonjs/types.js.map +1 -0
- package/lib/commonjs/utils/deviceScale.js +50 -1
- package/lib/commonjs/utils/deviceScale.js.map +1 -0
- package/lib/commonjs/utils/testIDs.js +110 -1
- package/lib/commonjs/utils/testIDs.js.map +1 -0
- package/lib/module/capture/expo.js +41 -1
- package/lib/module/capture/expo.js.map +1 -0
- package/lib/module/capture/install.js +85 -1
- package/lib/module/capture/install.js.map +1 -0
- package/lib/module/capture/isBuoyAsset.js +18 -1
- package/lib/module/capture/isBuoyAsset.js.map +1 -0
- package/lib/module/capture/measure.js +179 -1
- package/lib/module/capture/measure.js.map +1 -0
- package/lib/module/capture/metroGraph.js +168 -1
- package/lib/module/capture/metroGraph.js.map +1 -0
- package/lib/module/capture/registry.js +120 -1
- package/lib/module/capture/registry.js.map +1 -0
- package/lib/module/components/AssetDetail.js +207 -1
- package/lib/module/components/AssetDetail.js.map +1 -0
- package/lib/module/components/AssetImage.js +62 -1
- package/lib/module/components/AssetImage.js.map +1 -0
- package/lib/module/components/AssetRow.js +228 -1
- package/lib/module/components/AssetRow.js.map +1 -0
- package/lib/module/components/AssetsFilterBar.js +101 -1
- package/lib/module/components/AssetsFilterBar.js.map +1 -0
- package/lib/module/components/AssetsHeader.js +69 -1
- package/lib/module/components/AssetsHeader.js.map +1 -0
- package/lib/module/components/AssetsIcon.js +12 -1
- package/lib/module/components/AssetsIcon.js.map +1 -0
- package/lib/module/components/AssetsListControls.js +77 -1
- package/lib/module/components/AssetsListControls.js.map +1 -0
- package/lib/module/components/AssetsModal.js +373 -1
- package/lib/module/components/AssetsModal.js.map +1 -0
- package/lib/module/components/ScanNotice.js +81 -1
- package/lib/module/components/ScanNotice.js.map +1 -0
- package/lib/module/components/optionalExpoImage.js +12 -1
- package/lib/module/components/optionalExpoImage.js.map +1 -0
- package/lib/module/components/optionalExpoImage.web.js +7 -1
- package/lib/module/components/optionalExpoImage.web.js.map +1 -0
- package/lib/module/export.js +57 -1
- package/lib/module/export.js.map +1 -0
- package/lib/module/format.js +51 -1
- package/lib/module/format.js.map +1 -0
- package/lib/module/hooks/useAssetRecords.js +18 -1
- package/lib/module/hooks/useAssetRecords.js.map +1 -0
- package/lib/module/hooks/useAssetScanStatus.js +23 -1
- package/lib/module/hooks/useAssetScanStatus.js.map +1 -0
- package/lib/module/index.js +63 -1
- package/lib/module/index.js.map +1 -0
- package/lib/module/preset.js +35 -1
- package/lib/module/preset.js.map +1 -0
- package/lib/module/remote.js +61 -1
- package/lib/module/remote.js.map +1 -0
- package/lib/module/state.js +47 -1
- package/lib/module/state.js.map +1 -0
- package/lib/module/store/assetStore.js +240 -1
- package/lib/module/store/assetStore.js.map +1 -0
- package/lib/module/store/baseline.js +167 -1
- package/lib/module/store/baseline.js.map +1 -0
- package/lib/module/store/insights.js +116 -1
- package/lib/module/store/insights.js.map +1 -0
- package/lib/module/sync/assetsSyncAdapter.js +153 -1
- package/lib/module/sync/assetsSyncAdapter.js.map +1 -0
- package/lib/module/types.js +2 -1
- package/lib/module/types.js.map +1 -0
- package/lib/module/utils/deviceScale.js +46 -1
- package/lib/module/utils/deviceScale.js.map +1 -0
- package/lib/module/utils/testIDs.js +99 -1
- package/lib/module/utils/testIDs.js.map +1 -0
- package/lib/typescript/capture/expo.d.ts.map +1 -0
- package/lib/typescript/capture/install.d.ts.map +1 -0
- package/lib/typescript/capture/isBuoyAsset.d.ts.map +1 -0
- package/lib/typescript/capture/measure.d.ts.map +1 -0
- package/lib/typescript/capture/metroGraph.d.ts.map +1 -0
- package/lib/typescript/capture/registry.d.ts.map +1 -0
- package/lib/typescript/components/AssetDetail.d.ts.map +1 -0
- package/lib/typescript/components/AssetImage.d.ts.map +1 -0
- package/lib/typescript/components/AssetRow.d.ts.map +1 -0
- package/lib/typescript/components/AssetsFilterBar.d.ts.map +1 -0
- package/lib/typescript/components/AssetsHeader.d.ts.map +1 -0
- package/lib/typescript/components/AssetsIcon.d.ts.map +1 -0
- package/lib/typescript/components/AssetsListControls.d.ts.map +1 -0
- package/lib/typescript/components/AssetsModal.d.ts.map +1 -0
- package/lib/typescript/components/ScanNotice.d.ts.map +1 -0
- package/lib/typescript/components/optionalExpoImage.d.ts.map +1 -0
- package/lib/typescript/components/optionalExpoImage.web.d.ts.map +1 -0
- package/lib/typescript/export.d.ts.map +1 -0
- package/lib/typescript/format.d.ts.map +1 -0
- package/lib/typescript/hooks/useAssetRecords.d.ts.map +1 -0
- package/lib/typescript/hooks/useAssetScanStatus.d.ts.map +1 -0
- package/lib/typescript/index.d.ts.map +1 -0
- package/lib/typescript/preset.d.ts.map +1 -0
- package/lib/typescript/remote.d.ts.map +1 -0
- package/lib/typescript/state.d.ts.map +1 -0
- package/lib/typescript/store/assetStore.d.ts.map +1 -0
- package/lib/typescript/store/baseline.d.ts.map +1 -0
- package/lib/typescript/store/insights.d.ts.map +1 -0
- package/lib/typescript/sync/assetsSyncAdapter.d.ts.map +1 -0
- package/lib/typescript/types.d.ts.map +1 -0
- package/lib/typescript/utils/deviceScale.d.ts.map +1 -0
- package/lib/typescript/utils/testIDs.d.ts.map +1 -0
- package/package.json +2 -2
|
@@ -1 +1,378 @@
|
|
|
1
|
-
"use strict";
|
|
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 _useAssetScanStatus = require("../hooks/useAssetScanStatus");
|
|
15
|
+
var _remote = require("../remote");
|
|
16
|
+
var _assetStore = require("../store/assetStore");
|
|
17
|
+
var _baseline = require("../store/baseline");
|
|
18
|
+
var _AssetDetail = require("./AssetDetail");
|
|
19
|
+
var _AssetRow = require("./AssetRow");
|
|
20
|
+
var _AssetsFilterBar = require("./AssetsFilterBar");
|
|
21
|
+
var _AssetsHeader = require("./AssetsHeader");
|
|
22
|
+
var _AssetsListControls = require("./AssetsListControls");
|
|
23
|
+
var _ScanNotice = require("./ScanNotice");
|
|
24
|
+
var _testIDs = require("../utils/testIDs");
|
|
25
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
26
|
+
/**
|
|
27
|
+
* AssetsModal — bottom-sheet wrapper rendered by FloatingDevTools when the
|
|
28
|
+
* Assets tool is opened. Inventory list (largest first) → tap for detail.
|
|
29
|
+
* Opening triggers a full rescan (registry walk + Metro graph + size
|
|
30
|
+
* measurement); merely installing the package never hits the network.
|
|
31
|
+
*/
|
|
32
|
+
|
|
33
|
+
function FontFamilies({
|
|
34
|
+
names
|
|
35
|
+
}) {
|
|
36
|
+
const families = [...new Set(names)];
|
|
37
|
+
if (!families.length) return null;
|
|
38
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
39
|
+
style: styles.fontsBox,
|
|
40
|
+
testID: _testIDs.ASSETS_TEST_IDS.fonts,
|
|
41
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Text, {
|
|
42
|
+
style: styles.fontsTitle,
|
|
43
|
+
testID: _testIDs.ASSETS_TEST_IDS.fontsTitle,
|
|
44
|
+
children: ["LOADED FONT FAMILIES (", families.length, ")"]
|
|
45
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
46
|
+
style: styles.fontsWrap,
|
|
47
|
+
children: families.map(family => /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
48
|
+
style: styles.fontChip,
|
|
49
|
+
testID: (0, _testIDs.assetFontChipTestID)(family),
|
|
50
|
+
children: family
|
|
51
|
+
}, family))
|
|
52
|
+
})]
|
|
53
|
+
});
|
|
54
|
+
}
|
|
55
|
+
function EmptyState({
|
|
56
|
+
duplicates = false
|
|
57
|
+
}) {
|
|
58
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.ToolEmptyState, {
|
|
59
|
+
testID: _testIDs.ASSETS_TEST_IDS.empty
|
|
60
|
+
// scanning: a scan ran and found nothing — the copy says "try Rescan".
|
|
61
|
+
,
|
|
62
|
+
otto: "scanning",
|
|
63
|
+
title: duplicates ? "No duplicates found" : "No assets found yet",
|
|
64
|
+
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."
|
|
65
|
+
});
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
/** Largest first — measured bytes, falling back to decoded estimate. */
|
|
69
|
+
function bySizeDesc(a, b) {
|
|
70
|
+
return (b.sizeBytes ?? (0, _assetStore.estDecodedBytes)(b)) - (a.sizeBytes ?? (0, _assetStore.estDecodedBytes)(a));
|
|
71
|
+
}
|
|
72
|
+
const COMPARATORS = {
|
|
73
|
+
size: bySizeDesc,
|
|
74
|
+
name: (a, b) => a.name.localeCompare(b.name) || a.type.localeCompare(b.type),
|
|
75
|
+
type: (a, b) => a.type.localeCompare(b.type) || bySizeDesc(a, b)
|
|
76
|
+
};
|
|
77
|
+
function AssetsModal({
|
|
78
|
+
visible,
|
|
79
|
+
onClose,
|
|
80
|
+
onBack,
|
|
81
|
+
onMinimize,
|
|
82
|
+
persistenceKey,
|
|
83
|
+
inline = false
|
|
84
|
+
}) {
|
|
85
|
+
// Safety net: the index import normally installed this already.
|
|
86
|
+
(0, _install.installAssetCapture)();
|
|
87
|
+
const {
|
|
88
|
+
records,
|
|
89
|
+
stats,
|
|
90
|
+
insights
|
|
91
|
+
} = (0, _useAssetRecords.useAssetRecords)();
|
|
92
|
+
const status = (0, _useAssetScanStatus.useAssetScanStatus)();
|
|
93
|
+
const [remoteError, setRemoteError] = (0, _react.useState)(false);
|
|
94
|
+
(0, _react.useEffect)(() => {
|
|
95
|
+
setRemoteError(false);
|
|
96
|
+
}, [status.graphFetchInFlight, status.lastScanAt]);
|
|
97
|
+
const retry = () => {
|
|
98
|
+
setRemoteError(false);
|
|
99
|
+
const remote = (0, _remote.remoteAssetsDispatch)();
|
|
100
|
+
if (remote) void remote("rescan").catch(() => setRemoteError(true));else void (0, _install.rescan)();
|
|
101
|
+
};
|
|
102
|
+
const [selectedId, setSelectedId] = (0, _react.useState)(null);
|
|
103
|
+
const [filter, setFilter] = (0, _react.useState)("all");
|
|
104
|
+
const [query, setQuery] = (0, _react.useState)("");
|
|
105
|
+
const [sort, setSort] = (0, _react.useState)("size");
|
|
106
|
+
const selected = selectedId != null ? (0, _assetStore.getRecord)(selectedId) : undefined;
|
|
107
|
+
|
|
108
|
+
// Full scan on open — locally on device, forwarded on dashboard mirrors.
|
|
109
|
+
// The baseline load is async and re-renders through the store emit.
|
|
110
|
+
(0, _react.useEffect)(() => {
|
|
111
|
+
if (!visible) return;
|
|
112
|
+
void (0, _baseline.loadBaseline)();
|
|
113
|
+
setRemoteError(false);
|
|
114
|
+
const remote = (0, _remote.remoteAssetsDispatch)();
|
|
115
|
+
if (remote) {
|
|
116
|
+
remote("rescan").catch(() => setRemoteError(true));
|
|
117
|
+
} else {
|
|
118
|
+
void (0, _install.rescan)();
|
|
119
|
+
}
|
|
120
|
+
}, [visible]);
|
|
121
|
+
const duplicateIds = new Set(insights.duplicates.flatMap(group => group.ids));
|
|
122
|
+
const sorted = [...records].sort(COMPARATORS[sort]);
|
|
123
|
+
const trimmedQuery = query.trim().toLowerCase();
|
|
124
|
+
const filtered = sorted.filter(r => {
|
|
125
|
+
if (filter === "unused" && r.loaded) return false;
|
|
126
|
+
if (filter === "duplicates" && !duplicateIds.has(r.id)) return false;
|
|
127
|
+
if (filter !== "all" && filter !== "unused" && filter !== "duplicates" && r.kind !== filter) return false;
|
|
128
|
+
if (trimmedQuery && !`${r.name}.${r.type}`.toLowerCase().includes(trimmedQuery)) {
|
|
129
|
+
return false;
|
|
130
|
+
}
|
|
131
|
+
return true;
|
|
132
|
+
});
|
|
133
|
+
const selectedIndex = selected ? filtered.findIndex(r => r.id === selected.id) : -1;
|
|
134
|
+
const stepTo = index => {
|
|
135
|
+
const target = filtered[index];
|
|
136
|
+
if (target) setSelectedId(target.id);
|
|
137
|
+
};
|
|
138
|
+
|
|
139
|
+
// Set lookups so each row's badge checks are O(1).
|
|
140
|
+
const flagSets = {
|
|
141
|
+
scaleGaps: new Set(insights.scaleGaps),
|
|
142
|
+
scaleAnomalies: new Set(insights.scaleAnomalies),
|
|
143
|
+
duplicates: duplicateIds,
|
|
144
|
+
webpCandidates: new Set(insights.webpCandidates),
|
|
145
|
+
overDecode: new Set(insights.overDecode),
|
|
146
|
+
heavy: new Set([...insights.heavyGifs, ...insights.heavyFonts])
|
|
147
|
+
};
|
|
148
|
+
|
|
149
|
+
// The proportional size bar is relative to the largest asset in view.
|
|
150
|
+
let maxBytes = 0;
|
|
151
|
+
for (const r of filtered) {
|
|
152
|
+
const bytes = r.sizeBytes ?? (0, _assetStore.estDecodedBytes)(r);
|
|
153
|
+
if (bytes > maxBytes) maxBytes = bytes;
|
|
154
|
+
}
|
|
155
|
+
const getReport = () => selected ? (0, _export.formatAssetMarkdown)(selected) : (0, _export.formatInventoryMarkdown)(sorted, stats, insights, (0, _install.getScanStatus)(), (0, _baseline.getDiff)());
|
|
156
|
+
const headerContent = /*#__PURE__*/(0, _jsxRuntime.jsx)(_AssetsHeader.AssetsHeader, {
|
|
157
|
+
stats: stats,
|
|
158
|
+
measuring: status.measuring,
|
|
159
|
+
discovering: status.graphFetchInFlight,
|
|
160
|
+
detailOpen: selected != null,
|
|
161
|
+
detailIndex: selectedIndex,
|
|
162
|
+
detailTotal: filtered.length,
|
|
163
|
+
onCloseDetail: () => setSelectedId(null),
|
|
164
|
+
onClear: _assetStore.clearRecords,
|
|
165
|
+
getReport: getReport,
|
|
166
|
+
onBack: onBack
|
|
167
|
+
});
|
|
168
|
+
const body = selected ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
169
|
+
style: styles.detailContainer,
|
|
170
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_AssetDetail.AssetDetail, {
|
|
171
|
+
record: selected,
|
|
172
|
+
insights: insights
|
|
173
|
+
}), selectedIndex >= 0 ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.EventStepperFooter, {
|
|
174
|
+
currentIndex: selectedIndex,
|
|
175
|
+
totalItems: filtered.length,
|
|
176
|
+
itemLabel: "Asset",
|
|
177
|
+
onPrevious: () => stepTo(selectedIndex - 1),
|
|
178
|
+
onNext: () => stepTo(selectedIndex + 1)
|
|
179
|
+
}) : null]
|
|
180
|
+
}) : /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
181
|
+
style: styles.listContainer,
|
|
182
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_AssetsFilterBar.AssetsFilterBar, {
|
|
183
|
+
stats: stats,
|
|
184
|
+
duplicateCount: duplicateIds.size,
|
|
185
|
+
filter: filter,
|
|
186
|
+
onChange: next => {
|
|
187
|
+
setFilter(next);
|
|
188
|
+
if (next === "duplicates") setQuery("");
|
|
189
|
+
}
|
|
190
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_AssetsListControls.AssetsListControls, {
|
|
191
|
+
query: query,
|
|
192
|
+
onQueryChange: setQuery,
|
|
193
|
+
sort: sort,
|
|
194
|
+
onSortChange: setSort
|
|
195
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_ScanNotice.ScanNotice, {
|
|
196
|
+
status: status,
|
|
197
|
+
total: stats.total,
|
|
198
|
+
onRetry: retry
|
|
199
|
+
}), remoteError && !status.graphFetchInFlight ? /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
200
|
+
style: styles.notice,
|
|
201
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
202
|
+
style: styles.noticeText,
|
|
203
|
+
children: "Couldn't request an asset scan from the device."
|
|
204
|
+
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
|
|
205
|
+
accessibilityRole: "button",
|
|
206
|
+
onPress: retry,
|
|
207
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
208
|
+
style: styles.retryText,
|
|
209
|
+
children: "Retry"
|
|
210
|
+
})
|
|
211
|
+
})]
|
|
212
|
+
}) : null, filter === "unused" ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
213
|
+
style: styles.notice,
|
|
214
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
215
|
+
style: styles.noticeText,
|
|
216
|
+
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."
|
|
217
|
+
})
|
|
218
|
+
}) : null, filter === "font" ? /*#__PURE__*/(0, _jsxRuntime.jsx)(FontFamilies, {
|
|
219
|
+
names: status.fontFamilies
|
|
220
|
+
}) : null, /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.FlatList, {
|
|
221
|
+
testID: _testIDs.ASSETS_TEST_IDS.list,
|
|
222
|
+
data: filtered,
|
|
223
|
+
keyExtractor: item => String(item.id),
|
|
224
|
+
contentContainerStyle: styles.listContent,
|
|
225
|
+
renderItem: ({
|
|
226
|
+
item
|
|
227
|
+
}) => /*#__PURE__*/(0, _jsxRuntime.jsx)(_AssetRow.AssetRow, {
|
|
228
|
+
record: item,
|
|
229
|
+
flags: {
|
|
230
|
+
scaleGap: flagSets.scaleGaps.has(item.id),
|
|
231
|
+
scaleAnomaly: flagSets.scaleAnomalies.has(item.id),
|
|
232
|
+
duplicate: flagSets.duplicates.has(item.id),
|
|
233
|
+
webp: flagSets.webpCandidates.has(item.id),
|
|
234
|
+
oversize: flagSets.overDecode.has(item.id),
|
|
235
|
+
heavy: flagSets.heavy.has(item.id)
|
|
236
|
+
},
|
|
237
|
+
sizeFraction: maxBytes > 0 ? (item.sizeBytes ?? (0, _assetStore.estDecodedBytes)(item)) / maxBytes : 0
|
|
238
|
+
// Guarded: programmatic invocations (automation) can call this
|
|
239
|
+
// with an event object instead of an id.
|
|
240
|
+
,
|
|
241
|
+
onPress: id => setSelectedId(typeof id === "number" ? id : null)
|
|
242
|
+
}),
|
|
243
|
+
ListEmptyComponent: status.graphFetchInFlight ? null : /*#__PURE__*/(0, _jsxRuntime.jsx)(EmptyState, {
|
|
244
|
+
duplicates: filter === "duplicates"
|
|
245
|
+
})
|
|
246
|
+
})]
|
|
247
|
+
});
|
|
248
|
+
|
|
249
|
+
// The ONLY difference between phone and desktop is which shell the header
|
|
250
|
+
// and body go in (same pattern as ImagesModal).
|
|
251
|
+
if (inline) {
|
|
252
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
253
|
+
style: styles.inlineRoot,
|
|
254
|
+
children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
255
|
+
style: styles.inlineHeader,
|
|
256
|
+
..._sharedUi.windowDragProps,
|
|
257
|
+
children: headerContent
|
|
258
|
+
}), body]
|
|
259
|
+
});
|
|
260
|
+
}
|
|
261
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.JsModal, {
|
|
262
|
+
visible: visible,
|
|
263
|
+
onClose: onClose,
|
|
264
|
+
onMinimize: onMinimize,
|
|
265
|
+
persistenceKey: persistenceKey,
|
|
266
|
+
header: {
|
|
267
|
+
showToggleButton: true,
|
|
268
|
+
customContent: headerContent
|
|
269
|
+
},
|
|
270
|
+
enablePersistence: true,
|
|
271
|
+
initialMode: "bottomSheet",
|
|
272
|
+
disableScrollWrapper: true,
|
|
273
|
+
children: body
|
|
274
|
+
});
|
|
275
|
+
}
|
|
276
|
+
|
|
277
|
+
/**
|
|
278
|
+
* The same Assets tool rendered INLINE for hosts that place tools in a panel
|
|
279
|
+
* rather than a modal (the desktop dashboard). One implementation only.
|
|
280
|
+
*/
|
|
281
|
+
function AssetsToolView(props = {}) {
|
|
282
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsx)(AssetsModal, {
|
|
283
|
+
...props,
|
|
284
|
+
inline: true,
|
|
285
|
+
visible: true,
|
|
286
|
+
onClose: () => {}
|
|
287
|
+
});
|
|
288
|
+
}
|
|
289
|
+
const styles = _reactNative.StyleSheet.create({
|
|
290
|
+
inlineRoot: {
|
|
291
|
+
flex: 1,
|
|
292
|
+
minHeight: 0,
|
|
293
|
+
// Transparent so the desktop workbench's hoisted sky (one field spanning
|
|
294
|
+
// sidebar + panel) shows through — the shell paints its base beneath it.
|
|
295
|
+
backgroundColor: "transparent"
|
|
296
|
+
},
|
|
297
|
+
inlineHeader: {
|
|
298
|
+
paddingHorizontal: 12,
|
|
299
|
+
paddingVertical: 8,
|
|
300
|
+
borderBottomWidth: 1,
|
|
301
|
+
borderBottomColor: _sharedUi.macOSColors.border.default,
|
|
302
|
+
// Clear, like Bench — the host's hoisted sky shows through the header.
|
|
303
|
+
backgroundColor: "transparent"
|
|
304
|
+
},
|
|
305
|
+
listContainer: {
|
|
306
|
+
flex: 1
|
|
307
|
+
},
|
|
308
|
+
listContent: {
|
|
309
|
+
paddingBottom: 16
|
|
310
|
+
},
|
|
311
|
+
detailContainer: {
|
|
312
|
+
flex: 1
|
|
313
|
+
},
|
|
314
|
+
notice: {
|
|
315
|
+
marginHorizontal: 10,
|
|
316
|
+
marginBottom: 8,
|
|
317
|
+
padding: 10,
|
|
318
|
+
borderRadius: 8,
|
|
319
|
+
borderWidth: 1,
|
|
320
|
+
borderColor: _sharedUi.night.color.border,
|
|
321
|
+
backgroundColor: _sharedUi.night.color.surface,
|
|
322
|
+
gap: 4
|
|
323
|
+
},
|
|
324
|
+
noticeText: {
|
|
325
|
+
color: _sharedUi.night.color.textSecondary,
|
|
326
|
+
fontSize: 11
|
|
327
|
+
},
|
|
328
|
+
retryText: {
|
|
329
|
+
color: _sharedUi.night.color.text,
|
|
330
|
+
fontSize: 12,
|
|
331
|
+
paddingVertical: 6
|
|
332
|
+
},
|
|
333
|
+
fontsBox: {
|
|
334
|
+
marginHorizontal: 10,
|
|
335
|
+
marginTop: 8,
|
|
336
|
+
padding: 10,
|
|
337
|
+
borderRadius: 8,
|
|
338
|
+
backgroundColor: _sharedUi.night.color.surface,
|
|
339
|
+
gap: 6
|
|
340
|
+
},
|
|
341
|
+
fontsTitle: {
|
|
342
|
+
color: _sharedUi.night.color.textTertiary,
|
|
343
|
+
fontSize: 9,
|
|
344
|
+
fontWeight: "700",
|
|
345
|
+
letterSpacing: 0.5
|
|
346
|
+
},
|
|
347
|
+
fontsWrap: {
|
|
348
|
+
flexDirection: "row",
|
|
349
|
+
flexWrap: "wrap",
|
|
350
|
+
gap: 6
|
|
351
|
+
},
|
|
352
|
+
fontChip: {
|
|
353
|
+
color: _sharedUi.night.color.textSecondary,
|
|
354
|
+
fontSize: 10,
|
|
355
|
+
backgroundColor: _sharedUi.night.color.bg,
|
|
356
|
+
borderRadius: 999,
|
|
357
|
+
paddingHorizontal: 8,
|
|
358
|
+
paddingVertical: 3,
|
|
359
|
+
overflow: "hidden"
|
|
360
|
+
},
|
|
361
|
+
empty: {
|
|
362
|
+
alignItems: "center",
|
|
363
|
+
padding: 32,
|
|
364
|
+
gap: 8
|
|
365
|
+
},
|
|
366
|
+
emptyTitle: {
|
|
367
|
+
color: _sharedUi.night.color.text,
|
|
368
|
+
fontSize: 13,
|
|
369
|
+
fontWeight: "600"
|
|
370
|
+
},
|
|
371
|
+
emptyText: {
|
|
372
|
+
color: _sharedUi.night.color.textSecondary,
|
|
373
|
+
fontSize: 11,
|
|
374
|
+
textAlign: "center",
|
|
375
|
+
lineHeight: 16
|
|
376
|
+
}
|
|
377
|
+
});
|
|
378
|
+
//# sourceMappingURL=AssetsModal.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","require","_reactNative","_sharedUi","_install","_export","_useAssetRecords","_useAssetScanStatus","_remote","_assetStore","_baseline","_AssetDetail","_AssetRow","_AssetsFilterBar","_AssetsHeader","_AssetsListControls","_ScanNotice","_testIDs","_jsxRuntime","FontFamilies","names","families","Set","length","jsxs","View","style","styles","fontsBox","testID","ASSETS_TEST_IDS","fonts","children","Text","fontsTitle","jsx","fontsWrap","map","family","fontChip","assetFontChipTestID","EmptyState","duplicates","ToolEmptyState","empty","otto","title","message","bySizeDesc","a","b","sizeBytes","estDecodedBytes","COMPARATORS","size","name","localeCompare","type","AssetsModal","visible","onClose","onBack","onMinimize","persistenceKey","inline","installAssetCapture","records","stats","insights","useAssetRecords","status","useAssetScanStatus","remoteError","setRemoteError","useState","useEffect","graphFetchInFlight","lastScanAt","retry","remote","remoteAssetsDispatch","catch","rescan","selectedId","setSelectedId","filter","setFilter","query","setQuery","sort","setSort","selected","getRecord","undefined","loadBaseline","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","formatAssetMarkdown","formatInventoryMarkdown","getScanStatus","getDiff","headerContent","AssetsHeader","measuring","discovering","detailOpen","detailIndex","detailTotal","onCloseDetail","onClear","clearRecords","body","detailContainer","AssetDetail","record","EventStepperFooter","currentIndex","totalItems","itemLabel","onPrevious","onNext","listContainer","AssetsFilterBar","duplicateCount","onChange","next","AssetsListControls","onQueryChange","onSortChange","ScanNotice","total","onRetry","notice","noticeText","TouchableOpacity","accessibilityRole","onPress","retryText","fontFamilies","FlatList","list","data","keyExtractor","item","String","contentContainerStyle","listContent","renderItem","AssetRow","flags","scaleGap","scaleAnomaly","duplicate","webp","oversize","sizeFraction","ListEmptyComponent","inlineRoot","inlineHeader","windowDragProps","JsModal","header","showToggleButton","customContent","enablePersistence","initialMode","disableScrollWrapper","AssetsToolView","props","StyleSheet","create","flex","minHeight","backgroundColor","paddingHorizontal","paddingVertical","borderBottomWidth","borderBottomColor","macOSColors","border","default","paddingBottom","marginHorizontal","marginBottom","padding","borderRadius","borderWidth","borderColor","night","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":";;;;;;;AAOA,IAAAA,MAAA,GAAAC,OAAA;AACA,IAAAC,YAAA,GAAAD,OAAA;AACA,IAAAE,SAAA,GAAAF,OAAA;AAUA,IAAAG,QAAA,GAAAH,OAAA;AACA,IAAAI,OAAA,GAAAJ,OAAA;AACA,IAAAK,gBAAA,GAAAL,OAAA;AACA,IAAAM,mBAAA,GAAAN,OAAA;AACA,IAAAO,OAAA,GAAAP,OAAA;AACA,IAAAQ,WAAA,GAAAR,OAAA;AACA,IAAAS,SAAA,GAAAT,OAAA;AACA,IAAAU,YAAA,GAAAV,OAAA;AACA,IAAAW,SAAA,GAAAX,OAAA;AACA,IAAAY,gBAAA,GAAAZ,OAAA;AACA,IAAAa,aAAA,GAAAb,OAAA;AACA,IAAAc,mBAAA,GAAAd,OAAA;AACA,IAAAe,WAAA,GAAAf,OAAA;AACA,IAAAgB,QAAA,GAAAhB,OAAA;AAAwE,IAAAiB,WAAA,GAAAjB,OAAA;AAhCxE;AACA;AACA;AACA;AACA;AACA;;AAyCA,SAASkB,YAAYA,CAAC;EAAEC;AAA2B,CAAC,EAAE;EACpD,MAAMC,QAAQ,GAAG,CAAC,GAAG,IAAIC,GAAG,CAACF,KAAK,CAAC,CAAC;EACpC,IAAI,CAACC,QAAQ,CAACE,MAAM,EAAE,OAAO,IAAI;EACjC,oBACE,IAAAL,WAAA,CAAAM,IAAA,EAACtB,YAAA,CAAAuB,IAAI;IAACC,KAAK,EAAEC,MAAM,CAACC,QAAS;IAACC,MAAM,EAAEC,wBAAe,CAACC,KAAM;IAAAC,QAAA,gBAC1D,IAAAd,WAAA,CAAAM,IAAA,EAACtB,YAAA,CAAA+B,IAAI;MAACP,KAAK,EAAEC,MAAM,CAACO,UAAW;MAACL,MAAM,EAAEC,wBAAe,CAACI,UAAW;MAAAF,QAAA,GAAC,wBAC5C,EAACX,QAAQ,CAACE,MAAM,EAAC,GACzC;IAAA,CAAM,CAAC,eACP,IAAAL,WAAA,CAAAiB,GAAA,EAACjC,YAAA,CAAAuB,IAAI;MAACC,KAAK,EAAEC,MAAM,CAACS,SAAU;MAAAJ,QAAA,EAC3BX,QAAQ,CAACgB,GAAG,CAAEC,MAAM,iBACnB,IAAApB,WAAA,CAAAiB,GAAA,EAACjC,YAAA,CAAA+B,IAAI;QAEHP,KAAK,EAAEC,MAAM,CAACY,QAAS;QACvBV,MAAM,EAAE,IAAAW,4BAAmB,EAACF,MAAM,CAAE;QAAAN,QAAA,EAEnCM;MAAM,GAJFA,MAKD,CACP;IAAC,CACE,CAAC;EAAA,CACH,CAAC;AAEX;AAEA,SAASG,UAAUA,CAAC;EAAEC,UAAU,GAAG;AAAgC,CAAC,EAAE;EACpE,oBACE,IAAAxB,WAAA,CAAAiB,GAAA,EAAChC,SAAA,CAAAwC,cAAc;IACbd,MAAM,EAAEC,wBAAe,CAACc;IACxB;IAAA;IACAC,IAAI,EAAC,UAAU;IACfC,KAAK,EAAEJ,UAAU,GAAG,qBAAqB,GAAG,qBAAsB;IAClEK,OAAO,EACLL,UAAU,GAAG,8CAA8C,GAAG;EAC/D,CACF,CAAC;AAEN;;AAEA;AACA,SAASM,UAAUA,CAACC,CAAc,EAAEC,CAAc,EAAU;EAC1D,OAAO,CAACA,CAAC,CAACC,SAAS,IAAI,IAAAC,2BAAe,EAACF,CAAC,CAAC,KAAKD,CAAC,CAACE,SAAS,IAAI,IAAAC,2BAAe,EAACH,CAAC,CAAC,CAAC;AAClF;AAEA,MAAMI,WAA0E,GAAG;EACjFC,IAAI,EAAEN,UAAU;EAChBO,IAAI,EAAEA,CAACN,CAAC,EAAEC,CAAC,KAAKD,CAAC,CAACM,IAAI,CAACC,aAAa,CAACN,CAAC,CAACK,IAAI,CAAC,IAAIN,CAAC,CAACQ,IAAI,CAACD,aAAa,CAACN,CAAC,CAACO,IAAI,CAAC;EAC5EA,IAAI,EAAEA,CAACR,CAAC,EAAEC,CAAC,KAAKD,CAAC,CAACQ,IAAI,CAACD,aAAa,CAACN,CAAC,CAACO,IAAI,CAAC,IAAIT,UAAU,CAACC,CAAC,EAAEC,CAAC;AACjE,CAAC;AAEM,SAASQ,WAAWA,CAAC;EAC1BC,OAAO;EACPC,OAAO;EACPC,MAAM;EACNC,UAAU;EACVC,cAAc;EACdC,MAAM,GAAG;AACO,CAAC,EAAE;EACnB;EACA,IAAAC,4BAAmB,EAAC,CAAC;EAErB,MAAM;IAAEC,OAAO;IAAEC,KAAK;IAAEC;EAAS,CAAC,GAAG,IAAAC,gCAAe,EAAC,CAAC;EACtD,MAAMC,MAAM,GAAG,IAAAC,sCAAkB,EAAC,CAAC;EACnC,MAAM,CAACC,WAAW,EAAEC,cAAc,CAAC,GAAG,IAAAC,eAAQ,EAAC,KAAK,CAAC;EACrD,IAAAC,gBAAS,EAAC,MAAM;IACdF,cAAc,CAAC,KAAK,CAAC;EACvB,CAAC,EAAE,CAACH,MAAM,CAACM,kBAAkB,EAAEN,MAAM,CAACO,UAAU,CAAC,CAAC;EAClD,MAAMC,KAAK,GAAGA,CAAA,KAAM;IAClBL,cAAc,CAAC,KAAK,CAAC;IACrB,MAAMM,MAAM,GAAG,IAAAC,4BAAoB,EAAC,CAAC;IACrC,IAAID,MAAM,EAAE,KAAKA,MAAM,CAAC,QAAQ,CAAC,CAACE,KAAK,CAAC,MAAMR,cAAc,CAAC,IAAI,CAAC,CAAC,CAAC,KAC/D,KAAK,IAAAS,eAAM,EAAC,CAAC;EACpB,CAAC;EACD,MAAM,CAACC,UAAU,EAAEC,aAAa,CAAC,GAAG,IAAAV,eAAQ,EAAgB,IAAI,CAAC;EACjE,MAAM,CAACW,MAAM,EAAEC,SAAS,CAAC,GAAG,IAAAZ,eAAQ,EAAc,KAAK,CAAC;EACxD,MAAM,CAACa,KAAK,EAAEC,QAAQ,CAAC,GAAG,IAAAd,eAAQ,EAAC,EAAE,CAAC;EACtC,MAAM,CAACe,IAAI,EAAEC,OAAO,CAAC,GAAG,IAAAhB,eAAQ,EAAY,MAAM,CAAC;EACnD,MAAMiB,QAAQ,GAAGR,UAAU,IAAI,IAAI,GAAG,IAAAS,qBAAS,EAACT,UAAU,CAAC,GAAGU,SAAS;;EAEvE;EACA;EACA,IAAAlB,gBAAS,EAAC,MAAM;IACd,IAAI,CAAChB,OAAO,EAAE;IACd,KAAK,IAAAmC,sBAAY,EAAC,CAAC;IACnBrB,cAAc,CAAC,KAAK,CAAC;IACrB,MAAMM,MAAM,GAAG,IAAAC,4BAAoB,EAAC,CAAC;IACrC,IAAID,MAAM,EAAE;MACVA,MAAM,CAAC,QAAQ,CAAC,CAACE,KAAK,CAAC,MAAMR,cAAc,CAAC,IAAI,CAAC,CAAC;IACpD,CAAC,MAAM;MACL,KAAK,IAAAS,eAAM,EAAC,CAAC;IACf;EACF,CAAC,EAAE,CAACvB,OAAO,CAAC,CAAC;EAEb,MAAMoC,YAAY,GAAG,IAAIzE,GAAG,CAAC8C,QAAQ,CAAC1B,UAAU,CAACsD,OAAO,CAAEC,KAAK,IAAKA,KAAK,CAACC,GAAG,CAAC,CAAC;EAC/E,MAAMC,MAAM,GAAG,CAAC,GAAGjC,OAAO,CAAC,CAACuB,IAAI,CAACpC,WAAW,CAACoC,IAAI,CAAC,CAAC;EACnD,MAAMW,YAAY,GAAGb,KAAK,CAACc,IAAI,CAAC,CAAC,CAACC,WAAW,CAAC,CAAC;EAC/C,MAAMC,QAAQ,GAAGJ,MAAM,CAACd,MAAM,CAAEmB,CAAC,IAAK;IACpC,IAAInB,MAAM,KAAK,QAAQ,IAAImB,CAAC,CAACC,MAAM,EAAE,OAAO,KAAK;IACjD,IAAIpB,MAAM,KAAK,YAAY,IAAI,CAACU,YAAY,CAACW,GAAG,CAACF,CAAC,CAACG,EAAE,CAAC,EAAE,OAAO,KAAK;IACpE,IAAItB,MAAM,KAAK,KAAK,IAAIA,MAAM,KAAK,QAAQ,IAAIA,MAAM,KAAK,YAAY,IAAImB,CAAC,CAACI,IAAI,KAAKvB,MAAM,EAAE,OAAO,KAAK;IACzG,IAAIe,YAAY,IAAI,CAAC,GAAGI,CAAC,CAACjD,IAAI,IAAIiD,CAAC,CAAC/C,IAAI,EAAE,CAAC6C,WAAW,CAAC,CAAC,CAACO,QAAQ,CAACT,YAAY,CAAC,EAAE;MAC/E,OAAO,KAAK;IACd;IACA,OAAO,IAAI;EACb,CAAC,CAAC;EAEF,MAAMU,aAAa,GAAGnB,QAAQ,GAC1BY,QAAQ,CAACQ,SAAS,CAAEP,CAAC,IAAKA,CAAC,CAACG,EAAE,KAAKhB,QAAQ,CAACgB,EAAE,CAAC,GAC/C,CAAC,CAAC;EACN,MAAMK,MAAM,GAAIC,KAAa,IAAK;IAChC,MAAMC,MAAM,GAAGX,QAAQ,CAACU,KAAK,CAAC;IAC9B,IAAIC,MAAM,EAAE9B,aAAa,CAAC8B,MAAM,CAACP,EAAE,CAAC;EACtC,CAAC;;EAED;EACA,MAAMQ,QAAQ,GAAG;IACfC,SAAS,EAAE,IAAI9F,GAAG,CAAC8C,QAAQ,CAACgD,SAAS,CAAC;IACtCC,cAAc,EAAE,IAAI/F,GAAG,CAAC8C,QAAQ,CAACiD,cAAc,CAAC;IAChD3E,UAAU,EAAEqD,YAAY;IACxBuB,cAAc,EAAE,IAAIhG,GAAG,CAAC8C,QAAQ,CAACkD,cAAc,CAAC;IAChDC,UAAU,EAAE,IAAIjG,GAAG,CAAC8C,QAAQ,CAACmD,UAAU,CAAC;IACxCC,KAAK,EAAE,IAAIlG,GAAG,CAAC,CAAC,GAAG8C,QAAQ,CAACqD,SAAS,EAAE,GAAGrD,QAAQ,CAACsD,UAAU,CAAC;EAChE,CAAC;;EAED;EACA,IAAIC,QAAQ,GAAG,CAAC;EAChB,KAAK,MAAMnB,CAAC,IAAID,QAAQ,EAAE;IACxB,MAAMqB,KAAK,GAAGpB,CAAC,CAACrD,SAAS,IAAI,IAAAC,2BAAe,EAACoD,CAAC,CAAC;IAC/C,IAAIoB,KAAK,GAAGD,QAAQ,EAAEA,QAAQ,GAAGC,KAAK;EACxC;EAEA,MAAMC,SAAS,GAAGA,CAAA,KAChBlC,QAAQ,GACJ,IAAAmC,2BAAmB,EAACnC,QAAQ,CAAC,GAC7B,IAAAoC,+BAAuB,EAAC5B,MAAM,EAAEhC,KAAK,EAAEC,QAAQ,EAAE,IAAA4D,sBAAa,EAAC,CAAC,EAAE,IAAAC,iBAAO,EAAC,CAAC,CAAC;EAElF,MAAMC,aAAa,gBACjB,IAAAhH,WAAA,CAAAiB,GAAA,EAACrB,aAAA,CAAAqH,YAAY;IACXhE,KAAK,EAAEA,KAAM;IACbiE,SAAS,EAAE9D,MAAM,CAAC8D,SAAU;IAC5BC,WAAW,EAAE/D,MAAM,CAACM,kBAAmB;IACvC0D,UAAU,EAAE3C,QAAQ,IAAI,IAAK;IAC7B4C,WAAW,EAAEzB,aAAc;IAC3B0B,WAAW,EAAEjC,QAAQ,CAAChF,MAAO;IAC7BkH,aAAa,EAAEA,CAAA,KAAMrD,aAAa,CAAC,IAAI,CAAE;IACzCsD,OAAO,EAAEC,wBAAa;IACtBd,SAAS,EAAEA,SAAU;IACrBhE,MAAM,EAAEA;EAAO,CAChB,CACF;EAED,MAAM+E,IAAI,GAAGjD,QAAQ,gBACnB,IAAAzE,WAAA,CAAAM,IAAA,EAACtB,YAAA,CAAAuB,IAAI;IAACC,KAAK,EAAEC,MAAM,CAACkH,eAAgB;IAAA7G,QAAA,gBAClC,IAAAd,WAAA,CAAAiB,GAAA,EAACxB,YAAA,CAAAmI,WAAW;MAACC,MAAM,EAAEpD,QAAS;MAACvB,QAAQ,EAAEA;IAAS,CAAE,CAAC,EAGpD0C,aAAa,IAAI,CAAC,gBACjB,IAAA5F,WAAA,CAAAiB,GAAA,EAAChC,SAAA,CAAA6I,kBAAkB;MACjBC,YAAY,EAAEnC,aAAc;MAC5BoC,UAAU,EAAE3C,QAAQ,CAAChF,MAAO;MAC5B4H,SAAS,EAAC,OAAO;MACjBC,UAAU,EAAEA,CAAA,KAAMpC,MAAM,CAACF,aAAa,GAAG,CAAC,CAAE;MAC5CuC,MAAM,EAAEA,CAAA,KAAMrC,MAAM,CAACF,aAAa,GAAG,CAAC;IAAE,CACzC,CAAC,GACA,IAAI;EAAA,CACJ,CAAC,gBAEP,IAAA5F,WAAA,CAAAM,IAAA,EAACtB,YAAA,CAAAuB,IAAI;IAACC,KAAK,EAAEC,MAAM,CAAC2H,aAAc;IAAAtH,QAAA,gBAChC,IAAAd,WAAA,CAAAiB,GAAA,EAACtB,gBAAA,CAAA0I,eAAe;MACdpF,KAAK,EAAEA,KAAM;MACbqF,cAAc,EAAEzD,YAAY,CAACzC,IAAK;MAClC+B,MAAM,EAAEA,MAAO;MACfoE,QAAQ,EAAGC,IAAI,IAAK;QAClBpE,SAAS,CAACoE,IAAI,CAAC;QACf,IAAIA,IAAI,KAAK,YAAY,EAAElE,QAAQ,CAAC,EAAE,CAAC;MACzC;IAAE,CACH,CAAC,eACF,IAAAtE,WAAA,CAAAiB,GAAA,EAACpB,mBAAA,CAAA4I,kBAAkB;MACjBpE,KAAK,EAAEA,KAAM;MACbqE,aAAa,EAAEpE,QAAS;MACxBC,IAAI,EAAEA,IAAK;MACXoE,YAAY,EAAEnE;IAAQ,CACvB,CAAC,eACF,IAAAxE,WAAA,CAAAiB,GAAA,EAACnB,WAAA,CAAA8I,UAAU;MAACxF,MAAM,EAAEA,MAAO;MAACyF,KAAK,EAAE5F,KAAK,CAAC4F,KAAM;MAACC,OAAO,EAAElF;IAAM,CAAE,CAAC,EACjEN,WAAW,IAAI,CAACF,MAAM,CAACM,kBAAkB,gBACxC,IAAA1D,WAAA,CAAAM,IAAA,EAACtB,YAAA,CAAAuB,IAAI;MAACC,KAAK,EAAEC,MAAM,CAACsI,MAAO;MAAAjI,QAAA,gBACzB,IAAAd,WAAA,CAAAiB,GAAA,EAACjC,YAAA,CAAA+B,IAAI;QAACP,KAAK,EAAEC,MAAM,CAACuI,UAAW;QAAAlI,QAAA,EAAC;MAA+C,CAAM,CAAC,eACtF,IAAAd,WAAA,CAAAiB,GAAA,EAACjC,YAAA,CAAAiK,gBAAgB;QAACC,iBAAiB,EAAC,QAAQ;QAACC,OAAO,EAAEvF,KAAM;QAAA9C,QAAA,eAC1D,IAAAd,WAAA,CAAAiB,GAAA,EAACjC,YAAA,CAAA+B,IAAI;UAACP,KAAK,EAAEC,MAAM,CAAC2I,SAAU;UAAAtI,QAAA,EAAC;QAAK,CAAM;MAAC,CAC3B,CAAC;IAAA,CACf,CAAC,GACL,IAAI,EACPqD,MAAM,KAAK,QAAQ,gBAClB,IAAAnE,WAAA,CAAAiB,GAAA,EAACjC,YAAA,CAAAuB,IAAI;MAACC,KAAK,EAAEC,MAAM,CAACsI,MAAO;MAAAjI,QAAA,eACzB,IAAAd,WAAA,CAAAiB,GAAA,EAACjC,YAAA,CAAA+B,IAAI;QAACP,KAAK,EAAEC,MAAM,CAACuI,UAAW;QAAAlI,QAAA,EAAC;MAEhC,CAAM;IAAC,CACH,CAAC,GACL,IAAI,EACPqD,MAAM,KAAK,MAAM,gBAAG,IAAAnE,WAAA,CAAAiB,GAAA,EAAChB,YAAY;MAACC,KAAK,EAAEkD,MAAM,CAACiG;IAAa,CAAE,CAAC,GAAG,IAAI,eACxE,IAAArJ,WAAA,CAAAiB,GAAA,EAACjC,YAAA,CAAAsK,QAAQ;MACP3I,MAAM,EAAEC,wBAAe,CAAC2I,IAAK;MAC7BC,IAAI,EAAEnE,QAAS;MACfoE,YAAY,EAAGC,IAAiB,IAAKC,MAAM,CAACD,IAAI,CAACjE,EAAE,CAAE;MACrDmE,qBAAqB,EAAEnJ,MAAM,CAACoJ,WAAY;MAC1CC,UAAU,EAAEA,CAAC;QAAEJ;MAAK,CAAC,kBACnB,IAAA1J,WAAA,CAAAiB,GAAA,EAACvB,SAAA,CAAAqK,QAAQ;QACPlC,MAAM,EAAE6B,IAAK;QACbM,KAAK,EAAE;UACLC,QAAQ,EAAEhE,QAAQ,CAACC,SAAS,CAACV,GAAG,CAACkE,IAAI,CAACjE,EAAE,CAAC;UACzCyE,YAAY,EAAEjE,QAAQ,CAACE,cAAc,CAACX,GAAG,CAACkE,IAAI,CAACjE,EAAE,CAAC;UAClD0E,SAAS,EAAElE,QAAQ,CAACzE,UAAU,CAACgE,GAAG,CAACkE,IAAI,CAACjE,EAAE,CAAC;UAC3C2E,IAAI,EAAEnE,QAAQ,CAACG,cAAc,CAACZ,GAAG,CAACkE,IAAI,CAACjE,EAAE,CAAC;UAC1C4E,QAAQ,EAAEpE,QAAQ,CAACI,UAAU,CAACb,GAAG,CAACkE,IAAI,CAACjE,EAAE,CAAC;UAC1Ca,KAAK,EAAEL,QAAQ,CAACK,KAAK,CAACd,GAAG,CAACkE,IAAI,CAACjE,EAAE;QACnC,CAAE;QACF6E,YAAY,EACV7D,QAAQ,GAAG,CAAC,GACR,CAACiD,IAAI,CAACzH,SAAS,IAAI,IAAAC,2BAAe,EAACwH,IAAI,CAAC,IAAIjD,QAAQ,GACpD;QAEN;QACA;QAAA;QACA0C,OAAO,EAAG1D,EAAE,IAAKvB,aAAa,CAAC,OAAOuB,EAAE,KAAK,QAAQ,GAAGA,EAAE,GAAG,IAAI;MAAE,CACpE,CACD;MACF8E,kBAAkB,EAAEnH,MAAM,CAACM,kBAAkB,GAAG,IAAI,gBAAG,IAAA1D,WAAA,CAAAiB,GAAA,EAACM,UAAU;QAACC,UAAU,EAAE2C,MAAM,KAAK;MAAa,CAAE;IAAE,CAC5G,CAAC;EAAA,CACE,CACP;;EAED;EACA;EACA,IAAIrB,MAAM,EAAE;IACV,oBACE,IAAA9C,WAAA,CAAAM,IAAA,EAACtB,YAAA,CAAAuB,IAAI;MAACC,KAAK,EAAEC,MAAM,CAAC+J,UAAW;MAAA1J,QAAA,gBAC7B,IAAAd,WAAA,CAAAiB,GAAA,EAACjC,YAAA,CAAAuB,IAAI;QAACC,KAAK,EAAEC,MAAM,CAACgK,YAAa;QAAA,GAAKC,yBAAe;QAAA5J,QAAA,EAAGkG;MAAa,CAAO,CAAC,EAC5EU,IAAI;IAAA,CACD,CAAC;EAEX;EAEA,oBACE,IAAA1H,WAAA,CAAAiB,GAAA,EAAChC,SAAA,CAAA0L,OAAO;IACNlI,OAAO,EAAEA,OAAQ;IACjBC,OAAO,EAAEA,OAAQ;IACjBE,UAAU,EAAEA,UAAW;IACvBC,cAAc,EAAEA,cAAe;IAC/B+H,MAAM,EAAE;MACNC,gBAAgB,EAAE,IAAI;MACtBC,aAAa,EAAE9D;IACjB,CAAE;IACF+D,iBAAiB;IACjBC,WAAW,EAAC,aAAa;IACzBC,oBAAoB;IAAAnK,QAAA,EAEnB4G;EAAI,CACE,CAAC;AAEd;;AAEA;AACA;AACA;AACA;AACO,SAASwD,cAAcA,CAC5BC,KAA+D,GAAG,CAAC,CAAC,EACpE;EACA,oBAAO,IAAAnL,WAAA,CAAAiB,GAAA,EAACuB,WAAW;IAAA,GAAK2I,KAAK;IAAErI,MAAM;IAACL,OAAO;IAACC,OAAO,EAAEA,CAAA,KAAM,CAAC;EAAE,CAAE,CAAC;AACrE;AAEA,MAAMjC,MAAM,GAAG2K,uBAAU,CAACC,MAAM,CAAC;EAC/Bb,UAAU,EAAE;IACVc,IAAI,EAAE,CAAC;IACPC,SAAS,EAAE,CAAC;IACZ;IACA;IACAC,eAAe,EAAE;EACnB,CAAC;EACDf,YAAY,EAAE;IACZgB,iBAAiB,EAAE,EAAE;IACrBC,eAAe,EAAE,CAAC;IAClBC,iBAAiB,EAAE,CAAC;IACpBC,iBAAiB,EAAEC,qBAAW,CAACC,MAAM,CAACC,OAAO;IAC7C;IACAP,eAAe,EAAE;EACnB,CAAC;EACDpD,aAAa,EAAE;IACbkD,IAAI,EAAE;EACR,CAAC;EACDzB,WAAW,EAAE;IACXmC,aAAa,EAAE;EACjB,CAAC;EACDrE,eAAe,EAAE;IACf2D,IAAI,EAAE;EACR,CAAC;EACDvC,MAAM,EAAE;IACNkD,gBAAgB,EAAE,EAAE;IACpBC,YAAY,EAAE,CAAC;IACfC,OAAO,EAAE,EAAE;IACXC,YAAY,EAAE,CAAC;IACfC,WAAW,EAAE,CAAC;IACdC,WAAW,EAAEC,eAAK,CAACC,KAAK,CAACV,MAAM;IAC/BN,eAAe,EAAEe,eAAK,CAACC,KAAK,CAACC,OAAO;IACpCC,GAAG,EAAE;EACP,CAAC;EACD1D,UAAU,EAAE;IACVwD,KAAK,EAAED,eAAK,CAACC,KAAK,CAACG,aAAa;IAChCC,QAAQ,EAAE;EACZ,CAAC;EACDxD,SAAS,EAAE;IACToD,KAAK,EAAED,eAAK,CAACC,KAAK,CAACK,IAAI;IACvBD,QAAQ,EAAE,EAAE;IACZlB,eAAe,EAAE;EACnB,CAAC;EACDhL,QAAQ,EAAE;IACRuL,gBAAgB,EAAE,EAAE;IACpBa,SAAS,EAAE,CAAC;IACZX,OAAO,EAAE,EAAE;IACXC,YAAY,EAAE,CAAC;IACfZ,eAAe,EAAEe,eAAK,CAACC,KAAK,CAACC,OAAO;IACpCC,GAAG,EAAE;EACP,CAAC;EACD1L,UAAU,EAAE;IACVwL,KAAK,EAAED,eAAK,CAACC,KAAK,CAACO,YAAY;IAC/BH,QAAQ,EAAE,CAAC;IACXI,UAAU,EAAE,KAAK;IACjBC,aAAa,EAAE;EACjB,CAAC;EACD/L,SAAS,EAAE;IACTgM,aAAa,EAAE,KAAK;IACpBC,QAAQ,EAAE,MAAM;IAChBT,GAAG,EAAE;EACP,CAAC;EACDrL,QAAQ,EAAE;IACRmL,KAAK,EAAED,eAAK,CAACC,KAAK,CAACG,aAAa;IAChCC,QAAQ,EAAE,EAAE;IACZpB,eAAe,EAAEe,eAAK,CAACC,KAAK,CAACY,EAAE;IAC/BhB,YAAY,EAAE,GAAG;IACjBX,iBAAiB,EAAE,CAAC;IACpBC,eAAe,EAAE,CAAC;IAClB2B,QAAQ,EAAE;EACZ,CAAC;EACD3L,KAAK,EAAE;IACL4L,UAAU,EAAE,QAAQ;IACpBnB,OAAO,EAAE,EAAE;IACXO,GAAG,EAAE;EACP,CAAC;EACDa,UAAU,EAAE;IACVf,KAAK,EAAED,eAAK,CAACC,KAAK,CAACK,IAAI;IACvBD,QAAQ,EAAE,EAAE;IACZI,UAAU,EAAE;EACd,CAAC;EACDQ,SAAS,EAAE;IACThB,KAAK,EAAED,eAAK,CAACC,KAAK,CAACG,aAAa;IAChCC,QAAQ,EAAE,EAAE;IACZa,SAAS,EAAE,QAAQ;IACnBC,UAAU,EAAE;EACd;AACF,CAAC,CAAC","ignoreList":[]}
|
|
@@ -1 +1,85 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.ScanNotice = ScanNotice;
|
|
7
|
+
var _react = require("react");
|
|
8
|
+
var _reactNative = require("react-native");
|
|
9
|
+
var _sharedUi = require("@buoy-gg/shared-ui");
|
|
10
|
+
var _testIDs = require("../utils/testIDs");
|
|
11
|
+
var _jsxRuntime = require("react/jsx-runtime");
|
|
12
|
+
function ScanNotice({
|
|
13
|
+
status,
|
|
14
|
+
total,
|
|
15
|
+
onRetry
|
|
16
|
+
}) {
|
|
17
|
+
const [slow, setSlow] = (0, _react.useState)(false);
|
|
18
|
+
(0, _react.useEffect)(() => {
|
|
19
|
+
setSlow(false);
|
|
20
|
+
if (!status.graphFetchInFlight) return;
|
|
21
|
+
// Start locally for older snapshots that omit the device timestamp.
|
|
22
|
+
const elapsed = status.graphFetchStartedAt == null ? 0 : Math.max(0, Date.now() - status.graphFetchStartedAt);
|
|
23
|
+
const timer = setTimeout(() => setSlow(true), Math.max(0, 8_000 - elapsed));
|
|
24
|
+
return () => clearTimeout(timer);
|
|
25
|
+
}, [status.graphFetchInFlight, status.graphFetchStartedAt]);
|
|
26
|
+
const notices = [];
|
|
27
|
+
if (status.graphFetchInFlight) {
|
|
28
|
+
notices.push(`Finding assets… ${total} found so far.`);
|
|
29
|
+
if (slow) notices.push("Still finding assets. This is taking longer than usual.");
|
|
30
|
+
}
|
|
31
|
+
if (!status.registryAvailable) {
|
|
32
|
+
notices.push("The asset registry is unavailable in this environment.");
|
|
33
|
+
}
|
|
34
|
+
if (!status.graphFetchInFlight && !status.graphSupported && status.graphError) {
|
|
35
|
+
notices.push("Showing runtime-registered assets only. A development server is needed to find more assets and measure their sizes.");
|
|
36
|
+
}
|
|
37
|
+
const failed = !status.graphFetchInFlight && status.graphSupported && !!status.graphError;
|
|
38
|
+
if (failed) notices.push(`Couldn't finish finding assets. Showing ${total} assets found so far.`);
|
|
39
|
+
if (status.measuring && !status.graphFetchInFlight) notices.push("Checking asset sizes…");
|
|
40
|
+
if (notices.length === 0) return null;
|
|
41
|
+
return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
|
|
42
|
+
style: styles.notice,
|
|
43
|
+
testID: _testIDs.ASSETS_TEST_IDS.notice,
|
|
44
|
+
children: [status.graphFetchInFlight ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ActivityIndicator, {
|
|
45
|
+
size: "small",
|
|
46
|
+
color: _sharedUi.night.color.textSecondary,
|
|
47
|
+
accessibilityLabel: "Finding assets",
|
|
48
|
+
testID: _testIDs.ASSETS_TEST_IDS.discoverySpinner
|
|
49
|
+
}) : null, notices.map(n => /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
50
|
+
style: styles.noticeText,
|
|
51
|
+
testID: _testIDs.ASSETS_TEST_IDS.noticeText,
|
|
52
|
+
children: n
|
|
53
|
+
}, n)), failed ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableOpacity, {
|
|
54
|
+
accessibilityRole: "button",
|
|
55
|
+
onPress: onRetry,
|
|
56
|
+
testID: _testIDs.ASSETS_TEST_IDS.retry,
|
|
57
|
+
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
|
|
58
|
+
style: styles.retryText,
|
|
59
|
+
children: "Retry"
|
|
60
|
+
})
|
|
61
|
+
}) : null]
|
|
62
|
+
});
|
|
63
|
+
}
|
|
64
|
+
const styles = _reactNative.StyleSheet.create({
|
|
65
|
+
notice: {
|
|
66
|
+
marginHorizontal: 10,
|
|
67
|
+
marginBottom: 8,
|
|
68
|
+
padding: 10,
|
|
69
|
+
borderRadius: 8,
|
|
70
|
+
borderWidth: 1,
|
|
71
|
+
borderColor: _sharedUi.night.color.border,
|
|
72
|
+
backgroundColor: _sharedUi.night.color.surface,
|
|
73
|
+
gap: 4
|
|
74
|
+
},
|
|
75
|
+
noticeText: {
|
|
76
|
+
color: _sharedUi.night.color.textSecondary,
|
|
77
|
+
fontSize: 11
|
|
78
|
+
},
|
|
79
|
+
retryText: {
|
|
80
|
+
color: _sharedUi.night.color.text,
|
|
81
|
+
fontSize: 12,
|
|
82
|
+
paddingVertical: 6
|
|
83
|
+
}
|
|
84
|
+
});
|
|
85
|
+
//# sourceMappingURL=ScanNotice.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["_react","require","_reactNative","_sharedUi","_testIDs","_jsxRuntime","ScanNotice","status","total","onRetry","slow","setSlow","useState","useEffect","graphFetchInFlight","elapsed","graphFetchStartedAt","Math","max","Date","now","timer","setTimeout","clearTimeout","notices","push","registryAvailable","graphSupported","graphError","failed","measuring","length","jsxs","View","style","styles","notice","testID","ASSETS_TEST_IDS","children","jsx","ActivityIndicator","size","color","night","textSecondary","accessibilityLabel","discoverySpinner","map","n","Text","noticeText","TouchableOpacity","accessibilityRole","onPress","retry","retryText","StyleSheet","create","marginHorizontal","marginBottom","padding","borderRadius","borderWidth","borderColor","border","backgroundColor","surface","gap","fontSize","text","paddingVertical"],"sourceRoot":"../../../src","sources":["components/ScanNotice.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -1 +1,16 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getExpoPreviewImage = getExpoPreviewImage;
|
|
7
|
+
let ExpoImage = null;
|
|
8
|
+
try {
|
|
9
|
+
ExpoImage = require("expo-image").Image ?? null;
|
|
10
|
+
} catch {
|
|
11
|
+
// Optional peer: the package or its native module may be unavailable.
|
|
12
|
+
}
|
|
13
|
+
function getExpoPreviewImage() {
|
|
14
|
+
return ExpoImage;
|
|
15
|
+
}
|
|
16
|
+
//# sourceMappingURL=optionalExpoImage.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["ExpoImage","require","Image","getExpoPreviewImage"],"sourceRoot":"../../../src","sources":["components/optionalExpoImage.ts"],"mappings":";;;;;;AAWA,IAAIA,SAAiD,GAAG,IAAI;AAC5D,IAAI;EACFA,SAAS,GAAGC,OAAO,CAAC,YAAY,CAAC,CAACC,KAAK,IAAI,IAAI;AACjD,CAAC,CAAC,MAAM;EACN;AAAA;AAGK,SAASC,mBAAmBA,CAAA,EAA2C;EAC5E,OAAOH,SAAS;AAClB","ignoreList":[]}
|
|
@@ -1 +1,11 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.getExpoPreviewImage = getExpoPreviewImage;
|
|
7
|
+
/** Browser image elements already support SVG. */
|
|
8
|
+
function getExpoPreviewImage() {
|
|
9
|
+
return null;
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=optionalExpoImage.web.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["getExpoPreviewImage"],"sourceRoot":"../../../src","sources":["components/optionalExpoImage.web.ts"],"mappings":";;;;;;AAAA;AACO,SAASA,mBAAmBA,CAAA,EAAS;EAC1C,OAAO,IAAI;AACb","ignoreList":[]}
|
package/lib/commonjs/export.js
CHANGED
|
@@ -1 +1,62 @@
|
|
|
1
|
-
"use strict";
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.formatAssetMarkdown = formatAssetMarkdown;
|
|
7
|
+
exports.formatInventoryMarkdown = formatInventoryMarkdown;
|
|
8
|
+
var _format = require("./format");
|
|
9
|
+
var _assetStore = require("./store/assetStore");
|
|
10
|
+
/**
|
|
11
|
+
* Markdown reports for the shared ToolbarCopyButton — the paste-into-your-
|
|
12
|
+
* issue-tracker view of the inventory.
|
|
13
|
+
*/
|
|
14
|
+
|
|
15
|
+
function formatAssetMarkdown(record) {
|
|
16
|
+
const lines = [`# Asset: ${record.name}.${record.type}`, "", `- Kind: ${record.kind}`, `- Status: ${record.loaded ? "loaded at runtime" : "not observed in the runtime registry"}`];
|
|
17
|
+
if (record.kind === "image") lines.push(`- Dimensions: ${(0, _format.formatDimensions)(record)} (logical)`);
|
|
18
|
+
if (record.scales.length) lines.push(`- Scales: ${(0, _format.formatScales)(record.scales)}`);
|
|
19
|
+
if (record.sizeBytes != null && record.sizeSource === "measured") {
|
|
20
|
+
lines.push(`- Size (all variants): ${(0, _format.formatBytes)(record.sizeBytes)}`);
|
|
21
|
+
}
|
|
22
|
+
const estimate = (0, _assetStore.estDecodedBytes)(record);
|
|
23
|
+
if (estimate > 0) lines.push(`- Decoded memory: ~${(0, _format.formatBytes)(estimate)}`);
|
|
24
|
+
if (record.hash) lines.push(`- Hash: ${record.hash}`);
|
|
25
|
+
if (record.httpServerLocation) lines.push(`- Location: ${record.httpServerLocation}`);
|
|
26
|
+
if (record.fileSystemLocation) lines.push(`- Source dir: ${record.fileSystemLocation}`);
|
|
27
|
+
if (record.resolvedUri) lines.push(`- Resolved URI: ${record.resolvedUri}`);
|
|
28
|
+
return lines.join("\n");
|
|
29
|
+
}
|
|
30
|
+
function formatInventoryMarkdown(records, stats, insights, scanStatus, diff) {
|
|
31
|
+
const lines = ["# Asset inventory", "", `${stats.total} assets · ${stats.loaded} loaded · ${stats.neverLoaded} not observed` + (stats.totalBytes > 0 ? ` · ${(0, _format.formatBytes)(stats.totalBytes)} measured (${stats.measuredCount}/${stats.total})` : "")];
|
|
32
|
+
if (scanStatus.fontFamilies.length) {
|
|
33
|
+
lines.push(`Fonts loaded: ${scanStatus.fontFamilies.join(", ")}`);
|
|
34
|
+
}
|
|
35
|
+
if (!scanStatus.graphSupported) {
|
|
36
|
+
lines.push(scanStatus.graphError ? `_Metro bundle graph unavailable (${scanStatus.graphError}) — runtime-registered assets only._` : "_No Metro bundle graph — runtime-registered assets only (release build)._");
|
|
37
|
+
}
|
|
38
|
+
if (diff) {
|
|
39
|
+
const net = diff.netBytes != null ? `${diff.netBytes >= 0 ? "+" : "−"}${(0, _format.formatBytes)(Math.abs(diff.netBytes))} net` : "net size unknown";
|
|
40
|
+
lines.push("", `## Since baseline (${new Date(diff.baselineSavedAt).toISOString()})`, `- ${diff.added.length} added · ${diff.removed.length} removed · ${diff.grown.length} grew · ${net}`);
|
|
41
|
+
for (const gone of diff.removed.slice(0, 20)) {
|
|
42
|
+
lines.push(`- removed: ${gone.name}.${gone.type}`);
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
const findings = [];
|
|
46
|
+
if (insights.neverLoaded.length) findings.push(`- ${insights.neverLoaded.length} shipped but not observed`);
|
|
47
|
+
if (insights.duplicates.length) findings.push(`- ${insights.duplicates.length} duplicate content groups`);
|
|
48
|
+
if (insights.webpCandidates.length) findings.push(`- ${insights.webpCandidates.length} WebP conversion candidates`);
|
|
49
|
+
if (insights.scaleGaps.length) findings.push(`- ${insights.scaleGaps.length} scale-coverage gaps`);
|
|
50
|
+
if (insights.overDecode.length) findings.push(`- ${insights.overDecode.length} images decoding larger than 2× the screen`);
|
|
51
|
+
if (insights.heavyGifs.length) findings.push(`- ${insights.heavyGifs.length} heavy GIFs (convert to video/Lottie)`);
|
|
52
|
+
if (insights.heavyFonts.length) findings.push(`- ${insights.heavyFonts.length} heavy fonts (subset candidates)`);
|
|
53
|
+
if (insights.scaleAnomalies.length) findings.push(`- ${insights.scaleAnomalies.length} scale-variant anomalies (check exports)`);
|
|
54
|
+
if (findings.length) lines.push("", "## Findings", ...findings);
|
|
55
|
+
lines.push("", "## Assets (largest first)", "", "| Asset | Kind | Dimensions | Scales | Size | Loaded |", "| --- | --- | --- | --- | --- | --- |");
|
|
56
|
+
for (const r of records) {
|
|
57
|
+
const size = r.sizeBytes != null && r.sizeSource === "measured" ? (0, _format.formatBytes)(r.sizeBytes) : (0, _assetStore.estDecodedBytes)(r) > 0 ? `~${(0, _format.formatBytes)((0, _assetStore.estDecodedBytes)(r))}` : "—";
|
|
58
|
+
lines.push(`| ${r.name}.${r.type} | ${r.kind} | ${r.kind === "image" ? (0, _format.formatDimensions)(r) : "—"} | ${(0, _format.formatScales)(r.scales)} | ${size} | ${r.loaded ? "yes" : "NO"} |`);
|
|
59
|
+
}
|
|
60
|
+
return lines.join("\n");
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=export.js.map
|