@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.
- 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/ignoredPatternsCore.js +8 -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/ignoredPatternsCore.js +8 -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/ignoredPatternsCore.d.ts +5 -1
- package/lib/typescript/commonjs/stores/ignoredPatternsCore.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/ignoredPatternsCore.d.ts +5 -1
- package/lib/typescript/module/stores/ignoredPatternsCore.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
package/README.md
CHANGED
|
@@ -34,8 +34,14 @@ Use the installed declarations to select components and their props. Avoid priva
|
|
|
34
34
|
|
|
35
35
|
Follow the [custom-tool guide](https://buoy.gg/buoy/latest/docs/custom-tools) to register a tool and its adapter. Verify your panel with empty data, a known populated state, and the supported app theme before connecting remote actions.
|
|
36
36
|
|
|
37
|
+
## Account setup
|
|
38
|
+
|
|
39
|
+
`AccountSetup` shows the sign-in launcher when Buoy needs a verified account. Native and web use the same launcher and account card, including the copyable login command, connection feedback, and support links. The web card opens above the launcher and closes with Escape, its close button, or a click outside. `FreeAccountPrompt` presents the card in a native modal.
|
|
40
|
+
|
|
37
41
|
## Custom floating tools
|
|
38
42
|
|
|
39
43
|
`FloatingTool` provides the same drag, hide/restore and position behavior used by the DevTools bubble. Use `FloatingToolHost` with `openFloatingTool` to keep compact custom controls mounted across navigation. Each tool supplies its own content and actions. Set `dragFromSurface` to make the background draggable while buttons keep their gestures; the default uses the grip only.
|
|
40
44
|
|
|
41
45
|
See the [custom floating tools guide](https://buoy.gg/buoy/latest/docs/custom-tools/floating-tools) for native and browser integration, lifecycle rules and examples. Browser consumers can import the dedicated `@buoy-gg/shared-ui/floating` entry.
|
|
46
|
+
|
|
47
|
+
In browser panels, header dragging starts on non-interactive space. Buttons, tabs, inputs, and other focusable controls keep their pointer input. Window controls have 24 px hit areas.
|
package/lib/commonjs/JsModal.js
CHANGED
|
@@ -9,12 +9,13 @@ var _AccountSetup = require("./license/AccountSetup");
|
|
|
9
9
|
var _react = require("react");
|
|
10
10
|
var _reactNative = require("react-native");
|
|
11
11
|
var _absoluteFill = require("./utils/absoluteFill.js");
|
|
12
|
-
var _useSafeAreaInsets = require("./hooks/useSafeAreaInsets
|
|
12
|
+
var _useSafeAreaInsets = require("./hooks/useSafeAreaInsets");
|
|
13
13
|
var _index = require("./ui/gameUI/index.js");
|
|
14
14
|
var _index2 = require("./ui/components/index.js");
|
|
15
15
|
var _ToolBackground = require("./ui/backgrounds/ToolBackground.js");
|
|
16
16
|
var _nightTheme = require("./ui/night/nightTheme.js");
|
|
17
|
-
var _persistentStorage = require("./utils/persistentStorage
|
|
17
|
+
var _persistentStorage = require("./utils/persistentStorage");
|
|
18
|
+
var _modalStorage = require("./utils/modalStorage.js");
|
|
18
19
|
var _devToolsStorageKeys = require("./storage/devToolsStorageKeys.js");
|
|
19
20
|
var _index3 = require("./context/index.js");
|
|
20
21
|
var _jsxRuntime = require("react/jsx-runtime");
|
|
@@ -66,61 +67,6 @@ const FLOATING_MIN_HEIGHT = 80; // Just a bit more than header height (60px head
|
|
|
66
67
|
*/
|
|
67
68
|
const WINDOW_CONTROLS_BAND = 20;
|
|
68
69
|
|
|
69
|
-
// ============================================================================
|
|
70
|
-
// STORAGE - Modal state persistence with AsyncStorage
|
|
71
|
-
// ============================================================================
|
|
72
|
-
|
|
73
|
-
/**
|
|
74
|
-
* Utility class for persisting modal state to AsyncStorage
|
|
75
|
-
*
|
|
76
|
-
* Handles saving and loading modal state including mode, dimensions,
|
|
77
|
-
* and position with memory caching for performance.
|
|
78
|
-
*/
|
|
79
|
-
class ModalStorage {
|
|
80
|
-
static memoryCache = {};
|
|
81
|
-
|
|
82
|
-
/**
|
|
83
|
-
* Save modal state to AsyncStorage with memory caching
|
|
84
|
-
*
|
|
85
|
-
* @param key - Storage key for the modal state
|
|
86
|
-
* @param value - Modal state to persist
|
|
87
|
-
*/
|
|
88
|
-
static async save(key, value) {
|
|
89
|
-
try {
|
|
90
|
-
this.memoryCache[key] = value;
|
|
91
|
-
await _persistentStorage.persistentStorage.setItem(key, JSON.stringify(value));
|
|
92
|
-
} catch (error) {
|
|
93
|
-
// Failed to save modal state
|
|
94
|
-
}
|
|
95
|
-
}
|
|
96
|
-
|
|
97
|
-
/**
|
|
98
|
-
* Load modal state from AsyncStorage with memory cache fallback
|
|
99
|
-
*
|
|
100
|
-
* @param key - Storage key for the modal state
|
|
101
|
-
* @returns Persisted modal state or null if not found
|
|
102
|
-
*/
|
|
103
|
-
static async load(key) {
|
|
104
|
-
try {
|
|
105
|
-
// Try memory cache first
|
|
106
|
-
if (this.memoryCache[key]) {
|
|
107
|
-
return this.memoryCache[key];
|
|
108
|
-
}
|
|
109
|
-
|
|
110
|
-
// Load from storage (AsyncStorage or memory fallback)
|
|
111
|
-
const stored = await _persistentStorage.persistentStorage.getItem(key);
|
|
112
|
-
if (stored) {
|
|
113
|
-
const parsed = JSON.parse(stored);
|
|
114
|
-
this.memoryCache[key] = parsed;
|
|
115
|
-
return parsed;
|
|
116
|
-
}
|
|
117
|
-
} catch (error) {
|
|
118
|
-
// Failed to load modal state
|
|
119
|
-
}
|
|
120
|
-
return null;
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
|
|
124
70
|
// ============================================================================
|
|
125
71
|
// TYPE DEFINITIONS - Interface contracts for the modal
|
|
126
72
|
// ============================================================================
|
|
@@ -430,7 +376,7 @@ const JsModalComponent = ({
|
|
|
430
376
|
(0, _react.useEffect)(() => {
|
|
431
377
|
if (!enablePersistence || !persistenceKey || !isStateLoaded) return;
|
|
432
378
|
const timeoutId = setTimeout(() => {
|
|
433
|
-
ModalStorage.save(persistenceKey, {
|
|
379
|
+
_modalStorage.ModalStorage.save(persistenceKey, {
|
|
434
380
|
mode,
|
|
435
381
|
panelHeight: currentHeightRef.current,
|
|
436
382
|
dimensions,
|
|
@@ -533,7 +479,7 @@ const JsModalComponent = ({
|
|
|
533
479
|
}
|
|
534
480
|
let mounted = true;
|
|
535
481
|
const loadState = async () => {
|
|
536
|
-
const savedState = await ModalStorage.load(persistenceKey);
|
|
482
|
+
const savedState = await _modalStorage.ModalStorage.load(persistenceKey);
|
|
537
483
|
if (mounted && savedState) {
|
|
538
484
|
// Restore mode
|
|
539
485
|
if (savedState.mode) {
|
|
@@ -650,6 +596,7 @@ const JsModalComponent = ({
|
|
|
650
596
|
height: currentDimensionsRef.current.height
|
|
651
597
|
}
|
|
652
598
|
};
|
|
599
|
+
if (enablePersistence && persistenceKey) void _modalStorage.ModalStorage.saveMinimized(persistenceKey, currentState);
|
|
653
600
|
|
|
654
601
|
// Animate modal shrinking toward target position
|
|
655
602
|
const targetX = minimizeTargetPosition?.x ?? SCREEN.width - 50;
|
|
@@ -690,7 +637,7 @@ const JsModalComponent = ({
|
|
|
690
637
|
onMinimize(currentState);
|
|
691
638
|
});
|
|
692
639
|
}
|
|
693
|
-
}, [mode, onMinimize, minimizeTargetPosition, visibilityProgress, bottomSheetTranslateY, floatingScale, floatingPosition]);
|
|
640
|
+
}, [mode, onMinimize, minimizeTargetPosition, enablePersistence, persistenceKey, visibilityProgress, bottomSheetTranslateY, floatingScale, floatingPosition]);
|
|
694
641
|
const lastMinimizeRequest = (0, _react.useRef)(minimizeRequest);
|
|
695
642
|
(0, _react.useEffect)(() => {
|
|
696
643
|
if (lastMinimizeRequest.current === minimizeRequest) return;
|
|
@@ -1333,7 +1280,11 @@ const JsModalComponent = ({
|
|
|
1333
1280
|
paddingBottom: footerHeight
|
|
1334
1281
|
},
|
|
1335
1282
|
showsVerticalScrollIndicator: true,
|
|
1336
|
-
nestedScrollEnabled: true
|
|
1283
|
+
nestedScrollEnabled: true
|
|
1284
|
+
// Without this, a tap on a button while the keyboard is up only
|
|
1285
|
+
// dismisses the keyboard: typing a URL and tapping Load did nothing.
|
|
1286
|
+
,
|
|
1287
|
+
keyboardShouldPersistTaps: "handled",
|
|
1337
1288
|
children: children
|
|
1338
1289
|
}), footer ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
1339
1290
|
style: footerStyles.footerContainer,
|
|
@@ -1447,6 +1398,7 @@ const JsModalComponent = ({
|
|
|
1447
1398
|
},
|
|
1448
1399
|
showsVerticalScrollIndicator: true,
|
|
1449
1400
|
nestedScrollEnabled: true,
|
|
1401
|
+
keyboardShouldPersistTaps: "handled",
|
|
1450
1402
|
children: children
|
|
1451
1403
|
}), footer ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
|
|
1452
1404
|
style: footerStyles.footerContainer,
|
|
@@ -7,6 +7,8 @@ exports.JsModal = void 0;
|
|
|
7
7
|
var _licenseModule = require("./license/licenseModule.js");
|
|
8
8
|
var _AccountSetup = require("./license/AccountSetup");
|
|
9
9
|
var _react = require("react");
|
|
10
|
+
var _persistentStorage = require("./utils/persistentStorage");
|
|
11
|
+
var _modalStorage = require("./utils/modalStorage.js");
|
|
10
12
|
var _devToolsStorageKeys = require("./storage/devToolsStorageKeys.js");
|
|
11
13
|
var _index = require("./context/index.js");
|
|
12
14
|
var _ToolBackground = require("./ui/backgrounds/ToolBackground.js");
|
|
@@ -21,7 +23,7 @@ var _jsxRuntime = require("react/jsx-runtime");
|
|
|
21
23
|
* native file. Zero react-native imports — header chrome that lives in
|
|
22
24
|
* shared-ui RN components (`WindowControls`, `DraggableHeader`, `ModalHeader`,
|
|
23
25
|
* `ModalHintBanner`) is replicated as DOM with provenance comments, the same
|
|
24
|
-
* way
|
|
26
|
+
* way the browser host supplies DOM positioning.
|
|
25
27
|
*
|
|
26
28
|
* Gesture spec (verbatim from native):
|
|
27
29
|
* - Sheet header drag: steal at |dy| > 3px, absolute finger anchoring
|
|
@@ -36,17 +38,8 @@ var _jsxRuntime = require("react/jsx-runtime");
|
|
|
36
38
|
* - Header taps (both modes): taps accumulate within a 500ms window and
|
|
37
39
|
* settle after 300ms — 2 taps toggles mode, ≥3 taps minimizes.
|
|
38
40
|
*
|
|
39
|
-
* Persistence
|
|
40
|
-
* is
|
|
41
|
-
* `@react_buoy…` keys or short keys — no extra derivation happens here
|
|
42
|
-
* either). JSON shape `{ mode, panelHeight, dimensions: {width, height, top,
|
|
43
|
-
* left}, isVisible }`, saved on a 500ms debounce after state loads, with the
|
|
44
|
-
* same in-memory cache in front of storage. Backed by a local
|
|
45
|
-
* localStorage adapter matching the `persistentStorage` API — importing
|
|
46
|
-
* `./utils/persistentStorage` is avoided on purpose: its lazy `require()`
|
|
47
|
-
* probing of expo-file-system/AsyncStorage doesn't survive Vite's ESM graph.
|
|
48
|
-
* The hint-acknowledged flag uses the real `devToolsStorageKeys` helper
|
|
49
|
-
* (zero-dep) so the key matches native exactly.
|
|
41
|
+
* Persistence uses the shared ModalStorage implementation and platform storage.
|
|
42
|
+
* State is saved on a 500ms debounce, with an immediate save on minimize.
|
|
50
43
|
*
|
|
51
44
|
* Intentional deviations from the native file (all logged):
|
|
52
45
|
* - No native-driver springs: rAF drives all animations. The open/close
|
|
@@ -66,14 +59,12 @@ var _jsxRuntime = require("react/jsx-runtime");
|
|
|
66
59
|
* WKWebView) doesn't bake in a 0×0 screen.
|
|
67
60
|
* - Safe-area insets come from a one-shot `env(safe-area-inset-*)` probe
|
|
68
61
|
* (same trick as floatingTools.web.tsx) instead of the RN hook.
|
|
69
|
-
* - On restore
|
|
70
|
-
*
|
|
71
|
-
* doesn't pass `initialModalState` back, and without the re-sync the panel
|
|
72
|
-
* would reappear at the minimize target.
|
|
62
|
+
* - On restore, the floating position re-syncs from the saved dimensions.
|
|
63
|
+
* Some tool components do not forward `initialModalState`.
|
|
73
64
|
* - `JsModalProps` is additionally exported (native keeps it private) so web
|
|
74
65
|
* consumers can type wrappers without redeclaring the contract.
|
|
75
|
-
* - `visible={false}`
|
|
76
|
-
*
|
|
66
|
+
* - `visible={false}` hides the content in a `display:none` container.
|
|
67
|
+
* Tool state that must survive shell changes belongs above this component.
|
|
77
68
|
* - The hidden/floating/bottomSheet root branches carry distinct React keys:
|
|
78
69
|
* the rAF animations write opacity/transform straight to the DOM, and DOM
|
|
79
70
|
* reuse across branches (e.g. an async persisted-mode flip mid-entrance)
|
|
@@ -134,59 +125,6 @@ const screenH = () => typeof window !== "undefined" ? window.innerHeight : 0;
|
|
|
134
125
|
// STORAGE — exact native ModalStorage semantics over localStorage
|
|
135
126
|
// ============================================================================
|
|
136
127
|
|
|
137
|
-
/**
|
|
138
|
-
* Local localStorage-backed adapter matching the shared `persistentStorage`
|
|
139
|
-
* API surface JsModal uses (getItem/setItem). Same recipe as the app shims
|
|
140
|
-
* (example-tauri/src/shims/shared-ui.web.ts).
|
|
141
|
-
*/
|
|
142
|
-
const webPersistentStorage = {
|
|
143
|
-
async getItem(key) {
|
|
144
|
-
try {
|
|
145
|
-
return window.localStorage.getItem(key);
|
|
146
|
-
} catch {
|
|
147
|
-
return null;
|
|
148
|
-
}
|
|
149
|
-
},
|
|
150
|
-
async setItem(key, value) {
|
|
151
|
-
try {
|
|
152
|
-
window.localStorage.setItem(key, value);
|
|
153
|
-
} catch {
|
|
154
|
-
// Best-effort, like native's swallowed save errors.
|
|
155
|
-
}
|
|
156
|
-
}
|
|
157
|
-
};
|
|
158
|
-
|
|
159
|
-
/** Persisted JSON shape — identical to native `PersistedModalState`. */
|
|
160
|
-
|
|
161
|
-
/** Native `ModalStorage` twin: memory cache in front of persistent storage. */
|
|
162
|
-
class ModalStorage {
|
|
163
|
-
static memoryCache = {};
|
|
164
|
-
static async save(key, value) {
|
|
165
|
-
try {
|
|
166
|
-
this.memoryCache[key] = value;
|
|
167
|
-
await webPersistentStorage.setItem(key, JSON.stringify(value));
|
|
168
|
-
} catch {
|
|
169
|
-
// Failed to save modal state
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
static async load(key) {
|
|
173
|
-
try {
|
|
174
|
-
if (this.memoryCache[key]) {
|
|
175
|
-
return this.memoryCache[key];
|
|
176
|
-
}
|
|
177
|
-
const stored = await webPersistentStorage.getItem(key);
|
|
178
|
-
if (stored) {
|
|
179
|
-
const parsed = JSON.parse(stored);
|
|
180
|
-
this.memoryCache[key] = parsed;
|
|
181
|
-
return parsed;
|
|
182
|
-
}
|
|
183
|
-
} catch {
|
|
184
|
-
// Failed to load modal state
|
|
185
|
-
}
|
|
186
|
-
return null;
|
|
187
|
-
}
|
|
188
|
-
}
|
|
189
|
-
|
|
190
128
|
// ============================================================================
|
|
191
129
|
// TYPES — same exported names as native
|
|
192
130
|
// ============================================================================
|
|
@@ -408,8 +346,8 @@ const WC_COLORS = {
|
|
|
408
346
|
minimize: "#FEBC2E",
|
|
409
347
|
toggleMode: "#28C840"
|
|
410
348
|
};
|
|
411
|
-
const WC_BUTTON_SIZE =
|
|
412
|
-
const WC_BUTTON_SPACING =
|
|
349
|
+
const WC_BUTTON_SIZE = 24;
|
|
350
|
+
const WC_BUTTON_SPACING = 2;
|
|
413
351
|
const WC_ICON_SIZE = 8; // native ICON_SIZE
|
|
414
352
|
|
|
415
353
|
const wcDotStyle = bg => ({
|
|
@@ -419,7 +357,7 @@ const wcDotStyle = bg => ({
|
|
|
419
357
|
display: "flex",
|
|
420
358
|
alignItems: "center",
|
|
421
359
|
justifyContent: "center",
|
|
422
|
-
|
|
360
|
+
background: `radial-gradient(circle, ${bg} 6px, transparent 6px)`,
|
|
423
361
|
border: "none",
|
|
424
362
|
padding: 0,
|
|
425
363
|
cursor: "pointer",
|
|
@@ -492,10 +430,10 @@ const DragIndicator = /*#__PURE__*/(0, _react.memo)(function DragIndicator({
|
|
|
492
430
|
alignItems: "center",
|
|
493
431
|
position: "relative",
|
|
494
432
|
// native dragIndicatorContainer: paddingVertical 8; custom variant
|
|
495
|
-
//
|
|
433
|
+
// reserves room for the browser window controls
|
|
496
434
|
// so the header row below can run the full width.
|
|
497
435
|
justifyContent: hasCustomContent ? "center" : undefined,
|
|
498
|
-
minHeight: hasCustomContent ?
|
|
436
|
+
minHeight: hasCustomContent ? 32 : undefined,
|
|
499
437
|
paddingTop: hasCustomContent ? 0 : 8,
|
|
500
438
|
paddingBottom: hasCustomContent ? 0 : 8,
|
|
501
439
|
backgroundColor: "transparent"
|
|
@@ -770,6 +708,8 @@ const JsModalComponent = ({
|
|
|
770
708
|
const [insets] = (0, _react.useState)(readSafeAreaInsets);
|
|
771
709
|
const [isStateLoaded, setIsStateLoaded] = (0, _react.useState)(!enablePersistence);
|
|
772
710
|
const [mode, setMode] = (0, _react.useState)(initialMode);
|
|
711
|
+
const onModeChangeRef = (0, _react.useRef)(onModeChange);
|
|
712
|
+
onModeChangeRef.current = onModeChange;
|
|
773
713
|
const [isResizing, setIsResizing] = (0, _react.useState)(false);
|
|
774
714
|
const [isDragging, setIsDragging] = (0, _react.useState)(false);
|
|
775
715
|
const [panelHeight, setPanelHeight] = (0, _react.useState)(initialHeight);
|
|
@@ -819,11 +759,11 @@ const JsModalComponent = ({
|
|
|
819
759
|
}
|
|
820
760
|
let mounted = true;
|
|
821
761
|
const loadState = async () => {
|
|
822
|
-
const savedState = await ModalStorage.load(persistenceKey);
|
|
762
|
+
const savedState = await _modalStorage.ModalStorage.load(persistenceKey);
|
|
823
763
|
if (mounted && savedState) {
|
|
824
764
|
if (savedState.mode) {
|
|
825
765
|
setMode(savedState.mode);
|
|
826
|
-
|
|
766
|
+
onModeChangeRef.current?.(savedState.mode);
|
|
827
767
|
}
|
|
828
768
|
if (savedState.panelHeight) {
|
|
829
769
|
setPanelHeight(savedState.panelHeight);
|
|
@@ -847,11 +787,11 @@ const JsModalComponent = ({
|
|
|
847
787
|
mounted = false;
|
|
848
788
|
};
|
|
849
789
|
// eslint-disable-next-line react-hooks/exhaustive-deps
|
|
850
|
-
}, [persistenceKey, enablePersistence
|
|
790
|
+
}, [persistenceKey, enablePersistence]);
|
|
851
791
|
(0, _react.useEffect)(() => {
|
|
852
792
|
if (!enablePersistence || !persistenceKey || !isStateLoaded) return;
|
|
853
793
|
const timeoutId = setTimeout(() => {
|
|
854
|
-
ModalStorage.save(persistenceKey, {
|
|
794
|
+
_modalStorage.ModalStorage.save(persistenceKey, {
|
|
855
795
|
mode,
|
|
856
796
|
panelHeight: currentHeightRef.current,
|
|
857
797
|
dimensions,
|
|
@@ -869,7 +809,7 @@ const JsModalComponent = ({
|
|
|
869
809
|
const loadHintStatus = async () => {
|
|
870
810
|
try {
|
|
871
811
|
const hintKey = _devToolsStorageKeys.devToolsStorageKeys.modal.hintAcknowledged();
|
|
872
|
-
const acknowledged = await
|
|
812
|
+
const acknowledged = await _persistentStorage.persistentStorage.getItem(hintKey);
|
|
873
813
|
if (mounted) {
|
|
874
814
|
setShowHint(acknowledged !== "true");
|
|
875
815
|
setHintLoaded(true);
|
|
@@ -889,7 +829,7 @@ const JsModalComponent = ({
|
|
|
889
829
|
const handleHintAcknowledge = (0, _react.useCallback)(async () => {
|
|
890
830
|
try {
|
|
891
831
|
const hintKey = _devToolsStorageKeys.devToolsStorageKeys.modal.hintAcknowledged();
|
|
892
|
-
await
|
|
832
|
+
await _persistentStorage.persistentStorage.setItem(hintKey, "true");
|
|
893
833
|
setShowHint(false);
|
|
894
834
|
} catch {
|
|
895
835
|
setShowHint(false);
|
|
@@ -902,12 +842,10 @@ const JsModalComponent = ({
|
|
|
902
842
|
const toggleMode = (0, _react.useCallback)(() => {
|
|
903
843
|
setIsDragging(false);
|
|
904
844
|
setIsResizing(false);
|
|
905
|
-
|
|
906
|
-
|
|
907
|
-
|
|
908
|
-
|
|
909
|
-
});
|
|
910
|
-
}, [onModeChange]);
|
|
845
|
+
const newMode = mode === "bottomSheet" ? "floating" : "bottomSheet";
|
|
846
|
+
setMode(newMode);
|
|
847
|
+
onModeChangeRef.current?.(newMode);
|
|
848
|
+
}, [mode]);
|
|
911
849
|
|
|
912
850
|
// Belt-and-suspenders: also clear flags when mode changes (native parity).
|
|
913
851
|
(0, _react.useEffect)(() => {
|
|
@@ -928,6 +866,7 @@ const JsModalComponent = ({
|
|
|
928
866
|
height: currentDimensionsRef.current.height
|
|
929
867
|
}
|
|
930
868
|
};
|
|
869
|
+
if (enablePersistence && persistenceKey) void _modalStorage.ModalStorage.saveMinimized(persistenceKey, currentState);
|
|
931
870
|
|
|
932
871
|
// native defaults: SCREEN.width - 50 / SCREEN.height - 150
|
|
933
872
|
const targetX = minimizeTargetPosition?.x ?? screenW() - 50;
|
|
@@ -964,7 +903,7 @@ const JsModalComponent = ({
|
|
|
964
903
|
el.style.transform = `translate(${x}px, ${y}px)`;
|
|
965
904
|
}, () => onMinimize(currentState)));
|
|
966
905
|
}
|
|
967
|
-
}, [mode, onMinimize, minimizeTargetPosition, cancelAnims]);
|
|
906
|
+
}, [mode, onMinimize, minimizeTargetPosition, cancelAnims, enablePersistence, persistenceKey]);
|
|
968
907
|
const lastMinimizeRequest = (0, _react.useRef)(minimizeRequest);
|
|
969
908
|
(0, _react.useEffect)(() => {
|
|
970
909
|
if (lastMinimizeRequest.current === minimizeRequest) return;
|
|
@@ -977,7 +916,7 @@ const JsModalComponent = ({
|
|
|
977
916
|
if (!initialModalState) return;
|
|
978
917
|
if (initialModalState.mode) {
|
|
979
918
|
setMode(initialModalState.mode);
|
|
980
|
-
|
|
919
|
+
onModeChangeRef.current?.(initialModalState.mode);
|
|
981
920
|
}
|
|
982
921
|
if (initialModalState.panelHeight) {
|
|
983
922
|
setPanelHeight(initialModalState.panelHeight);
|
|
@@ -1024,9 +963,7 @@ const JsModalComponent = ({
|
|
|
1024
963
|
} else {
|
|
1025
964
|
const el = floatRef.current;
|
|
1026
965
|
if (!el) return;
|
|
1027
|
-
// Restore
|
|
1028
|
-
// the last committed rect so the panel doesn't reopen at the minimize
|
|
1029
|
-
// target the web AppHost never restores via initialModalState.
|
|
966
|
+
// Restore the saved position after the minimize animation.
|
|
1030
967
|
posRef.current = {
|
|
1031
968
|
x: currentDimensionsRef.current.left,
|
|
1032
969
|
y: currentDimensionsRef.current.top
|
|
@@ -1084,7 +1021,7 @@ const JsModalComponent = ({
|
|
|
1084
1021
|
if (mode !== "bottomSheet") return;
|
|
1085
1022
|
// Ignore clicks on interactive header children (window controls live
|
|
1086
1023
|
// outside the header, but custom content may contain buttons).
|
|
1087
|
-
if (e.target.closest("button")) return;
|
|
1024
|
+
if (e.button !== 0 || e.target.closest('button, a, input, textarea, select, [role="button"], [role="tab"], [role="switch"], [contenteditable="true"], [tabindex]')) return;
|
|
1088
1025
|
const g = sheetGestureRef.current;
|
|
1089
1026
|
g.active = true;
|
|
1090
1027
|
g.resizing = false;
|
|
@@ -1189,7 +1126,7 @@ const JsModalComponent = ({
|
|
|
1189
1126
|
const handleFloatPointerDown = (0, _react.useCallback)(e => {
|
|
1190
1127
|
// native: DraggableHeader enabled = mode === "floating" && !isResizing
|
|
1191
1128
|
if (mode !== "floating" || isResizing) return;
|
|
1192
|
-
if (e.target.closest("button")) return;
|
|
1129
|
+
if (e.button !== 0 || e.target.closest('button, a, input, textarea, select, [role="button"], [role="tab"], [role="switch"], [contenteditable="true"], [tabindex]')) return;
|
|
1193
1130
|
const g = dragGestureRef.current;
|
|
1194
1131
|
g.active = true;
|
|
1195
1132
|
g.dragging = false;
|
|
@@ -23,7 +23,7 @@ Object.defineProperty(exports, "isClipboardAvailable", {
|
|
|
23
23
|
return _clipboardImpl.isClipboardAvailable;
|
|
24
24
|
}
|
|
25
25
|
});
|
|
26
|
-
var _clipboardImpl = require("./clipboard-impl
|
|
26
|
+
var _clipboardImpl = require("./clipboard-impl");
|
|
27
27
|
/**
|
|
28
28
|
* Auto-detect Clipboard Implementation
|
|
29
29
|
*
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
exports.isClipboardAvailable = exports.clipboardType = exports.clipboardFunction = void 0;
|
|
7
|
+
const isClipboardAvailable = () => typeof navigator !== "undefined" && typeof navigator.clipboard?.writeText === "function";
|
|
8
|
+
exports.isClipboardAvailable = isClipboardAvailable;
|
|
9
|
+
const clipboardType = () => isClipboardAvailable() ? "web" : null;
|
|
10
|
+
exports.clipboardType = clipboardType;
|
|
11
|
+
const clipboardFunction = async text => {
|
|
12
|
+
try {
|
|
13
|
+
if (!isClipboardAvailable()) return false;
|
|
14
|
+
await navigator.clipboard.writeText(text);
|
|
15
|
+
return true;
|
|
16
|
+
} catch {
|
|
17
|
+
// Clipboard access can be denied even in a secure context.
|
|
18
|
+
return false;
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
exports.clipboardFunction = clipboardFunction;
|
|
@@ -297,8 +297,10 @@ function stringifyValue(value, compact = true) {
|
|
|
297
297
|
return `"${value}"`;
|
|
298
298
|
}
|
|
299
299
|
if (typeof value === "number") {
|
|
300
|
-
//
|
|
301
|
-
|
|
300
|
+
// The exact value. toLocaleString() added separators (1019 read as
|
|
301
|
+
// "1,019", like a string) and rounded to three decimals, so a diff could
|
|
302
|
+
// show a change that looked like nothing, or hide one that was real.
|
|
303
|
+
return String(value);
|
|
302
304
|
}
|
|
303
305
|
if (typeof value === "boolean") {
|
|
304
306
|
return String(value);
|
|
@@ -73,5 +73,5 @@ var _useFilterManager = require("./useFilterManager.js");
|
|
|
73
73
|
var _usePersistedState = require("./usePersistedState.js");
|
|
74
74
|
var _useChangeLog = require("./useChangeLog.js");
|
|
75
75
|
var _useEventStoreEvents = require("./useEventStoreEvents.js");
|
|
76
|
-
var _useSafeAreaInsets = require("./useSafeAreaInsets
|
|
76
|
+
var _useSafeAreaInsets = require("./useSafeAreaInsets");
|
|
77
77
|
var _useDeviceInfo = require("./useDeviceInfo.js");
|
|
@@ -7,7 +7,7 @@ exports.useNativeSafeAreaInsets = exports.safeAreaType = exports.hasSafeAreaPack
|
|
|
7
7
|
/**
|
|
8
8
|
* Auto-generated safe area implementation
|
|
9
9
|
* Detected: none
|
|
10
|
-
* Generated at: 2026-09-
|
|
10
|
+
* Generated at: 2026-09-28T19:22:44.461Z
|
|
11
11
|
*
|
|
12
12
|
* DO NOT EDIT - This file is generated by scripts/detect-safe-area.js
|
|
13
13
|
*
|
|
@@ -6,7 +6,7 @@ Object.defineProperty(exports, "__esModule", {
|
|
|
6
6
|
exports.resetPersistedStateCache = resetPersistedStateCache;
|
|
7
7
|
exports.usePersistedState = usePersistedState;
|
|
8
8
|
var _react = require("react");
|
|
9
|
-
var _persistentStorage = require("../utils/persistentStorage
|
|
9
|
+
var _persistentStorage = require("../utils/persistentStorage");
|
|
10
10
|
/**
|
|
11
11
|
* Per-key cache so remounts (and multiple consumers of the same key) render
|
|
12
12
|
* the last-known value immediately instead of flashing the default while the
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
|
|
3
|
+
Object.defineProperty(exports, "__esModule", {
|
|
4
|
+
value: true
|
|
5
|
+
});
|
|
6
|
+
Object.defineProperty(exports, "getSafeAreaInsets", {
|
|
7
|
+
enumerable: true,
|
|
8
|
+
get: function () {
|
|
9
|
+
return _getSafeAreaInsetsWeb.getSafeAreaInsets;
|
|
10
|
+
}
|
|
11
|
+
});
|
|
12
|
+
exports.hasNotch = void 0;
|
|
13
|
+
exports.useSafeAreaInsets = useSafeAreaInsets;
|
|
14
|
+
var _react = require("react");
|
|
15
|
+
var _getSafeAreaInsetsWeb = require("../utils/getSafeAreaInsets.web.js");
|
|
16
|
+
function useSafeAreaInsets(options = {}) {
|
|
17
|
+
const [insets, setInsets] = (0, _react.useState)({
|
|
18
|
+
top: 0,
|
|
19
|
+
bottom: 0,
|
|
20
|
+
left: 0,
|
|
21
|
+
right: 0
|
|
22
|
+
});
|
|
23
|
+
(0, _react.useEffect)(() => {
|
|
24
|
+
const update = () => setInsets((0, _getSafeAreaInsetsWeb.getSafeAreaInsets)());
|
|
25
|
+
update();
|
|
26
|
+
window.addEventListener("resize", update);
|
|
27
|
+
window.visualViewport?.addEventListener("resize", update);
|
|
28
|
+
return () => {
|
|
29
|
+
window.removeEventListener("resize", update);
|
|
30
|
+
window.visualViewport?.removeEventListener("resize", update);
|
|
31
|
+
};
|
|
32
|
+
}, []);
|
|
33
|
+
return {
|
|
34
|
+
top: Math.max(insets.top, options.minTop ?? 0),
|
|
35
|
+
bottom: Math.max(insets.bottom, options.minBottom ?? 0),
|
|
36
|
+
left: Math.max(insets.left, options.minLeft ?? 0),
|
|
37
|
+
right: Math.max(insets.right, options.minRight ?? 0)
|
|
38
|
+
};
|
|
39
|
+
}
|
|
40
|
+
const hasNotch = () => (0, _getSafeAreaInsetsWeb.getSafeAreaInsets)().hasNotch;
|
|
41
|
+
exports.hasNotch = hasNotch;
|
|
@@ -101,6 +101,8 @@ var _exportNames = {
|
|
|
101
101
|
WifiBifIcon: true,
|
|
102
102
|
BenchmarkIcon: true,
|
|
103
103
|
BENCHMARK_ICON_COLOR: true,
|
|
104
|
+
NotificationsIcon: true,
|
|
105
|
+
NOTIFICATIONS_ICON_COLOR: true,
|
|
104
106
|
EnvLaptopIcon: true,
|
|
105
107
|
LaptopIcon: true,
|
|
106
108
|
ReactQueryIcon: true,
|
|
@@ -507,6 +509,12 @@ Object.defineProperty(exports, "NETWORK_ICON_COLOR", {
|
|
|
507
509
|
return _floatingToolsCore.NETWORK_ICON_COLOR;
|
|
508
510
|
}
|
|
509
511
|
});
|
|
512
|
+
Object.defineProperty(exports, "NOTIFICATIONS_ICON_COLOR", {
|
|
513
|
+
enumerable: true,
|
|
514
|
+
get: function () {
|
|
515
|
+
return _floatingToolsCore.NOTIFICATIONS_ICON_COLOR;
|
|
516
|
+
}
|
|
517
|
+
});
|
|
510
518
|
Object.defineProperty(exports, "Navigation", {
|
|
511
519
|
enumerable: true,
|
|
512
520
|
get: function () {
|
|
@@ -525,6 +533,12 @@ Object.defineProperty(exports, "NetworkIcon", {
|
|
|
525
533
|
return _floatingToolsCore.NetworkIcon;
|
|
526
534
|
}
|
|
527
535
|
});
|
|
536
|
+
Object.defineProperty(exports, "NotificationsIcon", {
|
|
537
|
+
enumerable: true,
|
|
538
|
+
get: function () {
|
|
539
|
+
return _floatingToolsCore.NotificationsIcon;
|
|
540
|
+
}
|
|
541
|
+
});
|
|
528
542
|
Object.defineProperty(exports, "Palette", {
|
|
529
543
|
enumerable: true,
|
|
530
544
|
get: function () {
|
package/lib/commonjs/index.js
CHANGED
|
@@ -53,6 +53,9 @@ var _exportNames = {
|
|
|
53
53
|
getSafeCurrentPathname: true,
|
|
54
54
|
getSafeCurrentRoute: true,
|
|
55
55
|
isExpoRouterAvailable: true,
|
|
56
|
+
registerBrowserRouter: true,
|
|
57
|
+
browserRouter: true,
|
|
58
|
+
subscribeBrowserNavigation: true,
|
|
56
59
|
PREVIEW_ITEM_RENDER_BYTE_LIMIT: true,
|
|
57
60
|
createRestoreScope: true,
|
|
58
61
|
emptyRestoreResult: true,
|
|
@@ -316,6 +319,12 @@ Object.defineProperty(exports, "assertAccountAccess", {
|
|
|
316
319
|
return _licenseModule.assertAccountAccess;
|
|
317
320
|
}
|
|
318
321
|
});
|
|
322
|
+
Object.defineProperty(exports, "browserRouter", {
|
|
323
|
+
enumerable: true,
|
|
324
|
+
get: function () {
|
|
325
|
+
return _browserNavigation.browserRouter;
|
|
326
|
+
}
|
|
327
|
+
});
|
|
319
328
|
Object.defineProperty(exports, "buoyColors", {
|
|
320
329
|
enumerable: true,
|
|
321
330
|
get: function () {
|
|
@@ -628,6 +637,12 @@ Object.defineProperty(exports, "refreshGameUIColors", {
|
|
|
628
637
|
return _gameUIColors.refreshGameUIColors;
|
|
629
638
|
}
|
|
630
639
|
});
|
|
640
|
+
Object.defineProperty(exports, "registerBrowserRouter", {
|
|
641
|
+
enumerable: true,
|
|
642
|
+
get: function () {
|
|
643
|
+
return _browserNavigation.registerBrowserRouter;
|
|
644
|
+
}
|
|
645
|
+
});
|
|
631
646
|
Object.defineProperty(exports, "registerStateSnapshotProvider", {
|
|
632
647
|
enumerable: true,
|
|
633
648
|
get: function () {
|
|
@@ -700,6 +715,12 @@ Object.defineProperty(exports, "subscribeAccountAccess", {
|
|
|
700
715
|
return _licenseModule.subscribeAccountAccess;
|
|
701
716
|
}
|
|
702
717
|
});
|
|
718
|
+
Object.defineProperty(exports, "subscribeBrowserNavigation", {
|
|
719
|
+
enumerable: true,
|
|
720
|
+
get: function () {
|
|
721
|
+
return _browserNavigation.subscribeBrowserNavigation;
|
|
722
|
+
}
|
|
723
|
+
});
|
|
703
724
|
Object.defineProperty(exports, "subscribeToStateSnapshotProviders", {
|
|
704
725
|
enumerable: true,
|
|
705
726
|
get: function () {
|
|
@@ -983,6 +1004,19 @@ Object.keys(_toolUiBridge).forEach(function (key) {
|
|
|
983
1004
|
});
|
|
984
1005
|
});
|
|
985
1006
|
var _index3 = require("./utils/index.js");
|
|
1007
|
+
var _toolModules = require("./utils/toolModules.js");
|
|
1008
|
+
Object.keys(_toolModules).forEach(function (key) {
|
|
1009
|
+
if (key === "default" || key === "__esModule") return;
|
|
1010
|
+
if (Object.prototype.hasOwnProperty.call(_exportNames, key)) return;
|
|
1011
|
+
if (key in exports && exports[key] === _toolModules[key]) return;
|
|
1012
|
+
Object.defineProperty(exports, key, {
|
|
1013
|
+
enumerable: true,
|
|
1014
|
+
get: function () {
|
|
1015
|
+
return _toolModules[key];
|
|
1016
|
+
}
|
|
1017
|
+
});
|
|
1018
|
+
});
|
|
1019
|
+
var _browserNavigation = require("./utils/browserNavigation.js");
|
|
986
1020
|
var _snapshotProviderKit = require("./utils/snapshotProviderKit.js");
|
|
987
1021
|
var _stateTools = require("./utils/stateTools.js");
|
|
988
1022
|
var _index4 = require("./utils/formatting/index.js");
|