@buoy-gg/shared-ui 7.0.39 → 7.0.41

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 (377) hide show
  1. package/README.md +6 -0
  2. package/lib/commonjs/JsModal.js +13 -61
  3. package/lib/commonjs/JsModal.web.js +32 -95
  4. package/lib/commonjs/clipboard/autoDetectClipboard.js +1 -1
  5. package/lib/commonjs/clipboard/clipboard-impl.web.js +21 -0
  6. package/lib/commonjs/dataViewer/tree/TreeDiffViewer.js +4 -2
  7. package/lib/commonjs/hooks/index.js +1 -1
  8. package/lib/commonjs/hooks/safe-area-impl.js +1 -1
  9. package/lib/commonjs/hooks/usePersistedState.js +1 -1
  10. package/lib/commonjs/hooks/useSafeAreaInsets.web.js +41 -0
  11. package/lib/commonjs/icons/index.js +14 -0
  12. package/lib/commonjs/index.js +34 -0
  13. package/lib/commonjs/license/AccountSetup.js +4 -25
  14. package/lib/commonjs/license/AccountSetup.web.js +78 -64
  15. package/lib/commonjs/license/AccountSetupContent.js +482 -0
  16. package/lib/commonjs/license/FreeAccountPrompt.js +32 -178
  17. package/lib/commonjs/license/LicenseEntryModal.js +5 -12
  18. package/lib/commonjs/license/accountRuntime.js +8 -0
  19. package/lib/commonjs/license/accountRuntime.web.js +9 -0
  20. package/lib/commonjs/license/licenseModule.js +2 -0
  21. package/lib/commonjs/settings/components/BubbleSettingsSection.js +1 -1
  22. package/lib/commonjs/storage/definePersistedSetting.js +1 -1
  23. package/lib/commonjs/stores/ignoredPatternsCore.js +8 -1
  24. package/lib/commonjs/stores/ignoredPatternsStore.js +10 -199
  25. package/lib/commonjs/stores/ignoredPatternsStore.shared.js +205 -0
  26. package/lib/commonjs/stores/ignoredPatternsStore.web.js +10 -230
  27. package/lib/commonjs/ui/backgrounds/backgroundStore.js +1 -1
  28. package/lib/commonjs/ui/backgrounds/variants/wormhole.js +3 -0
  29. package/lib/commonjs/ui/components/CopyButton.js +1 -1
  30. package/lib/commonjs/ui/components/EventStepperFooter.js +1 -1
  31. package/lib/commonjs/ui/components/ToolFooter.js +1 -1
  32. package/lib/commonjs/ui/floating/FloatingTool.web.js +12 -2
  33. package/lib/commonjs/ui/night/primitives.js +10 -3
  34. package/lib/commonjs/ui/otto/OttoSprite.js +1 -1
  35. package/lib/commonjs/utils/browserAsyncStorage.js +157 -0
  36. package/lib/commonjs/utils/browserNavigation.js +116 -0
  37. package/lib/commonjs/utils/devServer.js +8 -4
  38. package/lib/commonjs/utils/devServer.web.js +10 -0
  39. package/lib/commonjs/utils/domRuntime.js +143 -0
  40. package/lib/commonjs/utils/expoRouterModule.js +51 -0
  41. package/lib/commonjs/utils/expoRouterModule.web.js +14 -0
  42. package/lib/commonjs/utils/getSafeAreaInsets.web.js +35 -0
  43. package/lib/commonjs/utils/index.js +111 -4
  44. package/lib/commonjs/utils/loadToolModule.js +46 -0
  45. package/lib/commonjs/utils/loadToolModule.web.js +12 -0
  46. package/lib/commonjs/utils/modalStorage.js +42 -0
  47. package/lib/commonjs/utils/nativeWeb.js +454 -0
  48. package/lib/commonjs/utils/persistentStorage.web.js +78 -0
  49. package/lib/commonjs/utils/reloadApp.js +18 -57
  50. package/lib/commonjs/utils/reloadPlatform.js +37 -0
  51. package/lib/commonjs/utils/reloadPlatform.web.js +17 -0
  52. package/lib/commonjs/utils/safeExpoRouter.js +3 -53
  53. package/lib/commonjs/utils/safeExpoRouter.web.js +48 -0
  54. package/lib/commonjs/utils/toolModules.js +25 -0
  55. package/lib/module/JsModal.js +11 -59
  56. package/lib/module/JsModal.web.js +28 -91
  57. package/lib/module/clipboard/autoDetectClipboard.js +2 -2
  58. package/lib/module/clipboard/clipboard-impl.web.js +14 -0
  59. package/lib/module/dataViewer/tree/TreeDiffViewer.js +4 -2
  60. package/lib/module/hooks/index.js +2 -2
  61. package/lib/module/hooks/safe-area-impl.js +1 -1
  62. package/lib/module/hooks/usePersistedState.js +1 -1
  63. package/lib/module/hooks/useSafeAreaInsets.web.js +30 -0
  64. package/lib/module/icons/index.js +2 -1
  65. package/lib/module/index.js +3 -0
  66. package/lib/module/license/AccountSetup.js +5 -26
  67. package/lib/module/license/AccountSetup.web.js +79 -65
  68. package/lib/module/license/AccountSetupContent.js +476 -0
  69. package/lib/module/license/FreeAccountPrompt.js +27 -176
  70. package/lib/module/license/LicenseEntryModal.js +6 -13
  71. package/lib/module/license/accountRuntime.js +3 -0
  72. package/lib/module/license/accountRuntime.web.js +4 -0
  73. package/lib/module/license/licenseModule.js +2 -0
  74. package/lib/module/settings/components/BubbleSettingsSection.js +1 -1
  75. package/lib/module/storage/definePersistedSetting.js +1 -1
  76. package/lib/module/stores/ignoredPatternsCore.js +8 -1
  77. package/lib/module/stores/ignoredPatternsStore.js +1 -187
  78. package/lib/module/stores/ignoredPatternsStore.shared.js +189 -0
  79. package/lib/module/stores/ignoredPatternsStore.web.js +1 -219
  80. package/lib/module/ui/backgrounds/backgroundStore.js +1 -1
  81. package/lib/module/ui/backgrounds/variants/wormhole.js +3 -0
  82. package/lib/module/ui/components/CopyButton.js +1 -1
  83. package/lib/module/ui/components/EventStepperFooter.js +1 -1
  84. package/lib/module/ui/components/ToolFooter.js +1 -1
  85. package/lib/module/ui/floating/FloatingTool.web.js +12 -2
  86. package/lib/module/ui/night/primitives.js +11 -4
  87. package/lib/module/ui/otto/OttoSprite.js +1 -1
  88. package/lib/module/utils/browserAsyncStorage.js +151 -0
  89. package/lib/module/utils/browserNavigation.js +108 -0
  90. package/lib/module/utils/devServer.js +8 -4
  91. package/lib/module/utils/devServer.web.js +6 -0
  92. package/lib/module/utils/domRuntime.js +134 -0
  93. package/lib/module/utils/expoRouterModule.js +46 -0
  94. package/lib/module/utils/expoRouterModule.web.js +9 -0
  95. package/lib/module/utils/getSafeAreaInsets.web.js +31 -0
  96. package/lib/module/utils/index.js +9 -4
  97. package/lib/module/utils/loadToolModule.js +42 -0
  98. package/lib/module/utils/loadToolModule.web.js +8 -0
  99. package/lib/module/utils/modalStorage.js +37 -0
  100. package/lib/module/utils/nativeWeb.js +107 -0
  101. package/lib/module/utils/persistentStorage.web.js +72 -0
  102. package/lib/module/utils/reloadApp.js +13 -51
  103. package/lib/module/utils/reloadPlatform.js +31 -0
  104. package/lib/module/utils/reloadPlatform.web.js +11 -0
  105. package/lib/module/utils/safeExpoRouter.js +3 -53
  106. package/lib/module/utils/safeExpoRouter.web.js +37 -0
  107. package/lib/module/utils/toolModules.js +19 -0
  108. package/lib/typescript/commonjs/JsModal.d.ts.map +1 -1
  109. package/lib/typescript/commonjs/JsModal.web.d.ts +7 -18
  110. package/lib/typescript/commonjs/JsModal.web.d.ts.map +1 -1
  111. package/lib/typescript/commonjs/clipboard/clipboard-impl.web.d.ts +5 -0
  112. package/lib/typescript/commonjs/clipboard/clipboard-impl.web.d.ts.map +1 -0
  113. package/lib/typescript/commonjs/dataViewer/tree/TreeDiffViewer.d.ts.map +1 -1
  114. package/lib/typescript/commonjs/hooks/safe-area-impl.d.ts +1 -1
  115. package/lib/typescript/commonjs/hooks/useSafeAreaInsets.web.d.ts +6 -0
  116. package/lib/typescript/commonjs/hooks/useSafeAreaInsets.web.d.ts.map +1 -0
  117. package/lib/typescript/commonjs/icons/index.d.ts +1 -0
  118. package/lib/typescript/commonjs/icons/index.d.ts.map +1 -1
  119. package/lib/typescript/commonjs/index.d.ts +2 -0
  120. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  121. package/lib/typescript/commonjs/license/AccountSetup.d.ts.map +1 -1
  122. package/lib/typescript/commonjs/license/AccountSetup.web.d.ts +1 -1
  123. package/lib/typescript/commonjs/license/AccountSetup.web.d.ts.map +1 -1
  124. package/lib/typescript/commonjs/license/AccountSetupContent.d.ts +11 -0
  125. package/lib/typescript/commonjs/license/AccountSetupContent.d.ts.map +1 -0
  126. package/lib/typescript/commonjs/license/FreeAccountPrompt.d.ts +3 -15
  127. package/lib/typescript/commonjs/license/FreeAccountPrompt.d.ts.map +1 -1
  128. package/lib/typescript/commonjs/license/LicenseEntryModal.d.ts.map +1 -1
  129. package/lib/typescript/commonjs/license/accountRuntime.d.ts +2 -0
  130. package/lib/typescript/commonjs/license/accountRuntime.d.ts.map +1 -0
  131. package/lib/typescript/commonjs/license/accountRuntime.web.d.ts +2 -0
  132. package/lib/typescript/commonjs/license/accountRuntime.web.d.ts.map +1 -0
  133. package/lib/typescript/commonjs/license/licenseModule.d.ts +3 -1
  134. package/lib/typescript/commonjs/license/licenseModule.d.ts.map +1 -1
  135. package/lib/typescript/commonjs/stores/ignoredPatternsCore.d.ts +5 -1
  136. package/lib/typescript/commonjs/stores/ignoredPatternsCore.d.ts.map +1 -1
  137. package/lib/typescript/commonjs/stores/ignoredPatternsStore.d.ts +1 -59
  138. package/lib/typescript/commonjs/stores/ignoredPatternsStore.d.ts.map +1 -1
  139. package/lib/typescript/commonjs/stores/ignoredPatternsStore.shared.d.ts +60 -0
  140. package/lib/typescript/commonjs/stores/ignoredPatternsStore.shared.d.ts.map +1 -0
  141. package/lib/typescript/commonjs/stores/ignoredPatternsStore.web.d.ts +1 -71
  142. package/lib/typescript/commonjs/stores/ignoredPatternsStore.web.d.ts.map +1 -1
  143. package/lib/typescript/commonjs/ui/floating/FloatingTool.web.d.ts.map +1 -1
  144. package/lib/typescript/commonjs/ui/night/primitives.d.ts.map +1 -1
  145. package/lib/typescript/commonjs/ui/otto/ottoEngine.d.ts +1 -1
  146. package/lib/typescript/commonjs/utils/browserAsyncStorage.d.ts +25 -0
  147. package/lib/typescript/commonjs/utils/browserAsyncStorage.d.ts.map +1 -0
  148. package/lib/typescript/commonjs/utils/browserNavigation.d.ts +31 -0
  149. package/lib/typescript/commonjs/utils/browserNavigation.d.ts.map +1 -0
  150. package/lib/typescript/commonjs/utils/devServer.d.ts.map +1 -1
  151. package/lib/typescript/commonjs/utils/devServer.web.d.ts +2 -0
  152. package/lib/typescript/commonjs/utils/devServer.web.d.ts.map +1 -0
  153. package/lib/typescript/commonjs/utils/domRuntime.d.ts +27 -0
  154. package/lib/typescript/commonjs/utils/domRuntime.d.ts.map +1 -0
  155. package/lib/typescript/commonjs/utils/expoRouterModule.d.ts +3 -0
  156. package/lib/typescript/commonjs/utils/expoRouterModule.d.ts.map +1 -0
  157. package/lib/typescript/commonjs/utils/expoRouterModule.web.d.ts +3 -0
  158. package/lib/typescript/commonjs/utils/expoRouterModule.web.d.ts.map +1 -0
  159. package/lib/typescript/commonjs/utils/getSafeAreaInsets.web.d.ts +8 -0
  160. package/lib/typescript/commonjs/utils/getSafeAreaInsets.web.d.ts.map +1 -0
  161. package/lib/typescript/commonjs/utils/index.d.ts +5 -0
  162. package/lib/typescript/commonjs/utils/index.d.ts.map +1 -1
  163. package/lib/typescript/commonjs/utils/loadToolModule.d.ts +3 -0
  164. package/lib/typescript/commonjs/utils/loadToolModule.d.ts.map +1 -0
  165. package/lib/typescript/commonjs/utils/loadToolModule.web.d.ts +2 -0
  166. package/lib/typescript/commonjs/utils/loadToolModule.web.d.ts.map +1 -0
  167. package/lib/typescript/commonjs/utils/modalStorage.d.ts +21 -0
  168. package/lib/typescript/commonjs/utils/modalStorage.d.ts.map +1 -0
  169. package/lib/typescript/commonjs/utils/nativeWeb.d.ts +22 -0
  170. package/lib/typescript/commonjs/utils/nativeWeb.d.ts.map +1 -0
  171. package/lib/typescript/commonjs/utils/persistentStorage.web.d.ts +6 -0
  172. package/lib/typescript/commonjs/utils/persistentStorage.web.d.ts.map +1 -0
  173. package/lib/typescript/commonjs/utils/reloadApp.d.ts +7 -25
  174. package/lib/typescript/commonjs/utils/reloadApp.d.ts.map +1 -1
  175. package/lib/typescript/commonjs/utils/reloadPlatform.d.ts +8 -0
  176. package/lib/typescript/commonjs/utils/reloadPlatform.d.ts.map +1 -0
  177. package/lib/typescript/commonjs/utils/reloadPlatform.web.d.ts +4 -0
  178. package/lib/typescript/commonjs/utils/reloadPlatform.web.d.ts.map +1 -0
  179. package/lib/typescript/commonjs/utils/safeExpoRouter.d.ts.map +1 -1
  180. package/lib/typescript/commonjs/utils/safeExpoRouter.web.d.ts +43 -0
  181. package/lib/typescript/commonjs/utils/safeExpoRouter.web.d.ts.map +1 -0
  182. package/lib/typescript/commonjs/utils/toolModules.d.ts +5 -0
  183. package/lib/typescript/commonjs/utils/toolModules.d.ts.map +1 -0
  184. package/lib/typescript/module/JsModal.d.ts.map +1 -1
  185. package/lib/typescript/module/JsModal.web.d.ts +7 -18
  186. package/lib/typescript/module/JsModal.web.d.ts.map +1 -1
  187. package/lib/typescript/module/clipboard/clipboard-impl.web.d.ts +5 -0
  188. package/lib/typescript/module/clipboard/clipboard-impl.web.d.ts.map +1 -0
  189. package/lib/typescript/module/dataViewer/tree/TreeDiffViewer.d.ts.map +1 -1
  190. package/lib/typescript/module/hooks/safe-area-impl.d.ts +1 -1
  191. package/lib/typescript/module/hooks/useSafeAreaInsets.web.d.ts +6 -0
  192. package/lib/typescript/module/hooks/useSafeAreaInsets.web.d.ts.map +1 -0
  193. package/lib/typescript/module/icons/index.d.ts +1 -0
  194. package/lib/typescript/module/icons/index.d.ts.map +1 -1
  195. package/lib/typescript/module/index.d.ts +2 -0
  196. package/lib/typescript/module/index.d.ts.map +1 -1
  197. package/lib/typescript/module/license/AccountSetup.d.ts.map +1 -1
  198. package/lib/typescript/module/license/AccountSetup.web.d.ts +1 -1
  199. package/lib/typescript/module/license/AccountSetup.web.d.ts.map +1 -1
  200. package/lib/typescript/module/license/AccountSetupContent.d.ts +11 -0
  201. package/lib/typescript/module/license/AccountSetupContent.d.ts.map +1 -0
  202. package/lib/typescript/module/license/FreeAccountPrompt.d.ts +3 -15
  203. package/lib/typescript/module/license/FreeAccountPrompt.d.ts.map +1 -1
  204. package/lib/typescript/module/license/LicenseEntryModal.d.ts.map +1 -1
  205. package/lib/typescript/module/license/accountRuntime.d.ts +2 -0
  206. package/lib/typescript/module/license/accountRuntime.d.ts.map +1 -0
  207. package/lib/typescript/module/license/accountRuntime.web.d.ts +2 -0
  208. package/lib/typescript/module/license/accountRuntime.web.d.ts.map +1 -0
  209. package/lib/typescript/module/license/licenseModule.d.ts +3 -1
  210. package/lib/typescript/module/license/licenseModule.d.ts.map +1 -1
  211. package/lib/typescript/module/stores/ignoredPatternsCore.d.ts +5 -1
  212. package/lib/typescript/module/stores/ignoredPatternsCore.d.ts.map +1 -1
  213. package/lib/typescript/module/stores/ignoredPatternsStore.d.ts +1 -59
  214. package/lib/typescript/module/stores/ignoredPatternsStore.d.ts.map +1 -1
  215. package/lib/typescript/module/stores/ignoredPatternsStore.shared.d.ts +60 -0
  216. package/lib/typescript/module/stores/ignoredPatternsStore.shared.d.ts.map +1 -0
  217. package/lib/typescript/module/stores/ignoredPatternsStore.web.d.ts +1 -71
  218. package/lib/typescript/module/stores/ignoredPatternsStore.web.d.ts.map +1 -1
  219. package/lib/typescript/module/ui/floating/FloatingTool.web.d.ts.map +1 -1
  220. package/lib/typescript/module/ui/night/primitives.d.ts.map +1 -1
  221. package/lib/typescript/module/ui/otto/ottoEngine.d.ts +1 -1
  222. package/lib/typescript/module/utils/browserAsyncStorage.d.ts +25 -0
  223. package/lib/typescript/module/utils/browserAsyncStorage.d.ts.map +1 -0
  224. package/lib/typescript/module/utils/browserNavigation.d.ts +31 -0
  225. package/lib/typescript/module/utils/browserNavigation.d.ts.map +1 -0
  226. package/lib/typescript/module/utils/devServer.d.ts.map +1 -1
  227. package/lib/typescript/module/utils/devServer.web.d.ts +2 -0
  228. package/lib/typescript/module/utils/devServer.web.d.ts.map +1 -0
  229. package/lib/typescript/module/utils/domRuntime.d.ts +27 -0
  230. package/lib/typescript/module/utils/domRuntime.d.ts.map +1 -0
  231. package/lib/typescript/module/utils/expoRouterModule.d.ts +3 -0
  232. package/lib/typescript/module/utils/expoRouterModule.d.ts.map +1 -0
  233. package/lib/typescript/module/utils/expoRouterModule.web.d.ts +3 -0
  234. package/lib/typescript/module/utils/expoRouterModule.web.d.ts.map +1 -0
  235. package/lib/typescript/module/utils/getSafeAreaInsets.web.d.ts +8 -0
  236. package/lib/typescript/module/utils/getSafeAreaInsets.web.d.ts.map +1 -0
  237. package/lib/typescript/module/utils/index.d.ts +5 -0
  238. package/lib/typescript/module/utils/index.d.ts.map +1 -1
  239. package/lib/typescript/module/utils/loadToolModule.d.ts +3 -0
  240. package/lib/typescript/module/utils/loadToolModule.d.ts.map +1 -0
  241. package/lib/typescript/module/utils/loadToolModule.web.d.ts +2 -0
  242. package/lib/typescript/module/utils/loadToolModule.web.d.ts.map +1 -0
  243. package/lib/typescript/module/utils/modalStorage.d.ts +21 -0
  244. package/lib/typescript/module/utils/modalStorage.d.ts.map +1 -0
  245. package/lib/typescript/module/utils/nativeWeb.d.ts +22 -0
  246. package/lib/typescript/module/utils/nativeWeb.d.ts.map +1 -0
  247. package/lib/typescript/module/utils/persistentStorage.web.d.ts +6 -0
  248. package/lib/typescript/module/utils/persistentStorage.web.d.ts.map +1 -0
  249. package/lib/typescript/module/utils/reloadApp.d.ts +7 -25
  250. package/lib/typescript/module/utils/reloadApp.d.ts.map +1 -1
  251. package/lib/typescript/module/utils/reloadPlatform.d.ts +8 -0
  252. package/lib/typescript/module/utils/reloadPlatform.d.ts.map +1 -0
  253. package/lib/typescript/module/utils/reloadPlatform.web.d.ts +4 -0
  254. package/lib/typescript/module/utils/reloadPlatform.web.d.ts.map +1 -0
  255. package/lib/typescript/module/utils/safeExpoRouter.d.ts.map +1 -1
  256. package/lib/typescript/module/utils/safeExpoRouter.web.d.ts +43 -0
  257. package/lib/typescript/module/utils/safeExpoRouter.web.d.ts.map +1 -0
  258. package/lib/typescript/module/utils/toolModules.d.ts +5 -0
  259. package/lib/typescript/module/utils/toolModules.d.ts.map +1 -0
  260. package/lib/web/asyncStorage.mjs +2 -0
  261. package/lib/web/chunks/chunk-2MHKRRQW.mjs +8 -0
  262. package/lib/web/chunks/chunk-2Q3SDPH2.mjs +14 -0
  263. package/lib/web/chunks/chunk-34YQ42KI.mjs +2 -0
  264. package/lib/web/chunks/chunk-3NNNCQYP.mjs +14 -0
  265. package/lib/web/chunks/chunk-3UTMGIUG.mjs +2 -0
  266. package/lib/web/chunks/chunk-46CXXOQB.mjs +2 -0
  267. package/lib/web/chunks/chunk-475BSDCB.mjs +2 -0
  268. package/lib/web/chunks/chunk-53J2FMUD.mjs +2 -0
  269. package/lib/web/chunks/chunk-552W4COI.mjs +2 -0
  270. package/lib/web/chunks/chunk-56TTTMX4.mjs +6145 -0
  271. package/lib/web/chunks/chunk-5LOQZINQ.mjs +14 -0
  272. package/lib/web/chunks/chunk-5NOIO6ZM.mjs +16 -0
  273. package/lib/web/chunks/chunk-5NZOQR6Q.mjs +2 -0
  274. package/lib/web/chunks/chunk-6CCRCSA2.mjs +2 -0
  275. package/lib/web/chunks/chunk-6Q52HRBL.mjs +2 -0
  276. package/lib/web/chunks/chunk-6TEDFSNM.mjs +655 -0
  277. package/lib/web/chunks/chunk-7BMRSMHN.mjs +2 -0
  278. package/lib/web/chunks/chunk-A2SOFE47.mjs +24 -0
  279. package/lib/web/chunks/chunk-A7KJCK4R.mjs +14 -0
  280. package/lib/web/chunks/chunk-AEXGGXS7.mjs +2 -0
  281. package/lib/web/chunks/chunk-AGD7ZT6O.mjs +15 -0
  282. package/lib/web/chunks/chunk-AIEOQWNG.mjs +2 -0
  283. package/lib/web/chunks/chunk-ASTM35HG.mjs +16 -0
  284. package/lib/web/chunks/chunk-AZBMFPMX.mjs +1421 -0
  285. package/lib/web/chunks/chunk-B2V2UDCU.mjs +16 -0
  286. package/lib/web/chunks/chunk-BFGKGTAC.mjs +2 -0
  287. package/lib/web/chunks/chunk-BHW6AFO6.mjs +2 -0
  288. package/lib/web/chunks/chunk-BWRW3NJ2.mjs +16 -0
  289. package/lib/web/chunks/chunk-CBM2IZAK.mjs +2 -0
  290. package/lib/web/chunks/chunk-CDLCFF44.mjs +2 -0
  291. package/lib/web/chunks/chunk-CE5U3CSQ.mjs +2 -0
  292. package/lib/web/chunks/chunk-CI5CO7FQ.mjs +2 -0
  293. package/lib/web/chunks/chunk-CIB4U2YK.mjs +2 -0
  294. package/lib/web/chunks/chunk-CLLTZQGD.mjs +596 -0
  295. package/lib/web/chunks/chunk-D5HQLRFW.mjs +655 -0
  296. package/lib/web/chunks/chunk-DZDTNXXK.mjs +2 -0
  297. package/lib/web/chunks/chunk-FDOZ6YSS.mjs +2 -0
  298. package/lib/web/chunks/chunk-FMEWNGQO.mjs +2 -0
  299. package/lib/web/chunks/chunk-G4DH7GMT.mjs +2 -0
  300. package/lib/web/chunks/chunk-GBUZCZE4.mjs +2 -0
  301. package/lib/web/chunks/chunk-GF5C5DVX.mjs +2 -0
  302. package/lib/web/chunks/chunk-GLMS5ZLJ.mjs +445 -0
  303. package/lib/web/chunks/chunk-GNGMIA7V.mjs +2 -0
  304. package/lib/web/chunks/chunk-GTYIS7H7.mjs +15 -0
  305. package/lib/web/chunks/chunk-HJ36IONA.mjs +15 -0
  306. package/lib/web/chunks/chunk-HXPTZMAZ.mjs +2 -0
  307. package/lib/web/chunks/chunk-I27M4JCS.mjs +2 -0
  308. package/lib/web/chunks/chunk-IVCT27JB.mjs +2 -0
  309. package/lib/web/chunks/chunk-JG4QSK5B.mjs +2 -0
  310. package/lib/web/chunks/chunk-JR7BJW6B.mjs +389 -0
  311. package/lib/web/chunks/chunk-K46ZJUXJ.mjs +90 -0
  312. package/lib/web/chunks/chunk-K4LXMO4D.mjs +2 -0
  313. package/lib/web/chunks/chunk-K7CGIEFU.mjs +2 -0
  314. package/lib/web/chunks/chunk-KBTYK5YE.mjs +662 -0
  315. package/lib/web/chunks/chunk-KHP6CSSM.mjs +2 -0
  316. package/lib/web/chunks/chunk-KRDRIW7T.mjs +14 -0
  317. package/lib/web/chunks/chunk-L2DTKDER.mjs +2 -0
  318. package/lib/web/chunks/chunk-LFDFDGHY.mjs +655 -0
  319. package/lib/web/chunks/chunk-LZ7FZZ7R.mjs +2 -0
  320. package/lib/web/chunks/chunk-MAIUUK4E.mjs +2 -0
  321. package/lib/web/chunks/chunk-MKJKS3IG.mjs +275 -0
  322. package/lib/web/chunks/chunk-MRQKVLXG.mjs +2 -0
  323. package/lib/web/chunks/chunk-NK3OISOL.mjs +14 -0
  324. package/lib/web/chunks/chunk-NLJDDIXW.mjs +2 -0
  325. package/lib/web/chunks/chunk-OENR3XFI.mjs +11 -0
  326. package/lib/web/chunks/chunk-OZB3VKZE.mjs +2 -0
  327. package/lib/web/chunks/chunk-P64PFJT3.mjs +17618 -0
  328. package/lib/web/chunks/chunk-PACPGYH7.mjs +2 -0
  329. package/lib/web/chunks/chunk-PART6HOE.mjs +14 -0
  330. package/lib/web/chunks/chunk-PMRXUQRH.mjs +2 -0
  331. package/lib/web/chunks/chunk-PTK5FO6C.mjs +2 -0
  332. package/lib/web/chunks/chunk-PZ45TQ55.mjs +14 -0
  333. package/lib/web/chunks/chunk-Q5LN7GET.mjs +17624 -0
  334. package/lib/web/chunks/chunk-QCD6T6L4.mjs +297 -0
  335. package/lib/web/chunks/chunk-QD5EUANU.mjs +2 -0
  336. package/lib/web/chunks/chunk-QJTECJCO.mjs +2 -0
  337. package/lib/web/chunks/chunk-QPIZURPZ.mjs +2 -0
  338. package/lib/web/chunks/chunk-QPY45R5F.mjs +274 -0
  339. package/lib/web/chunks/chunk-R2SGZIG5.mjs +2 -0
  340. package/lib/web/chunks/chunk-S3GYQYVJ.mjs +16 -0
  341. package/lib/web/chunks/chunk-SCCXVTDM.mjs +2 -0
  342. package/lib/web/chunks/chunk-SHJHD646.mjs +2 -0
  343. package/lib/web/chunks/chunk-TCRVZ55E.mjs +2 -0
  344. package/lib/web/chunks/chunk-TJ6ZVV2L.mjs +15 -0
  345. package/lib/web/chunks/chunk-TPSY4RC3.mjs +14 -0
  346. package/lib/web/chunks/chunk-U5KNX5O6.mjs +17624 -0
  347. package/lib/web/chunks/chunk-UCKELQSM.mjs +2 -0
  348. package/lib/web/chunks/chunk-UGGCYHRH.mjs +15 -0
  349. package/lib/web/chunks/chunk-UNYQJZET.mjs +16 -0
  350. package/lib/web/chunks/chunk-VE72SWLV.mjs +15 -0
  351. package/lib/web/chunks/chunk-VKONO6MI.mjs +2 -0
  352. package/lib/web/chunks/chunk-W4BGMPJO.mjs +2 -0
  353. package/lib/web/chunks/chunk-WHNEEKLR.mjs +2 -0
  354. package/lib/web/chunks/chunk-WLGUP3KY.mjs +16 -0
  355. package/lib/web/chunks/chunk-WY7D4WBZ.mjs +2 -0
  356. package/lib/web/chunks/chunk-XRNB2MHO.mjs +107 -0
  357. package/lib/web/chunks/chunk-XXTIAXQY.mjs +2 -0
  358. package/lib/web/chunks/chunk-XYUAUO57.mjs +2 -0
  359. package/lib/web/chunks/chunk-YG6DIKQD.mjs +2 -0
  360. package/lib/web/chunks/chunk-YIZFMU66.mjs +2 -0
  361. package/lib/web/chunks/chunk-YOGAPOGC.mjs +2 -0
  362. package/lib/web/chunks/chunk-Z7373DS5.mjs +2 -0
  363. package/lib/web/chunks/chunk-Z76GRN66.mjs +17627 -0
  364. package/lib/web/chunks/persistentStorage.web-4FBAOYJ4.mjs +12 -0
  365. package/lib/web/chunks/persistentStorage.web-7W3Y6Q24.mjs +12 -0
  366. package/lib/web/chunks/persistentStorage.web-GOWNFMVT.mjs +2 -0
  367. package/lib/web/chunks/persistentStorage.web-RF47FXIK.mjs +12 -0
  368. package/lib/web/colors.mjs +2 -0
  369. package/lib/web/dataViewer.mjs +3 -0
  370. package/lib/web/floating.mjs +2 -0
  371. package/lib/web/history.mjs +2 -0
  372. package/lib/web/hooks.mjs +2 -0
  373. package/lib/web/index.mjs +15 -0
  374. package/lib/web/native.mjs +2 -0
  375. package/lib/web/ui.mjs +2 -0
  376. package/lib/web/utils.mjs +2 -0
  377. package/package.json +118 -36
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{Wb as p,Yb as x,jd as w}from"./chunk-VKONO6MI.mjs";import{a as t}from"./chunk-GF5C5DVX.mjs";import{View as o,Text as a,TouchableOpacity as H,StyleSheet as B}from"react-native-web";import{jsx as r,jsxs as i}from"react/jsx-runtime";function k({statusDotColor:s,statusLabel:T,statusSublabel:f,primaryText:C,secondaryText:l,secondaryAccessory:y,expandedContent:m,isExpanded:n,badgeText:c,badgeColor:R,customBadge:d,showChevron:D,bottomRightText:g,isSelected:I,onPress:b,disabled:S,expandedGlowColor:h,testID:V,statusTestID:v,statusSublabelTestID:L,primaryTestID:O,secondaryTestID:W,accessibilityLabel:z,trailingAction:u}){return r(o,{style:[e.rowWrapper,n&&e.rowWrapperExpanded],children:i(o,{style:[e.row,I&&e.selectedRow,n&&[e.expandedRowActive,{borderColor:h||t.color.accent,borderBottomColor:h||t.color.accent,shadowColor:h||t.color.accent}]],children:[i(o,{style:e.headerRow,children:[r(H,{style:e.headerPress,onPress:b,activeOpacity:.8,disabled:S||!b,testID:V,accessibilityLabel:z,accessibilityRole:b?"button":void 0,children:i(o,{style:e.rowContent,children:[i(o,{style:e.statusSection,children:[r(o,{style:[e.statusDot,{backgroundColor:s}]}),i(o,{style:e.statusInfo,children:[r(a,{style:[e.statusLabel,{color:s}],numberOfLines:1,testID:v,children:T}),f?r(a,{style:e.observerText,numberOfLines:1,testID:L,children:f}):null]})]}),i(o,{style:e.querySection,children:[r(a,{style:e.queryHash,numberOfLines:n?void 0:2,testID:O,children:C}),!n&&(l||y)?i(o,{style:e.secondaryRow,children:[l?r(a,{style:e.secondaryText,numberOfLines:1,testID:W,children:l}):null,y]}):null]}),i(o,{style:e.rightSection,children:[(d||c!==void 0||!n&&g)&&i(o,{style:e.badgeContainer,children:[d||(c!==void 0?r(a,{style:[e.statusBadge,{color:R||s}],children:c}):null),!n&&g?r(a,{style:e.bottomRightText,numberOfLines:1,children:g}):null]}),D&&r(o,{style:e.chevronContainer,children:n?r(p,{size:14,color:t.color.textTertiary}):r(x,{size:14,color:t.color.textTertiary})})]})]})}),u?r(o,{style:e.trailingAction,children:u}):null]}),n&&m&&r(o,{style:e.expandedContent,children:m})]})})}var e=B.create({rowWrapper:{position:"relative",marginHorizontal:8,marginVertical:3},rowWrapperExpanded:{marginVertical:12},row:{backgroundColor:"rgba(12, 12, 12, 0.9)",borderRadius:8,borderWidth:1,borderColor:t.color.border,borderBottomWidth:1,borderBottomColor:t.color.separator,padding:12,paddingHorizontal:12,transform:[{scale:1}]},selectedRow:{backgroundColor:t.color.accentSoft,borderColor:t.color.accentBorderStrong,transform:[{scale:1.01}],shadowColor:t.color.accent,shadowOffset:{width:0,height:0},shadowOpacity:.1,shadowRadius:8,elevation:2},expandedRowActive:{transform:[{scale:1.02}],borderWidth:2,paddingBottom:16,shadowOffset:{width:0,height:0},shadowOpacity:.8,shadowRadius:20,elevation:10},headerRow:{flexDirection:"row",alignItems:"center"},headerPress:{flex:1,minWidth:0},trailingAction:{marginLeft:8,justifyContent:"center"},rowContent:{flexDirection:"row",alignItems:"center",justifyContent:"space-between"},statusSection:{flexDirection:"row",alignItems:"center",gap:8,width:90,minWidth:90},statusDot:{width:8,height:8,borderRadius:4},statusInfo:{flex:1,maxWidth:70},statusLabel:{fontSize:11,fontWeight:"600",lineHeight:14},observerText:{fontSize:10,color:t.color.textTertiary,marginTop:1},querySection:{flex:2,paddingHorizontal:12},queryHash:{fontFamily:w,fontSize:12,color:t.color.text,lineHeight:16},secondaryRow:{flexDirection:"row",alignItems:"center",gap:6,marginTop:1},secondaryText:{fontSize:10,color:t.color.textTertiary,marginTop:1},rightSection:{flexDirection:"row",alignItems:"center",gap:8},badgeContainer:{flexDirection:"column",alignItems:"flex-end",gap:2},statusBadge:{fontSize:12,fontWeight:"600",fontVariant:["tabular-nums"]},chevronContainer:{padding:2},expandedContent:{marginTop:8,paddingTop:8,borderTopWidth:1,borderTopColor:t.color.separator,marginLeft:24},bottomRightText:{fontSize:9,color:t.color.textTertiary,fontFamily:w}});export{k as a};
@@ -0,0 +1,655 @@
1
+ "use client";
2
+ import {
3
+ gameUIColors
4
+ } from "./chunk-QPY45R5F.mjs";
5
+ import {
6
+ __DEV__
7
+ } from "./chunk-OENR3XFI.mjs";
8
+
9
+ // src/utils/typeHelpers.ts
10
+ var getValueType = (value) => {
11
+ if (value === null) return "null";
12
+ if (value === void 0) return "undefined";
13
+ if (Array.isArray(value)) return "array";
14
+ const type = typeof value;
15
+ if (type === "object") {
16
+ if (value instanceof Date) return "date";
17
+ if (value instanceof RegExp) return "regexp";
18
+ if (value instanceof Map) return "map";
19
+ if (value instanceof Set) return "set";
20
+ if (value instanceof Error) return "error";
21
+ return "object";
22
+ }
23
+ return type;
24
+ };
25
+ var isPrimitive = (value) => {
26
+ const type = typeof value;
27
+ return value === null || value === void 0 || type === "string" || type === "number" || type === "boolean" || type === "bigint" || type === "symbol";
28
+ };
29
+ var isJsonSerializable = (value) => {
30
+ try {
31
+ JSON.stringify(value);
32
+ return true;
33
+ } catch {
34
+ return false;
35
+ }
36
+ };
37
+ var isValidJson = (str) => {
38
+ try {
39
+ JSON.parse(str);
40
+ return true;
41
+ } catch {
42
+ return false;
43
+ }
44
+ };
45
+ var getConstructorName = (value) => {
46
+ if (value === null) return "null";
47
+ if (value === void 0) return "undefined";
48
+ try {
49
+ return value.constructor?.name || typeof value;
50
+ } catch {
51
+ return typeof value;
52
+ }
53
+ };
54
+ var isEmpty = (value) => {
55
+ if (value === null || value === void 0) return true;
56
+ if (typeof value === "string") return value.length === 0;
57
+ if (Array.isArray(value)) return value.length === 0;
58
+ if (typeof value === "object") return Object.keys(value).length === 0;
59
+ return false;
60
+ };
61
+ var getValueSize = (value) => {
62
+ if (Array.isArray(value)) {
63
+ const count = value.length;
64
+ if (count === 0) return "empty array";
65
+ if (count === 1) return "1 item";
66
+ return `${count} items`;
67
+ }
68
+ if (value && typeof value === "object") {
69
+ const keys = Object.keys(value);
70
+ const count = keys.length;
71
+ if (count === 0) return "empty object";
72
+ if (count === 1) return "1 key";
73
+ return `${count} keys`;
74
+ }
75
+ if (typeof value === "string") {
76
+ const length = value.length;
77
+ if (length === 0) return "empty string";
78
+ if (length === 1) return "1 character";
79
+ return `${length} characters`;
80
+ }
81
+ return "";
82
+ };
83
+ var isPlainObject = (value) => {
84
+ return typeof value === "object" && value !== null && !Array.isArray(value) && value.constructor === Object;
85
+ };
86
+
87
+ // src/utils/valueFormatting.ts
88
+ var parseValue = (value) => {
89
+ if (value === null || value === void 0) return value;
90
+ if (typeof value === "string") {
91
+ try {
92
+ return JSON.parse(value);
93
+ } catch {
94
+ return value;
95
+ }
96
+ }
97
+ return value;
98
+ };
99
+ var formatValue = (value) => {
100
+ if (value === null) return "null";
101
+ if (value === void 0) return "undefined";
102
+ if (typeof value === "string") return `"${value}"`;
103
+ if (typeof value === "boolean") return value ? "true" : "false";
104
+ if (typeof value === "number") return String(value);
105
+ if (typeof value === "function")
106
+ return `[Function: ${value.name || "anonymous"}]`;
107
+ if (typeof value === "object") {
108
+ if (Array.isArray(value)) {
109
+ return `[Array: ${value.length} items]`;
110
+ }
111
+ return `{Object: ${Object.keys(value).length} keys}`;
112
+ }
113
+ return String(value);
114
+ };
115
+ var getTypeColor = (value) => {
116
+ if (value === null) return gameUIColors.dataTypes.null;
117
+ if (value === void 0) return gameUIColors.dataTypes.undefined;
118
+ const type = typeof value;
119
+ switch (type) {
120
+ case "string":
121
+ return gameUIColors.dataTypes.string;
122
+ case "number":
123
+ return gameUIColors.dataTypes.number;
124
+ case "boolean":
125
+ return gameUIColors.dataTypes.boolean;
126
+ case "function":
127
+ return gameUIColors.dataTypes.function;
128
+ case "object":
129
+ return Array.isArray(value) ? gameUIColors.dataTypes.array : gameUIColors.dataTypes.object;
130
+ default:
131
+ return gameUIColors.primary;
132
+ }
133
+ };
134
+ var truncateText = (text, maxLength) => {
135
+ if (text.length <= maxLength) return text;
136
+ return text.slice(0, maxLength - 3) + "...";
137
+ };
138
+ var flattenObject = (obj, prefix = "") => {
139
+ const flattened = {};
140
+ if (obj === null || obj === void 0) {
141
+ return flattened;
142
+ }
143
+ if (typeof obj !== "object") {
144
+ flattened[prefix || "root"] = obj;
145
+ return flattened;
146
+ }
147
+ if (Array.isArray(obj)) {
148
+ obj.forEach((item, index) => {
149
+ const path = prefix ? `${prefix}[${index}]` : `[${index}]`;
150
+ if (typeof item === "object" && item !== null) {
151
+ Object.assign(flattened, flattenObject(item, path));
152
+ } else {
153
+ flattened[path] = item;
154
+ }
155
+ });
156
+ } else {
157
+ Object.keys(obj).forEach((key) => {
158
+ const path = prefix ? `${prefix}.${key}` : key;
159
+ const objValue = obj[key];
160
+ if (typeof objValue === "object" && objValue !== null) {
161
+ Object.assign(flattened, flattenObject(objValue, path));
162
+ } else {
163
+ flattened[path] = objValue;
164
+ }
165
+ });
166
+ }
167
+ return flattened;
168
+ };
169
+ var formatPath = (pathSegments) => {
170
+ if (pathSegments.length === 0) return "root";
171
+ return pathSegments.map((segment, index) => {
172
+ if (typeof segment === "number") {
173
+ return `[${segment}]`;
174
+ }
175
+ return index === 0 ? segment : `.${segment}`;
176
+ }).join("");
177
+ };
178
+
179
+ // src/utils/loadOptionalModule.ts
180
+ var defaultLogger = {
181
+ log: () => {
182
+ },
183
+ // Debug logging removed for production
184
+ warn: () => {
185
+ },
186
+ // Warnings disabled in production
187
+ error: (...args) => {
188
+ console.error("[optional-module]", ...args);
189
+ }
190
+ };
191
+ var resolvedModules = /* @__PURE__ */ new Map();
192
+ var pendingLoads = /* @__PURE__ */ new Map();
193
+ var warnedKeys = /* @__PURE__ */ new Set();
194
+ async function loadOptionalModule(moduleName, options = {}) {
195
+ if (resolvedModules.has(moduleName)) {
196
+ return resolvedModules.get(moduleName);
197
+ }
198
+ const logger = {
199
+ ...defaultLogger,
200
+ ...options.logger ?? {}
201
+ };
202
+ if (!pendingLoads.has(moduleName)) {
203
+ pendingLoads.set(
204
+ moduleName,
205
+ (async () => {
206
+ try {
207
+ const mod = await loadModuleWithFallback(moduleName, options);
208
+ const resolved = mod?.default ?? mod;
209
+ resolvedModules.set(moduleName, resolved);
210
+ logger.log("Loaded optional module", moduleName);
211
+ return resolved;
212
+ } catch (error) {
213
+ logger.log("Optional module unavailable", moduleName, error);
214
+ resolvedModules.set(moduleName, null);
215
+ return null;
216
+ }
217
+ })()
218
+ );
219
+ }
220
+ const loaded = await pendingLoads.get(moduleName);
221
+ pendingLoads.delete(moduleName);
222
+ if (!loaded && options.warnOnceKey && !warnedKeys.has(options.warnOnceKey)) {
223
+ warnedKeys.add(options.warnOnceKey);
224
+ logger.warn(options.warningMessage ?? `Module '${moduleName}' not found.`);
225
+ }
226
+ return loaded;
227
+ }
228
+ var dynamicImportLoader = (() => {
229
+ try {
230
+ return new Function(
231
+ "moduleName",
232
+ "return import(moduleName);"
233
+ );
234
+ } catch {
235
+ return null;
236
+ }
237
+ })();
238
+ var dynamicRequire = (() => {
239
+ try {
240
+ return new Function(
241
+ "return typeof require === 'function' ? require : undefined;"
242
+ )();
243
+ } catch {
244
+ return void 0;
245
+ }
246
+ })();
247
+ async function loadModuleWithFallback(moduleName, options) {
248
+ if (options.loader) {
249
+ return await Promise.resolve(options.loader());
250
+ }
251
+ if (dynamicImportLoader) {
252
+ return dynamicImportLoader(moduleName);
253
+ }
254
+ if (dynamicRequire) {
255
+ return dynamicRequire(moduleName);
256
+ }
257
+ throw new Error(
258
+ `No dynamic loader available for optional module '${moduleName}'.`
259
+ );
260
+ }
261
+ function getCachedOptionalModule(moduleName) {
262
+ if (!resolvedModules.has(moduleName)) {
263
+ return null;
264
+ }
265
+ return resolvedModules.get(moduleName);
266
+ }
267
+
268
+ // src/utils/renderCaptureRegistry.ts
269
+ var PROVIDER_KEY = "__buoyRenderCaptureProvider";
270
+ function providerHost() {
271
+ return globalThis;
272
+ }
273
+ function setRenderCaptureProvider(p) {
274
+ providerHost()[PROVIDER_KEY] = p;
275
+ }
276
+ function getRenderCaptureProvider() {
277
+ return providerHost()[PROVIDER_KEY] ?? null;
278
+ }
279
+
280
+ // src/utils/stateSnapshotRegistry.ts
281
+ var providers = /* @__PURE__ */ new Map();
282
+ var listeners = /* @__PURE__ */ new Set();
283
+ function notify() {
284
+ listeners.forEach((l) => {
285
+ try {
286
+ l();
287
+ } catch {
288
+ }
289
+ });
290
+ }
291
+ function registerStateSnapshotProvider(provider) {
292
+ providers.set(provider.id, provider);
293
+ notify();
294
+ return () => {
295
+ if (providers.get(provider.id) === provider) {
296
+ providers.delete(provider.id);
297
+ notify();
298
+ }
299
+ };
300
+ }
301
+ function getStateSnapshotProviders() {
302
+ return Array.from(providers.values());
303
+ }
304
+ function getStateSnapshotProvider(id) {
305
+ return providers.get(id) ?? null;
306
+ }
307
+ function subscribeToStateSnapshotProviders(listener) {
308
+ listeners.add(listener);
309
+ return () => {
310
+ listeners.delete(listener);
311
+ };
312
+ }
313
+
314
+ // src/utils/reloadPlatform.web.ts
315
+ function loadDevSettings() {
316
+ return null;
317
+ }
318
+ function loadExpoUpdates() {
319
+ return null;
320
+ }
321
+ function loadBrowserReload() {
322
+ return typeof window === "undefined" ? null : () => window.location.reload();
323
+ }
324
+
325
+ // src/utils/reloadApp.ts
326
+ function resolveReloadStrategy(strategy = "auto") {
327
+ if (strategy === "browser") return loadBrowserReload() ? "browser" : null;
328
+ if (strategy === "auto" && loadBrowserReload()) return "browser";
329
+ if (strategy === "dev-settings") {
330
+ return loadDevSettings() ? "dev-settings" : null;
331
+ }
332
+ if (strategy === "expo-updates") {
333
+ return loadExpoUpdates() ? "expo-updates" : null;
334
+ }
335
+ if (__DEV__ && loadDevSettings()) return "dev-settings";
336
+ return loadExpoUpdates() ? "expo-updates" : null;
337
+ }
338
+ function unavailableMessage(strategy) {
339
+ if (strategy === "browser") return "[buoy] Browser reload requires a browser window.";
340
+ if (strategy === "dev-settings") {
341
+ return "[buoy] DevSettings.reload() unavailable \u2014 strategy 'dev-settings' requires React Native dev mode.";
342
+ }
343
+ if (strategy === "expo-updates") {
344
+ return "[buoy] expo-updates not installed \u2014 strategy 'expo-updates' requires the host app to add the dependency.";
345
+ }
346
+ return "[buoy] No reload mechanism available. Run in __DEV__ or install expo-updates.";
347
+ }
348
+ async function reloadApp(strategy = "auto", reason = "buoy reload") {
349
+ const resolved = resolveReloadStrategy(strategy);
350
+ if (!resolved) throw new Error(unavailableMessage(strategy));
351
+ if (resolved === "browser") {
352
+ loadBrowserReload()();
353
+ } else if (resolved === "dev-settings") {
354
+ loadDevSettings().reload(reason);
355
+ } else {
356
+ await loadExpoUpdates().reloadAsync();
357
+ }
358
+ return await new Promise(() => {
359
+ });
360
+ }
361
+ var REMOTE_RELOAD_DELAY_MS = 250;
362
+ function scheduleReloadApp(options) {
363
+ const strategy = options?.strategy ?? "auto";
364
+ const resolved = resolveReloadStrategy(strategy);
365
+ if (!resolved) throw new Error(unavailableMessage(strategy));
366
+ const delayMs = Math.max(0, options?.delayMs ?? REMOTE_RELOAD_DELAY_MS);
367
+ const reason = options?.reason ?? "buoy remote reload";
368
+ setTimeout(() => {
369
+ void reloadApp(resolved, reason).catch(() => {
370
+ });
371
+ }, delayMs);
372
+ return { strategy: resolved, delayMs };
373
+ }
374
+
375
+ // src/utils/devServer.web.ts
376
+ function getDevServerOrigin() {
377
+ return null;
378
+ }
379
+
380
+ // src/utils/subscribable.ts
381
+ var Subscribable = class {
382
+ constructor() {
383
+ this.listeners = /* @__PURE__ */ new Set();
384
+ this.subscribe = this.subscribe.bind(this);
385
+ }
386
+ /**
387
+ * Subscribe to updates.
388
+ * @param listener - Callback function to receive updates
389
+ * @returns Unsubscribe function
390
+ */
391
+ subscribe(listener) {
392
+ this.listeners.add(listener);
393
+ this.onSubscribe();
394
+ return () => {
395
+ this.listeners.delete(listener);
396
+ this.onUnsubscribe();
397
+ };
398
+ }
399
+ /**
400
+ * Check if there are any active listeners.
401
+ */
402
+ hasListeners() {
403
+ return this.listeners.size > 0;
404
+ }
405
+ /**
406
+ * Get the current number of listeners.
407
+ */
408
+ getListenerCount() {
409
+ return this.listeners.size;
410
+ }
411
+ /**
412
+ * Notify all listeners with given arguments.
413
+ */
414
+ notify(...args) {
415
+ this.listeners.forEach((listener) => {
416
+ listener(...args);
417
+ });
418
+ }
419
+ /**
420
+ * Called when a listener is added.
421
+ * Override to start resources when first subscriber joins.
422
+ *
423
+ * @example
424
+ * ```typescript
425
+ * protected onSubscribe(): void {
426
+ * if (this.listeners.size === 1) {
427
+ * this.startCapturing();
428
+ * }
429
+ * }
430
+ * ```
431
+ */
432
+ onSubscribe() {
433
+ }
434
+ /**
435
+ * Called when a listener is removed.
436
+ * Override to stop resources when last subscriber leaves.
437
+ *
438
+ * @example
439
+ * ```typescript
440
+ * protected onUnsubscribe(): void {
441
+ * if (this.listeners.size === 0) {
442
+ * this.stopCapturing();
443
+ * }
444
+ * }
445
+ * ```
446
+ */
447
+ onUnsubscribe() {
448
+ }
449
+ };
450
+
451
+ // src/utils/subscriberCountNotifier.ts
452
+ var SubscriberCountNotifier = class {
453
+ constructor() {
454
+ this.listeners = /* @__PURE__ */ new Set();
455
+ }
456
+ /**
457
+ * Subscribe to subscriber count changes.
458
+ * Called whenever any event store's subscriber count changes.
459
+ */
460
+ subscribe(listener) {
461
+ this.listeners.add(listener);
462
+ return () => {
463
+ this.listeners.delete(listener);
464
+ };
465
+ }
466
+ /**
467
+ * Notify all listeners that a store's subscriber count changed.
468
+ * Called by event stores in their onSubscribe/onUnsubscribe hooks.
469
+ */
470
+ notify(sourceId) {
471
+ this.listeners.forEach((listener) => {
472
+ try {
473
+ listener(sourceId);
474
+ } catch {
475
+ }
476
+ });
477
+ }
478
+ };
479
+ var subscriberCountNotifier = new SubscriberCountNotifier();
480
+ var subscribeToSubscriberCountChanges = (listener) => subscriberCountNotifier.subscribe(listener);
481
+ var notifySubscriberCountChange = (sourceId) => subscriberCountNotifier.notify(sourceId);
482
+
483
+ // src/utils/expoRouterModule.web.ts
484
+ function loadExpoRouter() {
485
+ return null;
486
+ }
487
+ function loadExpoRouterStore() {
488
+ return null;
489
+ }
490
+
491
+ // src/utils/safeExpoRouter.ts
492
+ var expoRouter = null;
493
+ var isAvailable = false;
494
+ var checkedAvailability = false;
495
+ function checkExpoRouterAvailability() {
496
+ if (checkedAvailability) return isAvailable;
497
+ try {
498
+ expoRouter = loadExpoRouter();
499
+ isAvailable = expoRouter != null && typeof expoRouter.usePathname === "function" && typeof expoRouter.useSegments === "function";
500
+ } catch (error) {
501
+ isAvailable = false;
502
+ expoRouter = null;
503
+ }
504
+ checkedAvailability = true;
505
+ return isAvailable;
506
+ }
507
+ function noOpUseRouter() {
508
+ return {
509
+ push: () => console.warn("[buoy] expo-router not installed: push() unavailable"),
510
+ replace: () => console.warn("[buoy] expo-router not installed: replace() unavailable"),
511
+ back: () => console.warn("[buoy] expo-router not installed: back() unavailable"),
512
+ canGoBack: () => false,
513
+ setParams: () => console.warn("[buoy] expo-router not installed: setParams() unavailable"),
514
+ navigate: () => console.warn("[buoy] expo-router not installed: navigate() unavailable")
515
+ };
516
+ }
517
+ function noOpUsePathname() {
518
+ return "/";
519
+ }
520
+ function noOpUseSegments() {
521
+ return [];
522
+ }
523
+ function noOpUseGlobalSearchParams() {
524
+ return {};
525
+ }
526
+ function useSafeRouter() {
527
+ if (!checkExpoRouterAvailability()) {
528
+ return noOpUseRouter();
529
+ }
530
+ try {
531
+ return expoRouter.useRouter();
532
+ } catch (error) {
533
+ console.warn("[buoy] Failed to use expo-router.useRouter:", error);
534
+ return noOpUseRouter();
535
+ }
536
+ }
537
+ function useSafePathname() {
538
+ if (!checkExpoRouterAvailability()) {
539
+ return noOpUsePathname();
540
+ }
541
+ try {
542
+ return expoRouter.usePathname();
543
+ } catch (error) {
544
+ console.warn("[buoy] Failed to use expo-router.usePathname:", error);
545
+ return noOpUsePathname();
546
+ }
547
+ }
548
+ function useSafeSegments() {
549
+ if (!checkExpoRouterAvailability()) {
550
+ return noOpUseSegments();
551
+ }
552
+ try {
553
+ return expoRouter.useSegments();
554
+ } catch (error) {
555
+ console.warn("[buoy] Failed to use expo-router.useSegments:", error);
556
+ return noOpUseSegments();
557
+ }
558
+ }
559
+ function useSafeGlobalSearchParams() {
560
+ if (!checkExpoRouterAvailability()) {
561
+ return noOpUseGlobalSearchParams();
562
+ }
563
+ try {
564
+ return expoRouter.useGlobalSearchParams();
565
+ } catch (error) {
566
+ console.warn("[buoy] Failed to use expo-router.useGlobalSearchParams:", error);
567
+ return noOpUseGlobalSearchParams();
568
+ }
569
+ }
570
+ function getSafeRouter() {
571
+ if (!checkExpoRouterAvailability()) {
572
+ return null;
573
+ }
574
+ try {
575
+ return expoRouter.router || null;
576
+ } catch (error) {
577
+ return null;
578
+ }
579
+ }
580
+ var routerStore;
581
+ function getRouterStore() {
582
+ if (routerStore !== void 0) return routerStore;
583
+ try {
584
+ routerStore = loadExpoRouterStore();
585
+ } catch {
586
+ routerStore = null;
587
+ }
588
+ return routerStore;
589
+ }
590
+ function getSafeCurrentPathname() {
591
+ return getSafeCurrentRoute()?.pathname ?? null;
592
+ }
593
+ function getSafeCurrentRoute() {
594
+ if (!checkExpoRouterAvailability()) {
595
+ return null;
596
+ }
597
+ try {
598
+ const info = getRouterStore()?.getRouteInfo?.();
599
+ const pathname = info?.pathname;
600
+ if (typeof pathname !== "string" || pathname.length === 0) return null;
601
+ const withParams = info?.pathnameWithParams;
602
+ return {
603
+ pathname,
604
+ href: typeof withParams === "string" && withParams.length > 0 ? withParams : pathname,
605
+ ...Array.isArray(info?.segments) ? { segments: info.segments } : {}
606
+ };
607
+ } catch (error) {
608
+ return null;
609
+ }
610
+ }
611
+ function isExpoRouterAvailable() {
612
+ return checkExpoRouterAvailability();
613
+ }
614
+
615
+ export {
616
+ Subscribable,
617
+ subscriberCountNotifier,
618
+ subscribeToSubscriberCountChanges,
619
+ notifySubscriberCountChange,
620
+ getValueType,
621
+ isPrimitive,
622
+ isJsonSerializable,
623
+ isValidJson,
624
+ getConstructorName,
625
+ isEmpty,
626
+ getValueSize,
627
+ isPlainObject,
628
+ parseValue,
629
+ formatValue,
630
+ getTypeColor,
631
+ truncateText,
632
+ flattenObject,
633
+ formatPath,
634
+ loadOptionalModule,
635
+ getCachedOptionalModule,
636
+ setRenderCaptureProvider,
637
+ getRenderCaptureProvider,
638
+ registerStateSnapshotProvider,
639
+ getStateSnapshotProviders,
640
+ getStateSnapshotProvider,
641
+ subscribeToStateSnapshotProviders,
642
+ resolveReloadStrategy,
643
+ reloadApp,
644
+ REMOTE_RELOAD_DELAY_MS,
645
+ scheduleReloadApp,
646
+ getDevServerOrigin,
647
+ useSafeRouter,
648
+ useSafePathname,
649
+ useSafeSegments,
650
+ useSafeGlobalSearchParams,
651
+ getSafeRouter,
652
+ getSafeCurrentPathname,
653
+ getSafeCurrentRoute,
654
+ isExpoRouterAvailable
655
+ };
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ var g=new Set,m;function a(e="localStorage"){if(typeof window>"u")throw new Error("Browser storage is unavailable during server rendering.");return window[e]}function p(e){return Array.from({length:e.length},(t,n)=>e.key(n)).filter(t=>t!==null).map(t=>[t,e.getItem(t)])}function u(e){for(let t of[...g])try{t(e)}catch{}}function k(){if(typeof window>"u"||typeof Storage>"u")return;let e=Storage.prototype,t=e.setItem,n=e.removeItem,c=e.clear,i=r=>{for(let o of["localStorage","sessionStorage"])try{if(r===window[o])return o}catch{}},f=function(r,o){let s=i(this),l=String(r),S=String(o),h=s?this.getItem(l):null;Reflect.apply(t,this,[l,S]),s&&u({area:s,action:"setItem",key:l,value:S,prevValue:h})},d=function(r){let o=i(this),s=String(r),l=o?this.getItem(s):null;Reflect.apply(n,this,[s]),o&&u({area:o,action:"removeItem",key:s,prevValue:l})},y=function(){let r=i(this),o=r?p(this):void 0;Reflect.apply(c,this,[]),r&&u({area:r,action:"clear",prevPairs:o})};e.setItem=f,e.removeItem=d,e.clear=y;let w=r=>{let o=r.storageArea&&i(r.storageArea);o&&u({area:o,action:r.key===null?"clear":r.newValue===null?"removeItem":"setItem",key:r.key??void 0,value:r.newValue??void 0,prevValue:r.oldValue})};window.addEventListener("storage",w),m=()=>{e.setItem===f&&(e.setItem=t),e.removeItem===d&&(e.removeItem=n),e.clear===y&&(e.clear=c),window.removeEventListener("storage",w),m=void 0}}function b(e){return g.size||k(),g.add(e),()=>{g.delete(e),g.size||m?.()}}function I(e,t){if(!e||!t||typeof e!="object"||typeof t!="object"||Array.isArray(e)||Array.isArray(t))return t;let n={...e};for(let[c,i]of Object.entries(t))Object.defineProperty(n,c,{value:I(n[c],i),enumerable:!0,writable:!0,configurable:!0});return n}var v={async getItem(e){return a().getItem(e)},async setItem(e,t){a().setItem(e,t)},async removeItem(e){a().removeItem(e)},async clear(){a().clear()},async getAllKeys(){return p(a()).map(([e])=>e)},async multiGet(e){return e.map(t=>[t,a().getItem(t)])},async multiSet(e){for(let[t,n]of e)a().setItem(t,n)},async multiRemove(e){for(let t of e)a().removeItem(t)},async mergeItem(e,t){let n=a();n.setItem(e,JSON.stringify(I(JSON.parse(n.getItem(e)??"null"),JSON.parse(t))))},async multiMerge(e){for(let[t,n]of e)await v.mergeItem(t,n)}},B=v;export{a,b,B as c};
@@ -0,0 +1,2 @@
1
+ "use client";
2
+ import{d as c}from"./chunk-CE5U3CSQ.mjs";import{a as i}from"./chunk-5NZOQR6Q.mjs";var W=e=>{if(e===null)return"null";if(e===void 0)return"undefined";if(Array.isArray(e))return"array";let t=typeof e;return t==="object"?e instanceof Date?"date":e instanceof RegExp?"regexp":e instanceof Map?"map":e instanceof Set?"set":e instanceof Error?"error":"object":t},X=e=>{let t=typeof e;return e==null||t==="string"||t==="number"||t==="boolean"||t==="bigint"||t==="symbol"},Q=e=>{try{return JSON.stringify(e),!0}catch{return!1}},Z=e=>{try{return JSON.parse(e),!0}catch{return!1}},ee=e=>{if(e===null)return"null";if(e===void 0)return"undefined";try{return e.constructor?.name||typeof e}catch{return typeof e}},te=e=>e==null?!0:typeof e=="string"||Array.isArray(e)?e.length===0:typeof e=="object"?Object.keys(e).length===0:!1,re=e=>{if(Array.isArray(e)){let t=e.length;return t===0?"empty array":t===1?"1 item":`${t} items`}if(e&&typeof e=="object"){let r=Object.keys(e).length;return r===0?"empty object":r===1?"1 key":`${r} keys`}if(typeof e=="string"){let t=e.length;return t===0?"empty string":t===1?"1 character":`${t} characters`}return""},Ie=e=>typeof e=="object"&&e!==null&&!Array.isArray(e)&&e.constructor===Object;var ne=e=>{if(e==null)return e;if(typeof e=="string")try{return JSON.parse(e)}catch{return e}return e},oe=e=>e===null?"null":e===void 0?"undefined":typeof e=="string"?`"${e}"`:typeof e=="boolean"?e?"true":"false":typeof e=="number"?String(e):typeof e=="function"?`[Function: ${e.name||"anonymous"}]`:typeof e=="object"?Array.isArray(e)?`[Array: ${e.length} items]`:`{Object: ${Object.keys(e).length} keys}`:String(e),se=e=>{if(e===null)return c.dataTypes.null;if(e===void 0)return c.dataTypes.undefined;switch(typeof e){case"string":return c.dataTypes.string;case"number":return c.dataTypes.number;case"boolean":return c.dataTypes.boolean;case"function":return c.dataTypes.function;case"object":return Array.isArray(e)?c.dataTypes.array:c.dataTypes.object;default:return c.primary}},ie=(e,t)=>e.length<=t?e:e.slice(0,t-3)+"...",k=(e,t="")=>{let r={};return e==null?r:typeof e!="object"?(r[t||"root"]=e,r):(Array.isArray(e)?e.forEach((n,o)=>{let s=t?`${t}[${o}]`:`[${o}]`;typeof n=="object"&&n!==null?Object.assign(r,k(n,s)):r[s]=n}):Object.keys(e).forEach(n=>{let o=t?`${t}.${n}`:n,s=e[n];typeof s=="object"&&s!==null?Object.assign(r,k(s,o)):r[o]=s}),r)},ae=e=>e.length===0?"root":e.map((t,r)=>typeof t=="number"?`[${t}]`:r===0?t:`.${t}`).join("");var ue={log:()=>{},warn:()=>{},error:(...e)=>{console.error("[optional-module]",...e)}},g=new Map,m=new Map,V=new Set;async function le(e,t={}){if(g.has(e))return g.get(e);let r={...ue,...t.logger??{}};m.has(e)||m.set(e,(async()=>{try{let o=await ce(e,t),s=o?.default??o;return g.set(e,s),r.log("Loaded optional module",e),s}catch(o){return r.log("Optional module unavailable",e,o),g.set(e,null),null}})());let n=await m.get(e);return m.delete(e),!n&&t.warnOnceKey&&!V.has(t.warnOnceKey)&&(V.add(t.warnOnceKey),r.warn(t.warningMessage??`Module '${e}' not found.`)),n}var $=(()=>{try{return new Function("moduleName","return import(moduleName);")}catch{return null}})(),_=(()=>{try{return new Function("return typeof require === 'function' ? require : undefined;")()}catch{return}})();async function ce(e,t){if(t.loader)return await Promise.resolve(t.loader());if($)return $(e);if(_)return _(e);throw new Error(`No dynamic loader available for optional module '${e}'.`)}function de(e){return g.has(e)?g.get(e):null}var j="__buoyRenderCaptureProvider";function I(){return globalThis}function pe(e){I()[j]=e}function fe(){return I()[j]??null}var h=new Map,P=new Set;function N(){P.forEach(e=>{try{e()}catch{}})}function ge(e){return h.set(e.id,e),N(),()=>{h.get(e.id)===e&&(h.delete(e.id),N())}}function ye(){return Array.from(h.values())}function be(e){return h.get(e)??null}function he(e){return P.add(e),()=>{P.delete(e)}}function S(){return null}function x(){return null}function R(){return typeof window>"u"?null:()=>window.location.reload()}function C(e="auto"){return e==="browser"?R()?"browser":null:e==="auto"&&R()?"browser":e==="dev-settings"?S()?"dev-settings":null:e==="expo-updates"?x()?"expo-updates":null:i&&S()?"dev-settings":x()?"expo-updates":null}function H(e){return e==="browser"?"[buoy] Browser reload requires a browser window.":e==="dev-settings"?"[buoy] DevSettings.reload() unavailable \u2014 strategy 'dev-settings' requires React Native dev mode.":e==="expo-updates"?"[buoy] expo-updates not installed \u2014 strategy 'expo-updates' requires the host app to add the dependency.":"[buoy] No reload mechanism available. Run in __DEV__ or install expo-updates."}async function z(e="auto",t="buoy reload"){let r=C(e);if(!r)throw new Error(H(e));return r==="browser"?R()():r==="dev-settings"?S().reload(t):await x().reloadAsync(),await new Promise(()=>{})}var U=250;function we(e){let t=e?.strategy??"auto",r=C(t);if(!r)throw new Error(H(t));let n=Math.max(0,e?.delayMs??U),o=e?.reason??"buoy remote reload";return setTimeout(()=>{z(r,o).catch(()=>{})},n),{strategy:r,delayMs:n}}function me(){return null}var E=class{constructor(){this.listeners=new Set;this.subscribe=this.subscribe.bind(this)}subscribe(t){return this.listeners.add(t),this.onSubscribe(),()=>{this.listeners.delete(t),this.onUnsubscribe()}}hasListeners(){return this.listeners.size>0}getListenerCount(){return this.listeners.size}notify(...t){this.listeners.forEach(r=>{r(...t)})}onSubscribe(){}onUnsubscribe(){}};var T=class{constructor(){this.listeners=new Set}subscribe(t){return this.listeners.add(t),()=>{this.listeners.delete(t)}}notify(t){this.listeners.forEach(r=>{try{r(t)}catch{}})}},M=new T,Se=e=>M.subscribe(e),xe=e=>M.notify(e);import{useSyncExternalStore as J}from"react";var d,w=new Set,L;function Re(e){return d=e,()=>{d===e&&(d=void 0)}}function f(){return typeof location>"u"?"/":location.href}function O(e){if(!w.size&&typeof window<"u"){let t=window.history,r=t.pushState,n=t.replaceState,o=a=>{for(let p of[...w])try{p({href:f(),kind:a})}catch{}},s=function(...a){let p=Reflect.apply(r,this,a);return o("push"),p},u=function(...a){let p=Reflect.apply(n,this,a);return o("replace"),p};t.pushState=s,t.replaceState=u;let l=()=>o("pop");window.addEventListener("popstate",l),window.addEventListener("hashchange",l),L=()=>{t.pushState===s&&(t.pushState=r),t.replaceState===u&&(t.replaceState=n),window.removeEventListener("popstate",l),window.removeEventListener("hashchange",l),L=void 0}}return w.add(e),()=>{w.delete(e),w.size||L?.()}}function F(e){let t=typeof e=="string"?e:e.pathname,r=new URL(t,f());if(r.origin!==window.location.origin)throw new Error("Tool navigation must stay on the current origin.");if(typeof e!="string")for(let[n,o]of Object.entries(e.params??{}))r.searchParams.set(n,String(o));return`${r.pathname}${r.search}${r.hash}`}var y={push(e){let t=F(e);if(d)return d.push(t);window.history.pushState(null,"",t),window.dispatchEvent(new PopStateEvent("popstate",{state:window.history.state}))},replace(e){let t=F(e);if(d)return d.replace(t);window.history.replaceState(window.history.state,"",t),window.dispatchEvent(new PopStateEvent("popstate",{state:window.history.state}))},back(){d?d.back():window.history.back()},canGoBack(){return d?.canGoBack?.()??(typeof window<"u"&&window.history.length>1)},navigate(e){y.push(e)},setParams(e){y.replace({pathname:f(),params:e})},dismiss(e=1){window.history.go(-e)},dismissAll(){throw new Error("Use the captured browser history to select a destination.")}};var K=e=>O(e);function v(){return new URL(f(),"http://localhost")}function ve(){return y}function q(){return J(K,f,()=>"/"),v().pathname}function ke(){return q().split("/").filter(Boolean)}function Pe(){return J(K,f,()=>"/"),Object.fromEntries(v().searchParams)}function Ce(){return typeof window>"u"?null:y}function Ee(){return v().pathname}function Te(){let e=v();return{pathname:e.pathname,href:`${e.pathname}${e.search}${e.hash}`,segments:e.pathname.split("/").filter(Boolean)}}function Me(){return!1}var G=new WeakMap,Le=1;function b(e){return!!e&&typeof e=="object"&&e.nodeType===1&&typeof e.getBoundingClientRect=="function"}function D(e){if(!b(e))return null;let t=G.get(e);return t===void 0&&(t=Le++,G.set(e,t)),t}function Oe(e){if(!b(e))return null;let t=Object.keys(e).find(r=>r.startsWith("__reactFiber$"));return t?e[t]:null}function De(e,t){if(!b(e)||!t)return t;let r=e,n=e.tagName.toLowerCase(),o=n==="input"&&(r.type==="checkbox"||r.type==="radio"),s=n==="input"&&r.type==="range",u=n==="textarea"||n==="select"||n==="input"&&!o&&!s&&!["button","submit","reset","file","hidden"].includes(r.type),l=a=>{if(o){r.checked!==!!a&&r.click();return}let p=Object.getOwnPropertyDescriptor(Object.getPrototypeOf(r),"value")?.set;p?p.call(r,String(a)):r.value=String(a),r.dispatchEvent(new Event("input",{bubbles:!0})),r.dispatchEvent(new Event("change",{bubbles:!0}))};return{...t,__buoyDevToolsRoot:t.__buoyDevToolsRoot||t["data-buoy-root"]!==void 0,testID:t.testID??t["data-testid"],nativeID:t.nativeID??t.id,accessibilityLabel:t.accessibilityLabel??t["aria-label"],accessibilityRole:t.accessibilityRole??t.role??(n==="button"?"button":n==="a"?"link":o?r.type:u?"textbox":s?"slider":void 0),onPress:t.onPress??(typeof t.onClick=="function"||n==="button"||n==="a"?()=>r.click():void 0),...o||s?{onValueChange:l,value:o?r.checked:Number(r.value),minimumValue:Number(r.min||0),maximumValue:Number(r.max||100)}:{},...u?{onChangeText:l,value:r.value}:{}}}function Be(e){return b(e)?{__nativeTag:D(e),measure(t){let r=e.getBoundingClientRect();t(r.x,r.y,r.width,r.height,r.x,r.y)},measureInWindow(t){let r=e.getBoundingClientRect();t(r.x,r.y,r.width,r.height)},requestTVFocus(){e.focus()},focus(){e.focus()}}:null}var Ae={topFocus:"focus",topBlur:"blur",topTouchStart:"pointerdown",topTouchMove:"pointermove",topTouchEnd:"pointerup",topTouchCancel:"pointercancel",topChange:"input",topValueChange:"input",topSlidingComplete:"change"};function Ve(){return typeof document>"u"?{emitter:null,reason:"DOM events are unavailable during server rendering."}:{reason:null,emitter:{addListener(e,t){let r=Ae[e];if(!r)throw new Error(`Unsupported DOM event: ${e}`);let n=o=>{let s=o.composedPath()[0]??o.target;if(!b(s))return;let u=s,l=o,a={target:D(s),pageX:l.clientX,pageY:l.clientY};(r==="input"||r==="change")&&(u.type==="checkbox"||u.type==="radio"?a.value=u.checked:u.type==="range"?a.value=Number(u.value):a.text=u.value??s.textContent??""),t({eventName:e,nativeEvent:a})};return document.addEventListener(r,n,!0),{remove:()=>document.removeEventListener(r,n,!0)}}}}}var B=new Map,Y=0;function $e(e){for(let[t,r]of Object.entries(e)){let n=t.startsWith("@buoy-gg/")?t.replace(/\/web$/,""):`@buoy-gg/${t}`;B.get(n)!==r&&(B.set(n,r),Y++)}}function A(e){return B.get(e)??null}function _e(){return Y}function je(e){let t=A(e);if(!t)throw new Error(`Register ${e} with createWebTools before opening tools that use it.`);return t}export{E as a,M as b,Se as c,xe as d,W as e,X as f,Q as g,Z as h,ee as i,te as j,re as k,Ie as l,ne as m,oe as n,se as o,ie as p,k as q,ae as r,le as s,de as t,pe as u,fe as v,ge as w,ye as x,be as y,he as z,C as A,z as B,U as C,we as D,me as E,Re as F,f as G,O as H,y as I,ve as J,q as K,ke as L,Pe as M,Ce as N,Ee as O,Te as P,Me as Q,b as R,D as S,Oe as T,De as U,Be as V,Ve as W,$e as X,A as Y,_e as Z,je as _};