@buoy-gg/core 7.0.41 → 7.0.43
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 +14 -95
- package/bin/buoy.js +19 -340
- package/lib/commonjs/Buoy.js +1 -107
- package/lib/commonjs/browserRegister.js +1 -48
- package/lib/commonjs/browserRegister.server.js +1 -10
- package/lib/commonjs/earlyHookScript.js +1 -0
- package/lib/commonjs/earlyNetwork.js +1 -0
- package/lib/commonjs/floatingMenu/AppHost.js +1 -460
- package/lib/commonjs/floatingMenu/AppHost.web.js +1 -376
- package/lib/commonjs/floatingMenu/AppHostLogic.js +1 -50
- package/lib/commonjs/floatingMenu/AppIcon.js +1 -91
- package/lib/commonjs/floatingMenu/AppIcon.web.js +1 -53
- package/lib/commonjs/floatingMenu/BrowserToolRuntime.js +1 -150
- package/lib/commonjs/floatingMenu/DefaultConfigContext.js +1 -45
- package/lib/commonjs/floatingMenu/DevToolsSettingsModal.js +1 -18
- package/lib/commonjs/floatingMenu/DevToolsSettingsModal.shared.js +1 -1114
- package/lib/commonjs/floatingMenu/DevToolsSettingsModal.web.js +1 -48
- package/lib/commonjs/floatingMenu/DevToolsVisibilityContext.js +1 -49
- package/lib/commonjs/floatingMenu/FloatingDevTools.js +1 -559
- package/lib/commonjs/floatingMenu/FloatingDevTools.web.js +1 -415
- package/lib/commonjs/floatingMenu/FloatingMenu.js +1 -371
- package/lib/commonjs/floatingMenu/MinimizedToolsContext.js +1 -274
- package/lib/commonjs/floatingMenu/MinimizedToolsStack.js +1 -288
- package/lib/commonjs/floatingMenu/MinimizedToolsStack.web.js +1 -377
- package/lib/commonjs/floatingMenu/ToggleStateManager.js +1 -36
- package/lib/commonjs/floatingMenu/ToolHost.js +1 -281
- package/lib/commonjs/floatingMenu/ToolOpenerBridge.js +1 -41
- package/lib/commonjs/floatingMenu/autoDiscoverPresets.js +1 -471
- package/lib/commonjs/floatingMenu/autoExternalSync.js +1 -443
- package/lib/commonjs/floatingMenu/defaultConfig.js +1 -167
- package/lib/commonjs/floatingMenu/deviceIdentity.js +1 -173
- package/lib/commonjs/floatingMenu/dial/DialDevTools.js +1 -904
- package/lib/commonjs/floatingMenu/dial/DialDevTools.web.js +1 -895
- package/lib/commonjs/floatingMenu/dial/DialHyperspace.js +1 -177
- package/lib/commonjs/floatingMenu/dial/DialIcon.js +1 -304
- package/lib/commonjs/floatingMenu/dial/DialPagination.js +1 -165
- package/lib/commonjs/floatingMenu/dial/DialSnow.js +1 -92
- package/lib/commonjs/floatingMenu/dial/OnboardingTooltip.js +1 -246
- package/lib/commonjs/floatingMenu/dial/OnboardingTooltip.web.js +2 -147
- package/lib/commonjs/floatingMenu/dial/dialUsageStore.js +1 -93
- package/lib/commonjs/floatingMenu/dial/onboardingConstants.js +1 -42
- package/lib/commonjs/floatingMenu/dial/onboardingConstants.web.js +1 -42
- package/lib/commonjs/floatingMenu/externalSyncGate.js +1 -49
- package/lib/commonjs/floatingMenu/floatingTools.js +1 -42
- package/lib/commonjs/floatingMenu/floatingTools.web.js +1 -30
- package/lib/commonjs/floatingMenu/optionalRequire.js +1 -37
- package/lib/commonjs/floatingMenu/settingsBus.js +1 -12
- package/lib/commonjs/floatingMenu/sync/appSyncAdapter.js +1 -115
- package/lib/commonjs/floatingMenu/types.js +1 -5
- package/lib/commonjs/floatingMenu/useDesktopSyncStatus.js +1 -28
- package/lib/commonjs/floatingMenu/useDesktopSyncStatus.web.js +1 -14
- package/lib/commonjs/index.js +1 -291
- package/lib/commonjs/index.web.js +1 -241
- package/lib/commonjs/reactDevtoolsTypes.js +1 -1
- package/lib/commonjs/releaseOptIn.js +1 -0
- package/lib/commonjs/telemetry/installPing.js +1 -131
- package/lib/commonjs/toolkit.js +1 -584
- package/lib/commonjs/toolkitComponents.js +1 -241
- package/lib/commonjs/utils/autoDiscoverPresets.web.js +1 -46
- package/lib/commonjs/utils/createWebTool.js +1 -20
- package/lib/commonjs/utils/createWebTools.js +1 -30
- package/lib/commonjs/version.js +1 -18
- package/lib/module/Buoy.js +1 -102
- package/lib/module/browserRegister.js +1 -44
- package/lib/module/browserRegister.server.js +1 -6
- package/lib/module/earlyHookScript.js +1 -0
- package/lib/module/earlyNetwork.js +1 -0
- package/lib/module/floatingMenu/AppHost.js +1 -452
- package/lib/module/floatingMenu/AppHost.web.js +1 -368
- package/lib/module/floatingMenu/AppHostLogic.js +1 -45
- package/lib/module/floatingMenu/AppIcon.js +1 -84
- package/lib/module/floatingMenu/AppIcon.web.js +1 -47
- package/lib/module/floatingMenu/BrowserToolRuntime.js +1 -146
- package/lib/module/floatingMenu/DefaultConfigContext.js +1 -39
- package/lib/module/floatingMenu/DevToolsSettingsModal.js +1 -3
- package/lib/module/floatingMenu/DevToolsSettingsModal.shared.js +1 -1110
- package/lib/module/floatingMenu/DevToolsSettingsModal.web.js +1 -44
- package/lib/module/floatingMenu/DevToolsVisibilityContext.js +1 -44
- package/lib/module/floatingMenu/FloatingDevTools.js +1 -556
- package/lib/module/floatingMenu/FloatingDevTools.web.js +1 -412
- package/lib/module/floatingMenu/FloatingMenu.js +1 -366
- package/lib/module/floatingMenu/MinimizedToolsContext.js +1 -266
- package/lib/module/floatingMenu/MinimizedToolsStack.js +1 -285
- package/lib/module/floatingMenu/MinimizedToolsStack.web.js +1 -374
- package/lib/module/floatingMenu/ToggleStateManager.js +1 -32
- package/lib/module/floatingMenu/ToolHost.js +1 -273
- package/lib/module/floatingMenu/ToolOpenerBridge.js +1 -37
- package/lib/module/floatingMenu/autoDiscoverPresets.js +1 -467
- package/lib/module/floatingMenu/autoExternalSync.js +1 -436
- package/lib/module/floatingMenu/defaultConfig.js +1 -158
- package/lib/module/floatingMenu/deviceIdentity.js +1 -163
- package/lib/module/floatingMenu/dial/DialDevTools.js +1 -900
- package/lib/module/floatingMenu/dial/DialDevTools.web.js +1 -891
- package/lib/module/floatingMenu/dial/DialHyperspace.js +1 -173
- package/lib/module/floatingMenu/dial/DialIcon.js +1 -301
- package/lib/module/floatingMenu/dial/DialPagination.js +1 -160
- package/lib/module/floatingMenu/dial/DialSnow.js +1 -90
- package/lib/module/floatingMenu/dial/OnboardingTooltip.js +1 -240
- package/lib/module/floatingMenu/dial/OnboardingTooltip.web.js +2 -142
- package/lib/module/floatingMenu/dial/dialUsageStore.js +1 -85
- package/lib/module/floatingMenu/dial/onboardingConstants.js +1 -3
- package/lib/module/floatingMenu/dial/onboardingConstants.web.js +1 -3
- package/lib/module/floatingMenu/externalSyncGate.js +1 -44
- package/lib/module/floatingMenu/floatingTools.js +1 -27
- package/lib/module/floatingMenu/floatingTools.web.js +1 -3
- package/lib/module/floatingMenu/optionalRequire.js +1 -33
- package/lib/module/floatingMenu/settingsBus.js +1 -3
- package/lib/module/floatingMenu/sync/appSyncAdapter.js +1 -112
- package/lib/module/floatingMenu/types.js +1 -3
- package/lib/module/floatingMenu/useDesktopSyncStatus.js +1 -25
- package/lib/module/floatingMenu/useDesktopSyncStatus.web.js +1 -10
- package/lib/module/index.js +1 -41
- package/lib/module/index.web.js +1 -36
- package/lib/module/reactDevtoolsTypes.js +1 -1
- package/lib/module/releaseOptIn.js +1 -0
- package/lib/module/telemetry/installPing.js +1 -127
- package/lib/module/toolkit.js +1 -62
- package/lib/module/toolkitComponents.js +1 -230
- package/lib/module/utils/autoDiscoverPresets.web.js +1 -38
- package/lib/module/utils/createWebTool.js +1 -17
- package/lib/module/utils/createWebTools.js +1 -25
- package/lib/module/version.js +1 -14
- package/lib/typescript/commonjs/browserRegister.d.ts +9 -1
- package/lib/typescript/commonjs/browserRegister.server.d.ts +1 -0
- package/lib/typescript/commonjs/earlyHookScript.d.ts +12 -0
- package/lib/typescript/commonjs/earlyNetwork.d.ts +52 -0
- package/lib/typescript/commonjs/floatingMenu/defaultConfig.d.ts +1 -1
- package/lib/typescript/commonjs/index.web.d.ts +1 -0
- package/lib/typescript/commonjs/releaseOptIn.d.ts +4 -0
- package/lib/typescript/commonjs/version.d.ts +1 -1
- package/lib/typescript/module/browserRegister.d.ts +9 -1
- package/lib/typescript/module/browserRegister.server.d.ts +1 -0
- package/lib/typescript/module/earlyHookScript.d.ts +12 -0
- package/lib/typescript/module/earlyNetwork.d.ts +52 -0
- package/lib/typescript/module/floatingMenu/defaultConfig.d.ts +1 -1
- package/lib/typescript/module/index.web.d.ts +1 -0
- package/lib/typescript/module/releaseOptIn.d.ts +4 -0
- package/lib/typescript/module/version.d.ts +1 -1
- package/lib/web/chunks/chunk-5SGL6QL4.mjs +1 -0
- package/lib/web/chunks/chunk-FROELTJH.mjs +1 -0
- package/lib/web/chunks/chunk-QZDVCMCT.mjs +1 -2
- package/lib/web/chunks/chunk-R7RGRTY5.mjs +1 -2
- package/lib/web/index.mjs +2 -3
- package/lib/web/register-server.mjs +1 -2
- package/lib/web/register.mjs +1 -2
- package/lib/web/toolkit.mjs +1 -2
- package/package.json +6 -9
- package/lib/typescript/commonjs/Buoy.d.ts.map +0 -1
- package/lib/typescript/commonjs/browserRegister.d.ts.map +0 -1
- package/lib/typescript/commonjs/browserRegister.server.d.ts.map +0 -1
- package/lib/typescript/commonjs/floatingMenu/AppHost.d.ts.map +0 -1
- package/lib/typescript/commonjs/floatingMenu/AppHost.web.d.ts.map +0 -1
- package/lib/typescript/commonjs/floatingMenu/AppHostLogic.d.ts.map +0 -1
- package/lib/typescript/commonjs/floatingMenu/AppIcon.d.ts.map +0 -1
- package/lib/typescript/commonjs/floatingMenu/AppIcon.web.d.ts.map +0 -1
- package/lib/typescript/commonjs/floatingMenu/BrowserToolRuntime.d.ts.map +0 -1
- package/lib/typescript/commonjs/floatingMenu/DefaultConfigContext.d.ts.map +0 -1
- package/lib/typescript/commonjs/floatingMenu/DevToolsSettingsModal.d.ts.map +0 -1
- package/lib/typescript/commonjs/floatingMenu/DevToolsSettingsModal.shared.d.ts.map +0 -1
- package/lib/typescript/commonjs/floatingMenu/DevToolsSettingsModal.web.d.ts.map +0 -1
- package/lib/typescript/commonjs/floatingMenu/DevToolsVisibilityContext.d.ts.map +0 -1
- package/lib/typescript/commonjs/floatingMenu/FloatingDevTools.d.ts.map +0 -1
- package/lib/typescript/commonjs/floatingMenu/FloatingDevTools.web.d.ts.map +0 -1
- package/lib/typescript/commonjs/floatingMenu/FloatingMenu.d.ts.map +0 -1
- package/lib/typescript/commonjs/floatingMenu/MinimizedToolsContext.d.ts.map +0 -1
- package/lib/typescript/commonjs/floatingMenu/MinimizedToolsStack.d.ts.map +0 -1
- package/lib/typescript/commonjs/floatingMenu/MinimizedToolsStack.web.d.ts.map +0 -1
- package/lib/typescript/commonjs/floatingMenu/ToggleStateManager.d.ts.map +0 -1
- package/lib/typescript/commonjs/floatingMenu/ToolHost.d.ts.map +0 -1
- package/lib/typescript/commonjs/floatingMenu/ToolOpenerBridge.d.ts.map +0 -1
- package/lib/typescript/commonjs/floatingMenu/autoDiscoverPresets.d.ts.map +0 -1
- package/lib/typescript/commonjs/floatingMenu/autoExternalSync.d.ts.map +0 -1
- package/lib/typescript/commonjs/floatingMenu/defaultConfig.d.ts.map +0 -1
- package/lib/typescript/commonjs/floatingMenu/deviceIdentity.d.ts.map +0 -1
- package/lib/typescript/commonjs/floatingMenu/dial/DialDevTools.d.ts.map +0 -1
- package/lib/typescript/commonjs/floatingMenu/dial/DialDevTools.web.d.ts.map +0 -1
- package/lib/typescript/commonjs/floatingMenu/dial/DialHyperspace.d.ts.map +0 -1
- package/lib/typescript/commonjs/floatingMenu/dial/DialIcon.d.ts.map +0 -1
- package/lib/typescript/commonjs/floatingMenu/dial/DialPagination.d.ts.map +0 -1
- package/lib/typescript/commonjs/floatingMenu/dial/DialSnow.d.ts.map +0 -1
- package/lib/typescript/commonjs/floatingMenu/dial/OnboardingTooltip.d.ts.map +0 -1
- package/lib/typescript/commonjs/floatingMenu/dial/OnboardingTooltip.web.d.ts.map +0 -1
- package/lib/typescript/commonjs/floatingMenu/dial/dialUsageStore.d.ts.map +0 -1
- package/lib/typescript/commonjs/floatingMenu/dial/onboardingConstants.d.ts.map +0 -1
- package/lib/typescript/commonjs/floatingMenu/dial/onboardingConstants.web.d.ts.map +0 -1
- package/lib/typescript/commonjs/floatingMenu/externalSyncGate.d.ts.map +0 -1
- package/lib/typescript/commonjs/floatingMenu/floatingTools.d.ts.map +0 -1
- package/lib/typescript/commonjs/floatingMenu/floatingTools.web.d.ts.map +0 -1
- package/lib/typescript/commonjs/floatingMenu/optionalRequire.d.ts.map +0 -1
- package/lib/typescript/commonjs/floatingMenu/settingsBus.d.ts.map +0 -1
- package/lib/typescript/commonjs/floatingMenu/sync/appSyncAdapter.d.ts.map +0 -1
- package/lib/typescript/commonjs/floatingMenu/types.d.ts.map +0 -1
- package/lib/typescript/commonjs/floatingMenu/useDesktopSyncStatus.d.ts.map +0 -1
- package/lib/typescript/commonjs/floatingMenu/useDesktopSyncStatus.web.d.ts.map +0 -1
- package/lib/typescript/commonjs/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/index.web.d.ts.map +0 -1
- package/lib/typescript/commonjs/reactDevtoolsTypes.d.ts.map +0 -1
- package/lib/typescript/commonjs/telemetry/installPing.d.ts.map +0 -1
- package/lib/typescript/commonjs/toolkit.d.ts.map +0 -1
- package/lib/typescript/commonjs/toolkitComponents.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/autoDiscoverPresets.web.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/createWebTool.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/createWebTools.d.ts.map +0 -1
- package/lib/typescript/commonjs/version.d.ts.map +0 -1
- package/lib/typescript/module/Buoy.d.ts.map +0 -1
- package/lib/typescript/module/browserRegister.d.ts.map +0 -1
- package/lib/typescript/module/browserRegister.server.d.ts.map +0 -1
- package/lib/typescript/module/floatingMenu/AppHost.d.ts.map +0 -1
- package/lib/typescript/module/floatingMenu/AppHost.web.d.ts.map +0 -1
- package/lib/typescript/module/floatingMenu/AppHostLogic.d.ts.map +0 -1
- package/lib/typescript/module/floatingMenu/AppIcon.d.ts.map +0 -1
- package/lib/typescript/module/floatingMenu/AppIcon.web.d.ts.map +0 -1
- package/lib/typescript/module/floatingMenu/BrowserToolRuntime.d.ts.map +0 -1
- package/lib/typescript/module/floatingMenu/DefaultConfigContext.d.ts.map +0 -1
- package/lib/typescript/module/floatingMenu/DevToolsSettingsModal.d.ts.map +0 -1
- package/lib/typescript/module/floatingMenu/DevToolsSettingsModal.shared.d.ts.map +0 -1
- package/lib/typescript/module/floatingMenu/DevToolsSettingsModal.web.d.ts.map +0 -1
- package/lib/typescript/module/floatingMenu/DevToolsVisibilityContext.d.ts.map +0 -1
- package/lib/typescript/module/floatingMenu/FloatingDevTools.d.ts.map +0 -1
- package/lib/typescript/module/floatingMenu/FloatingDevTools.web.d.ts.map +0 -1
- package/lib/typescript/module/floatingMenu/FloatingMenu.d.ts.map +0 -1
- package/lib/typescript/module/floatingMenu/MinimizedToolsContext.d.ts.map +0 -1
- package/lib/typescript/module/floatingMenu/MinimizedToolsStack.d.ts.map +0 -1
- package/lib/typescript/module/floatingMenu/MinimizedToolsStack.web.d.ts.map +0 -1
- package/lib/typescript/module/floatingMenu/ToggleStateManager.d.ts.map +0 -1
- package/lib/typescript/module/floatingMenu/ToolHost.d.ts.map +0 -1
- package/lib/typescript/module/floatingMenu/ToolOpenerBridge.d.ts.map +0 -1
- package/lib/typescript/module/floatingMenu/autoDiscoverPresets.d.ts.map +0 -1
- package/lib/typescript/module/floatingMenu/autoExternalSync.d.ts.map +0 -1
- package/lib/typescript/module/floatingMenu/defaultConfig.d.ts.map +0 -1
- package/lib/typescript/module/floatingMenu/deviceIdentity.d.ts.map +0 -1
- package/lib/typescript/module/floatingMenu/dial/DialDevTools.d.ts.map +0 -1
- package/lib/typescript/module/floatingMenu/dial/DialDevTools.web.d.ts.map +0 -1
- package/lib/typescript/module/floatingMenu/dial/DialHyperspace.d.ts.map +0 -1
- package/lib/typescript/module/floatingMenu/dial/DialIcon.d.ts.map +0 -1
- package/lib/typescript/module/floatingMenu/dial/DialPagination.d.ts.map +0 -1
- package/lib/typescript/module/floatingMenu/dial/DialSnow.d.ts.map +0 -1
- package/lib/typescript/module/floatingMenu/dial/OnboardingTooltip.d.ts.map +0 -1
- package/lib/typescript/module/floatingMenu/dial/OnboardingTooltip.web.d.ts.map +0 -1
- package/lib/typescript/module/floatingMenu/dial/dialUsageStore.d.ts.map +0 -1
- package/lib/typescript/module/floatingMenu/dial/onboardingConstants.d.ts.map +0 -1
- package/lib/typescript/module/floatingMenu/dial/onboardingConstants.web.d.ts.map +0 -1
- package/lib/typescript/module/floatingMenu/externalSyncGate.d.ts.map +0 -1
- package/lib/typescript/module/floatingMenu/floatingTools.d.ts.map +0 -1
- package/lib/typescript/module/floatingMenu/floatingTools.web.d.ts.map +0 -1
- package/lib/typescript/module/floatingMenu/optionalRequire.d.ts.map +0 -1
- package/lib/typescript/module/floatingMenu/settingsBus.d.ts.map +0 -1
- package/lib/typescript/module/floatingMenu/sync/appSyncAdapter.d.ts.map +0 -1
- package/lib/typescript/module/floatingMenu/types.d.ts.map +0 -1
- package/lib/typescript/module/floatingMenu/useDesktopSyncStatus.d.ts.map +0 -1
- package/lib/typescript/module/floatingMenu/useDesktopSyncStatus.web.d.ts.map +0 -1
- package/lib/typescript/module/index.d.ts.map +0 -1
- package/lib/typescript/module/index.web.d.ts.map +0 -1
- package/lib/typescript/module/reactDevtoolsTypes.d.ts.map +0 -1
- package/lib/typescript/module/telemetry/installPing.d.ts.map +0 -1
- package/lib/typescript/module/toolkit.d.ts.map +0 -1
- package/lib/typescript/module/toolkitComponents.d.ts.map +0 -1
- package/lib/typescript/module/utils/autoDiscoverPresets.web.d.ts.map +0 -1
- package/lib/typescript/module/utils/createWebTool.d.ts.map +0 -1
- package/lib/typescript/module/utils/createWebTools.d.ts.map +0 -1
- package/lib/typescript/module/version.d.ts.map +0 -1
- package/lib/web/chunks/chunk-5NZOQR6Q.mjs +0 -2
- package/lib/web/chunks/chunk-CGDSLLZF.mjs +0 -2
- package/lib/web/chunks/chunk-DCJDUSNR.mjs +0 -2
- package/lib/web/chunks/chunk-IDSHFS6G.mjs +0 -2
- package/lib/web/chunks/chunk-JOAMJGCS.mjs +0 -2
- package/lib/web/chunks/chunk-KYKZ2N52.mjs +0 -2
- package/lib/web/chunks/chunk-NGM7JGGS.mjs +0 -2
- package/lib/web/chunks/chunk-Z3XWDDIO.mjs +0 -2
- package/lib/web/chunks/chunk-ZTGQ6TTY.mjs +0 -2
|
@@ -1,415 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
Object.defineProperty(exports, "__esModule", {
|
|
4
|
-
value: true
|
|
5
|
-
});
|
|
6
|
-
exports.FloatingDevTools = FloatingDevTools;
|
|
7
|
-
var _floating = require("@buoy-gg/shared-ui/floating");
|
|
8
|
-
var _license = require("@buoy-gg/license");
|
|
9
|
-
var _sharedUi = require("@buoy-gg/shared-ui");
|
|
10
|
-
var _react = require("react");
|
|
11
|
-
var _floatingToolsReact = require("@buoy-gg/floating-tools-react");
|
|
12
|
-
var _autoDiscoverPresetsWeb = require("../utils/autoDiscoverPresets.web.js");
|
|
13
|
-
var _floatingToolsWeb = require("./floatingTools.web.js");
|
|
14
|
-
var _DialDevToolsWeb = require("./dial/DialDevTools.web.js");
|
|
15
|
-
var _dialUsageStore = require("./dial/dialUsageStore.js");
|
|
16
|
-
var _OnboardingTooltipWeb = require("./dial/OnboardingTooltip.web.js");
|
|
17
|
-
var _DevToolsSettingsModalWeb = require("./DevToolsSettingsModal.web.js");
|
|
18
|
-
var _AppHostWeb = require("./AppHost.web.js");
|
|
19
|
-
var _MinimizedToolsStackWeb = require("./MinimizedToolsStack.web.js");
|
|
20
|
-
var _createWebTools = require("../utils/createWebTools.js");
|
|
21
|
-
var _BrowserToolRuntime = require("./BrowserToolRuntime.js");
|
|
22
|
-
var _DevToolsVisibilityContext = require("./DevToolsVisibilityContext.js");
|
|
23
|
-
var _jsxRuntime = require("react/jsx-runtime");
|
|
24
|
-
const EMPTY_MODULES = {};
|
|
25
|
-
|
|
26
|
-
// native FloatingMenu.tsx TOOLTIP_SHOWN_KEY
|
|
27
|
-
const MENU_TOOLTIP_KEY = '@react_buoy_floating_menu_tooltip_shown';
|
|
28
|
-
const webSettingsStorage = _sharedUi.persistentStorage;
|
|
29
|
-
|
|
30
|
-
// =============================
|
|
31
|
-
// Types
|
|
32
|
-
// =============================
|
|
33
|
-
|
|
34
|
-
// =============================
|
|
35
|
-
// MenuLauncherIcon — native FloatingMenu.tsx:446-478: 3×3 dot grid rendered
|
|
36
|
-
// when no userRole is set, so the dial/settings stay reachable.
|
|
37
|
-
// =============================
|
|
38
|
-
function MenuLauncherIcon({
|
|
39
|
-
size = 14,
|
|
40
|
-
color = '#20C997'
|
|
41
|
-
}) {
|
|
42
|
-
const dot = Math.max(2, size / 4);
|
|
43
|
-
const gap = Math.max(1, size / 16);
|
|
44
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
45
|
-
style: {
|
|
46
|
-
display: 'grid',
|
|
47
|
-
gridTemplateColumns: `repeat(3, ${dot}px)`,
|
|
48
|
-
gap,
|
|
49
|
-
width: size,
|
|
50
|
-
height: size,
|
|
51
|
-
alignContent: 'center',
|
|
52
|
-
justifyContent: 'center'
|
|
53
|
-
},
|
|
54
|
-
children: Array.from({
|
|
55
|
-
length: 9
|
|
56
|
-
}).map((_, i) => /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
57
|
-
style: {
|
|
58
|
-
width: dot,
|
|
59
|
-
height: dot,
|
|
60
|
-
borderRadius: dot / 2,
|
|
61
|
-
backgroundColor: color
|
|
62
|
-
}
|
|
63
|
-
}, i))
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
|
|
67
|
-
// =============================
|
|
68
|
-
// Main Component
|
|
69
|
-
// =============================
|
|
70
|
-
|
|
71
|
-
function AdmittedFloatingDevTools(props) {
|
|
72
|
-
// The tool host wraps everything so dial presses can open tool components
|
|
73
|
-
// into the AppOverlay (web twin of the native AppHostProvider/AppOverlay).
|
|
74
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(_DevToolsVisibilityContext.DevToolsVisibilityProvider, {
|
|
75
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_AppHostWeb.AppHostProvider, {
|
|
76
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(FloatingDevToolsInner, {
|
|
77
|
-
...props
|
|
78
|
-
})
|
|
79
|
-
})
|
|
80
|
-
});
|
|
81
|
-
}
|
|
82
|
-
function FloatingDevToolsInner({
|
|
83
|
-
environment,
|
|
84
|
-
userRole,
|
|
85
|
-
availableEnvironments,
|
|
86
|
-
onEnvironmentSwitch,
|
|
87
|
-
apps,
|
|
88
|
-
modules = EMPTY_MODULES,
|
|
89
|
-
externalSync,
|
|
90
|
-
requiredEnvVars,
|
|
91
|
-
sentryGetClient,
|
|
92
|
-
disableHints = false,
|
|
93
|
-
headless = false
|
|
94
|
-
}) {
|
|
95
|
-
// Internal state for dial and settings
|
|
96
|
-
const [isDialOpen, setIsDialOpen] = (0, _react.useState)(false);
|
|
97
|
-
const [isSettingsOpen, setIsSettingsOpen] = (0, _react.useState)(false);
|
|
98
|
-
const stateRestoredRef = (0, _react.useRef)(false);
|
|
99
|
-
const appHost = (0, _AppHostWeb.useAppHost)();
|
|
100
|
-
|
|
101
|
-
// Auto-discover tools and merge with custom apps
|
|
102
|
-
const tools = (0, _react.useMemo)(() => (0, _autoDiscoverPresetsWeb.autoDiscoverWithCustom)([...(0, _createWebTools.createWebTools)(modules), ...(apps ?? [])]), [apps, modules]);
|
|
103
|
-
const visibility = (0, _DevToolsVisibilityContext.useDevToolsVisibility)();
|
|
104
|
-
const toolVisible = appHost.openApps.some(app => !app.minimized);
|
|
105
|
-
(0, _react.useEffect)(() => {
|
|
106
|
-
visibility.setDialOpen(isDialOpen);
|
|
107
|
-
}, [isDialOpen, visibility.setDialOpen]);
|
|
108
|
-
(0, _react.useEffect)(() => {
|
|
109
|
-
visibility.setToolOpen(toolVisible || isSettingsOpen);
|
|
110
|
-
}, [toolVisible, isSettingsOpen, visibility.setToolOpen]);
|
|
111
|
-
|
|
112
|
-
// Let the host restore `@react_buoy_open_apps` from the previous session
|
|
113
|
-
// once it knows which tools exist (native registerApps parity).
|
|
114
|
-
const {
|
|
115
|
-
registerApps
|
|
116
|
-
} = appHost;
|
|
117
|
-
(0, _react.useEffect)(() => {
|
|
118
|
-
registerApps(tools.map(tool => {
|
|
119
|
-
const icon = tool.icon;
|
|
120
|
-
return {
|
|
121
|
-
...tool,
|
|
122
|
-
icon: typeof icon === 'function' ? ({
|
|
123
|
-
size
|
|
124
|
-
}) => icon(size) : icon
|
|
125
|
-
};
|
|
126
|
-
}));
|
|
127
|
-
}, [registerApps, tools]);
|
|
128
|
-
|
|
129
|
-
// Convert to available tools config for settings
|
|
130
|
-
const availableToolsConfig = (0, _react.useMemo)(() => tools.map(tool => ({
|
|
131
|
-
id: tool.id,
|
|
132
|
-
name: tool.name,
|
|
133
|
-
description: tool.description,
|
|
134
|
-
slot: tool.slot
|
|
135
|
-
})), [tools]);
|
|
136
|
-
|
|
137
|
-
// Register available tools with the shared settings hook (used by the
|
|
138
|
-
// settings modal and the bubble-row visibility gating).
|
|
139
|
-
const {
|
|
140
|
-
settings
|
|
141
|
-
} = (0, _floatingToolsReact.useSettings)({
|
|
142
|
-
availableTools: availableToolsConfig,
|
|
143
|
-
storage: webSettingsStorage
|
|
144
|
-
});
|
|
145
|
-
|
|
146
|
-
// Dial/settings open-state persistence — native FloatingMenu.tsx:95-122 and
|
|
147
|
-
// DialDevTools.tsx:136-164 restore these across reloads.
|
|
148
|
-
(0, _react.useEffect)(() => {
|
|
149
|
-
let cancelled = false;
|
|
150
|
-
const restore = async () => {
|
|
151
|
-
const [dialOpen, settingsOpen] = await Promise.all([_sharedUi.persistentStorage.getItem(_sharedUi.devToolsStorageKeys.dial.isOpen()), _sharedUi.persistentStorage.getItem(_sharedUi.devToolsStorageKeys.settings.modalOpen())]);
|
|
152
|
-
if (cancelled) return;
|
|
153
|
-
if (dialOpen === 'true') setIsDialOpen(true);
|
|
154
|
-
if (settingsOpen === 'true') {
|
|
155
|
-
setIsDialOpen(true); // settings lives above the dial (native structure)
|
|
156
|
-
setIsSettingsOpen(true);
|
|
157
|
-
}
|
|
158
|
-
stateRestoredRef.current = true;
|
|
159
|
-
};
|
|
160
|
-
void restore();
|
|
161
|
-
return () => {
|
|
162
|
-
cancelled = true;
|
|
163
|
-
};
|
|
164
|
-
}, []);
|
|
165
|
-
(0, _react.useEffect)(() => {
|
|
166
|
-
if (!stateRestoredRef.current) return;
|
|
167
|
-
void _sharedUi.persistentStorage.setItem(_sharedUi.devToolsStorageKeys.dial.isOpen(), isDialOpen ? 'true' : 'false');
|
|
168
|
-
}, [isDialOpen]);
|
|
169
|
-
(0, _react.useEffect)(() => {
|
|
170
|
-
if (!stateRestoredRef.current) return;
|
|
171
|
-
void _sharedUi.persistentStorage.setItem(_sharedUi.devToolsStorageKeys.settings.modalOpen(), isSettingsOpen ? 'true' : 'false');
|
|
172
|
-
}, [isSettingsOpen]);
|
|
173
|
-
|
|
174
|
-
// Shared open path for dial + bubble-row tools.
|
|
175
|
-
const openTool = (0, _react.useCallback)(tool => {
|
|
176
|
-
void (0, _dialUsageStore.recordToolUsage)(tool.id);
|
|
177
|
-
if (tool.launchMode === 'toggle-only') {
|
|
178
|
-
tool.onPress?.();
|
|
179
|
-
return;
|
|
180
|
-
}
|
|
181
|
-
if (tool.component) {
|
|
182
|
-
const dockIcon = typeof tool.icon === 'function' ? tool.icon(20) : tool.icon;
|
|
183
|
-
appHost.open({
|
|
184
|
-
id: tool.id,
|
|
185
|
-
title: tool.name || (0, _floatingToolsReact.getToolLabel)(tool.id),
|
|
186
|
-
component: tool.component,
|
|
187
|
-
props: tool.props,
|
|
188
|
-
modal: tool.modal,
|
|
189
|
-
launchMode: tool.launchMode || 'self-modal',
|
|
190
|
-
singleton: tool.singleton ?? true,
|
|
191
|
-
icon: dockIcon,
|
|
192
|
-
color: tool.color || (0, _floatingToolsReact.getToolColor)(tool.id)
|
|
193
|
-
});
|
|
194
|
-
} else {
|
|
195
|
-
tool.onPress?.();
|
|
196
|
-
}
|
|
197
|
-
}, [appHost]);
|
|
198
|
-
|
|
199
|
-
// Build dial icons for every dial-eligible tool. The dial paginates and
|
|
200
|
-
// ranks them by usage, so there is no per-tool show/hide setting.
|
|
201
|
-
const dialIcons = (0, _react.useMemo)(() => {
|
|
202
|
-
const dialTools = (0, _autoDiscoverPresetsWeb.getToolsBySlot)(tools, 'dial');
|
|
203
|
-
return dialTools.map(tool => {
|
|
204
|
-
const color = tool.color || (0, _floatingToolsReact.getToolColor)(tool.id);
|
|
205
|
-
// Handle icon - can be string (emoji) or function (size) => ReactNode
|
|
206
|
-
let icon;
|
|
207
|
-
if (typeof tool.icon === 'string') {
|
|
208
|
-
icon = tool.icon;
|
|
209
|
-
} else if (typeof tool.icon === 'function') {
|
|
210
|
-
// It's a render function - call it with size
|
|
211
|
-
icon = tool.icon(32);
|
|
212
|
-
} else {
|
|
213
|
-
icon = null;
|
|
214
|
-
}
|
|
215
|
-
return {
|
|
216
|
-
id: tool.id,
|
|
217
|
-
// The tool's own name wins (native parity); the registry label is
|
|
218
|
-
// the fallback for preset tools that don't set one.
|
|
219
|
-
name: tool.name || (0, _floatingToolsReact.getToolLabel)(tool.id),
|
|
220
|
-
icon,
|
|
221
|
-
// Preset tools with no component and no onPress can't do anything on
|
|
222
|
-
// web — render them like native's uninstalled tools ("Unavailable"
|
|
223
|
-
// caption, non-interactive) instead of a tile that silently no-ops.
|
|
224
|
-
unavailable: !tool.component && !tool.onPress,
|
|
225
|
-
color,
|
|
226
|
-
onPress: () => {
|
|
227
|
-
openTool(tool);
|
|
228
|
-
setIsDialOpen(false);
|
|
229
|
-
}
|
|
230
|
-
};
|
|
231
|
-
});
|
|
232
|
-
}, [tools, openTool]);
|
|
233
|
-
|
|
234
|
-
// Snapshot the usage-ranked order each time the dial opens. It stays stable
|
|
235
|
-
// while open so icons don't jump positions mid-interaction.
|
|
236
|
-
const rankedDialIcons = (0, _react.useMemo)(() => {
|
|
237
|
-
if (!isDialOpen) return dialIcons;
|
|
238
|
-
const byId = new Map(dialIcons.map(i => [i.id, i]));
|
|
239
|
-
return (0, _dialUsageStore.getRankedToolIds)(dialIcons.map(i => i.id)).map(id => byId.get(id)).filter(i => Boolean(i));
|
|
240
|
-
}, [isDialOpen, dialIcons]);
|
|
241
|
-
|
|
242
|
-
// Bubble-row tools — native FloatingMenu.tsx:349-386: slot !== 'dial',
|
|
243
|
-
// explicitly enabled in settings, rendered as small icon buttons.
|
|
244
|
-
const rowTools = (0, _react.useMemo)(() => (0, _autoDiscoverPresetsWeb.getToolsBySlot)(tools, 'row').filter(tool => settings.floatingTools[tool.id] === true && (tool.component || tool.onPress)), [tools, settings.floatingTools]);
|
|
245
|
-
|
|
246
|
-
// Build available tools for settings modal
|
|
247
|
-
const availableTools = (0, _react.useMemo)(() => tools.map(tool => ({
|
|
248
|
-
id: tool.id,
|
|
249
|
-
name: tool.name || (0, _floatingToolsReact.getToolLabel)(tool.id),
|
|
250
|
-
description: tool.description || (0, _floatingToolsReact.getToolDescription)(tool.id),
|
|
251
|
-
slot: tool.slot,
|
|
252
|
-
// Settings rows fall back to the tool's own icon when the modal has
|
|
253
|
-
// no hardcoded glyph for it (mirrors native DialDevTools).
|
|
254
|
-
icon: tool.icon,
|
|
255
|
-
color: tool.color
|
|
256
|
-
})), [tools]);
|
|
257
|
-
|
|
258
|
-
// Welcome tooltip — native FloatingMenu.tsx:134-157: 1000ms after mount,
|
|
259
|
-
// once ever, only while nothing else is open; the bubble centers under the
|
|
260
|
-
// arrow while it shows.
|
|
261
|
-
const [showWelcomeTooltip, setShowWelcomeTooltip] = (0, _react.useState)(false);
|
|
262
|
-
const isAnyToolOpen = appHost.openApps.some(app => !app.minimized);
|
|
263
|
-
(0, _react.useEffect)(() => {
|
|
264
|
-
if (disableHints) return;
|
|
265
|
-
let cancelled = false;
|
|
266
|
-
const timer = setTimeout(async () => {
|
|
267
|
-
const seen = await _sharedUi.persistentStorage.getItem(MENU_TOOLTIP_KEY);
|
|
268
|
-
if (!cancelled && !seen) setShowWelcomeTooltip(true);
|
|
269
|
-
}, 1000);
|
|
270
|
-
return () => {
|
|
271
|
-
cancelled = true;
|
|
272
|
-
clearTimeout(timer);
|
|
273
|
-
};
|
|
274
|
-
}, [disableHints]);
|
|
275
|
-
const dismissWelcomeTooltip = (0, _react.useCallback)(() => {
|
|
276
|
-
setShowWelcomeTooltip(false);
|
|
277
|
-
void _sharedUi.persistentStorage.setItem(MENU_TOOLTIP_KEY, 'true');
|
|
278
|
-
}, []);
|
|
279
|
-
|
|
280
|
-
// Callbacks
|
|
281
|
-
const handleOpenDial = (0, _react.useCallback)(() => {
|
|
282
|
-
// Opening the dial dismisses the welcome tooltip (native handleDialOpen).
|
|
283
|
-
dismissWelcomeTooltip();
|
|
284
|
-
setIsDialOpen(true);
|
|
285
|
-
}, [dismissWelcomeTooltip]);
|
|
286
|
-
const handleCloseDial = (0, _react.useCallback)(() => {
|
|
287
|
-
setIsDialOpen(false);
|
|
288
|
-
setIsSettingsOpen(false); // settings lives above the dial
|
|
289
|
-
}, []);
|
|
290
|
-
// Center press toggles settings while the dial STAYS OPEN underneath —
|
|
291
|
-
// the center label flips to CLOSE/SETTINGS (native DialDevTools behavior).
|
|
292
|
-
const handleCenterPress = (0, _react.useCallback)(() => {
|
|
293
|
-
setIsSettingsOpen(open => !open);
|
|
294
|
-
}, []);
|
|
295
|
-
const handleCloseSettings = (0, _react.useCallback)(() => setIsSettingsOpen(false), []);
|
|
296
|
-
const showEnvironmentSelector = Boolean(availableEnvironments?.length && onEnvironmentSwitch);
|
|
297
|
-
const environmentEnabled = settings.floatingTools.environment !== false;
|
|
298
|
-
const welcomeActive = showWelcomeTooltip && !isDialOpen && !isAnyToolOpen;
|
|
299
|
-
const hasMinimizedTools = appHost.openApps.some(app => app.minimized && app.launchMode !== 'toggle-only');
|
|
300
|
-
const runtime = /*#__PURE__*/(0, _jsxRuntime.jsx)(_BrowserToolRuntime.BrowserToolRuntime, {
|
|
301
|
-
modules: modules,
|
|
302
|
-
apps: apps,
|
|
303
|
-
requiredEnvVars: requiredEnvVars,
|
|
304
|
-
externalSync: externalSync,
|
|
305
|
-
headless: headless,
|
|
306
|
-
sentryGetClient: sentryGetClient
|
|
307
|
-
});
|
|
308
|
-
if (headless) return runtime;
|
|
309
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsxs)("div", {
|
|
310
|
-
"data-buoy-root": "",
|
|
311
|
-
style: {
|
|
312
|
-
display: 'contents'
|
|
313
|
-
},
|
|
314
|
-
children: [runtime, welcomeActive && /*#__PURE__*/(0, _jsxRuntime.jsx)("div", {
|
|
315
|
-
style: {
|
|
316
|
-
position: 'fixed',
|
|
317
|
-
inset: 0,
|
|
318
|
-
backgroundColor: 'rgba(0,0,0,0.85)',
|
|
319
|
-
zIndex: 10000
|
|
320
|
-
}
|
|
321
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_floatingToolsWeb.FloatingTools, {
|
|
322
|
-
enablePositionPersistence: !welcomeActive,
|
|
323
|
-
pushToSide: isDialOpen || isAnyToolOpen,
|
|
324
|
-
suspendPointerEvents: isDialOpen,
|
|
325
|
-
centerOnboarding: welcomeActive,
|
|
326
|
-
minimizedStack: hasMinimizedTools ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_MinimizedToolsStackWeb.MinimizedToolsStack, {}) : undefined,
|
|
327
|
-
hasMinimizedStack: hasMinimizedTools,
|
|
328
|
-
children: [environment && environmentEnabled && !showEnvironmentSelector && /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.EnvironmentIndicator, {
|
|
329
|
-
environment: environment
|
|
330
|
-
}), showEnvironmentSelector && environmentEnabled && /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.EnvironmentSelectorInline, {
|
|
331
|
-
currentEnvironment: environment ?? 'local',
|
|
332
|
-
availableEnvironments: availableEnvironments,
|
|
333
|
-
onSelect: onEnvironmentSwitch
|
|
334
|
-
}), userRole ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_floatingToolsWeb.UserStatus, {
|
|
335
|
-
userRole: userRole,
|
|
336
|
-
onPress: handleOpenDial
|
|
337
|
-
}) :
|
|
338
|
-
/*#__PURE__*/
|
|
339
|
-
// native MenuLauncherIcon fallback: dial stays reachable without a
|
|
340
|
-
// userRole pill.
|
|
341
|
-
(0, _jsxRuntime.jsx)("button", {
|
|
342
|
-
"aria-label": "Open dev tools",
|
|
343
|
-
onClick: handleOpenDial,
|
|
344
|
-
style: {
|
|
345
|
-
display: 'flex',
|
|
346
|
-
alignItems: 'center',
|
|
347
|
-
justifyContent: 'center',
|
|
348
|
-
padding: '6px 8px',
|
|
349
|
-
background: 'none',
|
|
350
|
-
border: 'none',
|
|
351
|
-
cursor: 'pointer'
|
|
352
|
-
},
|
|
353
|
-
children: /*#__PURE__*/(0, _jsxRuntime.jsx)(MenuLauncherIcon, {})
|
|
354
|
-
}), rowTools.map(tool =>
|
|
355
|
-
/*#__PURE__*/
|
|
356
|
-
// native FloatingMenu fab: paddingH 6, paddingV 4, r6, transparent
|
|
357
|
-
(0, _jsxRuntime.jsx)("button", {
|
|
358
|
-
"aria-label": tool.name || (0, _floatingToolsReact.getToolLabel)(tool.id),
|
|
359
|
-
title: tool.description,
|
|
360
|
-
onClick: () => openTool(tool),
|
|
361
|
-
style: {
|
|
362
|
-
display: 'flex',
|
|
363
|
-
alignItems: 'center',
|
|
364
|
-
justifyContent: 'center',
|
|
365
|
-
padding: '4px 6px',
|
|
366
|
-
borderRadius: 6,
|
|
367
|
-
background: 'none',
|
|
368
|
-
border: 'none',
|
|
369
|
-
cursor: 'pointer'
|
|
370
|
-
},
|
|
371
|
-
children: typeof tool.icon === 'function' ? tool.icon(16) : tool.icon
|
|
372
|
-
}, tool.id))]
|
|
373
|
-
}), welcomeActive && /*#__PURE__*/(0, _jsxRuntime.jsx)(_OnboardingTooltipWeb.OnboardingTooltip, {
|
|
374
|
-
title: "Welcome to Buoy!",
|
|
375
|
-
message: "Grab and position this menu wherever you want, then tap the icon to open your tools.",
|
|
376
|
-
onDismiss: dismissWelcomeTooltip
|
|
377
|
-
}), isDialOpen && /*#__PURE__*/(0, _jsxRuntime.jsx)(_DialDevToolsWeb.DialMenu, {
|
|
378
|
-
icons: rankedDialIcons,
|
|
379
|
-
onClose: handleCloseDial,
|
|
380
|
-
centerLabel: "BUOY",
|
|
381
|
-
onCenterPress: handleCenterPress,
|
|
382
|
-
settingsOpen: isSettingsOpen,
|
|
383
|
-
hintsDisabled: disableHints
|
|
384
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_DevToolsSettingsModalWeb.SettingsModal, {
|
|
385
|
-
visible: isSettingsOpen,
|
|
386
|
-
onClose: handleCloseSettings,
|
|
387
|
-
availableTools: availableTools,
|
|
388
|
-
onSettingsChange: _newSettings => {
|
|
389
|
-
// Settings are already saved by the hook
|
|
390
|
-
}
|
|
391
|
-
}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_AppHostWeb.AppOverlay, {}), /*#__PURE__*/(0, _jsxRuntime.jsx)(_floating.FloatingToolHost, {})]
|
|
392
|
-
});
|
|
393
|
-
}
|
|
394
|
-
|
|
395
|
-
// =============================
|
|
396
|
-
// Re-exports for convenience
|
|
397
|
-
// =============================
|
|
398
|
-
|
|
399
|
-
function FloatingDevTools(props) {
|
|
400
|
-
const {
|
|
401
|
-
access,
|
|
402
|
-
isPro,
|
|
403
|
-
licenseKey
|
|
404
|
-
} = (0, _license.useLicense)();
|
|
405
|
-
(0, _react.useEffect)(() => {
|
|
406
|
-
void _license.LicenseManager.configure(props.licenseKey);
|
|
407
|
-
}, [props.licenseKey]);
|
|
408
|
-
const matches = props.licenseKey === undefined || props.licenseKey.trim().toUpperCase() === (licenseKey ?? "");
|
|
409
|
-
const dev = typeof __DEV__ !== "undefined" ? __DEV__ : process.env.NODE_ENV !== "production";
|
|
410
|
-
if (!dev && !isPro) return null;
|
|
411
|
-
if (!matches || access.status !== "admitted") return props.headless ? null : /*#__PURE__*/(0, _jsxRuntime.jsx)(_sharedUi.AccountSetup, {});
|
|
412
|
-
return /*#__PURE__*/(0, _jsxRuntime.jsx)(AdmittedFloatingDevTools, {
|
|
413
|
-
...props
|
|
414
|
-
});
|
|
415
|
-
}
|
|
1
|
+
"use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.FloatingDevTools=FloatingDevTools;var _floating=require("@buoy-gg/shared-ui/floating");var _license=require("@buoy-gg/license");var _sharedUi=require("@buoy-gg/shared-ui");var _react=require("react");var _floatingToolsReact=require("@buoy-gg/floating-tools-react");var _autoDiscoverPresetsWeb=require("../utils/autoDiscoverPresets.web.js");var _floatingToolsWeb=require("./floatingTools.web.js");var _DialDevToolsWeb=require("./dial/DialDevTools.web.js");var _dialUsageStore=require("./dial/dialUsageStore.js");var _OnboardingTooltipWeb=require("./dial/OnboardingTooltip.web.js");var _DevToolsSettingsModalWeb=require("./DevToolsSettingsModal.web.js");var _AppHostWeb=require("./AppHost.web.js");var _MinimizedToolsStackWeb=require("./MinimizedToolsStack.web.js");var _createWebTools=require("../utils/createWebTools.js");var _BrowserToolRuntime=require("./BrowserToolRuntime.js");var _releaseOptIn=require("../releaseOptIn.js");var _DevToolsVisibilityContext=require("./DevToolsVisibilityContext.js");var _jsxRuntime=require("react/jsx-runtime");const EMPTY_MODULES={};const MENU_TOOLTIP_KEY="@react_buoy_floating_menu_tooltip_shown";const webSettingsStorage=_sharedUi.persistentStorage;function MenuLauncherIcon({size:t=14,color:l="#20C997"}){const o=Math.max(2,t/4);const c=Math.max(1,t/16);return(0,_jsxRuntime.jsx)("div",{style:{display:"grid",gridTemplateColumns:`repeat(3, ${o}px)`,gap:c,width:t,height:t,alignContent:"center",justifyContent:"center"},children:Array.from({length:9}).map((u,a)=>(0,_jsxRuntime.jsx)("div",{style:{width:o,height:o,borderRadius:o/2,backgroundColor:l}},a))})}function AdmittedFloatingDevTools(t){return(0,_jsxRuntime.jsx)(_DevToolsVisibilityContext.DevToolsVisibilityProvider,{children:(0,_jsxRuntime.jsx)(_AppHostWeb.AppHostProvider,{children:(0,_jsxRuntime.jsx)(FloatingDevToolsInner,{...t})})})}function FloatingDevToolsInner({environment:t,userRole:l,availableEnvironments:o,onEnvironmentSwitch:c,apps:u,modules:a=EMPTY_MODULES,externalSync:v,requiredEnvVars:W,sentryGetClient:A,disableHints:S=false,headless:D=false}){const[i,b]=(0,_react.useState)(false);const[d,T]=(0,_react.useState)(false);const j=(0,_react.useRef)(false);const p=(0,_AppHostWeb.useAppHost)();const r=(0,_react.useMemo)(()=>(0,_autoDiscoverPresetsWeb.autoDiscoverWithCustom)([...(0,_createWebTools.createWebTools)(a),...u??[]]),[u,a]);const y=(0,_DevToolsVisibilityContext.useDevToolsVisibility)();const O=p.openApps.some(e=>!e.minimized);(0,_react.useEffect)(()=>{y.setDialOpen(i)},[i,y.setDialOpen]);(0,_react.useEffect)(()=>{y.setToolOpen(O||d)},[O,d,y.setToolOpen]);const{registerApps:w}=p;(0,_react.useEffect)(()=>{w(r.map(e=>{const n=e.icon;return{...e,icon:typeof n==="function"?({size:s})=>n(s):n}}))},[w,r]);const L=(0,_react.useMemo)(()=>r.map(e=>({id:e.id,name:e.name,description:e.description,slot:e.slot})),[r]);const{settings:x}=(0,_floatingToolsReact.useSettings)({availableTools:L,storage:webSettingsStorage});(0,_react.useEffect)(()=>{let e=false;const n=async()=>{const[s,f]=await Promise.all([_sharedUi.persistentStorage.getItem(_sharedUi.devToolsStorageKeys.dial.isOpen()),_sharedUi.persistentStorage.getItem(_sharedUi.devToolsStorageKeys.settings.modalOpen())]);if(e)return;if(s==="true")b(true);if(f==="true"){b(true);T(true)}j.current=true};void n();return()=>{e=true}},[]);(0,_react.useEffect)(()=>{if(!j.current)return;void _sharedUi.persistentStorage.setItem(_sharedUi.devToolsStorageKeys.dial.isOpen(),i?"true":"false")},[i]);(0,_react.useEffect)(()=>{if(!j.current)return;void _sharedUi.persistentStorage.setItem(_sharedUi.devToolsStorageKeys.settings.modalOpen(),d?"true":"false")},[d]);const _=(0,_react.useCallback)(e=>{void(0,_dialUsageStore.recordToolUsage)(e.id);if(e.launchMode==="toggle-only"){e.onPress?.();return}if(e.component){const n=typeof e.icon==="function"?e.icon(20):e.icon;p.open({id:e.id,title:e.name||(0,_floatingToolsReact.getToolLabel)(e.id),component:e.component,props:e.props,modal:e.modal,launchMode:e.launchMode||"self-modal",singleton:e.singleton??true,icon:n,color:e.color||(0,_floatingToolsReact.getToolColor)(e.id)})}else{e.onPress?.()}},[p]);const h=(0,_react.useMemo)(()=>{const e=(0,_autoDiscoverPresetsWeb.getToolsBySlot)(r,"dial");return e.map(n=>{const s=n.color||(0,_floatingToolsReact.getToolColor)(n.id);let f;if(typeof n.icon==="string"){f=n.icon}else if(typeof n.icon==="function"){f=n.icon(32)}else{f=null}return{id:n.id,name:n.name||(0,_floatingToolsReact.getToolLabel)(n.id),icon:f,unavailable:!n.component&&!n.onPress,color:s,onPress:()=>{_(n);b(false)}}})},[r,_]);const R=(0,_react.useMemo)(()=>{if(!i)return h;const e=new Map(h.map(n=>[n.id,n]));return(0,_dialUsageStore.getRankedToolIds)(h.map(n=>n.id)).map(n=>e.get(n)).filter(n=>Boolean(n))},[i,h]);const K=(0,_react.useMemo)(()=>(0,_autoDiscoverPresetsWeb.getToolsBySlot)(r,"row").filter(e=>x.floatingTools[e.id]===true&&(e.component||e.onPress)),[r,x.floatingTools]);const B=(0,_react.useMemo)(()=>r.map(e=>({id:e.id,name:e.name||(0,_floatingToolsReact.getToolLabel)(e.id),description:e.description||(0,_floatingToolsReact.getToolDescription)(e.id),slot:e.slot,icon:e.icon,color:e.color})),[r]);const[U,C]=(0,_react.useState)(false);const E=p.openApps.some(e=>!e.minimized);(0,_react.useEffect)(()=>{if(S)return;let e=false;const n=setTimeout(async()=>{const s=await _sharedUi.persistentStorage.getItem(MENU_TOOLTIP_KEY);if(!e&&!s)C(true)},1e3);return()=>{e=true;clearTimeout(n)}},[S]);const g=(0,_react.useCallback)(()=>{C(false);void _sharedUi.persistentStorage.setItem(MENU_TOOLTIP_KEY,"true")},[]);const M=(0,_react.useCallback)(()=>{g();b(true)},[g]);const V=(0,_react.useCallback)(()=>{b(false);T(false)},[]);const z=(0,_react.useCallback)(()=>{T(e=>!e)},[]);const F=(0,_react.useCallback)(()=>T(false),[]);const k=Boolean(o?.length&&c);const I=x.floatingTools.environment!==false;const m=U&&!i&&!E;(0,_react.useEffect)(()=>{if(!m)return;const e=s=>{if(!(s.target instanceof Element)||!s.target.closest("[data-buoy-root]"))g()};const n=s=>{if(s.key==="Escape")g()};document.addEventListener("pointerdown",e,true);document.addEventListener("keydown",n);return()=>{document.removeEventListener("pointerdown",e,true);document.removeEventListener("keydown",n)}},[m,g]);const P=p.openApps.some(e=>e.minimized&&e.launchMode!=="toggle-only");const q=(0,_jsxRuntime.jsx)(_BrowserToolRuntime.BrowserToolRuntime,{modules:a,apps:u,requiredEnvVars:W,externalSync:v,headless:D,sentryGetClient:A});if(D)return q;return(0,_jsxRuntime.jsxs)("div",{"data-buoy-root":"",style:{display:"contents"},children:[q,m&&(0,_jsxRuntime.jsx)("div",{style:{position:"fixed",inset:0,backgroundColor:"rgba(0,0,0,0.85)",zIndex:1e4,pointerEvents:"none"}}),(0,_jsxRuntime.jsxs)(_floatingToolsWeb.FloatingTools,{enablePositionPersistence:!m,pushToSide:i||E,suspendPointerEvents:i,centerOnboarding:m,minimizedStack:P?(0,_jsxRuntime.jsx)(_MinimizedToolsStackWeb.MinimizedToolsStack,{}):void 0,hasMinimizedStack:P,children:[t&&I&&!k&&(0,_jsxRuntime.jsx)(_sharedUi.EnvironmentIndicator,{environment:t}),k&&I&&(0,_jsxRuntime.jsx)(_sharedUi.EnvironmentSelectorInline,{currentEnvironment:t??"local",availableEnvironments:o,onSelect:c}),l?(0,_jsxRuntime.jsx)(_floatingToolsWeb.UserStatus,{userRole:l,onPress:M}):(0,_jsxRuntime.jsx)("button",{"aria-label":"Open dev tools",onClick:M,style:{display:"flex",alignItems:"center",justifyContent:"center",padding:"6px 8px",background:"none",border:"none",cursor:"pointer"},children:(0,_jsxRuntime.jsx)(MenuLauncherIcon,{})}),K.map(e=>(0,_jsxRuntime.jsx)("button",{"aria-label":e.name||(0,_floatingToolsReact.getToolLabel)(e.id),title:e.description,onClick:()=>_(e),style:{display:"flex",alignItems:"center",justifyContent:"center",padding:"4px 6px",borderRadius:6,background:"none",border:"none",cursor:"pointer"},children:typeof e.icon==="function"?e.icon(16):e.icon},e.id))]}),m&&(0,_jsxRuntime.jsx)(_OnboardingTooltipWeb.OnboardingTooltip,{title:"Welcome to Buoy!",message:"Grab and position this menu wherever you want, then tap the icon to open your tools.",onDismiss:g}),i&&(0,_jsxRuntime.jsx)(_DialDevToolsWeb.DialMenu,{icons:R,onClose:V,centerLabel:"BUOY",onCenterPress:z,settingsOpen:d,hintsDisabled:S}),(0,_jsxRuntime.jsx)(_DevToolsSettingsModalWeb.SettingsModal,{visible:d,onClose:F,availableTools:B,onSettingsChange:e=>{}}),(0,_jsxRuntime.jsx)(_AppHostWeb.AppOverlay,{}),(0,_jsxRuntime.jsx)(_floating.FloatingToolHost,{})]})}function FloatingDevTools(t){const{access:l,isPro:o,licenseKey:c}=(0,_license.useLicense)();(0,_react.useEffect)(()=>{void _license.LicenseManager.configure(t.licenseKey)},[t.licenseKey]);const u=t.licenseKey===void 0||t.licenseKey.trim().toUpperCase()===(c??"");const a=typeof __DEV__!=="undefined"?__DEV__:process.env.NODE_ENV!=="production";const v=u&&l.status==="admitted";(0,_react.useEffect)(()=>{if(!a&&o&&v)(0,_releaseOptIn.markReleaseOptIn)()},[a,o,v]);if(!a&&!o)return null;if(!v)return t.headless?null:(0,_jsxRuntime.jsx)(_sharedUi.AccountSetup,{});return(0,_jsxRuntime.jsx)(AdmittedFloatingDevTools,{...t})}
|