@buoy-gg/shared-ui 7.0.40 → 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.
- package/README.md +6 -0
- package/lib/commonjs/JsModal.js +13 -61
- package/lib/commonjs/JsModal.web.js +32 -95
- package/lib/commonjs/clipboard/autoDetectClipboard.js +1 -1
- package/lib/commonjs/clipboard/clipboard-impl.web.js +21 -0
- package/lib/commonjs/dataViewer/tree/TreeDiffViewer.js +4 -2
- package/lib/commonjs/hooks/index.js +1 -1
- package/lib/commonjs/hooks/safe-area-impl.js +1 -1
- package/lib/commonjs/hooks/usePersistedState.js +1 -1
- package/lib/commonjs/hooks/useSafeAreaInsets.web.js +41 -0
- package/lib/commonjs/icons/index.js +14 -0
- package/lib/commonjs/index.js +34 -0
- package/lib/commonjs/license/AccountSetup.js +4 -25
- package/lib/commonjs/license/AccountSetup.web.js +78 -64
- package/lib/commonjs/license/AccountSetupContent.js +482 -0
- package/lib/commonjs/license/FreeAccountPrompt.js +32 -178
- package/lib/commonjs/license/LicenseEntryModal.js +5 -12
- package/lib/commonjs/license/accountRuntime.js +8 -0
- package/lib/commonjs/license/accountRuntime.web.js +9 -0
- package/lib/commonjs/license/licenseModule.js +2 -0
- package/lib/commonjs/settings/components/BubbleSettingsSection.js +1 -1
- package/lib/commonjs/storage/definePersistedSetting.js +1 -1
- package/lib/commonjs/stores/ignoredPatternsStore.js +10 -199
- package/lib/commonjs/stores/ignoredPatternsStore.shared.js +205 -0
- package/lib/commonjs/stores/ignoredPatternsStore.web.js +10 -230
- package/lib/commonjs/ui/backgrounds/backgroundStore.js +1 -1
- package/lib/commonjs/ui/backgrounds/variants/wormhole.js +3 -0
- package/lib/commonjs/ui/components/CopyButton.js +1 -1
- package/lib/commonjs/ui/components/EventStepperFooter.js +1 -1
- package/lib/commonjs/ui/components/ToolFooter.js +1 -1
- package/lib/commonjs/ui/floating/FloatingTool.web.js +12 -2
- package/lib/commonjs/ui/night/primitives.js +10 -3
- package/lib/commonjs/ui/otto/OttoSprite.js +1 -1
- package/lib/commonjs/utils/browserAsyncStorage.js +157 -0
- package/lib/commonjs/utils/browserNavigation.js +116 -0
- package/lib/commonjs/utils/devServer.js +8 -4
- package/lib/commonjs/utils/devServer.web.js +10 -0
- package/lib/commonjs/utils/domRuntime.js +143 -0
- package/lib/commonjs/utils/expoRouterModule.js +51 -0
- package/lib/commonjs/utils/expoRouterModule.web.js +14 -0
- package/lib/commonjs/utils/getSafeAreaInsets.web.js +35 -0
- package/lib/commonjs/utils/index.js +111 -4
- package/lib/commonjs/utils/loadToolModule.js +46 -0
- package/lib/commonjs/utils/loadToolModule.web.js +12 -0
- package/lib/commonjs/utils/modalStorage.js +42 -0
- package/lib/commonjs/utils/nativeWeb.js +454 -0
- package/lib/commonjs/utils/persistentStorage.web.js +78 -0
- package/lib/commonjs/utils/reloadApp.js +18 -57
- package/lib/commonjs/utils/reloadPlatform.js +37 -0
- package/lib/commonjs/utils/reloadPlatform.web.js +17 -0
- package/lib/commonjs/utils/safeExpoRouter.js +3 -53
- package/lib/commonjs/utils/safeExpoRouter.web.js +48 -0
- package/lib/commonjs/utils/toolModules.js +25 -0
- package/lib/module/JsModal.js +11 -59
- package/lib/module/JsModal.web.js +28 -91
- package/lib/module/clipboard/autoDetectClipboard.js +2 -2
- package/lib/module/clipboard/clipboard-impl.web.js +14 -0
- package/lib/module/dataViewer/tree/TreeDiffViewer.js +4 -2
- package/lib/module/hooks/index.js +2 -2
- package/lib/module/hooks/safe-area-impl.js +1 -1
- package/lib/module/hooks/usePersistedState.js +1 -1
- package/lib/module/hooks/useSafeAreaInsets.web.js +30 -0
- package/lib/module/icons/index.js +2 -1
- package/lib/module/index.js +3 -0
- package/lib/module/license/AccountSetup.js +5 -26
- package/lib/module/license/AccountSetup.web.js +79 -65
- package/lib/module/license/AccountSetupContent.js +476 -0
- package/lib/module/license/FreeAccountPrompt.js +27 -176
- package/lib/module/license/LicenseEntryModal.js +6 -13
- package/lib/module/license/accountRuntime.js +3 -0
- package/lib/module/license/accountRuntime.web.js +4 -0
- package/lib/module/license/licenseModule.js +2 -0
- package/lib/module/settings/components/BubbleSettingsSection.js +1 -1
- package/lib/module/storage/definePersistedSetting.js +1 -1
- package/lib/module/stores/ignoredPatternsStore.js +1 -187
- package/lib/module/stores/ignoredPatternsStore.shared.js +189 -0
- package/lib/module/stores/ignoredPatternsStore.web.js +1 -219
- package/lib/module/ui/backgrounds/backgroundStore.js +1 -1
- package/lib/module/ui/backgrounds/variants/wormhole.js +3 -0
- package/lib/module/ui/components/CopyButton.js +1 -1
- package/lib/module/ui/components/EventStepperFooter.js +1 -1
- package/lib/module/ui/components/ToolFooter.js +1 -1
- package/lib/module/ui/floating/FloatingTool.web.js +12 -2
- package/lib/module/ui/night/primitives.js +11 -4
- package/lib/module/ui/otto/OttoSprite.js +1 -1
- package/lib/module/utils/browserAsyncStorage.js +151 -0
- package/lib/module/utils/browserNavigation.js +108 -0
- package/lib/module/utils/devServer.js +8 -4
- package/lib/module/utils/devServer.web.js +6 -0
- package/lib/module/utils/domRuntime.js +134 -0
- package/lib/module/utils/expoRouterModule.js +46 -0
- package/lib/module/utils/expoRouterModule.web.js +9 -0
- package/lib/module/utils/getSafeAreaInsets.web.js +31 -0
- package/lib/module/utils/index.js +9 -4
- package/lib/module/utils/loadToolModule.js +42 -0
- package/lib/module/utils/loadToolModule.web.js +8 -0
- package/lib/module/utils/modalStorage.js +37 -0
- package/lib/module/utils/nativeWeb.js +107 -0
- package/lib/module/utils/persistentStorage.web.js +72 -0
- package/lib/module/utils/reloadApp.js +13 -51
- package/lib/module/utils/reloadPlatform.js +31 -0
- package/lib/module/utils/reloadPlatform.web.js +11 -0
- package/lib/module/utils/safeExpoRouter.js +3 -53
- package/lib/module/utils/safeExpoRouter.web.js +37 -0
- package/lib/module/utils/toolModules.js +19 -0
- package/lib/typescript/commonjs/JsModal.d.ts.map +1 -1
- package/lib/typescript/commonjs/JsModal.web.d.ts +7 -18
- package/lib/typescript/commonjs/JsModal.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/clipboard/clipboard-impl.web.d.ts +5 -0
- package/lib/typescript/commonjs/clipboard/clipboard-impl.web.d.ts.map +1 -0
- package/lib/typescript/commonjs/dataViewer/tree/TreeDiffViewer.d.ts.map +1 -1
- package/lib/typescript/commonjs/hooks/safe-area-impl.d.ts +1 -1
- package/lib/typescript/commonjs/hooks/useSafeAreaInsets.web.d.ts +6 -0
- package/lib/typescript/commonjs/hooks/useSafeAreaInsets.web.d.ts.map +1 -0
- package/lib/typescript/commonjs/icons/index.d.ts +1 -0
- package/lib/typescript/commonjs/icons/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/index.d.ts +2 -0
- package/lib/typescript/commonjs/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/license/AccountSetup.d.ts.map +1 -1
- package/lib/typescript/commonjs/license/AccountSetup.web.d.ts +1 -1
- package/lib/typescript/commonjs/license/AccountSetup.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/license/AccountSetupContent.d.ts +11 -0
- package/lib/typescript/commonjs/license/AccountSetupContent.d.ts.map +1 -0
- package/lib/typescript/commonjs/license/FreeAccountPrompt.d.ts +3 -15
- package/lib/typescript/commonjs/license/FreeAccountPrompt.d.ts.map +1 -1
- package/lib/typescript/commonjs/license/LicenseEntryModal.d.ts.map +1 -1
- package/lib/typescript/commonjs/license/accountRuntime.d.ts +2 -0
- package/lib/typescript/commonjs/license/accountRuntime.d.ts.map +1 -0
- package/lib/typescript/commonjs/license/accountRuntime.web.d.ts +2 -0
- package/lib/typescript/commonjs/license/accountRuntime.web.d.ts.map +1 -0
- package/lib/typescript/commonjs/license/licenseModule.d.ts +3 -1
- package/lib/typescript/commonjs/license/licenseModule.d.ts.map +1 -1
- package/lib/typescript/commonjs/stores/ignoredPatternsStore.d.ts +1 -59
- package/lib/typescript/commonjs/stores/ignoredPatternsStore.d.ts.map +1 -1
- package/lib/typescript/commonjs/stores/ignoredPatternsStore.shared.d.ts +60 -0
- package/lib/typescript/commonjs/stores/ignoredPatternsStore.shared.d.ts.map +1 -0
- package/lib/typescript/commonjs/stores/ignoredPatternsStore.web.d.ts +1 -71
- package/lib/typescript/commonjs/stores/ignoredPatternsStore.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/floating/FloatingTool.web.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/night/primitives.d.ts.map +1 -1
- package/lib/typescript/commonjs/ui/otto/ottoEngine.d.ts +1 -1
- package/lib/typescript/commonjs/utils/browserAsyncStorage.d.ts +25 -0
- package/lib/typescript/commonjs/utils/browserAsyncStorage.d.ts.map +1 -0
- package/lib/typescript/commonjs/utils/browserNavigation.d.ts +31 -0
- package/lib/typescript/commonjs/utils/browserNavigation.d.ts.map +1 -0
- package/lib/typescript/commonjs/utils/devServer.d.ts.map +1 -1
- package/lib/typescript/commonjs/utils/devServer.web.d.ts +2 -0
- package/lib/typescript/commonjs/utils/devServer.web.d.ts.map +1 -0
- package/lib/typescript/commonjs/utils/domRuntime.d.ts +27 -0
- package/lib/typescript/commonjs/utils/domRuntime.d.ts.map +1 -0
- package/lib/typescript/commonjs/utils/expoRouterModule.d.ts +3 -0
- package/lib/typescript/commonjs/utils/expoRouterModule.d.ts.map +1 -0
- package/lib/typescript/commonjs/utils/expoRouterModule.web.d.ts +3 -0
- package/lib/typescript/commonjs/utils/expoRouterModule.web.d.ts.map +1 -0
- package/lib/typescript/commonjs/utils/getSafeAreaInsets.web.d.ts +8 -0
- package/lib/typescript/commonjs/utils/getSafeAreaInsets.web.d.ts.map +1 -0
- package/lib/typescript/commonjs/utils/index.d.ts +5 -0
- package/lib/typescript/commonjs/utils/index.d.ts.map +1 -1
- package/lib/typescript/commonjs/utils/loadToolModule.d.ts +3 -0
- package/lib/typescript/commonjs/utils/loadToolModule.d.ts.map +1 -0
- package/lib/typescript/commonjs/utils/loadToolModule.web.d.ts +2 -0
- package/lib/typescript/commonjs/utils/loadToolModule.web.d.ts.map +1 -0
- package/lib/typescript/commonjs/utils/modalStorage.d.ts +21 -0
- package/lib/typescript/commonjs/utils/modalStorage.d.ts.map +1 -0
- package/lib/typescript/commonjs/utils/nativeWeb.d.ts +22 -0
- package/lib/typescript/commonjs/utils/nativeWeb.d.ts.map +1 -0
- package/lib/typescript/commonjs/utils/persistentStorage.web.d.ts +6 -0
- package/lib/typescript/commonjs/utils/persistentStorage.web.d.ts.map +1 -0
- package/lib/typescript/commonjs/utils/reloadApp.d.ts +7 -25
- package/lib/typescript/commonjs/utils/reloadApp.d.ts.map +1 -1
- package/lib/typescript/commonjs/utils/reloadPlatform.d.ts +8 -0
- package/lib/typescript/commonjs/utils/reloadPlatform.d.ts.map +1 -0
- package/lib/typescript/commonjs/utils/reloadPlatform.web.d.ts +4 -0
- package/lib/typescript/commonjs/utils/reloadPlatform.web.d.ts.map +1 -0
- package/lib/typescript/commonjs/utils/safeExpoRouter.d.ts.map +1 -1
- package/lib/typescript/commonjs/utils/safeExpoRouter.web.d.ts +43 -0
- package/lib/typescript/commonjs/utils/safeExpoRouter.web.d.ts.map +1 -0
- package/lib/typescript/commonjs/utils/toolModules.d.ts +5 -0
- package/lib/typescript/commonjs/utils/toolModules.d.ts.map +1 -0
- package/lib/typescript/module/JsModal.d.ts.map +1 -1
- package/lib/typescript/module/JsModal.web.d.ts +7 -18
- package/lib/typescript/module/JsModal.web.d.ts.map +1 -1
- package/lib/typescript/module/clipboard/clipboard-impl.web.d.ts +5 -0
- package/lib/typescript/module/clipboard/clipboard-impl.web.d.ts.map +1 -0
- package/lib/typescript/module/dataViewer/tree/TreeDiffViewer.d.ts.map +1 -1
- package/lib/typescript/module/hooks/safe-area-impl.d.ts +1 -1
- package/lib/typescript/module/hooks/useSafeAreaInsets.web.d.ts +6 -0
- package/lib/typescript/module/hooks/useSafeAreaInsets.web.d.ts.map +1 -0
- package/lib/typescript/module/icons/index.d.ts +1 -0
- package/lib/typescript/module/icons/index.d.ts.map +1 -1
- package/lib/typescript/module/index.d.ts +2 -0
- package/lib/typescript/module/index.d.ts.map +1 -1
- package/lib/typescript/module/license/AccountSetup.d.ts.map +1 -1
- package/lib/typescript/module/license/AccountSetup.web.d.ts +1 -1
- package/lib/typescript/module/license/AccountSetup.web.d.ts.map +1 -1
- package/lib/typescript/module/license/AccountSetupContent.d.ts +11 -0
- package/lib/typescript/module/license/AccountSetupContent.d.ts.map +1 -0
- package/lib/typescript/module/license/FreeAccountPrompt.d.ts +3 -15
- package/lib/typescript/module/license/FreeAccountPrompt.d.ts.map +1 -1
- package/lib/typescript/module/license/LicenseEntryModal.d.ts.map +1 -1
- package/lib/typescript/module/license/accountRuntime.d.ts +2 -0
- package/lib/typescript/module/license/accountRuntime.d.ts.map +1 -0
- package/lib/typescript/module/license/accountRuntime.web.d.ts +2 -0
- package/lib/typescript/module/license/accountRuntime.web.d.ts.map +1 -0
- package/lib/typescript/module/license/licenseModule.d.ts +3 -1
- package/lib/typescript/module/license/licenseModule.d.ts.map +1 -1
- package/lib/typescript/module/stores/ignoredPatternsStore.d.ts +1 -59
- package/lib/typescript/module/stores/ignoredPatternsStore.d.ts.map +1 -1
- package/lib/typescript/module/stores/ignoredPatternsStore.shared.d.ts +60 -0
- package/lib/typescript/module/stores/ignoredPatternsStore.shared.d.ts.map +1 -0
- package/lib/typescript/module/stores/ignoredPatternsStore.web.d.ts +1 -71
- package/lib/typescript/module/stores/ignoredPatternsStore.web.d.ts.map +1 -1
- package/lib/typescript/module/ui/floating/FloatingTool.web.d.ts.map +1 -1
- package/lib/typescript/module/ui/night/primitives.d.ts.map +1 -1
- package/lib/typescript/module/ui/otto/ottoEngine.d.ts +1 -1
- package/lib/typescript/module/utils/browserAsyncStorage.d.ts +25 -0
- package/lib/typescript/module/utils/browserAsyncStorage.d.ts.map +1 -0
- package/lib/typescript/module/utils/browserNavigation.d.ts +31 -0
- package/lib/typescript/module/utils/browserNavigation.d.ts.map +1 -0
- package/lib/typescript/module/utils/devServer.d.ts.map +1 -1
- package/lib/typescript/module/utils/devServer.web.d.ts +2 -0
- package/lib/typescript/module/utils/devServer.web.d.ts.map +1 -0
- package/lib/typescript/module/utils/domRuntime.d.ts +27 -0
- package/lib/typescript/module/utils/domRuntime.d.ts.map +1 -0
- package/lib/typescript/module/utils/expoRouterModule.d.ts +3 -0
- package/lib/typescript/module/utils/expoRouterModule.d.ts.map +1 -0
- package/lib/typescript/module/utils/expoRouterModule.web.d.ts +3 -0
- package/lib/typescript/module/utils/expoRouterModule.web.d.ts.map +1 -0
- package/lib/typescript/module/utils/getSafeAreaInsets.web.d.ts +8 -0
- package/lib/typescript/module/utils/getSafeAreaInsets.web.d.ts.map +1 -0
- package/lib/typescript/module/utils/index.d.ts +5 -0
- package/lib/typescript/module/utils/index.d.ts.map +1 -1
- package/lib/typescript/module/utils/loadToolModule.d.ts +3 -0
- package/lib/typescript/module/utils/loadToolModule.d.ts.map +1 -0
- package/lib/typescript/module/utils/loadToolModule.web.d.ts +2 -0
- package/lib/typescript/module/utils/loadToolModule.web.d.ts.map +1 -0
- package/lib/typescript/module/utils/modalStorage.d.ts +21 -0
- package/lib/typescript/module/utils/modalStorage.d.ts.map +1 -0
- package/lib/typescript/module/utils/nativeWeb.d.ts +22 -0
- package/lib/typescript/module/utils/nativeWeb.d.ts.map +1 -0
- package/lib/typescript/module/utils/persistentStorage.web.d.ts +6 -0
- package/lib/typescript/module/utils/persistentStorage.web.d.ts.map +1 -0
- package/lib/typescript/module/utils/reloadApp.d.ts +7 -25
- package/lib/typescript/module/utils/reloadApp.d.ts.map +1 -1
- package/lib/typescript/module/utils/reloadPlatform.d.ts +8 -0
- package/lib/typescript/module/utils/reloadPlatform.d.ts.map +1 -0
- package/lib/typescript/module/utils/reloadPlatform.web.d.ts +4 -0
- package/lib/typescript/module/utils/reloadPlatform.web.d.ts.map +1 -0
- package/lib/typescript/module/utils/safeExpoRouter.d.ts.map +1 -1
- package/lib/typescript/module/utils/safeExpoRouter.web.d.ts +43 -0
- package/lib/typescript/module/utils/safeExpoRouter.web.d.ts.map +1 -0
- package/lib/typescript/module/utils/toolModules.d.ts +5 -0
- package/lib/typescript/module/utils/toolModules.d.ts.map +1 -0
- package/lib/web/asyncStorage.mjs +2 -0
- package/lib/web/chunks/chunk-2MHKRRQW.mjs +8 -0
- package/lib/web/chunks/chunk-2Q3SDPH2.mjs +14 -0
- package/lib/web/chunks/chunk-34YQ42KI.mjs +2 -0
- package/lib/web/chunks/chunk-3NNNCQYP.mjs +14 -0
- package/lib/web/chunks/chunk-3UTMGIUG.mjs +2 -0
- package/lib/web/chunks/chunk-46CXXOQB.mjs +2 -0
- package/lib/web/chunks/chunk-475BSDCB.mjs +2 -0
- package/lib/web/chunks/chunk-53J2FMUD.mjs +2 -0
- package/lib/web/chunks/chunk-552W4COI.mjs +2 -0
- package/lib/web/chunks/chunk-56TTTMX4.mjs +6145 -0
- package/lib/web/chunks/chunk-5LOQZINQ.mjs +14 -0
- package/lib/web/chunks/chunk-5NOIO6ZM.mjs +16 -0
- package/lib/web/chunks/chunk-5NZOQR6Q.mjs +2 -0
- package/lib/web/chunks/chunk-6CCRCSA2.mjs +2 -0
- package/lib/web/chunks/chunk-6Q52HRBL.mjs +2 -0
- package/lib/web/chunks/chunk-6TEDFSNM.mjs +655 -0
- package/lib/web/chunks/chunk-7BMRSMHN.mjs +2 -0
- package/lib/web/chunks/chunk-A2SOFE47.mjs +24 -0
- package/lib/web/chunks/chunk-A7KJCK4R.mjs +14 -0
- package/lib/web/chunks/chunk-AEXGGXS7.mjs +2 -0
- package/lib/web/chunks/chunk-AGD7ZT6O.mjs +15 -0
- package/lib/web/chunks/chunk-AIEOQWNG.mjs +2 -0
- package/lib/web/chunks/chunk-ASTM35HG.mjs +16 -0
- package/lib/web/chunks/chunk-AZBMFPMX.mjs +1421 -0
- package/lib/web/chunks/chunk-B2V2UDCU.mjs +16 -0
- package/lib/web/chunks/chunk-BFGKGTAC.mjs +2 -0
- package/lib/web/chunks/chunk-BHW6AFO6.mjs +2 -0
- package/lib/web/chunks/chunk-BWRW3NJ2.mjs +16 -0
- package/lib/web/chunks/chunk-CBM2IZAK.mjs +2 -0
- package/lib/web/chunks/chunk-CDLCFF44.mjs +2 -0
- package/lib/web/chunks/chunk-CE5U3CSQ.mjs +2 -0
- package/lib/web/chunks/chunk-CI5CO7FQ.mjs +2 -0
- package/lib/web/chunks/chunk-CIB4U2YK.mjs +2 -0
- package/lib/web/chunks/chunk-CLLTZQGD.mjs +596 -0
- package/lib/web/chunks/chunk-D5HQLRFW.mjs +655 -0
- package/lib/web/chunks/chunk-DZDTNXXK.mjs +2 -0
- package/lib/web/chunks/chunk-FDOZ6YSS.mjs +2 -0
- package/lib/web/chunks/chunk-FMEWNGQO.mjs +2 -0
- package/lib/web/chunks/chunk-G4DH7GMT.mjs +2 -0
- package/lib/web/chunks/chunk-GBUZCZE4.mjs +2 -0
- package/lib/web/chunks/chunk-GF5C5DVX.mjs +2 -0
- package/lib/web/chunks/chunk-GLMS5ZLJ.mjs +445 -0
- package/lib/web/chunks/chunk-GNGMIA7V.mjs +2 -0
- package/lib/web/chunks/chunk-GTYIS7H7.mjs +15 -0
- package/lib/web/chunks/chunk-HJ36IONA.mjs +15 -0
- package/lib/web/chunks/chunk-HXPTZMAZ.mjs +2 -0
- package/lib/web/chunks/chunk-I27M4JCS.mjs +2 -0
- package/lib/web/chunks/chunk-IVCT27JB.mjs +2 -0
- package/lib/web/chunks/chunk-JG4QSK5B.mjs +2 -0
- package/lib/web/chunks/chunk-JR7BJW6B.mjs +389 -0
- package/lib/web/chunks/chunk-K46ZJUXJ.mjs +90 -0
- package/lib/web/chunks/chunk-K4LXMO4D.mjs +2 -0
- package/lib/web/chunks/chunk-K7CGIEFU.mjs +2 -0
- package/lib/web/chunks/chunk-KBTYK5YE.mjs +662 -0
- package/lib/web/chunks/chunk-KHP6CSSM.mjs +2 -0
- package/lib/web/chunks/chunk-KRDRIW7T.mjs +14 -0
- package/lib/web/chunks/chunk-L2DTKDER.mjs +2 -0
- package/lib/web/chunks/chunk-LFDFDGHY.mjs +655 -0
- package/lib/web/chunks/chunk-LZ7FZZ7R.mjs +2 -0
- package/lib/web/chunks/chunk-MAIUUK4E.mjs +2 -0
- package/lib/web/chunks/chunk-MKJKS3IG.mjs +275 -0
- package/lib/web/chunks/chunk-MRQKVLXG.mjs +2 -0
- package/lib/web/chunks/chunk-NK3OISOL.mjs +14 -0
- package/lib/web/chunks/chunk-NLJDDIXW.mjs +2 -0
- package/lib/web/chunks/chunk-OENR3XFI.mjs +11 -0
- package/lib/web/chunks/chunk-OZB3VKZE.mjs +2 -0
- package/lib/web/chunks/chunk-P64PFJT3.mjs +17618 -0
- package/lib/web/chunks/chunk-PACPGYH7.mjs +2 -0
- package/lib/web/chunks/chunk-PART6HOE.mjs +14 -0
- package/lib/web/chunks/chunk-PMRXUQRH.mjs +2 -0
- package/lib/web/chunks/chunk-PTK5FO6C.mjs +2 -0
- package/lib/web/chunks/chunk-PZ45TQ55.mjs +14 -0
- package/lib/web/chunks/chunk-Q5LN7GET.mjs +17624 -0
- package/lib/web/chunks/chunk-QCD6T6L4.mjs +297 -0
- package/lib/web/chunks/chunk-QD5EUANU.mjs +2 -0
- package/lib/web/chunks/chunk-QJTECJCO.mjs +2 -0
- package/lib/web/chunks/chunk-QPIZURPZ.mjs +2 -0
- package/lib/web/chunks/chunk-QPY45R5F.mjs +274 -0
- package/lib/web/chunks/chunk-R2SGZIG5.mjs +2 -0
- package/lib/web/chunks/chunk-S3GYQYVJ.mjs +16 -0
- package/lib/web/chunks/chunk-SCCXVTDM.mjs +2 -0
- package/lib/web/chunks/chunk-SHJHD646.mjs +2 -0
- package/lib/web/chunks/chunk-TCRVZ55E.mjs +2 -0
- package/lib/web/chunks/chunk-TJ6ZVV2L.mjs +15 -0
- package/lib/web/chunks/chunk-TPSY4RC3.mjs +14 -0
- package/lib/web/chunks/chunk-U5KNX5O6.mjs +17624 -0
- package/lib/web/chunks/chunk-UCKELQSM.mjs +2 -0
- package/lib/web/chunks/chunk-UGGCYHRH.mjs +15 -0
- package/lib/web/chunks/chunk-UNYQJZET.mjs +16 -0
- package/lib/web/chunks/chunk-VE72SWLV.mjs +15 -0
- package/lib/web/chunks/chunk-VKONO6MI.mjs +2 -0
- package/lib/web/chunks/chunk-W4BGMPJO.mjs +2 -0
- package/lib/web/chunks/chunk-WHNEEKLR.mjs +2 -0
- package/lib/web/chunks/chunk-WLGUP3KY.mjs +16 -0
- package/lib/web/chunks/chunk-WY7D4WBZ.mjs +2 -0
- package/lib/web/chunks/chunk-XRNB2MHO.mjs +107 -0
- package/lib/web/chunks/chunk-XXTIAXQY.mjs +2 -0
- package/lib/web/chunks/chunk-XYUAUO57.mjs +2 -0
- package/lib/web/chunks/chunk-YG6DIKQD.mjs +2 -0
- package/lib/web/chunks/chunk-YIZFMU66.mjs +2 -0
- package/lib/web/chunks/chunk-YOGAPOGC.mjs +2 -0
- package/lib/web/chunks/chunk-Z7373DS5.mjs +2 -0
- package/lib/web/chunks/chunk-Z76GRN66.mjs +17627 -0
- package/lib/web/chunks/persistentStorage.web-4FBAOYJ4.mjs +12 -0
- package/lib/web/chunks/persistentStorage.web-7W3Y6Q24.mjs +12 -0
- package/lib/web/chunks/persistentStorage.web-GOWNFMVT.mjs +2 -0
- package/lib/web/chunks/persistentStorage.web-RF47FXIK.mjs +12 -0
- package/lib/web/colors.mjs +2 -0
- package/lib/web/dataViewer.mjs +3 -0
- package/lib/web/floating.mjs +2 -0
- package/lib/web/history.mjs +2 -0
- package/lib/web/hooks.mjs +2 -0
- package/lib/web/index.mjs +15 -0
- package/lib/web/native.mjs +2 -0
- package/lib/web/ui.mjs +2 -0
- package/lib/web/utils.mjs +2 -0
- package/package.json +118 -36
|
@@ -0,0 +1,655 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
import {
|
|
3
|
+
gameUIColors
|
|
4
|
+
} from "./chunk-QPY45R5F.mjs";
|
|
5
|
+
import {
|
|
6
|
+
__DEV__
|
|
7
|
+
} from "./chunk-2MHKRRQW.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
|
+
import{d as i}from"./chunk-CE5U3CSQ.mjs";import{a as o}from"./chunk-5NZOQR6Q.mjs";var J=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},F=e=>{let t=typeof e;return e==null||t==="string"||t==="number"||t==="boolean"||t==="bigint"||t==="symbol"},G=e=>{try{return JSON.stringify(e),!0}catch{return!1}},K=e=>{try{return JSON.parse(e),!0}catch{return!1}},q=e=>{if(e===null)return"null";if(e===void 0)return"undefined";try{return e.constructor?.name||typeof e}catch{return typeof e}},B=e=>e==null?!0:typeof e=="string"||Array.isArray(e)?e.length===0:typeof e=="object"?Object.keys(e).length===0:!1,Y=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""},xe=e=>typeof e=="object"&&e!==null&&!Array.isArray(e)&&e.constructor===Object;var H=e=>{if(e==null)return e;if(typeof e=="string")try{return JSON.parse(e)}catch{return e}return e},W=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),N=e=>{if(e===null)return i.dataTypes.null;if(e===void 0)return i.dataTypes.undefined;switch(typeof e){case"string":return i.dataTypes.string;case"number":return i.dataTypes.number;case"boolean":return i.dataTypes.boolean;case"function":return i.dataTypes.function;case"object":return Array.isArray(e)?i.dataTypes.array:i.dataTypes.object;default:return i.primary}},Q=(e,t)=>e.length<=t?e:e.slice(0,t-3)+"...",h=(e,t="")=>{let r={};return e==null?r:typeof e!="object"?(r[t||"root"]=e,r):(Array.isArray(e)?e.forEach((n,s)=>{let a=t?`${t}[${s}]`:`[${s}]`;typeof n=="object"&&n!==null?Object.assign(r,h(n,a)):r[a]=n}):Object.keys(e).forEach(n=>{let s=t?`${t}.${n}`:n,a=e[n];typeof a=="object"&&a!==null?Object.assign(r,h(a,s)):r[s]=a}),r)},X=e=>e.length===0?"root":e.map((t,r)=>typeof t=="number"?`[${t}]`:r===0?t:`.${t}`).join("");var Z={log:()=>{},warn:()=>{},error:(...e)=>{console.error("[optional-module]",...e)}},p=new Map,f=new Map,v=new Set;async function ee(e,t={}){if(p.has(e))return p.get(e);let r={...Z,...t.logger??{}};f.has(e)||f.set(e,(async()=>{try{let s=await te(e,t),a=s?.default??s;return p.set(e,a),r.log("Loaded optional module",e),a}catch(s){return r.log("Optional module unavailable",e,s),p.set(e,null),null}})());let n=await f.get(e);return f.delete(e),!n&&t.warnOnceKey&&!v.has(t.warnOnceKey)&&(v.add(t.warnOnceKey),r.warn(t.warningMessage??`Module '${e}' not found.`)),n}var C=(()=>{try{return new Function("moduleName","return import(moduleName);")}catch{return null}})(),k=(()=>{try{return new Function("return typeof require === 'function' ? require : undefined;")()}catch{return}})();async function te(e,t){if(t.loader)return await Promise.resolve(t.loader());if(C)return C(e);if(k)return k(e);throw new Error(`No dynamic loader available for optional module '${e}'.`)}function re(e){return p.has(e)?p.get(e):null}var L="__buoyRenderCaptureProvider";function O(){return globalThis}function ne(e){O()[L]=e}function oe(){return O()[L]??null}var d=new Map,m=new Set;function T(){m.forEach(e=>{try{e()}catch{}})}function se(e){return d.set(e.id,e),T(),()=>{d.get(e.id)===e&&(d.delete(e.id),T())}}function ae(){return Array.from(d.values())}function ie(e){return d.get(e)??null}function ue(e){return m.add(e),()=>{m.delete(e)}}function g(){return null}function y(){return null}function b(){return typeof window>"u"?null:()=>window.location.reload()}function w(e="auto"){return e==="browser"?b()?"browser":null:e==="auto"&&b()?"browser":e==="dev-settings"?g()?"dev-settings":null:e==="expo-updates"?y()?"expo-updates":null:o&&g()?"dev-settings":y()?"expo-updates":null}function E(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 A(e="auto",t="buoy reload"){let r=w(e);if(!r)throw new Error(E(e));return r==="browser"?b()():r==="dev-settings"?g().reload(t):await y().reloadAsync(),await new Promise(()=>{})}var M=250;function le(e){let t=e?.strategy??"auto",r=w(t);if(!r)throw new Error(E(t));let n=Math.max(0,e?.delayMs??M),s=e?.reason??"buoy remote reload";return setTimeout(()=>{A(r,s).catch(()=>{})},n),{strategy:r,delayMs:n}}function pe(){return null}var x=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 R=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{}})}},P=new R,de=e=>P.subscribe(e),ce=e=>P.notify(e);function V(){return null}function _(){return null}var u=null,S=!1,j=!1;function l(){if(j)return S;try{u=V(),S=u!=null&&typeof u.usePathname=="function"&&typeof u.useSegments=="function"}catch{S=!1,u=null}return j=!0,S}function D(){return{push:()=>console.warn("[buoy] expo-router not installed: push() unavailable"),replace:()=>console.warn("[buoy] expo-router not installed: replace() unavailable"),back:()=>console.warn("[buoy] expo-router not installed: back() unavailable"),canGoBack:()=>!1,setParams:()=>console.warn("[buoy] expo-router not installed: setParams() unavailable"),navigate:()=>console.warn("[buoy] expo-router not installed: navigate() unavailable")}}function $(){return"/"}function I(){return[]}function U(){return{}}function fe(){if(!l())return D();try{return u.useRouter()}catch(e){return console.warn("[buoy] Failed to use expo-router.useRouter:",e),D()}}function ge(){if(!l())return $();try{return u.usePathname()}catch(e){return console.warn("[buoy] Failed to use expo-router.usePathname:",e),$()}}function ye(){if(!l())return I();try{return u.useSegments()}catch(e){return console.warn("[buoy] Failed to use expo-router.useSegments:",e),I()}}function be(){if(!l())return U();try{return u.useGlobalSearchParams()}catch(e){return console.warn("[buoy] Failed to use expo-router.useGlobalSearchParams:",e),U()}}function Se(){if(!l())return null;try{return u.router||null}catch{return null}}var c;function he(){if(c!==void 0)return c;try{c=_()}catch{c=null}return c}function me(){return z()?.pathname??null}function z(){if(!l())return null;try{let e=he()?.getRouteInfo?.(),t=e?.pathname;if(typeof t!="string"||t.length===0)return null;let r=e?.pathnameWithParams;return{pathname:t,href:typeof r=="string"&&r.length>0?r:t,...Array.isArray(e?.segments)?{segments:e.segments}:{}}}catch{return null}}function we(){return l()}export{x as a,P as b,de as c,ce as d,J as e,F as f,G as g,K as h,q as i,B as j,Y as k,xe as l,H as m,W as n,N as o,Q as p,h as q,X as r,ee as s,re as t,ne as u,oe as v,se as w,ae as x,ie as y,ue as z,w as A,A as B,M as C,le as D,pe as E,fe as F,ge as G,ye as H,be as I,Se as J,me as K,z as L,we as M};
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
"use client";
|
|
2
|
+
|
|
3
|
+
// src/utils/getSafeAreaInsets.web.ts
|
|
4
|
+
function getSafeAreaInsets() {
|
|
5
|
+
const empty = { top: 0, bottom: 0, left: 0, right: 0, hasNotch: false };
|
|
6
|
+
if (typeof document === "undefined" || !document.body) return empty;
|
|
7
|
+
const probe = document.createElement("div");
|
|
8
|
+
probe.style.cssText = "position:fixed;visibility:hidden;pointer-events:none;padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right)";
|
|
9
|
+
document.body.appendChild(probe);
|
|
10
|
+
try {
|
|
11
|
+
const style = getComputedStyle(probe);
|
|
12
|
+
const top = parseFloat(style.paddingTop) || 0;
|
|
13
|
+
const bottom = parseFloat(style.paddingBottom) || 0;
|
|
14
|
+
const left = parseFloat(style.paddingLeft) || 0;
|
|
15
|
+
const right = parseFloat(style.paddingRight) || 0;
|
|
16
|
+
return { top, bottom, left, right, hasNotch: top > 0 || bottom > 0 || left > 0 || right > 0 };
|
|
17
|
+
} finally {
|
|
18
|
+
probe.remove();
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
|
|
22
|
+
export {
|
|
23
|
+
getSafeAreaInsets
|
|
24
|
+
};
|