@buoy-gg/images 7.0.3
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 +58 -0
- package/lib/commonjs/capture/actions.js +227 -0
- package/lib/commonjs/capture/actions.js.map +1 -0
- package/lib/commonjs/capture/install.js +41 -0
- package/lib/commonjs/capture/install.js.map +1 -0
- package/lib/commonjs/capture/installExpoImage.js +99 -0
- package/lib/commonjs/capture/installExpoImage.js.map +1 -0
- package/lib/commonjs/capture/installRnImage.js +128 -0
- package/lib/commonjs/capture/installRnImage.js.map +1 -0
- package/lib/commonjs/capture/overrides.js +286 -0
- package/lib/commonjs/capture/overrides.js.map +1 -0
- package/lib/commonjs/capture/savings.js +193 -0
- package/lib/commonjs/capture/savings.js.map +1 -0
- package/lib/commonjs/capture/shared.js +367 -0
- package/lib/commonjs/capture/shared.js.map +1 -0
- package/lib/commonjs/components/ImageDetail.js +444 -0
- package/lib/commonjs/components/ImageDetail.js.map +1 -0
- package/lib/commonjs/components/ImageDetailFooter.js +232 -0
- package/lib/commonjs/components/ImageDetailFooter.js.map +1 -0
- package/lib/commonjs/components/ImageRow.js +164 -0
- package/lib/commonjs/components/ImageRow.js.map +1 -0
- package/lib/commonjs/components/ImagesHeader.js +63 -0
- package/lib/commonjs/components/ImagesHeader.js.map +1 -0
- package/lib/commonjs/components/ImagesIcon.js +59 -0
- package/lib/commonjs/components/ImagesIcon.js.map +1 -0
- package/lib/commonjs/components/ImagesListFooter.js +194 -0
- package/lib/commonjs/components/ImagesListFooter.js.map +1 -0
- package/lib/commonjs/components/ImagesModal.js +173 -0
- package/lib/commonjs/components/ImagesModal.js.map +1 -0
- package/lib/commonjs/components/ImagesRoot.js +24 -0
- package/lib/commonjs/components/ImagesRoot.js.map +1 -0
- package/lib/commonjs/components/InsightsBar.js +59 -0
- package/lib/commonjs/components/InsightsBar.js.map +1 -0
- package/lib/commonjs/export.js +81 -0
- package/lib/commonjs/export.js.map +1 -0
- package/lib/commonjs/format.js +117 -0
- package/lib/commonjs/format.js.map +1 -0
- package/lib/commonjs/hooks/useImageRecords.js +20 -0
- package/lib/commonjs/hooks/useImageRecords.js.map +1 -0
- package/lib/commonjs/index.js +236 -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/register.js +19 -0
- package/lib/commonjs/register.js.map +1 -0
- package/lib/commonjs/state.js +54 -0
- package/lib/commonjs/state.js.map +1 -0
- package/lib/commonjs/store/imageEventStore.js +160 -0
- package/lib/commonjs/store/imageEventStore.js.map +1 -0
- package/lib/commonjs/store/insights.js +76 -0
- package/lib/commonjs/store/insights.js.map +1 -0
- package/lib/commonjs/sync/imagesSyncAdapter.js +315 -0
- package/lib/commonjs/sync/imagesSyncAdapter.js.map +1 -0
- package/lib/commonjs/types.js +2 -0
- package/lib/commonjs/types.js.map +1 -0
- package/lib/module/capture/actions.js +214 -0
- package/lib/module/capture/actions.js.map +1 -0
- package/lib/module/capture/install.js +36 -0
- package/lib/module/capture/install.js.map +1 -0
- package/lib/module/capture/installExpoImage.js +94 -0
- package/lib/module/capture/installExpoImage.js.map +1 -0
- package/lib/module/capture/installRnImage.js +122 -0
- package/lib/module/capture/installRnImage.js.map +1 -0
- package/lib/module/capture/overrides.js +269 -0
- package/lib/module/capture/overrides.js.map +1 -0
- package/lib/module/capture/savings.js +189 -0
- package/lib/module/capture/savings.js.map +1 -0
- package/lib/module/capture/shared.js +359 -0
- package/lib/module/capture/shared.js.map +1 -0
- package/lib/module/components/ImageDetail.js +440 -0
- package/lib/module/components/ImageDetail.js.map +1 -0
- package/lib/module/components/ImageDetailFooter.js +228 -0
- package/lib/module/components/ImageDetailFooter.js.map +1 -0
- package/lib/module/components/ImageRow.js +160 -0
- package/lib/module/components/ImageRow.js.map +1 -0
- package/lib/module/components/ImagesHeader.js +59 -0
- package/lib/module/components/ImagesHeader.js.map +1 -0
- package/lib/module/components/ImagesIcon.js +55 -0
- package/lib/module/components/ImagesIcon.js.map +1 -0
- package/lib/module/components/ImagesListFooter.js +190 -0
- package/lib/module/components/ImagesListFooter.js.map +1 -0
- package/lib/module/components/ImagesModal.js +169 -0
- package/lib/module/components/ImagesModal.js.map +1 -0
- package/lib/module/components/ImagesRoot.js +20 -0
- package/lib/module/components/ImagesRoot.js.map +1 -0
- package/lib/module/components/InsightsBar.js +55 -0
- package/lib/module/components/InsightsBar.js.map +1 -0
- package/lib/module/export.js +76 -0
- package/lib/module/export.js.map +1 -0
- package/lib/module/format.js +108 -0
- package/lib/module/format.js.map +1 -0
- package/lib/module/hooks/useImageRecords.js +16 -0
- package/lib/module/hooks/useImageRecords.js.map +1 -0
- package/lib/module/index.js +73 -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/register.js +19 -0
- package/lib/module/register.js.map +1 -0
- package/lib/module/state.js +50 -0
- package/lib/module/state.js.map +1 -0
- package/lib/module/store/imageEventStore.js +146 -0
- package/lib/module/store/imageEventStore.js.map +1 -0
- package/lib/module/store/insights.js +71 -0
- package/lib/module/store/insights.js.map +1 -0
- package/lib/module/sync/imagesSyncAdapter.js +311 -0
- package/lib/module/sync/imagesSyncAdapter.js.map +1 -0
- package/lib/module/types.js +2 -0
- package/lib/module/types.js.map +1 -0
- package/lib/typescript/capture/actions.d.ts +49 -0
- package/lib/typescript/capture/actions.d.ts.map +1 -0
- package/lib/typescript/capture/install.d.ts +15 -0
- package/lib/typescript/capture/install.d.ts.map +1 -0
- package/lib/typescript/capture/installExpoImage.d.ts +23 -0
- package/lib/typescript/capture/installExpoImage.d.ts.map +1 -0
- package/lib/typescript/capture/installRnImage.d.ts +24 -0
- package/lib/typescript/capture/installRnImage.d.ts.map +1 -0
- package/lib/typescript/capture/overrides.d.ts +83 -0
- package/lib/typescript/capture/overrides.d.ts.map +1 -0
- package/lib/typescript/capture/savings.d.ts +37 -0
- package/lib/typescript/capture/savings.d.ts.map +1 -0
- package/lib/typescript/capture/shared.d.ts +61 -0
- package/lib/typescript/capture/shared.d.ts.map +1 -0
- package/lib/typescript/components/ImageDetail.d.ts +13 -0
- package/lib/typescript/components/ImageDetail.d.ts.map +1 -0
- package/lib/typescript/components/ImageDetailFooter.d.ts +19 -0
- package/lib/typescript/components/ImageDetailFooter.d.ts.map +1 -0
- package/lib/typescript/components/ImageRow.d.ts +15 -0
- package/lib/typescript/components/ImageRow.d.ts.map +1 -0
- package/lib/typescript/components/ImagesHeader.d.ts +25 -0
- package/lib/typescript/components/ImagesHeader.d.ts.map +1 -0
- package/lib/typescript/components/ImagesIcon.d.ts +13 -0
- package/lib/typescript/components/ImagesIcon.d.ts.map +1 -0
- package/lib/typescript/components/ImagesListFooter.d.ts +8 -0
- package/lib/typescript/components/ImagesListFooter.d.ts.map +1 -0
- package/lib/typescript/components/ImagesModal.d.ts +17 -0
- package/lib/typescript/components/ImagesModal.d.ts.map +1 -0
- package/lib/typescript/components/ImagesRoot.d.ts +11 -0
- package/lib/typescript/components/ImagesRoot.d.ts.map +1 -0
- package/lib/typescript/components/InsightsBar.d.ts +13 -0
- package/lib/typescript/components/InsightsBar.d.ts.map +1 -0
- package/lib/typescript/export.d.ts +12 -0
- package/lib/typescript/export.d.ts.map +1 -0
- package/lib/typescript/format.d.ts +26 -0
- package/lib/typescript/format.d.ts.map +1 -0
- package/lib/typescript/hooks/useImageRecords.d.ts +11 -0
- package/lib/typescript/hooks/useImageRecords.d.ts.map +1 -0
- package/lib/typescript/index.d.ts +33 -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/register.d.ts +15 -0
- package/lib/typescript/register.d.ts.map +1 -0
- package/lib/typescript/state.d.ts +54 -0
- package/lib/typescript/state.d.ts.map +1 -0
- package/lib/typescript/store/imageEventStore.d.ts +34 -0
- package/lib/typescript/store/imageEventStore.d.ts.map +1 -0
- package/lib/typescript/store/insights.d.ts +11 -0
- package/lib/typescript/store/insights.d.ts.map +1 -0
- package/lib/typescript/sync/imagesSyncAdapter.d.ts +205 -0
- package/lib/typescript/sync/imagesSyncAdapter.d.ts.map +1 -0
- package/lib/typescript/types.d.ts +121 -0
- package/lib/typescript/types.d.ts.map +1 -0
- package/package.json +67 -0
- package/register.d.ts +1 -0
- package/register.js +15 -0
- package/src/capture/actions.ts +206 -0
- package/src/capture/install.ts +36 -0
- package/src/capture/installExpoImage.ts +115 -0
- package/src/capture/installRnImage.tsx +133 -0
- package/src/capture/overrides.ts +282 -0
- package/src/capture/savings.ts +193 -0
- package/src/capture/shared.ts +387 -0
- package/src/components/ImageDetail.tsx +456 -0
- package/src/components/ImageDetailFooter.tsx +270 -0
- package/src/components/ImageRow.tsx +148 -0
- package/src/components/ImagesHeader.tsx +77 -0
- package/src/components/ImagesIcon.tsx +66 -0
- package/src/components/ImagesListFooter.tsx +193 -0
- package/src/components/ImagesModal.tsx +195 -0
- package/src/components/ImagesRoot.tsx +18 -0
- package/src/components/InsightsBar.tsx +51 -0
- package/src/export.ts +100 -0
- package/src/format.ts +85 -0
- package/src/hooks/useImageRecords.ts +24 -0
- package/src/index.tsx +108 -0
- package/src/preset.tsx +35 -0
- package/src/register.ts +17 -0
- package/src/state.ts +88 -0
- package/src/store/imageEventStore.ts +162 -0
- package/src/store/insights.ts +66 -0
- package/src/sync/imagesSyncAdapter.ts +261 -0
- package/src/types.ts +111 -0
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* ImageDetailFooter — bottom navbar for the detail view: previous/next
|
|
5
|
+
* stepping through the captured list at the edges, per-image actions in the
|
|
6
|
+
* middle (hard reload / retry), with inline action feedback. Styling matches
|
|
7
|
+
* shared-ui's EventStepperFooter so it reads like the rest of Buoy.
|
|
8
|
+
*
|
|
9
|
+
* Mount with key={record.id} so action feedback resets when stepping.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import { useState } from "react";
|
|
13
|
+
import { StyleSheet, Text, TouchableOpacity, View } from "react-native";
|
|
14
|
+
import { ChevronLeft, ChevronRight, RefreshCw, macOSColors, useSafeAreaInsets } from "@buoy-gg/shared-ui";
|
|
15
|
+
import { hardReloadRecord, retryRecord } from "../capture/actions";
|
|
16
|
+
import { clearOverride, flashRecord, setOverride } from "../capture/overrides";
|
|
17
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
18
|
+
export function ImageDetailFooter({
|
|
19
|
+
record,
|
|
20
|
+
hasPrevious,
|
|
21
|
+
hasNext,
|
|
22
|
+
onPrevious,
|
|
23
|
+
onNext
|
|
24
|
+
}) {
|
|
25
|
+
const insets = useSafeAreaInsets();
|
|
26
|
+
const [message, setMessage] = useState(null);
|
|
27
|
+
const runAction = action => {
|
|
28
|
+
setMessage("…");
|
|
29
|
+
action().then(result => setMessage(result.message)).catch(error => setMessage(String(error?.message ?? error)));
|
|
30
|
+
};
|
|
31
|
+
const actionsDisabled = !record.mounted;
|
|
32
|
+
const overrideActive = record.overrideLabel != null;
|
|
33
|
+
const simulate = (source, label) => {
|
|
34
|
+
setOverride(record.id, {
|
|
35
|
+
source,
|
|
36
|
+
label
|
|
37
|
+
});
|
|
38
|
+
setMessage(`${label} — Restore to undo`);
|
|
39
|
+
};
|
|
40
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
41
|
+
style: [styles.footer, {
|
|
42
|
+
paddingBottom: 12 + insets.bottom
|
|
43
|
+
}],
|
|
44
|
+
children: [message ? /*#__PURE__*/_jsx(Text, {
|
|
45
|
+
style: styles.message,
|
|
46
|
+
numberOfLines: 1,
|
|
47
|
+
children: message
|
|
48
|
+
}) : actionsDisabled ? /*#__PURE__*/_jsx(Text, {
|
|
49
|
+
style: styles.hint,
|
|
50
|
+
numberOfLines: 1,
|
|
51
|
+
children: "Instance unmounted \u2014 reload actions need the image on screen."
|
|
52
|
+
}) : null, /*#__PURE__*/_jsxs(View, {
|
|
53
|
+
style: styles.row,
|
|
54
|
+
children: [/*#__PURE__*/_jsx(TouchableOpacity, {
|
|
55
|
+
onPress: onPrevious,
|
|
56
|
+
disabled: !hasPrevious,
|
|
57
|
+
style: [styles.navButton, !hasPrevious && styles.disabled],
|
|
58
|
+
activeOpacity: 0.7,
|
|
59
|
+
accessibilityLabel: "Previous image",
|
|
60
|
+
children: /*#__PURE__*/_jsx(ChevronLeft, {
|
|
61
|
+
size: 20,
|
|
62
|
+
color: hasPrevious ? macOSColors.text.primary : macOSColors.text.muted
|
|
63
|
+
})
|
|
64
|
+
}), /*#__PURE__*/_jsxs(TouchableOpacity, {
|
|
65
|
+
onPress: () => runAction(() => hardReloadRecord(record)),
|
|
66
|
+
disabled: actionsDisabled,
|
|
67
|
+
style: [styles.actionButton, actionsDisabled && styles.disabled],
|
|
68
|
+
activeOpacity: 0.7,
|
|
69
|
+
children: [/*#__PURE__*/_jsx(RefreshCw, {
|
|
70
|
+
size: 13,
|
|
71
|
+
color: actionsDisabled ? macOSColors.text.muted : macOSColors.semantic.info
|
|
72
|
+
}), /*#__PURE__*/_jsx(Text, {
|
|
73
|
+
style: [styles.actionText, actionsDisabled && styles.actionTextDisabled],
|
|
74
|
+
children: "Hard reload"
|
|
75
|
+
})]
|
|
76
|
+
}), /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
77
|
+
onPress: () => runAction(() => retryRecord(record)),
|
|
78
|
+
disabled: actionsDisabled,
|
|
79
|
+
style: [styles.actionButton, actionsDisabled && styles.disabled],
|
|
80
|
+
activeOpacity: 0.7,
|
|
81
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
82
|
+
style: [styles.actionText, actionsDisabled && styles.actionTextDisabled],
|
|
83
|
+
children: record.status === "error" ? "Retry" : "Reload"
|
|
84
|
+
})
|
|
85
|
+
}), /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
86
|
+
onPress: onNext,
|
|
87
|
+
disabled: !hasNext,
|
|
88
|
+
style: [styles.navButton, !hasNext && styles.disabled],
|
|
89
|
+
activeOpacity: 0.7,
|
|
90
|
+
accessibilityLabel: "Next image",
|
|
91
|
+
children: /*#__PURE__*/_jsx(ChevronRight, {
|
|
92
|
+
size: 20,
|
|
93
|
+
color: hasNext ? macOSColors.text.primary : macOSColors.text.muted
|
|
94
|
+
})
|
|
95
|
+
})]
|
|
96
|
+
}), /*#__PURE__*/_jsxs(View, {
|
|
97
|
+
style: styles.row,
|
|
98
|
+
children: [/*#__PURE__*/_jsx(SimButton, {
|
|
99
|
+
label: "Error",
|
|
100
|
+
disabled: actionsDisabled,
|
|
101
|
+
onPress: () => simulate({
|
|
102
|
+
type: "error"
|
|
103
|
+
}, "Forced error")
|
|
104
|
+
}), /*#__PURE__*/_jsx(SimButton, {
|
|
105
|
+
label: "Loading",
|
|
106
|
+
disabled: actionsDisabled,
|
|
107
|
+
onPress: () => simulate({
|
|
108
|
+
type: "hang"
|
|
109
|
+
}, "Forced loading")
|
|
110
|
+
}), /*#__PURE__*/_jsx(SimButton, {
|
|
111
|
+
label: "Blank",
|
|
112
|
+
disabled: actionsDisabled,
|
|
113
|
+
onPress: () => simulate({
|
|
114
|
+
type: "blank"
|
|
115
|
+
}, "Blanked")
|
|
116
|
+
}), /*#__PURE__*/_jsx(SimButton, {
|
|
117
|
+
label: "Find",
|
|
118
|
+
disabled: actionsDisabled,
|
|
119
|
+
onPress: () => {
|
|
120
|
+
flashRecord(record.id);
|
|
121
|
+
setMessage("Flashing a red border on the image (2.5s)");
|
|
122
|
+
}
|
|
123
|
+
}), /*#__PURE__*/_jsx(SimButton, {
|
|
124
|
+
label: "Restore",
|
|
125
|
+
accent: true,
|
|
126
|
+
disabled: !overrideActive,
|
|
127
|
+
onPress: () => {
|
|
128
|
+
clearOverride(record.id);
|
|
129
|
+
setMessage("Override removed — original source restored");
|
|
130
|
+
}
|
|
131
|
+
})]
|
|
132
|
+
})]
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
function SimButton({
|
|
136
|
+
label,
|
|
137
|
+
onPress,
|
|
138
|
+
disabled,
|
|
139
|
+
accent
|
|
140
|
+
}) {
|
|
141
|
+
return /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
142
|
+
onPress: onPress,
|
|
143
|
+
disabled: disabled,
|
|
144
|
+
style: [styles.simButton, disabled && styles.disabled],
|
|
145
|
+
activeOpacity: 0.7,
|
|
146
|
+
children: /*#__PURE__*/_jsx(Text, {
|
|
147
|
+
style: [styles.simText, accent && !disabled && styles.simTextAccent, disabled && styles.actionTextDisabled],
|
|
148
|
+
children: label
|
|
149
|
+
})
|
|
150
|
+
});
|
|
151
|
+
}
|
|
152
|
+
const styles = StyleSheet.create({
|
|
153
|
+
footer: {
|
|
154
|
+
paddingHorizontal: 12,
|
|
155
|
+
paddingTop: 10,
|
|
156
|
+
backgroundColor: macOSColors.background.base,
|
|
157
|
+
borderTopWidth: 1,
|
|
158
|
+
borderTopColor: macOSColors.border.default,
|
|
159
|
+
gap: 8
|
|
160
|
+
},
|
|
161
|
+
row: {
|
|
162
|
+
flexDirection: "row",
|
|
163
|
+
alignItems: "center",
|
|
164
|
+
gap: 8
|
|
165
|
+
},
|
|
166
|
+
navButton: {
|
|
167
|
+
paddingHorizontal: 10,
|
|
168
|
+
paddingVertical: 8,
|
|
169
|
+
borderRadius: 6,
|
|
170
|
+
backgroundColor: macOSColors.background.card,
|
|
171
|
+
alignItems: "center",
|
|
172
|
+
justifyContent: "center"
|
|
173
|
+
},
|
|
174
|
+
actionButton: {
|
|
175
|
+
flex: 1,
|
|
176
|
+
flexDirection: "row",
|
|
177
|
+
alignItems: "center",
|
|
178
|
+
justifyContent: "center",
|
|
179
|
+
gap: 6,
|
|
180
|
+
paddingVertical: 8,
|
|
181
|
+
borderRadius: 6,
|
|
182
|
+
backgroundColor: macOSColors.background.card,
|
|
183
|
+
borderWidth: StyleSheet.hairlineWidth,
|
|
184
|
+
borderColor: macOSColors.border.default
|
|
185
|
+
},
|
|
186
|
+
actionText: {
|
|
187
|
+
fontSize: 11,
|
|
188
|
+
fontWeight: "600",
|
|
189
|
+
color: macOSColors.text.primary,
|
|
190
|
+
fontFamily: "monospace",
|
|
191
|
+
textTransform: "uppercase"
|
|
192
|
+
},
|
|
193
|
+
actionTextDisabled: {
|
|
194
|
+
color: macOSColors.text.muted
|
|
195
|
+
},
|
|
196
|
+
disabled: {
|
|
197
|
+
opacity: 0.4
|
|
198
|
+
},
|
|
199
|
+
simButton: {
|
|
200
|
+
flex: 1,
|
|
201
|
+
alignItems: "center",
|
|
202
|
+
paddingVertical: 7,
|
|
203
|
+
borderRadius: 6,
|
|
204
|
+
backgroundColor: macOSColors.background.card,
|
|
205
|
+
borderWidth: StyleSheet.hairlineWidth,
|
|
206
|
+
borderColor: macOSColors.border.default
|
|
207
|
+
},
|
|
208
|
+
simText: {
|
|
209
|
+
fontSize: 10,
|
|
210
|
+
fontWeight: "600",
|
|
211
|
+
color: macOSColors.text.secondary,
|
|
212
|
+
fontFamily: "monospace",
|
|
213
|
+
textTransform: "uppercase"
|
|
214
|
+
},
|
|
215
|
+
simTextAccent: {
|
|
216
|
+
color: macOSColors.semantic.warning
|
|
217
|
+
},
|
|
218
|
+
message: {
|
|
219
|
+
color: macOSColors.semantic.info,
|
|
220
|
+
fontSize: 10,
|
|
221
|
+
fontFamily: "monospace"
|
|
222
|
+
},
|
|
223
|
+
hint: {
|
|
224
|
+
color: macOSColors.text.muted,
|
|
225
|
+
fontSize: 10
|
|
226
|
+
}
|
|
227
|
+
});
|
|
228
|
+
//# sourceMappingURL=ImageDetailFooter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["useState","StyleSheet","Text","TouchableOpacity","View","ChevronLeft","ChevronRight","RefreshCw","macOSColors","useSafeAreaInsets","hardReloadRecord","retryRecord","clearOverride","flashRecord","setOverride","jsx","_jsx","jsxs","_jsxs","ImageDetailFooter","record","hasPrevious","hasNext","onPrevious","onNext","insets","message","setMessage","runAction","action","then","result","catch","error","String","actionsDisabled","mounted","overrideActive","overrideLabel","simulate","source","label","id","style","styles","footer","paddingBottom","bottom","children","numberOfLines","hint","row","onPress","disabled","navButton","activeOpacity","accessibilityLabel","size","color","text","primary","muted","actionButton","semantic","info","actionText","actionTextDisabled","status","SimButton","type","accent","simButton","simText","simTextAccent","create","paddingHorizontal","paddingTop","backgroundColor","background","base","borderTopWidth","borderTopColor","border","default","gap","flexDirection","alignItems","paddingVertical","borderRadius","card","justifyContent","flex","borderWidth","hairlineWidth","borderColor","fontSize","fontWeight","fontFamily","textTransform","opacity","secondary","warning"],"sourceRoot":"../../../src","sources":["components/ImageDetailFooter.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,160 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* ImageRow — one captured image in the list: thumbnail, filename, library +
|
|
5
|
+
* cache badges, load time, and the size verdict.
|
|
6
|
+
*
|
|
7
|
+
* Thumbnails carry the buoy-internal testID so the capture layer skips them —
|
|
8
|
+
* the tool must never appear in its own registry.
|
|
9
|
+
*/
|
|
10
|
+
|
|
11
|
+
import { Image, StyleSheet, Text, TouchableOpacity, View } from "react-native";
|
|
12
|
+
import { macOSColors } from "@buoy-gg/shared-ui";
|
|
13
|
+
import { cacheBadge, formatMs, sizeVerdict, statusColor, uriTail } from "../format";
|
|
14
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
15
|
+
export function ImageRow({
|
|
16
|
+
record,
|
|
17
|
+
onPress
|
|
18
|
+
}) {
|
|
19
|
+
const verdict = sizeVerdict(record);
|
|
20
|
+
const cache = cacheBadge(record);
|
|
21
|
+
const showThumb = record.sourceKind === "network" || record.sourceKind === "asset" || record.sourceKind === "file";
|
|
22
|
+
return /*#__PURE__*/_jsxs(TouchableOpacity, {
|
|
23
|
+
style: styles.row,
|
|
24
|
+
testID: `buoy-image-row-${record.id}`,
|
|
25
|
+
onPress: () => onPress(record.id),
|
|
26
|
+
children: [/*#__PURE__*/_jsxs(View, {
|
|
27
|
+
style: styles.thumbBox,
|
|
28
|
+
children: [showThumb && record.uri ? /*#__PURE__*/_jsx(Image, {
|
|
29
|
+
testID: "buoy-internal-images-thumb",
|
|
30
|
+
source: {
|
|
31
|
+
uri: record.uri
|
|
32
|
+
},
|
|
33
|
+
style: styles.thumb,
|
|
34
|
+
resizeMode: "cover"
|
|
35
|
+
}) : /*#__PURE__*/_jsx(Text, {
|
|
36
|
+
style: styles.thumbFallback,
|
|
37
|
+
children: "?"
|
|
38
|
+
}), /*#__PURE__*/_jsx(View, {
|
|
39
|
+
style: [styles.statusDot, {
|
|
40
|
+
backgroundColor: statusColor(record)
|
|
41
|
+
}]
|
|
42
|
+
})]
|
|
43
|
+
}), /*#__PURE__*/_jsxs(View, {
|
|
44
|
+
style: styles.main,
|
|
45
|
+
children: [/*#__PURE__*/_jsx(Text, {
|
|
46
|
+
style: styles.name,
|
|
47
|
+
numberOfLines: 1,
|
|
48
|
+
children: uriTail(record.uri)
|
|
49
|
+
}), /*#__PURE__*/_jsxs(View, {
|
|
50
|
+
style: styles.metaRow,
|
|
51
|
+
children: [/*#__PURE__*/_jsx(Text, {
|
|
52
|
+
style: [styles.badge, {
|
|
53
|
+
color: macOSColors.text.muted
|
|
54
|
+
}],
|
|
55
|
+
children: record.lib === "expo" ? "EXPO" : "RN"
|
|
56
|
+
}), /*#__PURE__*/_jsx(Text, {
|
|
57
|
+
style: [styles.badge, {
|
|
58
|
+
color: cache.color
|
|
59
|
+
}],
|
|
60
|
+
children: cache.label
|
|
61
|
+
}), record.overrideLabel ? /*#__PURE__*/_jsx(Text, {
|
|
62
|
+
style: [styles.badge, {
|
|
63
|
+
color: macOSColors.semantic.warning
|
|
64
|
+
}],
|
|
65
|
+
children: "SIM"
|
|
66
|
+
}) : null, /*#__PURE__*/_jsx(Text, {
|
|
67
|
+
style: styles.meta,
|
|
68
|
+
children: formatMs(record.durationMs)
|
|
69
|
+
}), record.intrinsic ? /*#__PURE__*/_jsxs(Text, {
|
|
70
|
+
style: styles.meta,
|
|
71
|
+
children: [record.intrinsic.width, "\xD7", record.intrinsic.height]
|
|
72
|
+
}) : null]
|
|
73
|
+
})]
|
|
74
|
+
}), /*#__PURE__*/_jsx(View, {
|
|
75
|
+
style: styles.right,
|
|
76
|
+
children: record.status === "error" ? /*#__PURE__*/_jsx(Text, {
|
|
77
|
+
style: [styles.verdict, {
|
|
78
|
+
color: macOSColors.semantic.error
|
|
79
|
+
}],
|
|
80
|
+
children: "FAILED"
|
|
81
|
+
}) : verdict.label ? /*#__PURE__*/_jsx(Text, {
|
|
82
|
+
style: [styles.verdict, {
|
|
83
|
+
color: verdict.color
|
|
84
|
+
}],
|
|
85
|
+
children: verdict.label
|
|
86
|
+
}) : null
|
|
87
|
+
})]
|
|
88
|
+
});
|
|
89
|
+
}
|
|
90
|
+
const styles = StyleSheet.create({
|
|
91
|
+
row: {
|
|
92
|
+
flexDirection: "row",
|
|
93
|
+
alignItems: "center",
|
|
94
|
+
paddingHorizontal: 12,
|
|
95
|
+
paddingVertical: 8,
|
|
96
|
+
borderBottomWidth: StyleSheet.hairlineWidth,
|
|
97
|
+
borderBottomColor: macOSColors.border.default,
|
|
98
|
+
gap: 10
|
|
99
|
+
},
|
|
100
|
+
thumbBox: {
|
|
101
|
+
width: 40,
|
|
102
|
+
height: 40,
|
|
103
|
+
borderRadius: 6,
|
|
104
|
+
backgroundColor: macOSColors.background.input,
|
|
105
|
+
alignItems: "center",
|
|
106
|
+
justifyContent: "center",
|
|
107
|
+
overflow: "hidden"
|
|
108
|
+
},
|
|
109
|
+
thumb: {
|
|
110
|
+
width: 40,
|
|
111
|
+
height: 40
|
|
112
|
+
},
|
|
113
|
+
thumbFallback: {
|
|
114
|
+
color: macOSColors.text.muted,
|
|
115
|
+
fontSize: 16,
|
|
116
|
+
fontWeight: "700"
|
|
117
|
+
},
|
|
118
|
+
statusDot: {
|
|
119
|
+
position: "absolute",
|
|
120
|
+
right: 2,
|
|
121
|
+
bottom: 2,
|
|
122
|
+
width: 8,
|
|
123
|
+
height: 8,
|
|
124
|
+
borderRadius: 4,
|
|
125
|
+
borderWidth: 1,
|
|
126
|
+
borderColor: macOSColors.background.base
|
|
127
|
+
},
|
|
128
|
+
main: {
|
|
129
|
+
flex: 1,
|
|
130
|
+
gap: 2
|
|
131
|
+
},
|
|
132
|
+
name: {
|
|
133
|
+
color: macOSColors.text.primary,
|
|
134
|
+
fontSize: 12,
|
|
135
|
+
fontWeight: "600"
|
|
136
|
+
},
|
|
137
|
+
metaRow: {
|
|
138
|
+
flexDirection: "row",
|
|
139
|
+
alignItems: "center",
|
|
140
|
+
gap: 8
|
|
141
|
+
},
|
|
142
|
+
badge: {
|
|
143
|
+
fontSize: 9,
|
|
144
|
+
fontWeight: "700",
|
|
145
|
+
letterSpacing: 0.5
|
|
146
|
+
},
|
|
147
|
+
meta: {
|
|
148
|
+
color: macOSColors.text.secondary,
|
|
149
|
+
fontSize: 10,
|
|
150
|
+
fontVariant: ["tabular-nums"]
|
|
151
|
+
},
|
|
152
|
+
right: {
|
|
153
|
+
alignItems: "flex-end"
|
|
154
|
+
},
|
|
155
|
+
verdict: {
|
|
156
|
+
fontSize: 10,
|
|
157
|
+
fontWeight: "700"
|
|
158
|
+
}
|
|
159
|
+
});
|
|
160
|
+
//# sourceMappingURL=ImageRow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["Image","StyleSheet","Text","TouchableOpacity","View","macOSColors","cacheBadge","formatMs","sizeVerdict","statusColor","uriTail","jsx","_jsx","jsxs","_jsxs","ImageRow","record","onPress","verdict","cache","showThumb","sourceKind","style","styles","row","testID","id","children","thumbBox","uri","source","thumb","resizeMode","thumbFallback","statusDot","backgroundColor","main","name","numberOfLines","metaRow","badge","color","text","muted","lib","label","overrideLabel","semantic","warning","meta","durationMs","intrinsic","width","height","right","status","error","create","flexDirection","alignItems","paddingHorizontal","paddingVertical","borderBottomWidth","hairlineWidth","borderBottomColor","border","default","gap","borderRadius","background","input","justifyContent","overflow","fontSize","fontWeight","position","bottom","borderWidth","borderColor","base","flex","primary","letterSpacing","secondary","fontVariant"],"sourceRoot":"../../../src","sources":["components/ImageRow.tsx"],"mappings":"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","ignoreList":[]}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* ImagesHeader — shared ModalHeader wiring for the Images tool, matching the
|
|
5
|
+
* Console/Network header pattern. List mode shows aggregate stats, the shared
|
|
6
|
+
* ToolbarCopyButton (full registry report) and the shared ToolbarClearButton;
|
|
7
|
+
* detail mode shows back navigation plus the copy button for that record's
|
|
8
|
+
* report. Copy behavior (Pro gating, hint banner, success/error feedback)
|
|
9
|
+
* comes from shared-ui — identical to every other tool.
|
|
10
|
+
*/
|
|
11
|
+
|
|
12
|
+
import { ModalHeader, ToolbarClearButton, ToolbarCopyButton } from "@buoy-gg/shared-ui";
|
|
13
|
+
import { formatBytes } from "../format";
|
|
14
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
15
|
+
export function ImagesHeader({
|
|
16
|
+
stats,
|
|
17
|
+
detailOpen,
|
|
18
|
+
detailIndex = -1,
|
|
19
|
+
detailTotal = 0,
|
|
20
|
+
onCloseDetail,
|
|
21
|
+
onClear,
|
|
22
|
+
getReport,
|
|
23
|
+
onBack
|
|
24
|
+
}) {
|
|
25
|
+
if (detailOpen) {
|
|
26
|
+
const counter = detailIndex >= 0 && detailTotal > 0 ? `${detailIndex + 1} of ${detailTotal}` : undefined;
|
|
27
|
+
return /*#__PURE__*/_jsxs(ModalHeader, {
|
|
28
|
+
children: [/*#__PURE__*/_jsx(ModalHeader.Navigation, {
|
|
29
|
+
onBack: onCloseDetail
|
|
30
|
+
}), /*#__PURE__*/_jsx(ModalHeader.Content, {
|
|
31
|
+
title: "Image detail",
|
|
32
|
+
subtitle: counter
|
|
33
|
+
}), /*#__PURE__*/_jsx(ModalHeader.Actions, {
|
|
34
|
+
children: /*#__PURE__*/_jsx(ToolbarCopyButton, {
|
|
35
|
+
value: getReport
|
|
36
|
+
})
|
|
37
|
+
})]
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
const subtitleParts = [`${stats.total} images`, `${stats.errors} failed`, `≈${formatBytes(stats.estDecodedBytes)} decoded`];
|
|
41
|
+
if (stats.estWastedBytes > 0) {
|
|
42
|
+
subtitleParts.push(`${formatBytes(stats.estWastedBytes)} wasted`);
|
|
43
|
+
}
|
|
44
|
+
return /*#__PURE__*/_jsxs(ModalHeader, {
|
|
45
|
+
children: [onBack ? /*#__PURE__*/_jsx(ModalHeader.Navigation, {
|
|
46
|
+
onBack: onBack
|
|
47
|
+
}) : null, /*#__PURE__*/_jsx(ModalHeader.Content, {
|
|
48
|
+
title: "Images",
|
|
49
|
+
subtitle: subtitleParts.join(" · ")
|
|
50
|
+
}), /*#__PURE__*/_jsxs(ModalHeader.Actions, {
|
|
51
|
+
children: [/*#__PURE__*/_jsx(ToolbarCopyButton, {
|
|
52
|
+
value: getReport
|
|
53
|
+
}), /*#__PURE__*/_jsx(ToolbarClearButton, {
|
|
54
|
+
onPress: onClear
|
|
55
|
+
})]
|
|
56
|
+
})]
|
|
57
|
+
});
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=ImagesHeader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["ModalHeader","ToolbarClearButton","ToolbarCopyButton","formatBytes","jsx","_jsx","jsxs","_jsxs","ImagesHeader","stats","detailOpen","detailIndex","detailTotal","onCloseDetail","onClear","getReport","onBack","counter","undefined","children","Navigation","Content","title","subtitle","Actions","value","subtitleParts","total","errors","estDecodedBytes","estWastedBytes","push","join","onPress"],"sourceRoot":"../../../src","sources":["components/ImagesHeader.tsx"],"mappings":";;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA,SACEA,WAAW,EACXC,kBAAkB,EAClBC,iBAAiB,QACZ,oBAAoB;AAC3B,SAASC,WAAW,QAAQ,WAAW;AAAC,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AAiBxC,OAAO,SAASC,YAAYA,CAAC;EAC3BC,KAAK;EACLC,UAAU;EACVC,WAAW,GAAG,CAAC,CAAC;EAChBC,WAAW,GAAG,CAAC;EACfC,aAAa;EACbC,OAAO;EACPC,SAAS;EACTC;AACiB,CAAC,EAAE;EACpB,IAAIN,UAAU,EAAE;IACd,MAAMO,OAAO,GACXN,WAAW,IAAI,CAAC,IAAIC,WAAW,GAAG,CAAC,GAC/B,GAAGD,WAAW,GAAG,CAAC,OAAOC,WAAW,EAAE,GACtCM,SAAS;IACf,oBACEX,KAAA,CAACP,WAAW;MAAAmB,QAAA,gBACVd,IAAA,CAACL,WAAW,CAACoB,UAAU;QAACJ,MAAM,EAAEH;MAAc,CAAE,CAAC,eACjDR,IAAA,CAACL,WAAW,CAACqB,OAAO;QAACC,KAAK,EAAC,cAAc;QAACC,QAAQ,EAAEN;MAAQ,CAAE,CAAC,eAC/DZ,IAAA,CAACL,WAAW,CAACwB,OAAO;QAAAL,QAAA,eAClBd,IAAA,CAACH,iBAAiB;UAACuB,KAAK,EAAEV;QAAU,CAAE;MAAC,CACpB,CAAC;IAAA,CACX,CAAC;EAElB;EAEA,MAAMW,aAAa,GAAG,CACpB,GAAGjB,KAAK,CAACkB,KAAK,SAAS,EACvB,GAAGlB,KAAK,CAACmB,MAAM,SAAS,EACxB,IAAIzB,WAAW,CAACM,KAAK,CAACoB,eAAe,CAAC,UAAU,CACjD;EACD,IAAIpB,KAAK,CAACqB,cAAc,GAAG,CAAC,EAAE;IAC5BJ,aAAa,CAACK,IAAI,CAAC,GAAG5B,WAAW,CAACM,KAAK,CAACqB,cAAc,CAAC,SAAS,CAAC;EACnE;EAEA,oBACEvB,KAAA,CAACP,WAAW;IAAAmB,QAAA,GACTH,MAAM,gBAAGX,IAAA,CAACL,WAAW,CAACoB,UAAU;MAACJ,MAAM,EAAEA;IAAO,CAAE,CAAC,GAAG,IAAI,eAC3DX,IAAA,CAACL,WAAW,CAACqB,OAAO;MAACC,KAAK,EAAC,QAAQ;MAACC,QAAQ,EAAEG,aAAa,CAACM,IAAI,CAAC,KAAK;IAAE,CAAE,CAAC,eAC3EzB,KAAA,CAACP,WAAW,CAACwB,OAAO;MAAAL,QAAA,gBAClBd,IAAA,CAACH,iBAAiB;QAACuB,KAAK,EAAEV;MAAU,CAAE,CAAC,eACvCV,IAAA,CAACJ,kBAAkB;QAACgC,OAAO,EAAEnB;MAAQ,CAAE,CAAC;IAAA,CACrB,CAAC;EAAA,CACX,CAAC;AAElB","ignoreList":[]}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
import { View, Text, StyleSheet } from "react-native";
|
|
4
|
+
|
|
5
|
+
/** Tool accent color (photo violet). */
|
|
6
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
7
|
+
export const IMAGES_ICON_COLOR = "#C084FC";
|
|
8
|
+
/**
|
|
9
|
+
* Dependency-free "picture" glyph: rounded frame with a sun dot and a
|
|
10
|
+
* mountain-ish baseline, rendered from plain views.
|
|
11
|
+
*/
|
|
12
|
+
export function ImagesIcon({
|
|
13
|
+
size,
|
|
14
|
+
color = IMAGES_ICON_COLOR
|
|
15
|
+
}) {
|
|
16
|
+
return /*#__PURE__*/_jsxs(View, {
|
|
17
|
+
style: [styles.frame, {
|
|
18
|
+
width: size,
|
|
19
|
+
height: size,
|
|
20
|
+
borderRadius: size * 0.2,
|
|
21
|
+
borderColor: color
|
|
22
|
+
}],
|
|
23
|
+
children: [/*#__PURE__*/_jsx(View, {
|
|
24
|
+
style: [styles.sun, {
|
|
25
|
+
width: size * 0.18,
|
|
26
|
+
height: size * 0.18,
|
|
27
|
+
borderRadius: size * 0.09,
|
|
28
|
+
backgroundColor: color,
|
|
29
|
+
top: size * 0.18,
|
|
30
|
+
right: size * 0.2
|
|
31
|
+
}]
|
|
32
|
+
}), /*#__PURE__*/_jsx(Text, {
|
|
33
|
+
style: {
|
|
34
|
+
color,
|
|
35
|
+
fontSize: size * 0.52,
|
|
36
|
+
fontWeight: "700",
|
|
37
|
+
lineHeight: size * 0.62,
|
|
38
|
+
marginTop: size * 0.28
|
|
39
|
+
},
|
|
40
|
+
children: "▲"
|
|
41
|
+
})]
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
const styles = StyleSheet.create({
|
|
45
|
+
frame: {
|
|
46
|
+
borderWidth: 1.5,
|
|
47
|
+
alignItems: "center",
|
|
48
|
+
justifyContent: "flex-end",
|
|
49
|
+
overflow: "hidden"
|
|
50
|
+
},
|
|
51
|
+
sun: {
|
|
52
|
+
position: "absolute"
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
//# sourceMappingURL=ImagesIcon.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"names":["View","Text","StyleSheet","jsx","_jsx","jsxs","_jsxs","IMAGES_ICON_COLOR","ImagesIcon","size","color","style","styles","frame","width","height","borderRadius","borderColor","children","sun","backgroundColor","top","right","fontSize","fontWeight","lineHeight","marginTop","create","borderWidth","alignItems","justifyContent","overflow","position"],"sourceRoot":"../../../src","sources":["components/ImagesIcon.tsx"],"mappings":";;AAAA,SAASA,IAAI,EAAEC,IAAI,EAAEC,UAAU,QAAQ,cAAc;;AAErD;AAAA,SAAAC,GAAA,IAAAC,IAAA,EAAAC,IAAA,IAAAC,KAAA;AACA,OAAO,MAAMC,iBAAiB,GAAG,SAAS;AAO1C;AACA;AACA;AACA;AACA,OAAO,SAASC,UAAUA,CAAC;EAAEC,IAAI;EAAEC,KAAK,GAAGH;AAAmC,CAAC,EAAE;EAC/E,oBACED,KAAA,CAACN,IAAI;IACHW,KAAK,EAAE,CACLC,MAAM,CAACC,KAAK,EACZ;MACEC,KAAK,EAAEL,IAAI;MACXM,MAAM,EAAEN,IAAI;MACZO,YAAY,EAAEP,IAAI,GAAG,GAAG;MACxBQ,WAAW,EAAEP;IACf,CAAC,CACD;IAAAQ,QAAA,gBAEFd,IAAA,CAACJ,IAAI;MACHW,KAAK,EAAE,CACLC,MAAM,CAACO,GAAG,EACV;QACEL,KAAK,EAAEL,IAAI,GAAG,IAAI;QAClBM,MAAM,EAAEN,IAAI,GAAG,IAAI;QACnBO,YAAY,EAAEP,IAAI,GAAG,IAAI;QACzBW,eAAe,EAAEV,KAAK;QACtBW,GAAG,EAAEZ,IAAI,GAAG,IAAI;QAChBa,KAAK,EAAEb,IAAI,GAAG;MAChB,CAAC;IACD,CACH,CAAC,eACFL,IAAA,CAACH,IAAI;MACHU,KAAK,EAAE;QACLD,KAAK;QACLa,QAAQ,EAAEd,IAAI,GAAG,IAAI;QACrBe,UAAU,EAAE,KAAK;QACjBC,UAAU,EAAEhB,IAAI,GAAG,IAAI;QACvBiB,SAAS,EAAEjB,IAAI,GAAG;MACpB,CAAE;MAAAS,QAAA,EAED;IAAG,CACA,CAAC;EAAA,CACH,CAAC;AAEX;AAEA,MAAMN,MAAM,GAAGV,UAAU,CAACyB,MAAM,CAAC;EAC/Bd,KAAK,EAAE;IACLe,WAAW,EAAE,GAAG;IAChBC,UAAU,EAAE,QAAQ;IACpBC,cAAc,EAAE,UAAU;IAC1BC,QAAQ,EAAE;EACZ,CAAC;EACDZ,GAAG,EAAE;IACHa,QAAQ,EAAE;EACZ;AACF,CAAC,CAAC","ignoreList":[]}
|