@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.
Files changed (270) hide show
  1. package/README.md +14 -95
  2. package/bin/buoy.js +19 -340
  3. package/lib/commonjs/Buoy.js +1 -107
  4. package/lib/commonjs/browserRegister.js +1 -48
  5. package/lib/commonjs/browserRegister.server.js +1 -10
  6. package/lib/commonjs/earlyHookScript.js +1 -0
  7. package/lib/commonjs/earlyNetwork.js +1 -0
  8. package/lib/commonjs/floatingMenu/AppHost.js +1 -460
  9. package/lib/commonjs/floatingMenu/AppHost.web.js +1 -376
  10. package/lib/commonjs/floatingMenu/AppHostLogic.js +1 -50
  11. package/lib/commonjs/floatingMenu/AppIcon.js +1 -91
  12. package/lib/commonjs/floatingMenu/AppIcon.web.js +1 -53
  13. package/lib/commonjs/floatingMenu/BrowserToolRuntime.js +1 -150
  14. package/lib/commonjs/floatingMenu/DefaultConfigContext.js +1 -45
  15. package/lib/commonjs/floatingMenu/DevToolsSettingsModal.js +1 -18
  16. package/lib/commonjs/floatingMenu/DevToolsSettingsModal.shared.js +1 -1114
  17. package/lib/commonjs/floatingMenu/DevToolsSettingsModal.web.js +1 -48
  18. package/lib/commonjs/floatingMenu/DevToolsVisibilityContext.js +1 -49
  19. package/lib/commonjs/floatingMenu/FloatingDevTools.js +1 -559
  20. package/lib/commonjs/floatingMenu/FloatingDevTools.web.js +1 -415
  21. package/lib/commonjs/floatingMenu/FloatingMenu.js +1 -371
  22. package/lib/commonjs/floatingMenu/MinimizedToolsContext.js +1 -274
  23. package/lib/commonjs/floatingMenu/MinimizedToolsStack.js +1 -288
  24. package/lib/commonjs/floatingMenu/MinimizedToolsStack.web.js +1 -377
  25. package/lib/commonjs/floatingMenu/ToggleStateManager.js +1 -36
  26. package/lib/commonjs/floatingMenu/ToolHost.js +1 -281
  27. package/lib/commonjs/floatingMenu/ToolOpenerBridge.js +1 -41
  28. package/lib/commonjs/floatingMenu/autoDiscoverPresets.js +1 -471
  29. package/lib/commonjs/floatingMenu/autoExternalSync.js +1 -443
  30. package/lib/commonjs/floatingMenu/defaultConfig.js +1 -167
  31. package/lib/commonjs/floatingMenu/deviceIdentity.js +1 -173
  32. package/lib/commonjs/floatingMenu/dial/DialDevTools.js +1 -904
  33. package/lib/commonjs/floatingMenu/dial/DialDevTools.web.js +1 -895
  34. package/lib/commonjs/floatingMenu/dial/DialHyperspace.js +1 -177
  35. package/lib/commonjs/floatingMenu/dial/DialIcon.js +1 -304
  36. package/lib/commonjs/floatingMenu/dial/DialPagination.js +1 -165
  37. package/lib/commonjs/floatingMenu/dial/DialSnow.js +1 -92
  38. package/lib/commonjs/floatingMenu/dial/OnboardingTooltip.js +1 -246
  39. package/lib/commonjs/floatingMenu/dial/OnboardingTooltip.web.js +2 -147
  40. package/lib/commonjs/floatingMenu/dial/dialUsageStore.js +1 -93
  41. package/lib/commonjs/floatingMenu/dial/onboardingConstants.js +1 -42
  42. package/lib/commonjs/floatingMenu/dial/onboardingConstants.web.js +1 -42
  43. package/lib/commonjs/floatingMenu/externalSyncGate.js +1 -49
  44. package/lib/commonjs/floatingMenu/floatingTools.js +1 -42
  45. package/lib/commonjs/floatingMenu/floatingTools.web.js +1 -30
  46. package/lib/commonjs/floatingMenu/optionalRequire.js +1 -37
  47. package/lib/commonjs/floatingMenu/settingsBus.js +1 -12
  48. package/lib/commonjs/floatingMenu/sync/appSyncAdapter.js +1 -115
  49. package/lib/commonjs/floatingMenu/types.js +1 -5
  50. package/lib/commonjs/floatingMenu/useDesktopSyncStatus.js +1 -28
  51. package/lib/commonjs/floatingMenu/useDesktopSyncStatus.web.js +1 -14
  52. package/lib/commonjs/index.js +1 -291
  53. package/lib/commonjs/index.web.js +1 -241
  54. package/lib/commonjs/reactDevtoolsTypes.js +1 -1
  55. package/lib/commonjs/releaseOptIn.js +1 -0
  56. package/lib/commonjs/telemetry/installPing.js +1 -131
  57. package/lib/commonjs/toolkit.js +1 -584
  58. package/lib/commonjs/toolkitComponents.js +1 -241
  59. package/lib/commonjs/utils/autoDiscoverPresets.web.js +1 -46
  60. package/lib/commonjs/utils/createWebTool.js +1 -20
  61. package/lib/commonjs/utils/createWebTools.js +1 -30
  62. package/lib/commonjs/version.js +1 -18
  63. package/lib/module/Buoy.js +1 -102
  64. package/lib/module/browserRegister.js +1 -44
  65. package/lib/module/browserRegister.server.js +1 -6
  66. package/lib/module/earlyHookScript.js +1 -0
  67. package/lib/module/earlyNetwork.js +1 -0
  68. package/lib/module/floatingMenu/AppHost.js +1 -452
  69. package/lib/module/floatingMenu/AppHost.web.js +1 -368
  70. package/lib/module/floatingMenu/AppHostLogic.js +1 -45
  71. package/lib/module/floatingMenu/AppIcon.js +1 -84
  72. package/lib/module/floatingMenu/AppIcon.web.js +1 -47
  73. package/lib/module/floatingMenu/BrowserToolRuntime.js +1 -146
  74. package/lib/module/floatingMenu/DefaultConfigContext.js +1 -39
  75. package/lib/module/floatingMenu/DevToolsSettingsModal.js +1 -3
  76. package/lib/module/floatingMenu/DevToolsSettingsModal.shared.js +1 -1110
  77. package/lib/module/floatingMenu/DevToolsSettingsModal.web.js +1 -44
  78. package/lib/module/floatingMenu/DevToolsVisibilityContext.js +1 -44
  79. package/lib/module/floatingMenu/FloatingDevTools.js +1 -556
  80. package/lib/module/floatingMenu/FloatingDevTools.web.js +1 -412
  81. package/lib/module/floatingMenu/FloatingMenu.js +1 -366
  82. package/lib/module/floatingMenu/MinimizedToolsContext.js +1 -266
  83. package/lib/module/floatingMenu/MinimizedToolsStack.js +1 -285
  84. package/lib/module/floatingMenu/MinimizedToolsStack.web.js +1 -374
  85. package/lib/module/floatingMenu/ToggleStateManager.js +1 -32
  86. package/lib/module/floatingMenu/ToolHost.js +1 -273
  87. package/lib/module/floatingMenu/ToolOpenerBridge.js +1 -37
  88. package/lib/module/floatingMenu/autoDiscoverPresets.js +1 -467
  89. package/lib/module/floatingMenu/autoExternalSync.js +1 -436
  90. package/lib/module/floatingMenu/defaultConfig.js +1 -158
  91. package/lib/module/floatingMenu/deviceIdentity.js +1 -163
  92. package/lib/module/floatingMenu/dial/DialDevTools.js +1 -900
  93. package/lib/module/floatingMenu/dial/DialDevTools.web.js +1 -891
  94. package/lib/module/floatingMenu/dial/DialHyperspace.js +1 -173
  95. package/lib/module/floatingMenu/dial/DialIcon.js +1 -301
  96. package/lib/module/floatingMenu/dial/DialPagination.js +1 -160
  97. package/lib/module/floatingMenu/dial/DialSnow.js +1 -90
  98. package/lib/module/floatingMenu/dial/OnboardingTooltip.js +1 -240
  99. package/lib/module/floatingMenu/dial/OnboardingTooltip.web.js +2 -142
  100. package/lib/module/floatingMenu/dial/dialUsageStore.js +1 -85
  101. package/lib/module/floatingMenu/dial/onboardingConstants.js +1 -3
  102. package/lib/module/floatingMenu/dial/onboardingConstants.web.js +1 -3
  103. package/lib/module/floatingMenu/externalSyncGate.js +1 -44
  104. package/lib/module/floatingMenu/floatingTools.js +1 -27
  105. package/lib/module/floatingMenu/floatingTools.web.js +1 -3
  106. package/lib/module/floatingMenu/optionalRequire.js +1 -33
  107. package/lib/module/floatingMenu/settingsBus.js +1 -3
  108. package/lib/module/floatingMenu/sync/appSyncAdapter.js +1 -112
  109. package/lib/module/floatingMenu/types.js +1 -3
  110. package/lib/module/floatingMenu/useDesktopSyncStatus.js +1 -25
  111. package/lib/module/floatingMenu/useDesktopSyncStatus.web.js +1 -10
  112. package/lib/module/index.js +1 -41
  113. package/lib/module/index.web.js +1 -36
  114. package/lib/module/reactDevtoolsTypes.js +1 -1
  115. package/lib/module/releaseOptIn.js +1 -0
  116. package/lib/module/telemetry/installPing.js +1 -127
  117. package/lib/module/toolkit.js +1 -62
  118. package/lib/module/toolkitComponents.js +1 -230
  119. package/lib/module/utils/autoDiscoverPresets.web.js +1 -38
  120. package/lib/module/utils/createWebTool.js +1 -17
  121. package/lib/module/utils/createWebTools.js +1 -25
  122. package/lib/module/version.js +1 -14
  123. package/lib/typescript/commonjs/browserRegister.d.ts +9 -1
  124. package/lib/typescript/commonjs/browserRegister.server.d.ts +1 -0
  125. package/lib/typescript/commonjs/earlyHookScript.d.ts +12 -0
  126. package/lib/typescript/commonjs/earlyNetwork.d.ts +52 -0
  127. package/lib/typescript/commonjs/floatingMenu/defaultConfig.d.ts +1 -1
  128. package/lib/typescript/commonjs/index.web.d.ts +1 -0
  129. package/lib/typescript/commonjs/releaseOptIn.d.ts +4 -0
  130. package/lib/typescript/commonjs/version.d.ts +1 -1
  131. package/lib/typescript/module/browserRegister.d.ts +9 -1
  132. package/lib/typescript/module/browserRegister.server.d.ts +1 -0
  133. package/lib/typescript/module/earlyHookScript.d.ts +12 -0
  134. package/lib/typescript/module/earlyNetwork.d.ts +52 -0
  135. package/lib/typescript/module/floatingMenu/defaultConfig.d.ts +1 -1
  136. package/lib/typescript/module/index.web.d.ts +1 -0
  137. package/lib/typescript/module/releaseOptIn.d.ts +4 -0
  138. package/lib/typescript/module/version.d.ts +1 -1
  139. package/lib/web/chunks/chunk-5SGL6QL4.mjs +1 -0
  140. package/lib/web/chunks/chunk-FROELTJH.mjs +1 -0
  141. package/lib/web/chunks/chunk-QZDVCMCT.mjs +1 -2
  142. package/lib/web/chunks/chunk-R7RGRTY5.mjs +1 -2
  143. package/lib/web/index.mjs +2 -3
  144. package/lib/web/register-server.mjs +1 -2
  145. package/lib/web/register.mjs +1 -2
  146. package/lib/web/toolkit.mjs +1 -2
  147. package/package.json +6 -9
  148. package/lib/typescript/commonjs/Buoy.d.ts.map +0 -1
  149. package/lib/typescript/commonjs/browserRegister.d.ts.map +0 -1
  150. package/lib/typescript/commonjs/browserRegister.server.d.ts.map +0 -1
  151. package/lib/typescript/commonjs/floatingMenu/AppHost.d.ts.map +0 -1
  152. package/lib/typescript/commonjs/floatingMenu/AppHost.web.d.ts.map +0 -1
  153. package/lib/typescript/commonjs/floatingMenu/AppHostLogic.d.ts.map +0 -1
  154. package/lib/typescript/commonjs/floatingMenu/AppIcon.d.ts.map +0 -1
  155. package/lib/typescript/commonjs/floatingMenu/AppIcon.web.d.ts.map +0 -1
  156. package/lib/typescript/commonjs/floatingMenu/BrowserToolRuntime.d.ts.map +0 -1
  157. package/lib/typescript/commonjs/floatingMenu/DefaultConfigContext.d.ts.map +0 -1
  158. package/lib/typescript/commonjs/floatingMenu/DevToolsSettingsModal.d.ts.map +0 -1
  159. package/lib/typescript/commonjs/floatingMenu/DevToolsSettingsModal.shared.d.ts.map +0 -1
  160. package/lib/typescript/commonjs/floatingMenu/DevToolsSettingsModal.web.d.ts.map +0 -1
  161. package/lib/typescript/commonjs/floatingMenu/DevToolsVisibilityContext.d.ts.map +0 -1
  162. package/lib/typescript/commonjs/floatingMenu/FloatingDevTools.d.ts.map +0 -1
  163. package/lib/typescript/commonjs/floatingMenu/FloatingDevTools.web.d.ts.map +0 -1
  164. package/lib/typescript/commonjs/floatingMenu/FloatingMenu.d.ts.map +0 -1
  165. package/lib/typescript/commonjs/floatingMenu/MinimizedToolsContext.d.ts.map +0 -1
  166. package/lib/typescript/commonjs/floatingMenu/MinimizedToolsStack.d.ts.map +0 -1
  167. package/lib/typescript/commonjs/floatingMenu/MinimizedToolsStack.web.d.ts.map +0 -1
  168. package/lib/typescript/commonjs/floatingMenu/ToggleStateManager.d.ts.map +0 -1
  169. package/lib/typescript/commonjs/floatingMenu/ToolHost.d.ts.map +0 -1
  170. package/lib/typescript/commonjs/floatingMenu/ToolOpenerBridge.d.ts.map +0 -1
  171. package/lib/typescript/commonjs/floatingMenu/autoDiscoverPresets.d.ts.map +0 -1
  172. package/lib/typescript/commonjs/floatingMenu/autoExternalSync.d.ts.map +0 -1
  173. package/lib/typescript/commonjs/floatingMenu/defaultConfig.d.ts.map +0 -1
  174. package/lib/typescript/commonjs/floatingMenu/deviceIdentity.d.ts.map +0 -1
  175. package/lib/typescript/commonjs/floatingMenu/dial/DialDevTools.d.ts.map +0 -1
  176. package/lib/typescript/commonjs/floatingMenu/dial/DialDevTools.web.d.ts.map +0 -1
  177. package/lib/typescript/commonjs/floatingMenu/dial/DialHyperspace.d.ts.map +0 -1
  178. package/lib/typescript/commonjs/floatingMenu/dial/DialIcon.d.ts.map +0 -1
  179. package/lib/typescript/commonjs/floatingMenu/dial/DialPagination.d.ts.map +0 -1
  180. package/lib/typescript/commonjs/floatingMenu/dial/DialSnow.d.ts.map +0 -1
  181. package/lib/typescript/commonjs/floatingMenu/dial/OnboardingTooltip.d.ts.map +0 -1
  182. package/lib/typescript/commonjs/floatingMenu/dial/OnboardingTooltip.web.d.ts.map +0 -1
  183. package/lib/typescript/commonjs/floatingMenu/dial/dialUsageStore.d.ts.map +0 -1
  184. package/lib/typescript/commonjs/floatingMenu/dial/onboardingConstants.d.ts.map +0 -1
  185. package/lib/typescript/commonjs/floatingMenu/dial/onboardingConstants.web.d.ts.map +0 -1
  186. package/lib/typescript/commonjs/floatingMenu/externalSyncGate.d.ts.map +0 -1
  187. package/lib/typescript/commonjs/floatingMenu/floatingTools.d.ts.map +0 -1
  188. package/lib/typescript/commonjs/floatingMenu/floatingTools.web.d.ts.map +0 -1
  189. package/lib/typescript/commonjs/floatingMenu/optionalRequire.d.ts.map +0 -1
  190. package/lib/typescript/commonjs/floatingMenu/settingsBus.d.ts.map +0 -1
  191. package/lib/typescript/commonjs/floatingMenu/sync/appSyncAdapter.d.ts.map +0 -1
  192. package/lib/typescript/commonjs/floatingMenu/types.d.ts.map +0 -1
  193. package/lib/typescript/commonjs/floatingMenu/useDesktopSyncStatus.d.ts.map +0 -1
  194. package/lib/typescript/commonjs/floatingMenu/useDesktopSyncStatus.web.d.ts.map +0 -1
  195. package/lib/typescript/commonjs/index.d.ts.map +0 -1
  196. package/lib/typescript/commonjs/index.web.d.ts.map +0 -1
  197. package/lib/typescript/commonjs/reactDevtoolsTypes.d.ts.map +0 -1
  198. package/lib/typescript/commonjs/telemetry/installPing.d.ts.map +0 -1
  199. package/lib/typescript/commonjs/toolkit.d.ts.map +0 -1
  200. package/lib/typescript/commonjs/toolkitComponents.d.ts.map +0 -1
  201. package/lib/typescript/commonjs/utils/autoDiscoverPresets.web.d.ts.map +0 -1
  202. package/lib/typescript/commonjs/utils/createWebTool.d.ts.map +0 -1
  203. package/lib/typescript/commonjs/utils/createWebTools.d.ts.map +0 -1
  204. package/lib/typescript/commonjs/version.d.ts.map +0 -1
  205. package/lib/typescript/module/Buoy.d.ts.map +0 -1
  206. package/lib/typescript/module/browserRegister.d.ts.map +0 -1
  207. package/lib/typescript/module/browserRegister.server.d.ts.map +0 -1
  208. package/lib/typescript/module/floatingMenu/AppHost.d.ts.map +0 -1
  209. package/lib/typescript/module/floatingMenu/AppHost.web.d.ts.map +0 -1
  210. package/lib/typescript/module/floatingMenu/AppHostLogic.d.ts.map +0 -1
  211. package/lib/typescript/module/floatingMenu/AppIcon.d.ts.map +0 -1
  212. package/lib/typescript/module/floatingMenu/AppIcon.web.d.ts.map +0 -1
  213. package/lib/typescript/module/floatingMenu/BrowserToolRuntime.d.ts.map +0 -1
  214. package/lib/typescript/module/floatingMenu/DefaultConfigContext.d.ts.map +0 -1
  215. package/lib/typescript/module/floatingMenu/DevToolsSettingsModal.d.ts.map +0 -1
  216. package/lib/typescript/module/floatingMenu/DevToolsSettingsModal.shared.d.ts.map +0 -1
  217. package/lib/typescript/module/floatingMenu/DevToolsSettingsModal.web.d.ts.map +0 -1
  218. package/lib/typescript/module/floatingMenu/DevToolsVisibilityContext.d.ts.map +0 -1
  219. package/lib/typescript/module/floatingMenu/FloatingDevTools.d.ts.map +0 -1
  220. package/lib/typescript/module/floatingMenu/FloatingDevTools.web.d.ts.map +0 -1
  221. package/lib/typescript/module/floatingMenu/FloatingMenu.d.ts.map +0 -1
  222. package/lib/typescript/module/floatingMenu/MinimizedToolsContext.d.ts.map +0 -1
  223. package/lib/typescript/module/floatingMenu/MinimizedToolsStack.d.ts.map +0 -1
  224. package/lib/typescript/module/floatingMenu/MinimizedToolsStack.web.d.ts.map +0 -1
  225. package/lib/typescript/module/floatingMenu/ToggleStateManager.d.ts.map +0 -1
  226. package/lib/typescript/module/floatingMenu/ToolHost.d.ts.map +0 -1
  227. package/lib/typescript/module/floatingMenu/ToolOpenerBridge.d.ts.map +0 -1
  228. package/lib/typescript/module/floatingMenu/autoDiscoverPresets.d.ts.map +0 -1
  229. package/lib/typescript/module/floatingMenu/autoExternalSync.d.ts.map +0 -1
  230. package/lib/typescript/module/floatingMenu/defaultConfig.d.ts.map +0 -1
  231. package/lib/typescript/module/floatingMenu/deviceIdentity.d.ts.map +0 -1
  232. package/lib/typescript/module/floatingMenu/dial/DialDevTools.d.ts.map +0 -1
  233. package/lib/typescript/module/floatingMenu/dial/DialDevTools.web.d.ts.map +0 -1
  234. package/lib/typescript/module/floatingMenu/dial/DialHyperspace.d.ts.map +0 -1
  235. package/lib/typescript/module/floatingMenu/dial/DialIcon.d.ts.map +0 -1
  236. package/lib/typescript/module/floatingMenu/dial/DialPagination.d.ts.map +0 -1
  237. package/lib/typescript/module/floatingMenu/dial/DialSnow.d.ts.map +0 -1
  238. package/lib/typescript/module/floatingMenu/dial/OnboardingTooltip.d.ts.map +0 -1
  239. package/lib/typescript/module/floatingMenu/dial/OnboardingTooltip.web.d.ts.map +0 -1
  240. package/lib/typescript/module/floatingMenu/dial/dialUsageStore.d.ts.map +0 -1
  241. package/lib/typescript/module/floatingMenu/dial/onboardingConstants.d.ts.map +0 -1
  242. package/lib/typescript/module/floatingMenu/dial/onboardingConstants.web.d.ts.map +0 -1
  243. package/lib/typescript/module/floatingMenu/externalSyncGate.d.ts.map +0 -1
  244. package/lib/typescript/module/floatingMenu/floatingTools.d.ts.map +0 -1
  245. package/lib/typescript/module/floatingMenu/floatingTools.web.d.ts.map +0 -1
  246. package/lib/typescript/module/floatingMenu/optionalRequire.d.ts.map +0 -1
  247. package/lib/typescript/module/floatingMenu/settingsBus.d.ts.map +0 -1
  248. package/lib/typescript/module/floatingMenu/sync/appSyncAdapter.d.ts.map +0 -1
  249. package/lib/typescript/module/floatingMenu/types.d.ts.map +0 -1
  250. package/lib/typescript/module/floatingMenu/useDesktopSyncStatus.d.ts.map +0 -1
  251. package/lib/typescript/module/floatingMenu/useDesktopSyncStatus.web.d.ts.map +0 -1
  252. package/lib/typescript/module/index.d.ts.map +0 -1
  253. package/lib/typescript/module/index.web.d.ts.map +0 -1
  254. package/lib/typescript/module/reactDevtoolsTypes.d.ts.map +0 -1
  255. package/lib/typescript/module/telemetry/installPing.d.ts.map +0 -1
  256. package/lib/typescript/module/toolkit.d.ts.map +0 -1
  257. package/lib/typescript/module/toolkitComponents.d.ts.map +0 -1
  258. package/lib/typescript/module/utils/autoDiscoverPresets.web.d.ts.map +0 -1
  259. package/lib/typescript/module/utils/createWebTool.d.ts.map +0 -1
  260. package/lib/typescript/module/utils/createWebTools.d.ts.map +0 -1
  261. package/lib/typescript/module/version.d.ts.map +0 -1
  262. package/lib/web/chunks/chunk-5NZOQR6Q.mjs +0 -2
  263. package/lib/web/chunks/chunk-CGDSLLZF.mjs +0 -2
  264. package/lib/web/chunks/chunk-DCJDUSNR.mjs +0 -2
  265. package/lib/web/chunks/chunk-IDSHFS6G.mjs +0 -2
  266. package/lib/web/chunks/chunk-JOAMJGCS.mjs +0 -2
  267. package/lib/web/chunks/chunk-KYKZ2N52.mjs +0 -2
  268. package/lib/web/chunks/chunk-NGM7JGGS.mjs +0 -2
  269. package/lib/web/chunks/chunk-Z3XWDDIO.mjs +0 -2
  270. 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})}