@buoy-gg/core 7.0.36 → 7.0.38
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/README.md +57 -69
- package/bin/buoy.js +71 -20
- package/lib/commonjs/Buoy.js +3 -16
- package/lib/commonjs/floatingMenu/AppHost.js +1 -1
- package/lib/commonjs/floatingMenu/AppHost.web.js +1 -1
- package/lib/commonjs/floatingMenu/AppIcon.web.js +53 -0
- package/lib/commonjs/floatingMenu/DevToolsSettingsModal.js +12 -5
- package/lib/commonjs/floatingMenu/DevToolsSettingsModal.web.js +14 -34
- package/lib/commonjs/floatingMenu/FloatingDevTools.js +32 -48
- package/lib/commonjs/floatingMenu/FloatingDevTools.web.js +24 -4
- package/lib/commonjs/floatingMenu/FloatingMenu.js +1 -1
- package/lib/commonjs/floatingMenu/ToolHost.js +1 -0
- package/lib/commonjs/floatingMenu/autoExternalSync.js +3 -2
- package/lib/commonjs/floatingMenu/dial/DialDevTools.js +43 -10
- package/lib/commonjs/floatingMenu/dial/DialDevTools.web.js +18 -5
- package/lib/commonjs/floatingMenu/dial/dialUsageStore.js +13 -17
- package/lib/commonjs/floatingMenu/dial/onboardingConstants.js +37 -65
- package/lib/commonjs/floatingMenu/dial/onboardingConstants.web.js +37 -29
- package/lib/commonjs/floatingMenu/floatingTools.js +23 -889
- package/lib/commonjs/floatingMenu/floatingTools.web.js +24 -514
- package/lib/commonjs/floatingMenu/optionalRequire.js +4 -0
- package/lib/commonjs/telemetry/installPing.js +7 -0
- package/lib/commonjs/version.js +1 -1
- package/lib/module/Buoy.js +3 -16
- package/lib/module/floatingMenu/AppHost.js +1 -1
- package/lib/module/floatingMenu/AppHost.web.js +1 -1
- package/lib/module/floatingMenu/AppIcon.web.js +47 -0
- package/lib/module/floatingMenu/DevToolsSettingsModal.js +13 -6
- package/lib/module/floatingMenu/DevToolsSettingsModal.web.js +15 -35
- package/lib/module/floatingMenu/FloatingDevTools.js +35 -49
- package/lib/module/floatingMenu/FloatingDevTools.web.js +24 -3
- package/lib/module/floatingMenu/FloatingMenu.js +1 -1
- package/lib/module/floatingMenu/ToolHost.js +1 -0
- package/lib/module/floatingMenu/autoExternalSync.js +3 -2
- package/lib/module/floatingMenu/dial/DialDevTools.js +43 -10
- package/lib/module/floatingMenu/dial/DialDevTools.web.js +18 -5
- package/lib/module/floatingMenu/dial/dialUsageStore.js +14 -18
- package/lib/module/floatingMenu/dial/onboardingConstants.js +1 -62
- package/lib/module/floatingMenu/dial/onboardingConstants.web.js +1 -25
- package/lib/module/floatingMenu/floatingTools.js +15 -890
- package/lib/module/floatingMenu/floatingTools.web.js +1 -517
- package/lib/module/floatingMenu/optionalRequire.js +4 -0
- package/lib/module/telemetry/installPing.js +7 -0
- package/lib/module/version.js +1 -1
- package/lib/typescript/commonjs/Buoy.d.ts +14 -3
- package/lib/typescript/commonjs/Buoy.d.ts.map +1 -1
- package/lib/typescript/commonjs/floatingMenu/AppIcon.web.d.ts +14 -0
- package/lib/typescript/commonjs/floatingMenu/AppIcon.web.d.ts.map +1 -0
- package/lib/typescript/commonjs/floatingMenu/DevToolsSettingsModal.d.ts.map +1 -1
- package/lib/typescript/commonjs/floatingMenu/DevToolsSettingsModal.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/floatingMenu/FloatingDevTools.d.ts +4 -14
- package/lib/typescript/commonjs/floatingMenu/FloatingDevTools.d.ts.map +1 -1
- package/lib/typescript/commonjs/floatingMenu/FloatingDevTools.web.d.ts +4 -19
- package/lib/typescript/commonjs/floatingMenu/FloatingDevTools.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/floatingMenu/ToolHost.d.ts.map +1 -1
- package/lib/typescript/commonjs/floatingMenu/autoExternalSync.d.ts +3 -4
- package/lib/typescript/commonjs/floatingMenu/autoExternalSync.d.ts.map +1 -1
- package/lib/typescript/commonjs/floatingMenu/dial/DialDevTools.d.ts.map +1 -1
- package/lib/typescript/commonjs/floatingMenu/dial/DialDevTools.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/floatingMenu/dial/dialUsageStore.d.ts +3 -15
- package/lib/typescript/commonjs/floatingMenu/dial/dialUsageStore.d.ts.map +1 -1
- package/lib/typescript/commonjs/floatingMenu/dial/onboardingConstants.d.ts +1 -29
- package/lib/typescript/commonjs/floatingMenu/dial/onboardingConstants.d.ts.map +1 -1
- package/lib/typescript/commonjs/floatingMenu/dial/onboardingConstants.web.d.ts +1 -12
- package/lib/typescript/commonjs/floatingMenu/dial/onboardingConstants.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/floatingMenu/floatingTools.d.ts +6 -55
- package/lib/typescript/commonjs/floatingMenu/floatingTools.d.ts.map +1 -1
- package/lib/typescript/commonjs/floatingMenu/floatingTools.web.d.ts +3 -53
- package/lib/typescript/commonjs/floatingMenu/floatingTools.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/floatingMenu/optionalRequire.d.ts.map +1 -1
- package/lib/typescript/commonjs/telemetry/installPing.d.ts +8 -1
- package/lib/typescript/commonjs/telemetry/installPing.d.ts.map +1 -1
- package/lib/typescript/commonjs/version.d.ts +1 -1
- package/lib/typescript/module/Buoy.d.ts +14 -3
- package/lib/typescript/module/Buoy.d.ts.map +1 -1
- package/lib/typescript/module/floatingMenu/AppIcon.web.d.ts +14 -0
- package/lib/typescript/module/floatingMenu/AppIcon.web.d.ts.map +1 -0
- package/lib/typescript/module/floatingMenu/DevToolsSettingsModal.d.ts.map +1 -1
- package/lib/typescript/module/floatingMenu/DevToolsSettingsModal.web.d.ts.map +1 -1
- package/lib/typescript/module/floatingMenu/FloatingDevTools.d.ts +4 -14
- package/lib/typescript/module/floatingMenu/FloatingDevTools.d.ts.map +1 -1
- package/lib/typescript/module/floatingMenu/FloatingDevTools.web.d.ts +4 -19
- package/lib/typescript/module/floatingMenu/FloatingDevTools.web.d.ts.map +1 -1
- package/lib/typescript/module/floatingMenu/ToolHost.d.ts.map +1 -1
- package/lib/typescript/module/floatingMenu/autoExternalSync.d.ts +3 -4
- package/lib/typescript/module/floatingMenu/autoExternalSync.d.ts.map +1 -1
- package/lib/typescript/module/floatingMenu/dial/DialDevTools.d.ts.map +1 -1
- package/lib/typescript/module/floatingMenu/dial/DialDevTools.web.d.ts.map +1 -1
- package/lib/typescript/module/floatingMenu/dial/dialUsageStore.d.ts +3 -15
- package/lib/typescript/module/floatingMenu/dial/dialUsageStore.d.ts.map +1 -1
- package/lib/typescript/module/floatingMenu/dial/onboardingConstants.d.ts +1 -29
- package/lib/typescript/module/floatingMenu/dial/onboardingConstants.d.ts.map +1 -1
- package/lib/typescript/module/floatingMenu/dial/onboardingConstants.web.d.ts +1 -12
- package/lib/typescript/module/floatingMenu/dial/onboardingConstants.web.d.ts.map +1 -1
- package/lib/typescript/module/floatingMenu/floatingTools.d.ts +6 -55
- package/lib/typescript/module/floatingMenu/floatingTools.d.ts.map +1 -1
- package/lib/typescript/module/floatingMenu/floatingTools.web.d.ts +3 -53
- package/lib/typescript/module/floatingMenu/floatingTools.web.d.ts.map +1 -1
- package/lib/typescript/module/floatingMenu/optionalRequire.d.ts.map +1 -1
- package/lib/typescript/module/telemetry/installPing.d.ts +8 -1
- package/lib/typescript/module/telemetry/installPing.d.ts.map +1 -1
- package/lib/typescript/module/version.d.ts +1 -1
- package/package.json +6 -6
|
@@ -1,519 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
|
|
3
|
-
|
|
4
|
-
* FloatingTools - Web renderer using shared React bindings.
|
|
5
|
-
*
|
|
6
|
-
* This file contains ONLY web-specific code (React DOM):
|
|
7
|
-
* - Pointer event handling (mouse + touch — WKWebView/Capacitor included)
|
|
8
|
-
* - requestAnimationFrame animation
|
|
9
|
-
* - Web JSX (div, span)
|
|
10
|
-
* - localStorage adapter
|
|
11
|
-
*
|
|
12
|
-
* All logic is shared via @buoy-gg/floating-tools-react
|
|
13
|
-
*
|
|
14
|
-
* @platform React DOM Web (Vite, CRA, Next.js, Electron)
|
|
15
|
-
*/
|
|
16
|
-
|
|
17
|
-
import { useState, useRef, useCallback, useEffect, useMemo, Children } from 'react';
|
|
18
|
-
import { calculateTargetPosition } from "./dial/onboardingConstants.web.js";
|
|
19
|
-
import {
|
|
20
|
-
// Hook and context
|
|
21
|
-
useFloatingTools, FloatingToolsProvider, useFloatingToolsContext, interleaveWithDividers,
|
|
22
|
-
// Utils from core (re-exported)
|
|
23
|
-
floatingToolsColors, withAlpha, getUserStatusConfig, getGripIconLayout, interpolatePosition, easing, VISIBLE_HANDLE_WIDTH, ANIMATION_DURATION
|
|
24
|
-
// Types
|
|
25
|
-
} from '@buoy-gg/floating-tools-react';
|
|
26
|
-
|
|
27
|
-
// Re-export for consumers
|
|
28
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
29
|
-
// =============================
|
|
30
|
-
// Web Storage Adapter
|
|
31
|
-
// =============================
|
|
32
|
-
const webStorageAdapter = {
|
|
33
|
-
getItem: key => localStorage.getItem(key),
|
|
34
|
-
setItem: (key, value) => localStorage.setItem(key, value)
|
|
35
|
-
};
|
|
36
|
-
|
|
37
|
-
// =============================
|
|
38
|
-
// Native color values not present in floatingToolsColors
|
|
39
|
-
// (core's `secondary` is #E0E0E0 = buoyColors.text; the native bubble uses
|
|
40
|
-
// buoyColors.textSecondary #A0A0A0 for grip dots and "User" label text.
|
|
41
|
-
// Inlined here rather than changed in core because dial.ts also consumes
|
|
42
|
-
// floatingToolsColors.secondary for other surfaces.)
|
|
43
|
-
// =============================
|
|
44
|
-
// native shared-ui gameUIColors.ts: buoyColors.textSecondary = "#A0A0A0"
|
|
45
|
-
const NATIVE_TEXT_SECONDARY = '#A0A0A0';
|
|
46
|
-
|
|
47
|
-
// =============================
|
|
48
|
-
// GripVerticalIcon (web JSX)
|
|
49
|
-
// =============================
|
|
50
|
-
function GripVerticalIcon({
|
|
51
|
-
size = 24,
|
|
52
|
-
// native shared-ui GripVerticalIcon.tsx: buoyColors.textSecondary + "CC"
|
|
53
|
-
color = withAlpha(NATIVE_TEXT_SECONDARY, 'CC')
|
|
54
|
-
}) {
|
|
55
|
-
const layout = getGripIconLayout(size);
|
|
56
|
-
return /*#__PURE__*/_jsx("div", {
|
|
57
|
-
style: {
|
|
58
|
-
width: size,
|
|
59
|
-
height: size,
|
|
60
|
-
display: 'flex',
|
|
61
|
-
flexDirection: 'row',
|
|
62
|
-
alignItems: 'center',
|
|
63
|
-
justifyContent: 'center'
|
|
64
|
-
},
|
|
65
|
-
children: [0, 1].map(col => /*#__PURE__*/_jsx("div", {
|
|
66
|
-
style: {
|
|
67
|
-
display: 'flex',
|
|
68
|
-
flexDirection: 'column',
|
|
69
|
-
alignItems: 'center',
|
|
70
|
-
justifyContent: 'center',
|
|
71
|
-
// native GripVerticalIcon.tsx: marginHorizontal columnGap / 2
|
|
72
|
-
marginLeft: layout.columnGap / 2,
|
|
73
|
-
marginRight: layout.columnGap / 2
|
|
74
|
-
},
|
|
75
|
-
children: [0, 1, 2].map(row => /*#__PURE__*/_jsx("div", {
|
|
76
|
-
style: {
|
|
77
|
-
width: layout.dotSize,
|
|
78
|
-
height: layout.dotSize,
|
|
79
|
-
borderRadius: layout.dotSize / 2,
|
|
80
|
-
backgroundColor: color,
|
|
81
|
-
// native GripVerticalIcon.tsx: marginVertical rowGap / 2
|
|
82
|
-
marginTop: layout.rowGap / 2,
|
|
83
|
-
marginBottom: layout.rowGap / 2
|
|
84
|
-
}
|
|
85
|
-
}, row))
|
|
86
|
-
}, col))
|
|
87
|
-
});
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
// =============================
|
|
91
|
-
// Divider (web JSX)
|
|
92
|
-
// =============================
|
|
93
|
-
export function Divider() {
|
|
94
|
-
return /*#__PURE__*/_jsx("div", {
|
|
95
|
-
style: {
|
|
96
|
-
width: 1,
|
|
97
|
-
height: 12,
|
|
98
|
-
backgroundColor: withAlpha(floatingToolsColors.muted, '66'),
|
|
99
|
-
flexShrink: 0
|
|
100
|
-
}
|
|
101
|
-
});
|
|
102
|
-
}
|
|
103
|
-
|
|
104
|
-
// =============================
|
|
105
|
-
// UserStatus (web JSX)
|
|
106
|
-
// =============================
|
|
107
|
-
// Mirrors the native gameUIColorsCompat mapping in floatingTools.tsx:
|
|
108
|
-
// success/optional/muted come from the shared palette, but `secondary`
|
|
109
|
-
// (the "User" label text) is buoyColors.textSecondary, not core's secondary.
|
|
110
|
-
const userStatusColors = {
|
|
111
|
-
success: floatingToolsColors.success,
|
|
112
|
-
optional: floatingToolsColors.optional,
|
|
113
|
-
muted: floatingToolsColors.muted,
|
|
114
|
-
// native floatingTools.tsx: gameUIColorsCompat.secondary = buoyColors.textSecondary
|
|
115
|
-
secondary: NATIVE_TEXT_SECONDARY
|
|
116
|
-
};
|
|
117
|
-
export function UserStatus({
|
|
118
|
-
userRole,
|
|
119
|
-
onPress
|
|
120
|
-
}) {
|
|
121
|
-
const {
|
|
122
|
-
isDragging
|
|
123
|
-
} = useFloatingToolsContext();
|
|
124
|
-
const config = getUserStatusConfig(userRole, userStatusColors);
|
|
125
|
-
const handleClick = e => {
|
|
126
|
-
if (!isDragging && onPress) {
|
|
127
|
-
e.stopPropagation();
|
|
128
|
-
onPress();
|
|
129
|
-
}
|
|
130
|
-
};
|
|
131
|
-
return /*#__PURE__*/_jsxs("button", {
|
|
132
|
-
role: "button",
|
|
133
|
-
"aria-label": `User status: ${config.label}`,
|
|
134
|
-
onClick: handleClick,
|
|
135
|
-
style: {
|
|
136
|
-
display: 'flex',
|
|
137
|
-
flexDirection: 'row',
|
|
138
|
-
alignItems: 'center',
|
|
139
|
-
paddingTop: 6,
|
|
140
|
-
paddingBottom: 6,
|
|
141
|
-
paddingLeft: 8,
|
|
142
|
-
paddingRight: 8,
|
|
143
|
-
flexShrink: 0,
|
|
144
|
-
cursor: onPress && !isDragging ? 'pointer' : 'default',
|
|
145
|
-
background: 'none',
|
|
146
|
-
border: 'none',
|
|
147
|
-
margin: 0 // neutralize UA button margin (native View/Touchable has none)
|
|
148
|
-
},
|
|
149
|
-
children: [/*#__PURE__*/_jsx("div", {
|
|
150
|
-
style: {
|
|
151
|
-
width: 6,
|
|
152
|
-
height: 6,
|
|
153
|
-
borderRadius: 3,
|
|
154
|
-
backgroundColor: config.dotColor,
|
|
155
|
-
marginRight: 4
|
|
156
|
-
}
|
|
157
|
-
}), /*#__PURE__*/_jsx("span", {
|
|
158
|
-
style: {
|
|
159
|
-
fontSize: 10,
|
|
160
|
-
fontWeight: 500,
|
|
161
|
-
color: config.textColor,
|
|
162
|
-
letterSpacing: 0.3,
|
|
163
|
-
// native RN <Text> renders in the platform system font; buttons
|
|
164
|
-
// otherwise use the UA font on web
|
|
165
|
-
fontFamily: '-apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif',
|
|
166
|
-
lineHeight: 'normal'
|
|
167
|
-
},
|
|
168
|
-
children: config.label
|
|
169
|
-
})]
|
|
170
|
-
});
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
// =============================
|
|
174
|
-
// Web Animation Hook
|
|
175
|
-
// =============================
|
|
176
|
-
function useWebAnimation() {
|
|
177
|
-
const animationRef = useRef(null);
|
|
178
|
-
const [position, setPosition] = useState({
|
|
179
|
-
x: 0,
|
|
180
|
-
y: 0
|
|
181
|
-
});
|
|
182
|
-
const animateTo = useCallback((from, to, onComplete) => {
|
|
183
|
-
if (animationRef.current) {
|
|
184
|
-
cancelAnimationFrame(animationRef.current);
|
|
185
|
-
}
|
|
186
|
-
const startTime = performance.now();
|
|
187
|
-
const animate = currentTime => {
|
|
188
|
-
const elapsed = currentTime - startTime;
|
|
189
|
-
const progress = Math.min(elapsed / ANIMATION_DURATION, 1);
|
|
190
|
-
const newPosition = interpolatePosition(from, to, progress, easing.easeOutCubic);
|
|
191
|
-
setPosition(newPosition);
|
|
192
|
-
if (progress < 1) {
|
|
193
|
-
animationRef.current = requestAnimationFrame(animate);
|
|
194
|
-
} else {
|
|
195
|
-
setPosition(to);
|
|
196
|
-
onComplete?.();
|
|
197
|
-
}
|
|
198
|
-
};
|
|
199
|
-
animationRef.current = requestAnimationFrame(animate);
|
|
200
|
-
}, []);
|
|
201
|
-
useEffect(() => {
|
|
202
|
-
return () => {
|
|
203
|
-
if (animationRef.current) {
|
|
204
|
-
cancelAnimationFrame(animationRef.current);
|
|
205
|
-
}
|
|
206
|
-
};
|
|
207
|
-
}, []);
|
|
208
|
-
return {
|
|
209
|
-
position,
|
|
210
|
-
setPosition,
|
|
211
|
-
animateTo
|
|
212
|
-
};
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
// =============================
|
|
216
|
-
// Main FloatingTools Component
|
|
217
|
-
// =============================
|
|
218
|
-
|
|
219
|
-
// Last known bubble position — the AppHost minimize animation targets this so
|
|
220
|
-
// tools shrink toward the stack instead of the old bottom-right dock.
|
|
221
|
-
let lastBubbleAnchor = null;
|
|
222
|
-
export function getBubbleAnchorPosition() {
|
|
223
|
-
return lastBubbleAnchor;
|
|
224
|
-
}
|
|
225
|
-
export function FloatingTools({
|
|
226
|
-
enablePositionPersistence = true,
|
|
227
|
-
children,
|
|
228
|
-
pushToSide = false,
|
|
229
|
-
suspendPointerEvents = false,
|
|
230
|
-
centerOnboarding = false,
|
|
231
|
-
minimizedStack,
|
|
232
|
-
hasMinimizedStack = false
|
|
233
|
-
}) {
|
|
234
|
-
const bubbleRef = useRef(null);
|
|
235
|
-
|
|
236
|
-
// Use shared hook
|
|
237
|
-
const {
|
|
238
|
-
state,
|
|
239
|
-
actions,
|
|
240
|
-
isInitialized
|
|
241
|
-
} = useFloatingTools({
|
|
242
|
-
screenSize: {
|
|
243
|
-
width: window.innerWidth,
|
|
244
|
-
height: window.innerHeight
|
|
245
|
-
},
|
|
246
|
-
enablePositionPersistence,
|
|
247
|
-
storage: webStorageAdapter
|
|
248
|
-
});
|
|
249
|
-
|
|
250
|
-
// Web-specific animation
|
|
251
|
-
const {
|
|
252
|
-
position: animatedPosition,
|
|
253
|
-
setPosition: setAnimatedPosition,
|
|
254
|
-
animateTo
|
|
255
|
-
} = useWebAnimation();
|
|
256
|
-
|
|
257
|
-
// Sync position when initialized
|
|
258
|
-
useEffect(() => {
|
|
259
|
-
if (isInitialized) {
|
|
260
|
-
setAnimatedPosition(state.position);
|
|
261
|
-
}
|
|
262
|
-
}, [isInitialized, state.position, setAnimatedPosition]);
|
|
263
|
-
|
|
264
|
-
// Publish the bubble anchor for the AppHost minimize-target (stack lives
|
|
265
|
-
// fused to the bubble now, not in a fixed dock).
|
|
266
|
-
useEffect(() => {
|
|
267
|
-
lastBubbleAnchor = {
|
|
268
|
-
x: animatedPosition.x,
|
|
269
|
-
y: animatedPosition.y
|
|
270
|
-
};
|
|
271
|
-
}, [animatedPosition]);
|
|
272
|
-
|
|
273
|
-
// Handle window resize
|
|
274
|
-
useEffect(() => {
|
|
275
|
-
const handleResize = () => {
|
|
276
|
-
actions.setScreenSize(window.innerWidth, window.innerHeight);
|
|
277
|
-
};
|
|
278
|
-
window.addEventListener('resize', handleResize);
|
|
279
|
-
return () => window.removeEventListener('resize', handleResize);
|
|
280
|
-
}, [actions]);
|
|
281
|
-
|
|
282
|
-
// Update bubble size on layout
|
|
283
|
-
const [bubbleMeasured, setBubbleMeasured] = useState(false);
|
|
284
|
-
useEffect(() => {
|
|
285
|
-
if (!bubbleMeasured && bubbleRef.current) {
|
|
286
|
-
const rect = bubbleRef.current.getBoundingClientRect();
|
|
287
|
-
if (rect.width > 0 && rect.height > 0) {
|
|
288
|
-
actions.setBubbleSize({
|
|
289
|
-
width: rect.width,
|
|
290
|
-
height: rect.height
|
|
291
|
-
});
|
|
292
|
-
setBubbleMeasured(true);
|
|
293
|
-
}
|
|
294
|
-
}
|
|
295
|
-
}, [bubbleMeasured, actions]);
|
|
296
|
-
|
|
297
|
-
// Keep the bubble below notches/status bars (WKWebView with viewport-fit=cover).
|
|
298
|
-
useEffect(() => {
|
|
299
|
-
const probe = document.createElement('div');
|
|
300
|
-
probe.style.cssText = 'position:fixed;top:env(safe-area-inset-top);left:env(safe-area-inset-left);' + 'visibility:hidden;pointer-events:none';
|
|
301
|
-
document.body.appendChild(probe);
|
|
302
|
-
const rect = probe.getBoundingClientRect();
|
|
303
|
-
document.body.removeChild(probe);
|
|
304
|
-
if (rect.top > 0 || rect.left > 0) {
|
|
305
|
-
actions.setMinPosition({
|
|
306
|
-
x: Math.max(rect.left, 10),
|
|
307
|
-
y: Math.max(rect.top, 10)
|
|
308
|
-
});
|
|
309
|
-
}
|
|
310
|
-
}, [actions]);
|
|
311
|
-
|
|
312
|
-
// Web-specific: pointer event handling (mouse + touch).
|
|
313
|
-
// preventDefault on pointerdown suppresses the compatibility mouse events,
|
|
314
|
-
// and touchAction: 'none' on the bubble stops touch-drags from scrolling.
|
|
315
|
-
const [isPointerDown, setIsPointerDown] = useState(false);
|
|
316
|
-
const handlePointerDown = useCallback(e => {
|
|
317
|
-
e.preventDefault();
|
|
318
|
-
setIsPointerDown(true);
|
|
319
|
-
actions.handleDragStart({
|
|
320
|
-
clientX: e.clientX,
|
|
321
|
-
clientY: e.clientY
|
|
322
|
-
});
|
|
323
|
-
}, [actions]);
|
|
324
|
-
const handlePointerMove = useCallback(e => {
|
|
325
|
-
const result = actions.handleDragMove({
|
|
326
|
-
clientX: e.clientX,
|
|
327
|
-
clientY: e.clientY
|
|
328
|
-
});
|
|
329
|
-
if (result.isDragging) {
|
|
330
|
-
setAnimatedPosition(result.position);
|
|
331
|
-
}
|
|
332
|
-
}, [actions, setAnimatedPosition]);
|
|
333
|
-
const handlePointerUp = useCallback(e => {
|
|
334
|
-
setIsPointerDown(false);
|
|
335
|
-
const result = actions.handleDragEnd({
|
|
336
|
-
clientX: e.clientX,
|
|
337
|
-
clientY: e.clientY
|
|
338
|
-
});
|
|
339
|
-
if (result.wasTap) {
|
|
340
|
-
const toggleResult = actions.toggleHideShow();
|
|
341
|
-
animateTo(state.position, toggleResult.targetPosition, () => {
|
|
342
|
-
actions.commitPosition(toggleResult.targetPosition);
|
|
343
|
-
});
|
|
344
|
-
} else if (result.shouldHide) {
|
|
345
|
-
animateTo(state.position, result.position, () => {
|
|
346
|
-
actions.commitPosition(result.position);
|
|
347
|
-
});
|
|
348
|
-
}
|
|
349
|
-
}, [actions, animateTo, state.position]);
|
|
350
|
-
useEffect(() => {
|
|
351
|
-
if (isPointerDown) {
|
|
352
|
-
window.addEventListener('pointermove', handlePointerMove);
|
|
353
|
-
window.addEventListener('pointerup', handlePointerUp);
|
|
354
|
-
window.addEventListener('pointercancel', handlePointerUp);
|
|
355
|
-
return () => {
|
|
356
|
-
window.removeEventListener('pointermove', handlePointerMove);
|
|
357
|
-
window.removeEventListener('pointerup', handlePointerUp);
|
|
358
|
-
window.removeEventListener('pointercancel', handlePointerUp);
|
|
359
|
-
};
|
|
360
|
-
}
|
|
361
|
-
}, [isPointerDown, handlePointerMove, handlePointerUp]);
|
|
362
|
-
|
|
363
|
-
// Live refs so the pushToSide effect never animates from a stale closure
|
|
364
|
-
// (the from-position jump read as a "pop" when restoring).
|
|
365
|
-
const statePositionRef = useRef(state.position);
|
|
366
|
-
statePositionRef.current = state.position;
|
|
367
|
-
const isHiddenRef = useRef(state.isHidden);
|
|
368
|
-
isHiddenRef.current = state.isHidden;
|
|
369
|
-
|
|
370
|
-
// pushToSide: forceHide to the edge while a dial/tool is open; forceShow
|
|
371
|
-
// restores the saved position when it closes (200ms, native parity).
|
|
372
|
-
// Native semantics ported exactly (floatingTools.tsx:537-603):
|
|
373
|
-
// - push only when the bubble isn't already hidden (a user-hidden bubble
|
|
374
|
-
// is left alone, and we don't claim it as OUR push)
|
|
375
|
-
// - restore only when the bubble is STILL hidden from OUR push — if the
|
|
376
|
-
// user tapped/dragged it back out while a tool was open
|
|
377
|
-
// (userWantsVisibleRef), it stays exactly where they put it
|
|
378
|
-
const pushedRef = useRef(false);
|
|
379
|
-
useEffect(() => {
|
|
380
|
-
if (!isInitialized) return;
|
|
381
|
-
if (pushToSide && !pushedRef.current) {
|
|
382
|
-
if (isHiddenRef.current) return; // user hid it themselves — not our push
|
|
383
|
-
pushedRef.current = true;
|
|
384
|
-
const {
|
|
385
|
-
targetPosition
|
|
386
|
-
} = actions.forceHide();
|
|
387
|
-
animateTo(statePositionRef.current, targetPosition, () => {});
|
|
388
|
-
} else if (!pushToSide && pushedRef.current) {
|
|
389
|
-
pushedRef.current = false;
|
|
390
|
-
// User already showed it manually while the tool was open — leave it.
|
|
391
|
-
if (!isHiddenRef.current) return;
|
|
392
|
-
const {
|
|
393
|
-
targetPosition
|
|
394
|
-
} = actions.forceShow();
|
|
395
|
-
// The bubble may have grown while hidden (row tools/env badge toggled
|
|
396
|
-
// on) — clamp the restored position so it stays fully on-screen
|
|
397
|
-
// (native handles this via its width-change auto-reposition).
|
|
398
|
-
const width = bubbleRef.current?.getBoundingClientRect().width ?? 100;
|
|
399
|
-
const clamped = {
|
|
400
|
-
x: Math.max(10, Math.min(targetPosition.x, window.innerWidth - width - 10)),
|
|
401
|
-
y: targetPosition.y
|
|
402
|
-
};
|
|
403
|
-
animateTo(statePositionRef.current, clamped, () => {
|
|
404
|
-
actions.commitPosition(clamped);
|
|
405
|
-
});
|
|
406
|
-
}
|
|
407
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
408
|
-
}, [pushToSide, isInitialized]);
|
|
409
|
-
|
|
410
|
-
// centerOnboarding: park the bubble under the tooltip arrow while the
|
|
411
|
-
// welcome tooltip is up (native calculateTargetPosition math).
|
|
412
|
-
useEffect(() => {
|
|
413
|
-
if (!centerOnboarding || !isInitialized) return;
|
|
414
|
-
const bubbleWidth = bubbleRef.current?.getBoundingClientRect().width ?? 100;
|
|
415
|
-
const bubbleHeight = bubbleRef.current?.getBoundingClientRect().height ?? 32;
|
|
416
|
-
const fromBottom = calculateTargetPosition();
|
|
417
|
-
const target = {
|
|
418
|
-
x: (window.innerWidth - bubbleWidth) / 2,
|
|
419
|
-
y: window.innerHeight - fromBottom - bubbleHeight
|
|
420
|
-
};
|
|
421
|
-
animateTo(statePositionRef.current, target, () => {});
|
|
422
|
-
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
423
|
-
}, [centerOnboarding, isInitialized]);
|
|
424
|
-
|
|
425
|
-
// Interleave children with dividers
|
|
426
|
-
const actionsContent = useMemo(() => interleaveWithDividers(Children.toArray(children), key => /*#__PURE__*/_jsx(Divider, {}, key)), [children]);
|
|
427
|
-
|
|
428
|
-
// Suppress the first paint until the persisted position has loaded so the
|
|
429
|
-
// bubble doesn't flash at 0,0 (native floatingTools.tsx:935-937).
|
|
430
|
-
if (!isInitialized) {
|
|
431
|
-
return null;
|
|
432
|
-
}
|
|
433
|
-
return /*#__PURE__*/_jsxs("div", {
|
|
434
|
-
ref: bubbleRef,
|
|
435
|
-
role: "toolbar",
|
|
436
|
-
"aria-label": "Floating Tools",
|
|
437
|
-
style: {
|
|
438
|
-
position: 'fixed',
|
|
439
|
-
left: animatedPosition.x,
|
|
440
|
-
top: animatedPosition.y,
|
|
441
|
-
zIndex: 9999,
|
|
442
|
-
display: 'flex',
|
|
443
|
-
flexDirection: 'row',
|
|
444
|
-
alignItems: 'center',
|
|
445
|
-
backgroundColor: floatingToolsColors.panel,
|
|
446
|
-
// native: top-left corner + top border flatten when the minimized
|
|
447
|
-
// stack is fused above (floatingTools.tsx containerStyle)
|
|
448
|
-
borderTopLeftRadius: hasMinimizedStack ? 0 : 6,
|
|
449
|
-
borderTopRightRadius: 6,
|
|
450
|
-
borderBottomLeftRadius: 6,
|
|
451
|
-
borderBottomRightRadius: 6,
|
|
452
|
-
borderWidth: state.isDragging ? 2 : 1,
|
|
453
|
-
borderTopWidth: state.isDragging ? 2 : hasMinimizedStack ? 0 : 1,
|
|
454
|
-
borderStyle: 'solid',
|
|
455
|
-
borderColor: state.isDragging ? floatingToolsColors.dragActive : withAlpha(floatingToolsColors.muted, '66'),
|
|
456
|
-
// native floatingTools.tsx: shadowOffset {0, 6|4}, shadowRadius 12|8,
|
|
457
|
-
// shadowOpacity 0.6|0.3, shadowColor dragActive+"99"|"#000".
|
|
458
|
-
// Dragging color = 0x99 (0.6) alpha x 0.6 shadowOpacity = ~0.36 effective.
|
|
459
|
-
boxShadow: state.isDragging ? `0 6px 12px ${withAlpha(floatingToolsColors.dragActive, 0.36)}` : '0 4px 8px rgba(0, 0, 0, 0.3)',
|
|
460
|
-
userSelect: 'none',
|
|
461
|
-
touchAction: 'none',
|
|
462
|
-
pointerEvents: suspendPointerEvents ? 'none' : 'auto'
|
|
463
|
-
},
|
|
464
|
-
children: [minimizedStack && /*#__PURE__*/_jsx("div", {
|
|
465
|
-
style: {
|
|
466
|
-
position: 'absolute',
|
|
467
|
-
bottom: '100%',
|
|
468
|
-
left: -1,
|
|
469
|
-
// align with the bubble border edge
|
|
470
|
-
width: VISIBLE_HANDLE_WIDTH,
|
|
471
|
-
overflow: 'visible',
|
|
472
|
-
zIndex: 1001
|
|
473
|
-
},
|
|
474
|
-
children: minimizedStack
|
|
475
|
-
}), /*#__PURE__*/_jsx("div", {
|
|
476
|
-
role: "slider",
|
|
477
|
-
"aria-label": "Drag handle",
|
|
478
|
-
"aria-valuetext": `Position: ${Math.round(animatedPosition.x)}, ${Math.round(animatedPosition.y)}`,
|
|
479
|
-
tabIndex: 0,
|
|
480
|
-
onPointerDown: handlePointerDown,
|
|
481
|
-
style: {
|
|
482
|
-
touchAction: 'none',
|
|
483
|
-
paddingLeft: 6,
|
|
484
|
-
paddingRight: 6,
|
|
485
|
-
paddingTop: 6,
|
|
486
|
-
paddingBottom: 6,
|
|
487
|
-
backgroundColor: withAlpha(floatingToolsColors.muted, '1A'),
|
|
488
|
-
display: 'flex',
|
|
489
|
-
alignItems: 'center',
|
|
490
|
-
justifyContent: 'center',
|
|
491
|
-
width: VISIBLE_HANDLE_WIDTH,
|
|
492
|
-
boxSizing: 'border-box',
|
|
493
|
-
// RN width includes padding/border
|
|
494
|
-
borderRight: `1px solid ${withAlpha(floatingToolsColors.muted, '66')}`,
|
|
495
|
-
// native dragHandleStyle sets NO corner radius (container overflow is
|
|
496
|
-
// visible); the 10%-alpha bg square corner matches native rendering
|
|
497
|
-
cursor: state.isDragging ? 'grabbing' : 'grab'
|
|
498
|
-
},
|
|
499
|
-
children: /*#__PURE__*/_jsx(GripVerticalIcon, {
|
|
500
|
-
size: 12
|
|
501
|
-
})
|
|
502
|
-
}), /*#__PURE__*/_jsx(FloatingToolsProvider, {
|
|
503
|
-
value: {
|
|
504
|
-
isDragging: state.isDragging,
|
|
505
|
-
isHidden: state.isHidden
|
|
506
|
-
},
|
|
507
|
-
children: /*#__PURE__*/_jsx("div", {
|
|
508
|
-
style: {
|
|
509
|
-
display: 'flex',
|
|
510
|
-
flexDirection: 'row',
|
|
511
|
-
alignItems: 'center',
|
|
512
|
-
gap: 6,
|
|
513
|
-
paddingRight: 8
|
|
514
|
-
},
|
|
515
|
-
children: actionsContent
|
|
516
|
-
})
|
|
517
|
-
})]
|
|
518
|
-
});
|
|
519
|
-
}
|
|
3
|
+
export { FloatingTool as FloatingTools, FloatingToolDivider as Divider, FloatingToolUserStatus as UserStatus, getBubbleAnchorPosition } from "@buoy-gg/shared-ui/floating";
|
|
@@ -16,6 +16,10 @@ const MODULE_NOT_FOUND_RE = /could not be found within the project|Cannot find m
|
|
|
16
16
|
*/
|
|
17
17
|
export function reportOptionalRequireError(moduleName, err) {
|
|
18
18
|
if (!isDev) return;
|
|
19
|
+
// Under an ESM bundler (the desktop's Vite renderer) `require` itself does
|
|
20
|
+
// not exist, so every guarded require fails the same way. That says nothing
|
|
21
|
+
// about the package, so it is not worth a warning.
|
|
22
|
+
if (typeof require !== "function") return;
|
|
19
23
|
const message = err instanceof Error ? err.message : String(err);
|
|
20
24
|
const code = err?.code;
|
|
21
25
|
const isNotFound = code === "MODULE_NOT_FOUND" || MODULE_NOT_FOUND_RE.test(message);
|
|
@@ -70,6 +70,13 @@ function announceOnce() {
|
|
|
70
70
|
}
|
|
71
71
|
let sentThisSession = false;
|
|
72
72
|
|
|
73
|
+
/**
|
|
74
|
+
* What the ping reports about the account: the tier of an admitted account,
|
|
75
|
+
* or "locked" for an install that has not been admitted (no key, or a key the
|
|
76
|
+
* license server rejected). "locked" is what gives "how many installs never
|
|
77
|
+
* get an account" its numerator.
|
|
78
|
+
*/
|
|
79
|
+
|
|
73
80
|
/**
|
|
74
81
|
* Send the ping if it is due. Safe to call on every mount: it is idempotent
|
|
75
82
|
* within a session, throttled to once a day across sessions, and resolves
|
package/lib/module/version.js
CHANGED
|
@@ -14,9 +14,9 @@
|
|
|
14
14
|
*/
|
|
15
15
|
export interface BuoyConfig {
|
|
16
16
|
/**
|
|
17
|
-
* Your
|
|
17
|
+
* Your Free or Pro Buoy account key
|
|
18
18
|
* Get one at https://buoy.gg/pricing
|
|
19
|
-
*
|
|
19
|
+
* Omit to preserve activation; pass an empty string to sign out and lock tools
|
|
20
20
|
*/
|
|
21
21
|
licenseKey?: string;
|
|
22
22
|
/**
|
|
@@ -83,7 +83,18 @@ export declare const Buoy: {
|
|
|
83
83
|
/**
|
|
84
84
|
* Get the current license state
|
|
85
85
|
*/
|
|
86
|
-
getState():
|
|
86
|
+
getState(): {
|
|
87
|
+
tier: import("@buoy-gg/license").BuoyTier;
|
|
88
|
+
isPro: boolean;
|
|
89
|
+
access: import("@buoy-gg/license").AccountAccess;
|
|
90
|
+
isInitialized: boolean;
|
|
91
|
+
isValidating: boolean;
|
|
92
|
+
tierSource: import("@buoy-gg/license").TierSource;
|
|
93
|
+
licenseKey: string | null;
|
|
94
|
+
error: string | null;
|
|
95
|
+
errorKind: "transport" | "verdict" | null;
|
|
96
|
+
expiresAt: Date | null;
|
|
97
|
+
};
|
|
87
98
|
/**
|
|
88
99
|
* Force device re-registration (debugging helper)
|
|
89
100
|
* Clears cached fingerprint so next init will register device again
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"Buoy.d.ts","sourceRoot":"","sources":["../../../src/Buoy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,MAAM,WAAW,UAAU;IACzB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;;;;OAUG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAQD,6DAA6D;AAC7D,wBAAgB,kBAAkB,IAAI,OAAO,CAE5C;AAED;;;;GAIG;AACH,eAAO,MAAM,IAAI;IACf;;;;;;;;;;;;;;;;;;;;OAoBG;iBACU,UAAU,GAAG,IAAI;
|
|
1
|
+
{"version":3,"file":"Buoy.d.ts","sourceRoot":"","sources":["../../../src/Buoy.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAIH,MAAM,WAAW,UAAU;IACzB;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;;;;;;;;;OAUG;IACH,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAQD,6DAA6D;AAC7D,wBAAgB,kBAAkB,IAAI,OAAO,CAE5C;AAED;;;;GAIG;AACH,eAAO,MAAM,IAAI;IACf;;;;;;;;;;;;;;;;;;;;OAoBG;iBACU,UAAU,GAAG,IAAI;IAQ9B;;;;;;;;;;;;OAYG;sBACqB,UAAU,GAAG,OAAO,CAAC,OAAO,CAAC;IAKrD;;OAEG;aACM,OAAO;IAIhB;;OAEG;;;;;;;;;;;;;IAKH;;;OAGG;uBACsB,OAAO,CAAC,IAAI,CAAC;CAGvC,CAAC;AAGF,eAAe,IAAI,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import React from "react";
|
|
2
|
+
import type { FloatingMenuRenderCtx, InstalledApp } from "./types";
|
|
3
|
+
/** DOM twin of the native icon resolver; importing RN breaks pure web hosts. */
|
|
4
|
+
export declare function AppTextIcon({ label, size, color }: {
|
|
5
|
+
label: string;
|
|
6
|
+
size: number;
|
|
7
|
+
color?: string;
|
|
8
|
+
}): React.JSX.Element;
|
|
9
|
+
export declare function renderAppIcon(icon: InstalledApp["icon"], ctx: Partial<FloatingMenuRenderCtx> & {
|
|
10
|
+
slot: FloatingMenuRenderCtx["slot"];
|
|
11
|
+
size: number;
|
|
12
|
+
color?: string;
|
|
13
|
+
}): React.ReactNode;
|
|
14
|
+
//# sourceMappingURL=AppIcon.web.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AppIcon.web.d.ts","sourceRoot":"","sources":["../../../../src/floatingMenu/AppIcon.web.tsx"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,KAAK,EAAE,qBAAqB,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEnE,gFAAgF;AAChF,wBAAgB,WAAW,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,KAA6B,EAAE,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,qBAK1H;AACD,wBAAgB,aAAa,CAAC,IAAI,EAAE,YAAY,CAAC,MAAM,CAAC,EAAE,GAAG,EAAE,OAAO,CAAC,qBAAqB,CAAC,GAAG;IAAE,IAAI,EAAE,qBAAqB,CAAC,MAAM,CAAC,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,KAAK,CAAC,SAAS,CAKtL"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DevToolsSettingsModal.d.ts","sourceRoot":"","sources":["../../../../src/floatingMenu/DevToolsSettingsModal.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA6C,EAAE,EAAa,MAAM,OAAO,CAAC;AA2CjF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AA6G5C;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;;OAIG;IACH,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC;;;OAGG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,4EAA4E;IAC5E,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,uFAAuF;IACvF,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;QACvC,WAAW,EAAE,OAAO,CAAC;KACtB,CAAC;IACF,kDAAkD;IAClD,cAAc,CAAC,EAAE,sBAAsB,CAAC;CACzC;AAED;;;;GAIG;AACH,UAAU,gBAAgB;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;IAC/B,IAAI,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,0BAA0B;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACxD,eAAe,CAAC,EAAE,gBAAgB,CAAC;IACnC,aAAa,CAAC,EAAE,gBAAgB,EAAE,CAAC;CACpC;AAsDD;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,EAAE,EAAE,CAAC,0BAA0B,
|
|
1
|
+
{"version":3,"file":"DevToolsSettingsModal.d.ts","sourceRoot":"","sources":["../../../../src/floatingMenu/DevToolsSettingsModal.tsx"],"names":[],"mappings":"AAAA,OAAO,EAA6C,EAAE,EAAa,MAAM,OAAO,CAAC;AA2CjF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AA6G5C;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC;;;;OAIG;IACH,2BAA2B,CAAC,EAAE,OAAO,CAAC;IACtC;;;OAGG;IACH,wBAAwB,CAAC,EAAE,OAAO,CAAC;CACpC;AAED;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC/B,4EAA4E;IAC5E,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,uFAAuF;IACvF,aAAa,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG;QACvC,WAAW,EAAE,OAAO,CAAC;KACtB,CAAC;IACF,kDAAkD;IAClD,cAAc,CAAC,EAAE,sBAAsB,CAAC;CACzC;AAED;;;;GAIG;AACH,UAAU,gBAAgB;IACxB,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,GAAG,KAAK,GAAG,MAAM,CAAC;IAC/B,IAAI,CAAC,EAAE,YAAY,CAAC,MAAM,CAAC,CAAC;IAC5B,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,UAAU,0BAA0B;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,IAAI,CAAC;IACxD,eAAe,CAAC,EAAE,gBAAgB,CAAC;IACnC,aAAa,CAAC,EAAE,gBAAgB,EAAE,CAAC;CACpC;AAsDD;;;;;;;GAOG;AACH,eAAO,MAAM,qBAAqB,EAAE,EAAE,CAAC,0BAA0B,CAqxBhE,CAAC;AA8FF,eAAO,MAAM,mBAAmB;;;CAuD/B,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DevToolsSettingsModal.web.d.ts","sourceRoot":"","sources":["../../../../src/floatingMenu/DevToolsSettingsModal.web.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAWL,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EAEpB,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"DevToolsSettingsModal.web.d.ts","sourceRoot":"","sources":["../../../../src/floatingMenu/DevToolsSettingsModal.web.tsx"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,EAWL,KAAK,mBAAmB,EACxB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EAEpB,MAAM,+BAA+B,CAAC;AA6EvC,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,IAAI,CAAC;IACpB,cAAc,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACvC,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,OAAO,CAAC,EAAE,cAAc,CAAC;IACzB,gBAAgB,CAAC,EAAE,CAAC,QAAQ,EAAE,gBAAgB,KAAK,IAAI,CAAC;CACzD;AA8gBD,wBAAgB,aAAa,CAAC,EAC5B,OAAO,EACP,OAAO,EACP,cAAmB,EACnB,oBAAoB,EACpB,gBAAgB,EAChB,OAA2B,EAC3B,gBAAgB,GACjB,EAAE,kBAAkB,sCAkXpB"}
|
|
@@ -225,17 +225,7 @@ export interface FloatingDevToolsProps extends Omit<FloatingMenuProps, "apps"> {
|
|
|
225
225
|
* ```
|
|
226
226
|
*/
|
|
227
227
|
onEnvironmentSwitch?: (environment: import("@buoy-gg/shared-ui").Environment) => void;
|
|
228
|
-
/**
|
|
229
|
-
* Require a valid license key to use the DevTools.
|
|
230
|
-
* When enabled, users must enter a license key (free or pro) before
|
|
231
|
-
* they can access any tools. Great for tracking user signups.
|
|
232
|
-
*
|
|
233
|
-
* @default false
|
|
234
|
-
* @example
|
|
235
|
-
* ```tsx
|
|
236
|
-
* <FloatingDevTools requireLicense />
|
|
237
|
-
* ```
|
|
238
|
-
*/
|
|
228
|
+
/** @deprecated Account access is always required for Free and Pro users. */
|
|
239
229
|
requireLicense?: boolean;
|
|
240
230
|
/**
|
|
241
231
|
* Your Buoy Pro license key.
|
|
@@ -307,8 +297,8 @@ export interface FloatingDevToolsProps extends Omit<FloatingMenuProps, "apps"> {
|
|
|
307
297
|
* overlays. For builds that ship to non-developers (field/associate
|
|
308
298
|
* builds) where the desktop dashboard is the only debugging surface.
|
|
309
299
|
*
|
|
310
|
-
*
|
|
311
|
-
*
|
|
300
|
+
* A verified account is required in headless mode too;
|
|
301
|
+
* production restrictions still apply. Native only.
|
|
312
302
|
*
|
|
313
303
|
* @default false
|
|
314
304
|
*/
|
|
@@ -368,5 +358,5 @@ export interface FloatingDevToolsProps extends Omit<FloatingMenuProps, "apps"> {
|
|
|
368
358
|
*
|
|
369
359
|
* @param props - FloatingDevTools props
|
|
370
360
|
*/
|
|
371
|
-
export declare const FloatingDevTools: ({ apps, requiredEnvVars, requiredStorageKeys, askBuoy, children, disableHints, defaultFloatingTools, defaultDialTools, requireLicense, licenseKey: licenseKeyProp, zustandStores, environment, externalSync, headless, ...props }: FloatingDevToolsProps) => React.JSX.Element | null;
|
|
361
|
+
export declare const FloatingDevTools: ({ apps, requiredEnvVars, requiredStorageKeys, askBuoy, children, disableHints, defaultFloatingTools, defaultDialTools, requireLicense: _requireLicense, licenseKey: licenseKeyProp, zustandStores, environment, externalSync, headless, ...props }: FloatingDevToolsProps) => React.JSX.Element | null;
|
|
372
362
|
//# sourceMappingURL=FloatingDevTools.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"FloatingDevTools.d.ts","sourceRoot":"","sources":["../../../../src/floatingMenu/FloatingDevTools.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"FloatingDevTools.d.ts","sourceRoot":"","sources":["../../../../src/floatingMenu/FloatingDevTools.tsx"],"names":[],"mappings":"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"}
|