@buoy-gg/core 7.0.41 → 7.0.42

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 +5 -5
  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,48 +1 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.registerBrowserDevTools = registerBrowserDevTools;
7
- var ReactDevtools = _interopRequireWildcard(require("react-devtools-core"));
8
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
9
- /** Call before importing React DOM so render and element inspectors can see app roots. */
10
- function registerBrowserDevTools(options = {}) {
11
- if (typeof window === 'undefined' || typeof document === 'undefined') return false;
12
- const dev = typeof __DEV__ !== 'undefined' ? __DEV__ : process.env.NODE_ENV !== 'production';
13
- if (!dev && !options.enableInRelease) return false;
14
- const target = window;
15
- const previous = target.__REACT_DEVTOOLS_GLOBAL_HOOK__;
16
- // Fast Refresh installs a minimal hook before the application's entry runs.
17
- // Preserve its callbacks and renderer IDs when installing the full backend.
18
- const refreshHook = previous && previous.supportsFiber && !previous.getFiberRoots && !previous.sub && Object.getOwnPropertyDescriptor(target, '__REACT_DEVTOOLS_GLOBAL_HOOK__')?.configurable;
19
- if (refreshHook) delete target.__REACT_DEVTOOLS_GLOBAL_HOOK__;
20
- if (!target.__REACT_DEVTOOLS_GLOBAL_HOOK__) {
21
- const initialize = ReactDevtools.initialize ?? ReactDevtools.default?.initialize;
22
- initialize({
23
- appendComponentStack: false,
24
- breakOnConsoleErrors: false,
25
- showInlineWarningsAndErrors: false,
26
- hideConsoleLogsInStrictMode: false
27
- });
28
- if (refreshHook) {
29
- const hook = target.__REACT_DEVTOOLS_GLOBAL_HOOK__;
30
- const inject = hook.inject;
31
- const ids = new Map();
32
- hook.inject = renderer => {
33
- const id = inject(renderer);
34
- ids.set(id, previous.inject(renderer));
35
- return id;
36
- };
37
- for (const name of ['onScheduleFiberRoot', 'onCommitFiberRoot', 'onCommitFiberUnmount']) {
38
- const current = hook[name];
39
- hook[name] = (id, ...args) => {
40
- previous[name]?.(ids.get(id) ?? id, ...args);
41
- return current?.(id, ...args);
42
- };
43
- }
44
- }
45
- }
46
- return Boolean(target.__REACT_DEVTOOLS_GLOBAL_HOOK__);
47
- }
48
- registerBrowserDevTools();
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"earlyHookScript",{enumerable:true,get:function(){return _earlyHookScript.earlyHookScript}});exports.registerBrowserDevTools=registerBrowserDevTools;var ReactDevtools=_interopRequireWildcard(require("react-devtools-core"));var _earlyNetwork=require("./earlyNetwork.js");var _releaseOptIn=require("./releaseOptIn.js");var _earlyHookScript=require("./earlyHookScript.js");function _interopRequireWildcard(u,O){if("function"==typeof WeakMap)var _=new WeakMap,r=new WeakMap;return(_interopRequireWildcard=function(e,l){if(!l&&e&&e.__esModule)return e;var t,c,i={__proto__:null,default:e};if(null===e||"object"!=typeof e&&"function"!=typeof e)return i;if(t=l?r:_){if(t.has(e))return t.get(e);t.set(e,i)}for(const n in e)"default"!==n&&{}.hasOwnProperty.call(e,n)&&((c=(t=Object.defineProperty)&&Object.getOwnPropertyDescriptor(e,n))&&(c.get||c.set)?t(i,n,c):i[n]=e[n]);return i})(u,O)}const HOOK_CALLBACKS=["onScheduleFiberRoot","onCommitFiberRoot","onPostCommitFiberRoot","onCommitFiberUnmount","setStrictMode"];function registerBrowserDevTools(u={}){if(typeof window==="undefined"||typeof document==="undefined")return false;const O=typeof __DEV__!=="undefined"?__DEV__:process.env.NODE_ENV!=="production";if(!O&&!u.enableInRelease&&!(0,_releaseOptIn.hasReleaseOptIn)())return false;(0,_earlyNetwork.installEarlyNetworkRecorder)();const _=window;const r=_.__REACT_DEVTOOLS_GLOBAL_HOOK__;const e=r&&r.supportsFiber&&!r.getFiberRoots&&!r.sub&&Object.getOwnPropertyDescriptor(_,"__REACT_DEVTOOLS_GLOBAL_HOOK__")?.configurable;if(e)delete _.__REACT_DEVTOOLS_GLOBAL_HOOK__;if(!_.__REACT_DEVTOOLS_GLOBAL_HOOK__){const l=ReactDevtools.initialize??ReactDevtools.default?.initialize;l({appendComponentStack:false,breakOnConsoleErrors:false,showInlineWarningsAndErrors:false,hideConsoleLogsInStrictMode:false});if(e){const t=_.__REACT_DEVTOOLS_GLOBAL_HOOK__;const c=t.inject;const i=new Map;t.inject=o=>{const s=c(o);i.set(s,r.inject(o));return s};for(const o of HOOK_CALLBACKS){const s=t[o];if(typeof s!=="function")continue;t[o]=(a,...f)=>{if(i.has(a))r[o]?.(i.get(a),...f);return s(a,...f)}}const n=new Map;r.renderers?.forEach?.((o,s)=>n.set(s,c(o)));if(n.size){for(const o of HOOK_CALLBACKS){const s=r[o];r[o]=function(a,...f){const d=s?.call(this,a,...f);const p=n.get(a);if(p!==void 0)t[o]?.(p,...f);return d}}}}}return Boolean(_.__REACT_DEVTOOLS_GLOBAL_HOOK__)}registerBrowserDevTools();
@@ -1,10 +1 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.registerBrowserDevTools = registerBrowserDevTools;
7
- /** The server entry does not load the browser's React DevTools backend. */
8
- function registerBrowserDevTools(_options = {}) {
9
- return false;
10
- }
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});Object.defineProperty(exports,"earlyHookScript",{enumerable:true,get:function(){return _earlyHookScript.earlyHookScript}});exports.registerBrowserDevTools=registerBrowserDevTools;var _earlyHookScript=require("./earlyHookScript.js");function registerBrowserDevTools(e={}){return false}
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.earlyHookScript=void 0;const earlyHookScript=exports.earlyHookScript="(function(){var w=window;if(w.__REACT_DEVTOOLS_GLOBAL_HOOK__)return;var n=0,r=new Map(),f=function(){};w.__REACT_DEVTOOLS_GLOBAL_HOOK__={renderers:r,supportsFiber:true,inject:function(x){var i=++n;r.set(i,x);return i},onScheduleFiberRoot:f,onCommitFiberRoot:f,onPostCommitFiberRoot:f,onCommitFiberUnmount:f,setStrictMode:f,checkDCE:f}})();";
@@ -0,0 +1 @@
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.installEarlyNetworkRecorder=installEarlyNetworkRecorder;const MAX_RECORDS=100;function installEarlyNetworkRecorder(){if(typeof window==="undefined")return;const u=window;if(u.__BUOY_EARLY_NETWORK__)return;const d=Date.now;let f=true;const a=[];const y=c=>{a.push(c);if(a.length>MAX_RECORDS){const t=a.shift();if(t?.kind==="fetch")void t.settled.then(s=>s.clone?.body?.cancel()).catch(()=>{})}};const h=typeof window.fetch==="function"?window.fetch:void 0;if(h){window.fetch=function c(t,s){if(!f)return h.call(window,t,s);let l;try{if(t instanceof Request&&t.body&&!t.bodyUsed&&s?.body===void 0)l=t.clone()}catch{}const i=d();const o=h.call(window,t,s);const n=o.then(e=>{const r=d();const _=/event-stream|ndjson/.test(e.headers.get("content-type")??"");let w;try{if(!_)w=e.clone()}catch{}return{response:e,clone:w,headersAt:r}},e=>({error:e,headersAt:d()}));y({kind:"fetch",input:t,init:s,requestCopy:l,start:i,settled:n});return o}}if(typeof XMLHttpRequest!=="undefined"){const c=XMLHttpRequest.prototype;const{open:t,send:s,setRequestHeader:l}=c;const i=new WeakMap;c.open=function(o,n,...e){if(f)i.set(this,{method:o,url:String(n),headers:{}});return t.call(this,o,n,...e)};c.setRequestHeader=function(o,n){const e=i.get(this);if(e)e.headers[o]=n;return l.call(this,o,n)};c.send=function(o){const n=i.get(this);if(f&&n){i.delete(this);const e=d();const r=this;r.addEventListener("readystatechange",()=>{if(r.readyState===2&&r._buoyTtfb===void 0)r._buoyTtfb=d()-e;if(r.readyState===4)r._buoyEarlyEnd=d()});y({kind:"xhr",xhr:r,method:n.method,url:n.url,headers:n.headers,body:o,start:e})}return s.call(this,o)}}u.__BUOY_EARLY_NETWORK__={version:1,records:a,adopt(){f=false;return a.splice(0)}}}
@@ -1,460 +1 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.useAppHost = exports.AppOverlay = exports.AppHostProvider = void 0;
7
- var _sharedUi = require("@buoy-gg/shared-ui");
8
- var _react = _interopRequireWildcard(require("react"));
9
- var _reactNative = require("react-native");
10
- var _AppHostLogic = require("./AppHostLogic.js");
11
- var _AppIcon = require("./AppIcon");
12
- var _MinimizedToolsContext = require("./MinimizedToolsContext.js");
13
- var _ToolHost = require("./ToolHost.js");
14
- var _DevToolsSettingsModal = require("./DevToolsSettingsModal");
15
- var _jsxRuntime = require("react/jsx-runtime");
16
- function _interopRequireWildcard(e, t) { if ("function" == typeof WeakMap) var r = new WeakMap(), n = new WeakMap(); return (_interopRequireWildcard = function (e, t) { if (!t && e && e.__esModule) return e; var o, i, f = { __proto__: null, default: e }; if (null === e || "object" != typeof e && "function" != typeof e) return f; if (o = t ? n : r) { if (o.has(e)) return o.get(e); o.set(e, f); } for (const t in e) "default" !== t && {}.hasOwnProperty.call(e, t) && ((i = (o = Object.defineProperty) && Object.getOwnPropertyDescriptor(e, t)) && (i.get || i.set) ? o(f, t, i) : f[t] = e[t]); return f; })(e, t); }
17
- const AppHostContext = /*#__PURE__*/(0, _react.createContext)(null);
18
- const STORAGE_KEY_OPEN_APPS = "@react_buoy_open_apps";
19
- const PERSISTENCE_DELAY = 500;
20
-
21
- // Type for persisted app state
22
-
23
- /**
24
- * Provides the floating dev tools application host. Tracks open tool instances, restores
25
- * persisted state, and exposes imperative helpers used by `FloatingMenu` and friends.
26
- */
27
- const AppHostProvider = ({
28
- children
29
- }) => {
30
- const [openApps, setOpenApps] = (0, _react.useState)([]);
31
- const [isRestored, setIsRestored] = (0, _react.useState)(false);
32
- const persistenceTimeoutRef = (0, _react.useRef)(null);
33
- const installedAppsRef = (0, _react.useRef)([]);
34
- const pendingRestoreRef = (0, _react.useRef)(null);
35
- const {
36
- restore: removeFromMinimizedStack
37
- } = (0, _MinimizedToolsContext.useMinimizedTools)();
38
- const open = (0, _react.useCallback)(def => {
39
- let resolvedId = "";
40
- setOpenApps(current => {
41
- const {
42
- apps,
43
- instanceId,
44
- wasMinimized
45
- } = (0, _AppHostLogic.resolveOpenAppsState)(current, def, () => `${def.id}-${Date.now()}-${Math.random().toString(36).slice(2)}`);
46
- resolvedId = instanceId;
47
-
48
- // If the app was minimized, remove it from the minimized stack
49
- // This needs to be done outside of setOpenApps to avoid nested state updates
50
- if (wasMinimized) {
51
- // Schedule the removal for after this state update completes
52
- setTimeout(() => removeFromMinimizedStack(instanceId), 0);
53
- }
54
- return apps;
55
- });
56
- return resolvedId;
57
- }, [removeFromMinimizedStack]);
58
- const tryRestorePending = (0, _react.useCallback)(() => {
59
- if (isRestored) return;
60
- if (!installedAppsRef.current.length) return;
61
- const pendingApps = pendingRestoreRef.current;
62
- if (!pendingApps || pendingApps.length === 0) {
63
- setIsRestored(true);
64
- return;
65
- }
66
- pendingRestoreRef.current = null;
67
- pendingApps.forEach(({
68
- id: appId,
69
- minimized
70
- }) => {
71
- const appDef = installedAppsRef.current.find(app => app.id === appId);
72
- if (appDef) {
73
- const resolvedIcon = (0, _AppIcon.renderAppIcon)(appDef.icon, {
74
- slot: "dial",
75
- size: 20,
76
- color: appDef.color
77
- });
78
- open({
79
- id: appDef.id,
80
- title: appDef.name,
81
- component: appDef.component,
82
- props: appDef.props,
83
- launchMode: appDef.launchMode || "self-modal",
84
- singleton: appDef.singleton,
85
- icon: resolvedIcon,
86
- color: appDef.color,
87
- modal: appDef.modal,
88
- minimized: minimized // Preserve minimized state
89
- });
90
- }
91
- });
92
- setIsRestored(true);
93
- }, [isRestored, open]);
94
-
95
- // Restore open apps on mount
96
- (0, _react.useEffect)(() => {
97
- const restoreOpenApps = async () => {
98
- try {
99
- const saved = await _sharedUi.persistentStorage.getItem(STORAGE_KEY_OPEN_APPS);
100
- if (saved) {
101
- const parsed = JSON.parse(saved);
102
- // Handle both old format (string[]) and new format (PersistedAppState[])
103
- let savedApps;
104
- if (Array.isArray(parsed) && parsed.length > 0) {
105
- if (typeof parsed[0] === "string") {
106
- // Old format: convert string[] to PersistedAppState[]
107
- savedApps = parsed.map(id => ({
108
- id,
109
- minimized: false
110
- }));
111
- } else {
112
- // New format: already PersistedAppState[]
113
- savedApps = parsed;
114
- }
115
- if (savedApps.length) {
116
- pendingRestoreRef.current = savedApps;
117
- tryRestorePending();
118
- return;
119
- }
120
- }
121
- }
122
- } catch (error) {
123
- // Failed to restore open apps - continue with fresh state
124
- }
125
- setIsRestored(true);
126
- };
127
- restoreOpenApps();
128
- }, [tryRestorePending]);
129
-
130
- // Save open apps with debounce
131
- (0, _react.useEffect)(() => {
132
- if (!isRestored) return;
133
-
134
- // Clear existing timeout
135
- if (persistenceTimeoutRef.current) {
136
- clearTimeout(persistenceTimeoutRef.current);
137
- }
138
-
139
- // Set new timeout to save
140
- persistenceTimeoutRef.current = setTimeout(() => {
141
- const appStates = openApps.map(app => ({
142
- id: app.id,
143
- minimized: app.minimized ?? false
144
- }));
145
- _sharedUi.persistentStorage.setItem(STORAGE_KEY_OPEN_APPS, JSON.stringify(appStates));
146
- }, PERSISTENCE_DELAY);
147
- return () => {
148
- if (persistenceTimeoutRef.current) {
149
- clearTimeout(persistenceTimeoutRef.current);
150
- }
151
- };
152
- }, [openApps, isRestored]);
153
-
154
- // Store reference to installed apps for restoration
155
- const registerApps = (0, _react.useCallback)(apps => {
156
- installedAppsRef.current = apps;
157
- tryRestorePending();
158
- }, [tryRestorePending]);
159
- const close = (0, _react.useCallback)(instanceId => {
160
- setOpenApps(s => {
161
- if (!s.length) return s;
162
- if (!instanceId) return s.slice(0, -1);
163
- return s.filter(a => a.instanceId !== instanceId);
164
- });
165
- }, []);
166
- const closeAll = (0, _react.useCallback)(() => setOpenApps([]), []);
167
- const minimize = (0, _react.useCallback)(instanceId => {
168
- setOpenApps(s => s.map(app => app.instanceId === instanceId ? {
169
- ...app,
170
- minimized: true
171
- } : app));
172
- }, []);
173
- const restore = (0, _react.useCallback)((instanceId, restoreState) => {
174
- setOpenApps(s => s.map(app => app.instanceId === instanceId ? {
175
- ...app,
176
- minimized: false,
177
- restoreState
178
- } : app));
179
- }, []);
180
- const isMinimized = (0, _react.useCallback)(instanceId => {
181
- const app = openApps.find(a => a.instanceId === instanceId);
182
- return app?.minimized ?? false;
183
- }, [openApps]);
184
- _react.default.useEffect(() => {
185
- if (openApps.length === 0) return;
186
- const handler = () => {
187
- close();
188
- return true;
189
- };
190
- const sub = _reactNative.BackHandler.addEventListener("hardwareBackPress", handler);
191
- return () => sub.remove();
192
- }, [openApps.length, close]);
193
- const value = (0, _react.useMemo)(() => ({
194
- openApps,
195
- // Only count non-toggle-only and non-minimized tools as "open"
196
- isAnyOpen: openApps.filter(app => app.launchMode !== "toggle-only" && !app.minimized).length > 0,
197
- open,
198
- close,
199
- closeAll,
200
- registerApps,
201
- minimize,
202
- restore,
203
- isMinimized
204
- }), [openApps, open, close, closeAll, registerApps, minimize, restore, isMinimized]);
205
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(AppHostContext.Provider, {
206
- value: value,
207
- children: children
208
- });
209
- };
210
-
211
- /**
212
- * Accessor hook for the dev tools app host. Components can open/close tools or inspect
213
- * the active stack. Falls back to a no-op implementation when rendered outside the provider.
214
- */
215
- exports.AppHostProvider = AppHostProvider;
216
- const useAppHost = () => {
217
- const ctx = (0, _react.useContext)(AppHostContext);
218
- // Return a default value if not in provider (for backwards compatibility)
219
- if (!ctx) {
220
- return {
221
- openApps: [],
222
- isAnyOpen: false,
223
- open: () => "",
224
- close: () => {},
225
- closeAll: () => {},
226
- minimize: () => {},
227
- restore: (_instanceId, _restoreState) => {},
228
- isMinimized: () => false
229
- };
230
- }
231
- return ctx;
232
- };
233
-
234
- /**
235
- * Renders a single app instance. Keeps component mounted even when minimized
236
- * by passing visible={false} instead of unmounting.
237
- *
238
- * Supports multiple simultaneous modals - each gets its own z-index based on
239
- * position in the open apps stack (later opened = higher z-index).
240
- */
241
- exports.useAppHost = useAppHost;
242
- const AppRenderer = ({
243
- app,
244
- zIndex,
245
- onClose,
246
- onMinimize,
247
- minimizeTargetPosition,
248
- globalEnableSharedModalDimensions
249
- }) => {
250
- const Comp = app.component;
251
- // All non-minimized apps are visible - supports multiple simultaneous modals
252
- const isVisible = !app.minimized;
253
-
254
- // Merge props with global settings override
255
- // Priority: Global settings (if defined) > Tool prop > Default (false)
256
- const mergedProps = {
257
- ...(app.props ?? {}),
258
- // Only override if globalEnableSharedModalDimensions is explicitly true
259
- // (when the user turns it on in settings)
260
- ...(globalEnableSharedModalDimensions === true ? {
261
- enableSharedModalDimensions: true
262
- } : {})
263
- };
264
-
265
- // Declarative chrome: the component is a plain body — wrap it in the shared
266
- // modal shell (JsModal + managed header + search + toasts).
267
- if (app.modal && (app.launchMode === "self-modal" || !app.launchMode)) {
268
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_ToolHost.ToolModalShell, {
269
- app: app,
270
- config: app.modal,
271
- visible: isVisible,
272
- zIndex: zIndex,
273
- onClose: onClose,
274
- onMinimize: onMinimize,
275
- initialModalState: app.restoreState,
276
- enableSharedModalDimensions: globalEnableSharedModalDimensions === true,
277
- bodyProps: mergedProps
278
- });
279
- }
280
- if (app.launchMode === "self-modal") {
281
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(Comp, {
282
- ...mergedProps,
283
- visible: isVisible,
284
- onClose: onClose,
285
- onRequestClose: onClose,
286
- onMinimize: onMinimize,
287
- minimizeTargetPosition: minimizeTargetPosition,
288
- initialModalState: app.restoreState,
289
- instanceId: app.instanceId,
290
- zIndex: zIndex
291
- });
292
- }
293
- if (app.launchMode === "inline") {
294
- if (!isVisible) return null;
295
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
296
- pointerEvents: "box-none",
297
- style: [_reactNative.StyleSheet.absoluteFill, {
298
- zIndex
299
- }],
300
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Comp, {
301
- ...mergedProps,
302
- onClose: onClose,
303
- onMinimize: onMinimize,
304
- minimizeTargetPosition: minimizeTargetPosition,
305
- initialModalState: app.restoreState,
306
- instanceId: app.instanceId
307
- })
308
- });
309
- }
310
-
311
- // host-modal mode
312
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Modal, {
313
- visible: isVisible,
314
- transparent: true,
315
- animationType: "slide",
316
- onRequestClose: onClose,
317
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
318
- style: styles.backdrop,
319
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
320
- style: styles.card,
321
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(Comp, {
322
- ...mergedProps,
323
- onClose: onClose,
324
- onMinimize: onMinimize,
325
- minimizeTargetPosition: minimizeTargetPosition,
326
- initialModalState: app.restoreState,
327
- instanceId: app.instanceId
328
- })
329
- })
330
- })
331
- });
332
- };
333
-
334
- /**
335
- * Renders all dev tool surfaces. Keeps minimized apps mounted but hidden
336
- * so their state and listeners are preserved (similar to React Navigation screens).
337
- *
338
- * Supports multiple simultaneous modals - each modal gets a z-index based on
339
- * its position in the stack (later opened modals appear on top).
340
- */
341
- const AppOverlay = () => {
342
- const {
343
- openApps,
344
- close,
345
- minimize
346
- } = useAppHost();
347
- const {
348
- minimize: addToMinimizedStack,
349
- restore: removeFromMinimizedStack,
350
- getNextIconPosition,
351
- minimizedTools
352
- } = (0, _MinimizedToolsContext.useMinimizedTools)();
353
- const {
354
- settings
355
- } = (0, _DevToolsSettingsModal.useDevToolsSettings)();
356
-
357
- // Sync expandable window controls setting to WindowControls module
358
- (0, _react.useEffect)(() => {
359
- // Default to true (expandable ON) when setting is undefined
360
- (0, _sharedUi.setExpandableWindowControls)(settings.globalSettings?.expandableWindowControls !== false);
361
- }, [settings.globalSettings?.expandableWindowControls]);
362
-
363
- // Sync restored minimized apps to MinimizedToolsContext
364
- // This handles apps that were restored from persistence with minimized=true
365
- _react.default.useEffect(() => {
366
- openApps.forEach(app => {
367
- if (app.minimized && app.launchMode !== "toggle-only") {
368
- // Check if this app is already in the minimized stack
369
- const isInStack = minimizedTools.some(t => t.instanceId === app.instanceId);
370
- if (!isInStack) {
371
- // Add to minimized stack (restored from persistence)
372
- addToMinimizedStack({
373
- instanceId: app.instanceId,
374
- id: app.id,
375
- title: app.title || app.id,
376
- icon: app.icon,
377
- color: app.color
378
- });
379
- }
380
- }
381
- });
382
-
383
- // ...and take out anything the rail is still showing that is no longer
384
- // minimized, or no longer open at all.
385
- //
386
- // WHY THIS HALF EXISTS. `openApps` and the rail are two separate stores
387
- // for one fact, and only the ADD side was reliable. Minimizing goes
388
- // through an event handler; un-minimizing happens inside `open`, which
389
- // schedules the rail removal with a `setTimeout` from INSIDE a
390
- // `setOpenApps` updater. Updaters are not a safe place for side effects —
391
- // React may double-invoke or discard them — so the removal could be
392
- // skipped while `minimized: false` still landed. The rail then kept an
393
- // icon for an already-open tool, and tapping it did nothing except delete
394
- // the icon: the tool looked like it vanished, with no way back to it, and
395
- // both stores are persisted so it survived every reload.
396
- //
397
- // Reconciling here makes the rail eventually consistent with `openApps`
398
- // whichever way the state moved, without moving the side effect.
399
- minimizedTools.forEach(tool => {
400
- const app = openApps.find(a => a.instanceId === tool.instanceId);
401
- if (!app || !app.minimized) {
402
- removeFromMinimizedStack(tool.instanceId);
403
- }
404
- });
405
- }, [openApps, minimizedTools, addToMinimizedStack, removeFromMinimizedStack]);
406
-
407
- // Filter to renderable apps (exclude toggle-only)
408
- const renderableApps = openApps.filter(app => app.launchMode !== "toggle-only");
409
- if (renderableApps.length === 0) return null;
410
-
411
- // Base z-index for modals - each subsequent modal gets +1
412
- const BASE_ZINDEX = 9000;
413
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_jsxRuntime.Fragment, {
414
- children: renderableApps.map((app, index) => {
415
- // z-index based on position - later in array = higher z-index (on top)
416
- const zIndex = BASE_ZINDEX + index;
417
- const minimizeTargetPosition = getNextIconPosition();
418
- const handleMinimize = modalState => {
419
- // IMPORTANT: Order matters here!
420
- // 1. First mark the app as minimized in AppHost - this updates isAnyOpen
421
- // so that pushToSide becomes false before the icon component mounts
422
- minimize(app.instanceId);
423
- // 2. Then add to the minimized stack - this triggers the icon to mount
424
- // By now isAnyOpen is false, so the icon mounts with pushToSide=false
425
- addToMinimizedStack({
426
- instanceId: app.instanceId,
427
- id: app.id,
428
- title: app.title || app.id,
429
- icon: app.icon,
430
- color: app.color,
431
- modalState: modalState
432
- });
433
- };
434
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(AppRenderer, {
435
- app: app,
436
- zIndex: zIndex,
437
- onClose: () => close(app.instanceId),
438
- onMinimize: handleMinimize,
439
- minimizeTargetPosition: minimizeTargetPosition,
440
- globalEnableSharedModalDimensions: settings.globalSettings?.enableSharedModalDimensions
441
- }, app.instanceId);
442
- })
443
- });
444
- };
445
- exports.AppOverlay = AppOverlay;
446
- const styles = _reactNative.StyleSheet.create({
447
- backdrop: {
448
- flex: 1,
449
- backgroundColor: "rgba(0,0,0,0.28)",
450
- alignItems: "center",
451
- justifyContent: "center"
452
- },
453
- card: {
454
- maxHeight: "90%",
455
- width: "94%",
456
- borderRadius: 12,
457
- backgroundColor: "white",
458
- overflow: "hidden"
459
- }
460
- });
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.useAppHost=exports.AppOverlay=exports.AppHostProvider=void 0;var _sharedUi=require("@buoy-gg/shared-ui");var _react=_interopRequireWildcard(require("react"));var _reactNative=require("react-native");var _AppHostLogic=require("./AppHostLogic.js");var _AppIcon=require("./AppIcon");var _MinimizedToolsContext=require("./MinimizedToolsContext.js");var _ToolHost=require("./ToolHost.js");var _DevToolsSettingsModal=require("./DevToolsSettingsModal");var _jsxRuntime=require("react/jsx-runtime");function _interopRequireWildcard(t,l){if("function"==typeof WeakMap)var a=new WeakMap,m=new WeakMap;return(_interopRequireWildcard=function(i,f){if(!f&&i&&i.__esModule)return i;var c,d,u={__proto__:null,default:i};if(null===i||"object"!=typeof i&&"function"!=typeof i)return u;if(c=f?m:a){if(c.has(i))return c.get(i);c.set(i,u)}for(const g in i)"default"!==g&&{}.hasOwnProperty.call(i,g)&&((d=(c=Object.defineProperty)&&Object.getOwnPropertyDescriptor(i,g))&&(d.get||d.set)?c(u,g,d):u[g]=i[g]);return u})(t,l)}const AppHostContext=(0,_react.createContext)(null);const STORAGE_KEY_OPEN_APPS="@react_buoy_open_apps";const PERSISTENCE_DELAY=500;const AppHostProvider=({children:t})=>{const[l,a]=(0,_react.useState)([]);const[m,i]=(0,_react.useState)(false);const f=(0,_react.useRef)(null);const c=(0,_react.useRef)([]);const d=(0,_react.useRef)(null);const{restore:u}=(0,_MinimizedToolsContext.useMinimizedTools)();const g=(0,_react.useCallback)(n=>{let o="";a(s=>{const{apps:r,instanceId:S,wasMinimized:x}=(0,_AppHostLogic.resolveOpenAppsState)(s,n,()=>`${n.id}-${Date.now()}-${Math.random().toString(36).slice(2)}`);o=S;if(x){setTimeout(()=>u(S),0)}return r});return o},[u]);const e=(0,_react.useCallback)(()=>{if(m)return;if(!c.current.length)return;const n=d.current;if(!n||n.length===0){i(true);return}d.current=null;n.forEach(({id:o,minimized:s})=>{const r=c.current.find(S=>S.id===o);if(r){const S=(0,_AppIcon.renderAppIcon)(r.icon,{slot:"dial",size:20,color:r.color});g({id:r.id,title:r.name,component:r.component,props:r.props,launchMode:r.launchMode||"self-modal",singleton:r.singleton,icon:S,color:r.color,modal:r.modal,minimized:s})}});i(true)},[m,g]);(0,_react.useEffect)(()=>{const n=async()=>{try{const o=await _sharedUi.persistentStorage.getItem(STORAGE_KEY_OPEN_APPS);if(o){const s=JSON.parse(o);let r;if(Array.isArray(s)&&s.length>0){if(typeof s[0]==="string"){r=s.map(S=>({id:S,minimized:false}))}else{r=s}if(r.length){d.current=r;e();return}}}}catch(o){}i(true)};n()},[e]);(0,_react.useEffect)(()=>{if(!m)return;if(f.current){clearTimeout(f.current)}f.current=setTimeout(()=>{const n=l.map(o=>({id:o.id,minimized:o.minimized??false}));_sharedUi.persistentStorage.setItem(STORAGE_KEY_OPEN_APPS,JSON.stringify(n))},PERSISTENCE_DELAY);return()=>{if(f.current){clearTimeout(f.current)}}},[l,m]);const h=(0,_react.useCallback)(n=>{c.current=n;e()},[e]);const p=(0,_react.useCallback)(n=>{a(o=>{if(!o.length)return o;if(!n)return o.slice(0,-1);return o.filter(s=>s.instanceId!==n)})},[]);const v=(0,_react.useCallback)(()=>a([]),[]);const M=(0,_react.useCallback)(n=>{a(o=>o.map(s=>s.instanceId===n?{...s,minimized:true}:s))},[]);const b=(0,_react.useCallback)((n,o)=>{a(s=>s.map(r=>r.instanceId===n?{...r,minimized:false,restoreState:o}:r))},[]);const I=(0,_react.useCallback)(n=>{const o=l.find(s=>s.instanceId===n);return o?.minimized??false},[l]);_react.default.useEffect(()=>{if(l.length===0)return;const n=()=>{p();return true};const o=_reactNative.BackHandler.addEventListener("hardwareBackPress",n);return()=>o.remove()},[l.length,p]);const A=(0,_react.useMemo)(()=>({openApps:l,isAnyOpen:l.filter(n=>n.launchMode!=="toggle-only"&&!n.minimized).length>0,open:g,close:p,closeAll:v,registerApps:h,minimize:M,restore:b,isMinimized:I}),[l,g,p,v,h,M,b,I]);return(0,_jsxRuntime.jsx)(AppHostContext.Provider,{value:A,children:t})};exports.AppHostProvider=AppHostProvider;const useAppHost=()=>{const t=(0,_react.useContext)(AppHostContext);if(!t){return{openApps:[],isAnyOpen:false,open:()=>"",close:()=>{},closeAll:()=>{},minimize:()=>{},restore:(l,a)=>{},isMinimized:()=>false}}return t};exports.useAppHost=useAppHost;const AppRenderer=({app:t,zIndex:l,onClose:a,onMinimize:m,minimizeTargetPosition:i,globalEnableSharedModalDimensions:f})=>{const c=t.component;const d=!t.minimized;const u={...t.props??{},...f===true?{enableSharedModalDimensions:true}:{}};if(t.modal&&(t.launchMode==="self-modal"||!t.launchMode)){return(0,_jsxRuntime.jsx)(_ToolHost.ToolModalShell,{app:t,config:t.modal,visible:d,zIndex:l,onClose:a,onMinimize:m,initialModalState:t.restoreState,enableSharedModalDimensions:f===true,bodyProps:u})}if(t.launchMode==="self-modal"){return(0,_jsxRuntime.jsx)(c,{...u,visible:d,onClose:a,onRequestClose:a,onMinimize:m,minimizeTargetPosition:i,initialModalState:t.restoreState,instanceId:t.instanceId,zIndex:l})}if(t.launchMode==="inline"){if(!d)return null;return(0,_jsxRuntime.jsx)(_reactNative.View,{pointerEvents:"box-none",style:[_reactNative.StyleSheet.absoluteFill,{zIndex:l}],children:(0,_jsxRuntime.jsx)(c,{...u,onClose:a,onMinimize:m,minimizeTargetPosition:i,initialModalState:t.restoreState,instanceId:t.instanceId})})}return(0,_jsxRuntime.jsx)(_reactNative.Modal,{visible:d,transparent:true,animationType:"slide",onRequestClose:a,children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:styles.backdrop,children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:styles.card,children:(0,_jsxRuntime.jsx)(c,{...u,onClose:a,onMinimize:m,minimizeTargetPosition:i,initialModalState:t.restoreState,instanceId:t.instanceId})})})})};const AppOverlay=()=>{const{openApps:t,close:l,minimize:a}=useAppHost();const{minimize:m,restore:i,getNextIconPosition:f,minimizedTools:c}=(0,_MinimizedToolsContext.useMinimizedTools)();const{settings:d}=(0,_DevToolsSettingsModal.useDevToolsSettings)();(0,_react.useEffect)(()=>{(0,_sharedUi.setExpandableWindowControls)(d.globalSettings?.expandableWindowControls!==false)},[d.globalSettings?.expandableWindowControls]);_react.default.useEffect(()=>{t.forEach(e=>{if(e.minimized&&e.launchMode!=="toggle-only"){const h=c.some(p=>p.instanceId===e.instanceId);if(!h){m({instanceId:e.instanceId,id:e.id,title:e.title||e.id,icon:e.icon,color:e.color})}}});c.forEach(e=>{const h=t.find(p=>p.instanceId===e.instanceId);if(!h||!h.minimized){i(e.instanceId)}})},[t,c,m,i]);const u=t.filter(e=>e.launchMode!=="toggle-only");if(u.length===0)return null;const g=9e3;return(0,_jsxRuntime.jsx)(_jsxRuntime.Fragment,{children:u.map((e,h)=>{const p=g+h;const v=f();const M=b=>{a(e.instanceId);m({instanceId:e.instanceId,id:e.id,title:e.title||e.id,icon:e.icon,color:e.color,modalState:b})};return(0,_jsxRuntime.jsx)(AppRenderer,{app:e,zIndex:p,onClose:()=>l(e.instanceId),onMinimize:M,minimizeTargetPosition:v,globalEnableSharedModalDimensions:d.globalSettings?.enableSharedModalDimensions},e.instanceId)})})};exports.AppOverlay=AppOverlay;const styles=_reactNative.StyleSheet.create({backdrop:{flex:1,backgroundColor:"rgba(0,0,0,0.28)",alignItems:"center",justifyContent:"center"},card:{maxHeight:"90%",width:"94%",borderRadius:12,backgroundColor:"white",overflow:"hidden"}});