@tapthrough/expo 0.0.0-stage → 0.1.1
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 +21 -0
- package/README.md +105 -2
- package/app.plugin.d.ts +37 -0
- package/app.plugin.js +79 -0
- package/dist/Annotator.d.ts +14 -0
- package/dist/Annotator.d.ts.map +1 -0
- package/dist/Annotator.js +160 -0
- package/dist/Annotator.js.map +1 -0
- package/dist/Bubble.d.ts +27 -0
- package/dist/Bubble.d.ts.map +1 -0
- package/dist/Bubble.js +234 -0
- package/dist/Bubble.js.map +1 -0
- package/dist/Feedback.d.ts +14 -0
- package/dist/Feedback.d.ts.map +1 -0
- package/dist/Feedback.js +977 -0
- package/dist/Feedback.js.map +1 -0
- package/dist/Overlay.d.ts +13 -0
- package/dist/Overlay.d.ts.map +1 -0
- package/dist/Overlay.js +44 -0
- package/dist/Overlay.js.map +1 -0
- package/dist/Popover.d.ts +98 -0
- package/dist/Popover.d.ts.map +1 -0
- package/dist/Popover.js +531 -0
- package/dist/Popover.js.map +1 -0
- package/dist/Tapthrough.d.ts +27 -0
- package/dist/Tapthrough.d.ts.map +1 -0
- package/dist/Tapthrough.js +111 -0
- package/dist/Tapthrough.js.map +1 -0
- package/dist/core/annotations.d.ts +63 -0
- package/dist/core/annotations.d.ts.map +1 -0
- package/dist/core/annotations.js +76 -0
- package/dist/core/annotations.js.map +1 -0
- package/dist/core/bubble.d.ts +21 -0
- package/dist/core/bubble.d.ts.map +1 -0
- package/dist/core/bubble.js +25 -0
- package/dist/core/bubble.js.map +1 -0
- package/dist/core/controller.d.ts +46 -0
- package/dist/core/controller.d.ts.map +1 -0
- package/dist/core/controller.js +103 -0
- package/dist/core/controller.js.map +1 -0
- package/dist/core/diagnostics.d.ts +47 -0
- package/dist/core/diagnostics.d.ts.map +1 -0
- package/dist/core/diagnostics.js +101 -0
- package/dist/core/diagnostics.js.map +1 -0
- package/dist/core/feedback.d.ts +302 -0
- package/dist/core/feedback.d.ts.map +1 -0
- package/dist/core/feedback.js +345 -0
- package/dist/core/feedback.js.map +1 -0
- package/dist/core/flags.d.ts +13 -0
- package/dist/core/flags.d.ts.map +1 -0
- package/dist/core/flags.js +25 -0
- package/dist/core/flags.js.map +1 -0
- package/dist/core/ideas.d.ts +166 -0
- package/dist/core/ideas.d.ts.map +1 -0
- package/dist/core/ideas.js +159 -0
- package/dist/core/ideas.js.map +1 -0
- package/dist/core/launch.d.ts +43 -0
- package/dist/core/launch.d.ts.map +1 -0
- package/dist/core/launch.js +81 -0
- package/dist/core/launch.js.map +1 -0
- package/dist/core/reset.d.ts +17 -0
- package/dist/core/reset.d.ts.map +1 -0
- package/dist/core/reset.js +19 -0
- package/dist/core/reset.js.map +1 -0
- package/dist/core/review.d.ts +49 -0
- package/dist/core/review.d.ts.map +1 -0
- package/dist/core/review.js +92 -0
- package/dist/core/review.js.map +1 -0
- package/dist/core/url.d.ts +9 -0
- package/dist/core/url.d.ts.map +1 -0
- package/dist/core/url.js +23 -0
- package/dist/core/url.js.map +1 -0
- package/dist/hooks.d.ts +6 -0
- package/dist/hooks.d.ts.map +1 -0
- package/dist/hooks.js +13 -0
- package/dist/hooks.js.map +1 -0
- package/dist/index.d.ts +9 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +7 -0
- package/dist/index.js.map +1 -0
- package/dist/native-intent.d.ts +18 -0
- package/dist/native-intent.d.ts.map +1 -0
- package/dist/native-intent.js +32 -0
- package/dist/native-intent.js.map +1 -0
- package/dist/runtime.d.ts +24 -0
- package/dist/runtime.d.ts.map +1 -0
- package/dist/runtime.js +17 -0
- package/dist/runtime.js.map +1 -0
- package/dist/screenshot.d.ts +7 -0
- package/dist/screenshot.d.ts.map +1 -0
- package/dist/screenshot.js +48 -0
- package/dist/screenshot.js.map +1 -0
- package/dist/supabase.d.ts +20 -0
- package/dist/supabase.d.ts.map +1 -0
- package/dist/supabase.js +18 -0
- package/dist/supabase.js.map +1 -0
- package/dist/ui/native.d.ts +34 -0
- package/dist/ui/native.d.ts.map +1 -0
- package/dist/ui/native.js +76 -0
- package/dist/ui/native.js.map +1 -0
- package/dist/ui/parts.d.ts +62 -0
- package/dist/ui/parts.d.ts.map +1 -0
- package/dist/ui/parts.js +110 -0
- package/dist/ui/parts.js.map +1 -0
- package/dist/ui/theme.d.ts +90 -0
- package/dist/ui/theme.d.ts.map +1 -0
- package/dist/ui/theme.js +61 -0
- package/dist/ui/theme.js.map +1 -0
- package/package.json +82 -3
- package/src/Annotator.tsx +279 -0
- package/src/Bubble.tsx +331 -0
- package/src/Feedback.tsx +1739 -0
- package/src/Overlay.tsx +61 -0
- package/src/Popover.tsx +1393 -0
- package/src/Tapthrough.tsx +171 -0
- package/src/core/annotations.ts +116 -0
- package/src/core/bubble.ts +45 -0
- package/src/core/controller.ts +119 -0
- package/src/core/diagnostics.ts +128 -0
- package/src/core/feedback.ts +589 -0
- package/src/core/flags.ts +31 -0
- package/src/core/ideas.ts +337 -0
- package/src/core/launch.ts +119 -0
- package/src/core/reset.ts +28 -0
- package/src/core/review.ts +148 -0
- package/src/core/url.ts +21 -0
- package/src/hooks.ts +15 -0
- package/src/index.ts +8 -0
- package/src/native-intent.ts +36 -0
- package/src/runtime.ts +30 -0
- package/src/screenshot.ts +64 -0
- package/src/supabase.ts +27 -0
- package/src/ui/native.ts +116 -0
- package/src/ui/parts.tsx +249 -0
- package/src/ui/theme.ts +75 -0
package/dist/Bubble.js
ADDED
|
@@ -0,0 +1,234 @@
|
|
|
1
|
+
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
2
|
+
import { useEffect, useMemo, useRef } from 'react';
|
|
3
|
+
import { ActivityIndicator, Animated, PanResponder, Platform, StyleSheet, Text, useWindowDimensions, View, } from 'react-native';
|
|
4
|
+
import { BUBBLE_SIZE, defaultPosition, isTap, snapToEdge, } from './core/bubble.js';
|
|
5
|
+
import { haptics, loadGlass } from './ui/native.js';
|
|
6
|
+
import { Icon } from './ui/parts.js';
|
|
7
|
+
/** Where the reviewer last left it, for the rest of the session. */
|
|
8
|
+
let rememberedPosition = null;
|
|
9
|
+
const IDLE_OPACITY = 0.55;
|
|
10
|
+
const IDLE_AFTER_MS = 2500;
|
|
11
|
+
const PRESSED_SCALE = 0.9;
|
|
12
|
+
/** The screen, less conservative insets for the status bar and home indicator. */
|
|
13
|
+
export function screenBounds(width, height) {
|
|
14
|
+
// Conservative insets, so the SDK doesn't need a safe-area dependency.
|
|
15
|
+
return {
|
|
16
|
+
width,
|
|
17
|
+
height,
|
|
18
|
+
insetTop: Platform.OS === 'ios' ? 60 : 32,
|
|
19
|
+
insetBottom: Platform.OS === 'ios' ? 34 : 24,
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* A small, draggable Review button. Drag it anywhere; it snaps to the nearer
|
|
24
|
+
* side. It fades while idle so it stays out of the way of the app under test.
|
|
25
|
+
*/
|
|
26
|
+
export function Bubble({ onPress, badge, busy, active = false, onRest, }) {
|
|
27
|
+
const { width, height } = useWindowDimensions();
|
|
28
|
+
const area = screenBounds(width, height);
|
|
29
|
+
const start = rememberedPosition ? snapToEdge(rememberedPosition, area) : defaultPosition(area);
|
|
30
|
+
const position = useRef(new Animated.ValueXY(start)).current;
|
|
31
|
+
const opacity = useRef(new Animated.Value(1)).current;
|
|
32
|
+
const scale = useRef(new Animated.Value(1)).current;
|
|
33
|
+
const GlassView = loadGlass()?.GlassView;
|
|
34
|
+
const state = useRef({
|
|
35
|
+
at: start,
|
|
36
|
+
area,
|
|
37
|
+
onPress,
|
|
38
|
+
idle: undefined,
|
|
39
|
+
active,
|
|
40
|
+
onRest,
|
|
41
|
+
});
|
|
42
|
+
state.current.area = area;
|
|
43
|
+
state.current.onPress = onPress;
|
|
44
|
+
state.current.active = active;
|
|
45
|
+
state.current.onRest = onRest;
|
|
46
|
+
// Report the starting spot once.
|
|
47
|
+
useEffect(() => {
|
|
48
|
+
state.current.onRest?.(state.current.at);
|
|
49
|
+
}, []);
|
|
50
|
+
// Both values drive the same view, so both stay on the JS driver.
|
|
51
|
+
function wake() {
|
|
52
|
+
clearTimeout(state.current.idle);
|
|
53
|
+
Animated.timing(opacity, { toValue: 1, duration: 120, useNativeDriver: false }).start();
|
|
54
|
+
}
|
|
55
|
+
function press(down) {
|
|
56
|
+
Animated.spring(scale, {
|
|
57
|
+
toValue: down ? PRESSED_SCALE : 1,
|
|
58
|
+
useNativeDriver: false,
|
|
59
|
+
friction: 6,
|
|
60
|
+
tension: 300,
|
|
61
|
+
}).start();
|
|
62
|
+
}
|
|
63
|
+
function sleepSoon() {
|
|
64
|
+
clearTimeout(state.current.idle);
|
|
65
|
+
// Glass is already see-through, and fading it breaks the effect.
|
|
66
|
+
if (GlassView || state.current.active)
|
|
67
|
+
return;
|
|
68
|
+
state.current.idle = setTimeout(() => {
|
|
69
|
+
Animated.timing(opacity, {
|
|
70
|
+
toValue: IDLE_OPACITY,
|
|
71
|
+
duration: 400,
|
|
72
|
+
useNativeDriver: false,
|
|
73
|
+
}).start();
|
|
74
|
+
}, IDLE_AFTER_MS);
|
|
75
|
+
}
|
|
76
|
+
// Fully visible when something new shows up or the popover opens, then fade again.
|
|
77
|
+
const badgeKey = `${active}:${badge ? `${badge.kind}:${'count' in badge ? badge.count : ''}` : ''}`;
|
|
78
|
+
// biome-ignore lint/correctness/useExhaustiveDependencies: wakes on badge changes only
|
|
79
|
+
useEffect(() => {
|
|
80
|
+
wake();
|
|
81
|
+
sleepSoon();
|
|
82
|
+
return () => clearTimeout(state.current.idle);
|
|
83
|
+
}, [badgeKey]);
|
|
84
|
+
// Rotation or a resized window: keep it on screen and on an edge.
|
|
85
|
+
// biome-ignore lint/correctness/useExhaustiveDependencies: reruns on size changes only
|
|
86
|
+
useEffect(() => {
|
|
87
|
+
const next = snapToEdge(state.current.at, area);
|
|
88
|
+
state.current.at = next;
|
|
89
|
+
position.setValue(next);
|
|
90
|
+
state.current.onRest?.(next);
|
|
91
|
+
}, [area.width, area.height]);
|
|
92
|
+
// biome-ignore lint/correctness/useExhaustiveDependencies: reads current values through refs
|
|
93
|
+
const responder = useMemo(() => PanResponder.create({
|
|
94
|
+
onStartShouldSetPanResponder: () => true,
|
|
95
|
+
onMoveShouldSetPanResponder: () => true,
|
|
96
|
+
onPanResponderTerminationRequest: () => false,
|
|
97
|
+
onPanResponderGrant: () => {
|
|
98
|
+
wake();
|
|
99
|
+
press(true);
|
|
100
|
+
},
|
|
101
|
+
onPanResponderMove: (_event, gesture) => {
|
|
102
|
+
const { at } = state.current;
|
|
103
|
+
position.setValue({ x: at.x + gesture.dx, y: at.y + gesture.dy });
|
|
104
|
+
},
|
|
105
|
+
onPanResponderRelease: (_event, gesture) => {
|
|
106
|
+
press(false);
|
|
107
|
+
const { at } = state.current;
|
|
108
|
+
if (isTap(gesture.dx, gesture.dy)) {
|
|
109
|
+
position.setValue(at);
|
|
110
|
+
sleepSoon();
|
|
111
|
+
state.current.onPress();
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
const next = snapToEdge({ x: at.x + gesture.dx, y: at.y + gesture.dy }, state.current.area);
|
|
115
|
+
state.current.at = next;
|
|
116
|
+
rememberedPosition = next;
|
|
117
|
+
haptics.light();
|
|
118
|
+
state.current.onRest?.(next);
|
|
119
|
+
Animated.spring(position, {
|
|
120
|
+
toValue: next,
|
|
121
|
+
useNativeDriver: false,
|
|
122
|
+
friction: 7,
|
|
123
|
+
tension: 80,
|
|
124
|
+
}).start();
|
|
125
|
+
sleepSoon();
|
|
126
|
+
},
|
|
127
|
+
onPanResponderTerminate: () => {
|
|
128
|
+
press(false);
|
|
129
|
+
position.setValue(state.current.at);
|
|
130
|
+
sleepSoon();
|
|
131
|
+
},
|
|
132
|
+
}), []);
|
|
133
|
+
return (_jsxs(Animated.View, { ...responder.panHandlers, style: [
|
|
134
|
+
styles.bubble,
|
|
135
|
+
GlassView ? null : styles.solid,
|
|
136
|
+
{ opacity, transform: [...position.getTranslateTransform(), { scale }] },
|
|
137
|
+
], accessible: true, accessibilityRole: "button", accessibilityLabel: active ? 'Close review' : accessibilityLabel(badge), accessibilityHint: active ? undefined : 'Shows what to test. Drag to move.', accessibilityActions: [{ name: 'activate' }], onAccessibilityAction: () => onPress(), children: [GlassView ? (_jsx(GlassView, { style: styles.glass, glassEffectStyle: "regular", tintColor: "rgba(14, 22, 32, 0.55)", pointerEvents: "none" })) : null, busy ? (_jsx(ActivityIndicator, { color: "#ffffff" })) : active ? (_jsx(Icon, { name: "xmark", size: 18, color: "#ffffff" })) : (_jsx(Mark, {})), badge && !busy && !active ? _jsx(BadgeView, { badge: badge }) : null] }));
|
|
138
|
+
}
|
|
139
|
+
function accessibilityLabel(badge) {
|
|
140
|
+
switch (badge?.kind) {
|
|
141
|
+
case 'new-build':
|
|
142
|
+
return 'Review this pull request. A new build is ready.';
|
|
143
|
+
case 'failed':
|
|
144
|
+
return 'Review this pull request. A step failed.';
|
|
145
|
+
case 'remaining':
|
|
146
|
+
return `Review this pull request. ${badge.count} step${badge.count === 1 ? '' : 's'} left.`;
|
|
147
|
+
case 'done':
|
|
148
|
+
return 'Review this pull request. Every step passed.';
|
|
149
|
+
case 'idea':
|
|
150
|
+
return 'Review. An idea needs you.';
|
|
151
|
+
default:
|
|
152
|
+
return 'Review this pull request';
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
/** The Tapthrough mark: a phone with a strip of tape across it. */
|
|
156
|
+
function Mark() {
|
|
157
|
+
return (_jsxs(View, { style: styles.mark, children: [_jsx(View, { style: styles.phone }), _jsx(View, { style: styles.tape })] }));
|
|
158
|
+
}
|
|
159
|
+
function BadgeView({ badge }) {
|
|
160
|
+
switch (badge.kind) {
|
|
161
|
+
case 'new-build':
|
|
162
|
+
case 'idea':
|
|
163
|
+
return _jsx(View, { style: [styles.badge, styles.dot, { backgroundColor: COLORS.tape }] });
|
|
164
|
+
case 'failed':
|
|
165
|
+
return (_jsx(View, { style: [styles.badge, { backgroundColor: COLORS.fail }], children: _jsx(Text, { style: styles.badgeText, children: "!" }) }));
|
|
166
|
+
case 'done':
|
|
167
|
+
return (_jsx(View, { style: [styles.badge, { backgroundColor: COLORS.pass }], children: _jsx(Text, { style: styles.badgeText, children: "\u2713" }) }));
|
|
168
|
+
case 'remaining':
|
|
169
|
+
return (_jsx(View, { style: [styles.badge, { backgroundColor: COLORS.count }], children: _jsx(Text, { style: styles.badgeText, children: badge.count > 9 ? '9+' : badge.count }) }));
|
|
170
|
+
}
|
|
171
|
+
}
|
|
172
|
+
export const COLORS = {
|
|
173
|
+
ink: '#0e1620',
|
|
174
|
+
tape: '#ecd88e',
|
|
175
|
+
tapeInk: '#2a2414',
|
|
176
|
+
/** Steps left: the iOS system blue, the SDK's one tint. */
|
|
177
|
+
count: '#0A84FF',
|
|
178
|
+
pass: '#30D158',
|
|
179
|
+
fail: '#FF453A',
|
|
180
|
+
};
|
|
181
|
+
const styles = StyleSheet.create({
|
|
182
|
+
bubble: {
|
|
183
|
+
position: 'absolute',
|
|
184
|
+
top: 0,
|
|
185
|
+
left: 0,
|
|
186
|
+
width: BUBBLE_SIZE,
|
|
187
|
+
height: BUBBLE_SIZE,
|
|
188
|
+
borderRadius: BUBBLE_SIZE / 2,
|
|
189
|
+
alignItems: 'center',
|
|
190
|
+
justifyContent: 'center',
|
|
191
|
+
},
|
|
192
|
+
/** Without Liquid Glass: a dark, slightly see-through disc with a soft lift. */
|
|
193
|
+
solid: {
|
|
194
|
+
backgroundColor: 'rgba(18, 24, 33, 0.88)',
|
|
195
|
+
borderWidth: StyleSheet.hairlineWidth,
|
|
196
|
+
borderColor: 'rgba(255, 255, 255, 0.22)',
|
|
197
|
+
shadowColor: '#000000',
|
|
198
|
+
shadowOpacity: 0.22,
|
|
199
|
+
shadowRadius: 12,
|
|
200
|
+
shadowOffset: { width: 0, height: 4 },
|
|
201
|
+
elevation: 8,
|
|
202
|
+
},
|
|
203
|
+
glass: { ...StyleSheet.absoluteFill, borderRadius: BUBBLE_SIZE / 2 },
|
|
204
|
+
mark: { width: 24, height: 24, alignItems: 'center', justifyContent: 'center' },
|
|
205
|
+
phone: {
|
|
206
|
+
width: 14,
|
|
207
|
+
height: 21,
|
|
208
|
+
borderRadius: 4,
|
|
209
|
+
borderWidth: 2,
|
|
210
|
+
borderColor: '#ffffff',
|
|
211
|
+
},
|
|
212
|
+
tape: {
|
|
213
|
+
position: 'absolute',
|
|
214
|
+
width: 22,
|
|
215
|
+
height: 6,
|
|
216
|
+
borderRadius: 1,
|
|
217
|
+
backgroundColor: COLORS.tape,
|
|
218
|
+
transform: [{ rotate: '-8deg' }],
|
|
219
|
+
},
|
|
220
|
+
badge: {
|
|
221
|
+
position: 'absolute',
|
|
222
|
+
top: -3,
|
|
223
|
+
right: -3,
|
|
224
|
+
minWidth: 18,
|
|
225
|
+
height: 18,
|
|
226
|
+
paddingHorizontal: 4,
|
|
227
|
+
borderRadius: 9,
|
|
228
|
+
alignItems: 'center',
|
|
229
|
+
justifyContent: 'center',
|
|
230
|
+
},
|
|
231
|
+
dot: { minWidth: 14, width: 14, height: 14, paddingHorizontal: 0, top: -1, right: -1 },
|
|
232
|
+
badgeText: { color: '#ffffff', fontSize: 12, fontWeight: '600' },
|
|
233
|
+
});
|
|
234
|
+
//# sourceMappingURL=Bubble.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Bubble.js","sourceRoot":"","sources":["../src/Bubble.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A small draggable Review button over a PR preview. Tapping it grows a
|
|
3
|
+
* popover listing what the PR needs tested; picking a scenario can set the app
|
|
4
|
+
* up for it and then walks through its steps. Without a plan it goes straight
|
|
5
|
+
* to reporting an issue with a screenshot of the screen behind it. It keeps
|
|
6
|
+
* the checklist fresh in the background, so it can say when a newer build is out.
|
|
7
|
+
*/
|
|
8
|
+
export declare function ReportButton({ apiUrl, canSetUp, appKey, }: {
|
|
9
|
+
apiUrl: string;
|
|
10
|
+
canSetUp: boolean;
|
|
11
|
+
/** Set on staging and TestFlight builds: feedback works outside PR previews. */
|
|
12
|
+
appKey?: string | undefined;
|
|
13
|
+
}): import("react").JSX.Element | null;
|
|
14
|
+
//# sourceMappingURL=Feedback.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"Feedback.d.ts","sourceRoot":"","sources":["../src/Feedback.tsx"],"names":[],"mappings":"AAyLA;;;;;;GAMG;AACH,wBAAgB,YAAY,CAAC,EAC3B,MAAM,EACN,QAAQ,EACR,MAAM,GACP,EAAE;IACD,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,EAAE,OAAO,CAAA;IACjB,gFAAgF;IAChF,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;CAC5B,sCAqjBA"}
|