@buoy-gg/shared-ui 7.0.41 → 7.0.42
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dataViewer.js +1 -9
- package/floating.js +1 -2
- package/history.js +1 -7
- package/hooks.js +1 -7
- package/lib/commonjs/JsModal.js +1 -1766
- package/lib/commonjs/JsModal.web.js +1 -1589
- package/lib/commonjs/clipboard/autoDetectClipboard.js +1 -67
- package/lib/commonjs/clipboard/clipboard-impl.js +1 -128
- package/lib/commonjs/clipboard/clipboard-impl.web.js +1 -21
- package/lib/commonjs/clipboard/copyToClipboard.js +1 -64
- package/lib/commonjs/clipboard/index.js +1 -25
- package/lib/commonjs/colors/index.js +1 -49
- package/lib/commonjs/context/HintsContext.js +1 -49
- package/lib/commonjs/context/index.js +1 -24
- package/lib/commonjs/dataViewer/CyberpunkInput.js +1 -388
- package/lib/commonjs/dataViewer/DataTreeActionBar.js +1 -390
- package/lib/commonjs/dataViewer/DataTreeActionDock.js +1 -226
- package/lib/commonjs/dataViewer/DataViewer.js +1 -158
- package/lib/commonjs/dataViewer/DiffSummary.js +1 -134
- package/lib/commonjs/dataViewer/IndentGuides.js +1 -128
- package/lib/commonjs/dataViewer/IndentGuidesOverlay.js +1 -104
- package/lib/commonjs/dataViewer/JsonStringNotice.js +1 -59
- package/lib/commonjs/dataViewer/LiveExplorer.js +1 -943
- package/lib/commonjs/dataViewer/SplitDiffViewer.js +1 -421
- package/lib/commonjs/dataViewer/ThemedSplitView.js +1 -642
- package/lib/commonjs/dataViewer/TimestampDeltaBar.js +1 -96
- package/lib/commonjs/dataViewer/TypeLegend.js +1 -111
- package/lib/commonjs/dataViewer/ValueEditModal.js +1 -386
- package/lib/commonjs/dataViewer/VirtualizedDataExplorer.js +1 -1270
- package/lib/commonjs/dataViewer/diffThemes.js +1 -113
- package/lib/commonjs/dataViewer/index.js +1 -320
- package/lib/commonjs/dataViewer/jsonOps.js +1 -320
- package/lib/commonjs/dataViewer/jsonStringValue.js +1 -94
- package/lib/commonjs/dataViewer/lineDiff.js +1 -568
- package/lib/commonjs/dataViewer/nestedPath.js +1 -115
- package/lib/commonjs/dataViewer/objectDiff.js +1 -304
- package/lib/commonjs/dataViewer/timestampDiff.js +1 -146
- package/lib/commonjs/dataViewer/tree/TreeDiffViewer.js +1 -915
- package/lib/commonjs/dataViewer/treeActions.js +1 -168
- package/lib/commonjs/dataViewer/useTreeDraft.js +1 -125
- package/lib/commonjs/dataViewer/useTreeEditor.js +1 -105
- package/lib/commonjs/env/EnvironmentIndicator.js +1 -129
- package/lib/commonjs/env/EnvironmentIndicator.web.js +1 -114
- package/lib/commonjs/env/EnvironmentSelector.js +1 -205
- package/lib/commonjs/env/EnvironmentSelectorInline.js +1 -299
- package/lib/commonjs/env/EnvironmentSelectorInline.web.js +1 -178
- package/lib/commonjs/history/HistoryProvider.js +1 -246
- package/lib/commonjs/history/components/HistoryEntryRow.js +1 -146
- package/lib/commonjs/history/components/HistoryList.js +1 -174
- package/lib/commonjs/history/components/index.js +1 -25
- package/lib/commonjs/history/index.js +1 -61
- package/lib/commonjs/history/types.js +1 -5
- package/lib/commonjs/hooks/index.js +1 -77
- package/lib/commonjs/hooks/safe-area-impl.js +1 -28
- package/lib/commonjs/hooks/useChangeLog.js +1 -55
- package/lib/commonjs/hooks/useDeviceInfo.js +1 -524
- package/lib/commonjs/hooks/useEventStoreEvents.js +1 -65
- package/lib/commonjs/hooks/useFilterManager.js +1 -136
- package/lib/commonjs/hooks/usePersistedState.js +1 -106
- package/lib/commonjs/hooks/useSafeAreaInsets.js +1 -250
- package/lib/commonjs/hooks/useSafeAreaInsets.web.js +1 -41
- package/lib/commonjs/icons/BenchmarkIcon.js +1 -109
- package/lib/commonjs/icons/EnvLaptopIcon.js +1 -204
- package/lib/commonjs/icons/IconBackground.js +1 -279
- package/lib/commonjs/icons/ReactQueryIcon.js +1 -17
- package/lib/commonjs/icons/RenderCountIcon.js +1 -147
- package/lib/commonjs/icons/RouteMapIcon.js +1 -250
- package/lib/commonjs/icons/SentryBugIcon.js +1 -19
- package/lib/commonjs/icons/StackPulseIcon.js +1 -158
- package/lib/commonjs/icons/StorageStackIcon.js +1 -156
- package/lib/commonjs/icons/WifiCircuitIcon.js +1 -169
- package/lib/commonjs/icons/index.js +1 -840
- package/lib/commonjs/icons/lucide-icons-original-full.js +1 -3248
- package/lib/commonjs/icons/lucide-icons.js +1 -2476
- package/lib/commonjs/icons/primitives/GlobeIcon.js +1 -66
- package/lib/commonjs/icons/primitives/icon-primitives.js +1 -169
- package/lib/commonjs/icons/primitives/index.js +1 -49
- package/lib/commonjs/index.js +1 -1132
- package/lib/commonjs/license/AccountSetup.js +1 -35
- package/lib/commonjs/license/AccountSetup.web.js +2 -83
- package/lib/commonjs/license/AccountSetupContent.js +1 -482
- package/lib/commonjs/license/FeatureGate.js +1 -788
- package/lib/commonjs/license/FreeAccountPrompt.js +1 -59
- package/lib/commonjs/license/LicenseEntryModal.js +2 -387
- package/lib/commonjs/license/accountRuntime.js +1 -8
- package/lib/commonjs/license/accountRuntime.web.js +1 -9
- package/lib/commonjs/license/index.js +1 -106
- package/lib/commonjs/license/licenseModule.js +1 -121
- package/lib/commonjs/license/openPricing.js +1 -36
- package/lib/commonjs/license/tierLimits.js +1 -128
- package/lib/commonjs/logger/index-sentry.js +1 -245
- package/lib/commonjs/logger/index.js +1 -62
- package/lib/commonjs/logger/logDump.js +1 -19
- package/lib/commonjs/logger/types.js +1 -38
- package/lib/commonjs/settings/components/BubbleSettingsSection.js +1 -384
- package/lib/commonjs/settings/index.js +1 -24
- package/lib/commonjs/storage/definePersistedSetting.js +1 -67
- package/lib/commonjs/storage/devToolsStorageKeys.js +1 -359
- package/lib/commonjs/storage/index.js +1 -25
- package/lib/commonjs/stores/BaseEventStore.js +1 -343
- package/lib/commonjs/stores/ChangeLog.js +1 -197
- package/lib/commonjs/stores/createToolStore.js +1 -193
- package/lib/commonjs/stores/floatingToolStore.js +1 -71
- package/lib/commonjs/stores/floatingToolStore.test.js +1 -112
- package/lib/commonjs/stores/ignoredPatternsCore.js +1 -75
- package/lib/commonjs/stores/ignoredPatternsStore.js +1 -16
- package/lib/commonjs/stores/ignoredPatternsStore.shared.js +1 -205
- package/lib/commonjs/stores/ignoredPatternsStore.web.js +1 -16
- package/lib/commonjs/stores/index.js +1 -51
- package/lib/commonjs/sync/keyedArrays.js +1 -209
- package/lib/commonjs/sync/toolActionRegistry.js +1 -249
- package/lib/commonjs/sync/toolAttention.test.js +1 -51
- package/lib/commonjs/sync/toolSyncAdapter.js +1 -63
- package/lib/commonjs/sync/toolUiBridge.js +1 -132
- package/lib/commonjs/sync/typedEdit.js +1 -228
- package/lib/commonjs/sync/valuePath.js +1 -337
- package/lib/commonjs/sync/valueShape.js +1 -161
- package/lib/commonjs/sync/wireBudget.js +1 -97
- package/lib/commonjs/sync/wireForm.js +1 -172
- package/lib/commonjs/tools/defineTool.js +1 -79
- package/lib/commonjs/types/types.d.js +1 -1
- package/lib/commonjs/types/types.js +1 -37
- package/lib/commonjs/ui/backgrounds/BackgroundSwitcher.js +1 -354
- package/lib/commonjs/ui/backgrounds/ToolBackground.js +1 -76
- package/lib/commonjs/ui/backgrounds/backgroundStore.js +1 -130
- package/lib/commonjs/ui/backgrounds/index.js +1 -167
- package/lib/commonjs/ui/backgrounds/primitives.js +1 -369
- package/lib/commonjs/ui/backgrounds/registry.js +1 -98
- package/lib/commonjs/ui/backgrounds/rng.js +1 -93
- package/lib/commonjs/ui/backgrounds/skyClock.js +1 -45
- package/lib/commonjs/ui/backgrounds/types.js +1 -1
- package/lib/commonjs/ui/backgrounds/variants/daylight.js +1 -453
- package/lib/commonjs/ui/backgrounds/variants/deepField.js +1 -381
- package/lib/commonjs/ui/backgrounds/variants/hyperspace.js +1 -218
- package/lib/commonjs/ui/backgrounds/variants/liveSky.js +1 -898
- package/lib/commonjs/ui/backgrounds/variants/meteors.js +1 -401
- package/lib/commonjs/ui/backgrounds/variants/moonlight.js +1 -472
- package/lib/commonjs/ui/backgrounds/variants/underwater.js +1 -757
- package/lib/commonjs/ui/backgrounds/variants/wormhole/motion.js +1 -48
- package/lib/commonjs/ui/backgrounds/variants/wormhole/textures.js +1 -3
- package/lib/commonjs/ui/backgrounds/variants/wormhole.js +1 -136
- package/lib/commonjs/ui/components/BackButton.js +1 -47
- package/lib/commonjs/ui/components/Badge.js +1 -226
- package/lib/commonjs/ui/components/ChangeRow.js +1 -111
- package/lib/commonjs/ui/components/ChipStrip.js +1 -94
- package/lib/commonjs/ui/components/ClipboardHintBanner.js +1 -149
- package/lib/commonjs/ui/components/CollapsibleSection.js +1 -170
- package/lib/commonjs/ui/components/CompactFilterChips.js +1 -114
- package/lib/commonjs/ui/components/CompactRow.js +1 -295
- package/lib/commonjs/ui/components/CopyButton.js +1 -307
- package/lib/commonjs/ui/components/DataInspector.js +1 -323
- package/lib/commonjs/ui/components/DetailView.js +1 -358
- package/lib/commonjs/ui/components/DetailViewToggle.js +1 -130
- package/lib/commonjs/ui/components/DevToolsCard.js +1 -126
- package/lib/commonjs/ui/components/DraggableHeader.js +1 -215
- package/lib/commonjs/ui/components/DynamicFilterView.js +1 -758
- package/lib/commonjs/ui/components/EmptyState.js +1 -151
- package/lib/commonjs/ui/components/EntityFilterView.js +1 -355
- package/lib/commonjs/ui/components/EventHistoryViewer/CompareBar.js +1 -211
- package/lib/commonjs/ui/components/EventHistoryViewer/DiffModeTabs.js +1 -99
- package/lib/commonjs/ui/components/EventHistoryViewer/EventHistoryViewer.js +1 -184
- package/lib/commonjs/ui/components/EventHistoryViewer/EventPickerModal.js +1 -208
- package/lib/commonjs/ui/components/EventHistoryViewer/ViewToggleCards.js +1 -137
- package/lib/commonjs/ui/components/EventHistoryViewer/index.js +1 -40
- package/lib/commonjs/ui/components/EventHistoryViewer/types.js +1 -5
- package/lib/commonjs/ui/components/EventListItem.js +1 -247
- package/lib/commonjs/ui/components/EventStepperFooter.js +1 -185
- package/lib/commonjs/ui/components/ExpandablePopover.js +1 -381
- package/lib/commonjs/ui/components/ExpandedInfoRow.js +1 -108
- package/lib/commonjs/ui/components/ExportPreview.js +1 -174
- package/lib/commonjs/ui/components/FilterComponents.js +1 -291
- package/lib/commonjs/ui/components/GripVerticalIcon.js +1 -65
- package/lib/commonjs/ui/components/HeaderSearchButton.js +1 -50
- package/lib/commonjs/ui/components/InfoRow.js +1 -91
- package/lib/commonjs/ui/components/ListItem.js +1 -173
- package/lib/commonjs/ui/components/ModalHeader.js +1 -305
- package/lib/commonjs/ui/components/ModalHintBanner.js +1 -147
- package/lib/commonjs/ui/components/Pill.js +1 -115
- package/lib/commonjs/ui/components/PowerToggleButton.js +1 -78
- package/lib/commonjs/ui/components/SearchBar.js +1 -165
- package/lib/commonjs/ui/components/SectionHeader.js +1 -129
- package/lib/commonjs/ui/components/StatsCard.js +1 -198
- package/lib/commonjs/ui/components/StatusIndicator.js +1 -231
- package/lib/commonjs/ui/components/StorageTypeBadge.js +1 -97
- package/lib/commonjs/ui/components/TabSelector.js +1 -102
- package/lib/commonjs/ui/components/TimeDisplay.js +1 -142
- package/lib/commonjs/ui/components/ToggleRow.js +1 -116
- package/lib/commonjs/ui/components/ToolButton.js +1 -93
- package/lib/commonjs/ui/components/ToolEmptyState.js +1 -154
- package/lib/commonjs/ui/components/ToolFooter.js +1 -205
- package/lib/commonjs/ui/components/ValueTypeBadge.js +1 -147
- package/lib/commonjs/ui/components/WindowControls.js +1 -387
- package/lib/commonjs/ui/components/index.js +1 -507
- package/lib/commonjs/ui/components/windowDrag.js +1 -45
- package/lib/commonjs/ui/console/CyberpunkButtonOutline.js +1 -261
- package/lib/commonjs/ui/console/CyberpunkIconContainer.js +1 -186
- package/lib/commonjs/ui/console/CyberpunkSectionButton.js +1 -123
- package/lib/commonjs/ui/floating/FloatingTool.js +1 -1010
- package/lib/commonjs/ui/floating/FloatingTool.web.js +1 -601
- package/lib/commonjs/ui/floating/FloatingToolHost.js +1 -32
- package/lib/commonjs/ui/floating/FloatingToolHost.web.js +1 -28
- package/lib/commonjs/ui/floating/index.js +1 -105
- package/lib/commonjs/ui/floating/index.web.js +1 -105
- package/lib/commonjs/ui/floating/onboardingConstants.js +1 -70
- package/lib/commonjs/ui/floating/onboardingConstants.web.js +1 -34
- package/lib/commonjs/ui/fonts.js +1 -12
- package/lib/commonjs/ui/gameUI/components/GameUICollapsibleSection.js +1 -121
- package/lib/commonjs/ui/gameUI/components/GameUICompactStats.js +1 -336
- package/lib/commonjs/ui/gameUI/components/GameUIIssuesList.js +1 -284
- package/lib/commonjs/ui/gameUI/components/GameUIStatusHeader.js +1 -145
- package/lib/commonjs/ui/gameUI/constants/gameUIColors.js +1 -224
- package/lib/commonjs/ui/gameUI/constants/macOSDesignSystemColors.js +1 -224
- package/lib/commonjs/ui/gameUI/hooks/useGameUIAlertState.js +1 -110
- package/lib/commonjs/ui/gameUI/index.js +1 -72
- package/lib/commonjs/ui/index.js +1 -217
- package/lib/commonjs/ui/listPresets.js +1 -43
- package/lib/commonjs/ui/night/nightTheme.js +1 -130
- package/lib/commonjs/ui/night/primitives.js +1 -524
- package/lib/commonjs/ui/otto/OttoSceneView.js +1 -69
- package/lib/commonjs/ui/otto/OttoSprite.js +1 -510
- package/lib/commonjs/ui/otto/index.js +1 -60
- package/lib/commonjs/ui/otto/ottoEngine.js +1 -2737
- package/lib/commonjs/ui/otto/ottoScenes.js +1 -949
- package/lib/commonjs/ui/otto/ottoSheet.js +1 -191
- package/lib/commonjs/ui/toolTheme.js +1 -97
- package/lib/commonjs/utils/absoluteFill.js +1 -28
- package/lib/commonjs/utils/browserAsyncStorage.js +1 -157
- package/lib/commonjs/utils/browserNavigation.js +1 -116
- package/lib/commonjs/utils/devServer.js +1 -66
- package/lib/commonjs/utils/devServer.web.js +1 -10
- package/lib/commonjs/utils/displayValue.js +1 -41
- package/lib/commonjs/utils/domRuntime.js +1 -143
- package/lib/commonjs/utils/expoRouterModule.js +1 -51
- package/lib/commonjs/utils/expoRouterModule.web.js +1 -14
- package/lib/commonjs/utils/formatting/dataFormatting.js +1 -102
- package/lib/commonjs/utils/formatting/httpFormatting.js +1 -147
- package/lib/commonjs/utils/formatting/index.js +1 -27
- package/lib/commonjs/utils/getSafeAreaInsets.js +1 -40
- package/lib/commonjs/utils/getSafeAreaInsets.web.js +1 -35
- package/lib/commonjs/utils/index.js +1 -416
- package/lib/commonjs/utils/loadOptionalModule.js +1 -94
- package/lib/commonjs/utils/loadToolModule.js +1 -46
- package/lib/commonjs/utils/loadToolModule.web.js +1 -12
- package/lib/commonjs/utils/minimalSuperJSON.js +1 -347
- package/lib/commonjs/utils/modalStorage.js +1 -42
- package/lib/commonjs/utils/nativeWeb.js +1 -454
- package/lib/commonjs/utils/persistentStorage.js +1 -609
- package/lib/commonjs/utils/persistentStorage.web.js +1 -78
- package/lib/commonjs/utils/realNow.js +1 -0
- package/lib/commonjs/utils/reloadApp.js +1 -105
- package/lib/commonjs/utils/reloadPlatform.js +1 -37
- package/lib/commonjs/utils/reloadPlatform.web.js +1 -17
- package/lib/commonjs/utils/renderCaptureRegistry.js +1 -59
- package/lib/commonjs/utils/safeExpoRouter.js +1 -200
- package/lib/commonjs/utils/safeExpoRouter.web.js +1 -48
- package/lib/commonjs/utils/safeStringify.js +1 -229
- package/lib/commonjs/utils/snapshotProviderKit.js +1 -167
- package/lib/commonjs/utils/stateSnapshotRegistry.js +1 -71
- package/lib/commonjs/utils/stateTools.js +1 -160
- package/lib/commonjs/utils/subscribable.js +1 -113
- package/lib/commonjs/utils/subscriberCountNotifier.js +1 -72
- package/lib/commonjs/utils/time/RelativeTime.js +1 -31
- package/lib/commonjs/utils/time/TickContext.js +1 -43
- package/lib/commonjs/utils/time/formatRelativeTime.js +1 -34
- package/lib/commonjs/utils/time/index.js +1 -39
- package/lib/commonjs/utils/time/useRelativeTime.js +1 -36
- package/lib/commonjs/utils/toolModules.js +1 -25
- package/lib/commonjs/utils/typeHelpers.js +1 -142
- package/lib/commonjs/utils/valueFormatting.js +1 -140
- package/lib/module/JsModal.js +1 -1762
- package/lib/module/JsModal.web.js +1 -1585
- package/lib/module/clipboard/autoDetectClipboard.js +1 -45
- package/lib/module/clipboard/clipboard-impl.js +1 -121
- package/lib/module/clipboard/clipboard-impl.web.js +1 -14
- package/lib/module/clipboard/copyToClipboard.js +1 -60
- package/lib/module/clipboard/index.js +1 -5
- package/lib/module/colors/index.js +1 -21
- package/lib/module/context/HintsContext.js +1 -43
- package/lib/module/context/index.js +1 -3
- package/lib/module/dataViewer/CyberpunkInput.js +1 -384
- package/lib/module/dataViewer/DataTreeActionBar.js +1 -385
- package/lib/module/dataViewer/DataTreeActionDock.js +1 -222
- package/lib/module/dataViewer/DataViewer.js +1 -153
- package/lib/module/dataViewer/DiffSummary.js +1 -129
- package/lib/module/dataViewer/IndentGuides.js +1 -124
- package/lib/module/dataViewer/IndentGuidesOverlay.js +1 -99
- package/lib/module/dataViewer/JsonStringNotice.js +1 -54
- package/lib/module/dataViewer/LiveExplorer.js +1 -937
- package/lib/module/dataViewer/SplitDiffViewer.js +1 -416
- package/lib/module/dataViewer/ThemedSplitView.js +1 -637
- package/lib/module/dataViewer/TimestampDeltaBar.js +1 -91
- package/lib/module/dataViewer/TypeLegend.js +1 -105
- package/lib/module/dataViewer/ValueEditModal.js +1 -382
- package/lib/module/dataViewer/VirtualizedDataExplorer.js +1 -1265
- package/lib/module/dataViewer/diffThemes.js +1 -109
- package/lib/module/dataViewer/index.js +1 -57
- package/lib/module/dataViewer/jsonOps.js +1 -311
- package/lib/module/dataViewer/jsonStringValue.js +1 -89
- package/lib/module/dataViewer/lineDiff.js +1 -564
- package/lib/module/dataViewer/nestedPath.js +1 -109
- package/lib/module/dataViewer/objectDiff.js +1 -297
- package/lib/module/dataViewer/timestampDiff.js +1 -139
- package/lib/module/dataViewer/tree/TreeDiffViewer.js +1 -909
- package/lib/module/dataViewer/treeActions.js +1 -162
- package/lib/module/dataViewer/useTreeDraft.js +1 -121
- package/lib/module/dataViewer/useTreeEditor.js +1 -101
- package/lib/module/env/EnvironmentIndicator.js +1 -125
- package/lib/module/env/EnvironmentIndicator.web.js +1 -108
- package/lib/module/env/EnvironmentSelector.js +1 -201
- package/lib/module/env/EnvironmentSelectorInline.js +1 -295
- package/lib/module/env/EnvironmentSelectorInline.web.js +1 -173
- package/lib/module/history/HistoryProvider.js +1 -237
- package/lib/module/history/components/HistoryEntryRow.js +1 -142
- package/lib/module/history/components/HistoryList.js +1 -169
- package/lib/module/history/components/index.js +1 -8
- package/lib/module/history/index.js +1 -15
- package/lib/module/history/types.js +1 -3
- package/lib/module/hooks/index.js +1 -9
- package/lib/module/hooks/safe-area-impl.js +1 -23
- package/lib/module/hooks/useChangeLog.js +1 -50
- package/lib/module/hooks/useDeviceInfo.js +1 -519
- package/lib/module/hooks/useEventStoreEvents.js +1 -61
- package/lib/module/hooks/useFilterManager.js +1 -132
- package/lib/module/hooks/usePersistedState.js +1 -102
- package/lib/module/hooks/useSafeAreaInsets.js +1 -245
- package/lib/module/hooks/useSafeAreaInsets.web.js +1 -30
- package/lib/module/icons/BenchmarkIcon.js +1 -104
- package/lib/module/icons/EnvLaptopIcon.js +1 -199
- package/lib/module/icons/IconBackground.js +1 -274
- package/lib/module/icons/ReactQueryIcon.js +1 -12
- package/lib/module/icons/RenderCountIcon.js +1 -142
- package/lib/module/icons/RouteMapIcon.js +1 -245
- package/lib/module/icons/SentryBugIcon.js +1 -14
- package/lib/module/icons/StackPulseIcon.js +1 -153
- package/lib/module/icons/StorageStackIcon.js +1 -151
- package/lib/module/icons/WifiCircuitIcon.js +1 -164
- package/lib/module/icons/index.js +1 -63
- package/lib/module/icons/lucide-icons-original-full.js +1 -3178
- package/lib/module/icons/lucide-icons.js +1 -2420
- package/lib/module/icons/primitives/GlobeIcon.js +1 -61
- package/lib/module/icons/primitives/icon-primitives.js +1 -161
- package/lib/module/icons/primitives/index.js +1 -15
- package/lib/module/index.js +1 -111
- package/lib/module/license/AccountSetup.js +1 -31
- package/lib/module/license/AccountSetup.web.js +3 -80
- package/lib/module/license/AccountSetupContent.js +1 -476
- package/lib/module/license/FeatureGate.js +1 -778
- package/lib/module/license/FreeAccountPrompt.js +1 -50
- package/lib/module/license/LicenseEntryModal.js +2 -381
- package/lib/module/license/accountRuntime.js +1 -3
- package/lib/module/license/accountRuntime.web.js +1 -4
- package/lib/module/license/index.js +1 -9
- package/lib/module/license/licenseModule.js +1 -109
- package/lib/module/license/openPricing.js +1 -31
- package/lib/module/license/tierLimits.js +1 -122
- package/lib/module/logger/index-sentry.js +1 -230
- package/lib/module/logger/index.js +1 -13
- package/lib/module/logger/logDump.js +1 -13
- package/lib/module/logger/types.js +1 -37
- package/lib/module/settings/components/BubbleSettingsSection.js +1 -378
- package/lib/module/settings/index.js +1 -3
- package/lib/module/storage/definePersistedSetting.js +1 -63
- package/lib/module/storage/devToolsStorageKeys.js +1 -352
- package/lib/module/storage/index.js +1 -4
- package/lib/module/stores/BaseEventStore.js +1 -339
- package/lib/module/stores/ChangeLog.js +1 -192
- package/lib/module/stores/createToolStore.js +1 -189
- package/lib/module/stores/floatingToolStore.js +1 -61
- package/lib/module/stores/floatingToolStore.test.js +1 -111
- package/lib/module/stores/ignoredPatternsCore.js +1 -69
- package/lib/module/stores/ignoredPatternsStore.js +1 -3
- package/lib/module/stores/ignoredPatternsStore.shared.js +1 -189
- package/lib/module/stores/ignoredPatternsStore.web.js +1 -3
- package/lib/module/stores/index.js +1 -10
- package/lib/module/sync/keyedArrays.js +1 -204
- package/lib/module/sync/toolActionRegistry.js +1 -236
- package/lib/module/sync/toolAttention.test.js +1 -50
- package/lib/module/sync/toolSyncAdapter.js +1 -58
- package/lib/module/sync/toolUiBridge.js +1 -123
- package/lib/module/sync/typedEdit.js +1 -220
- package/lib/module/sync/valuePath.js +1 -330
- package/lib/module/sync/valueShape.js +1 -153
- package/lib/module/sync/wireBudget.js +1 -92
- package/lib/module/sync/wireForm.js +1 -159
- package/lib/module/tools/defineTool.js +1 -74
- package/lib/module/types/types.d.js +1 -1
- package/lib/module/types/types.js +1 -32
- package/lib/module/ui/backgrounds/BackgroundSwitcher.js +1 -350
- package/lib/module/ui/backgrounds/ToolBackground.js +1 -72
- package/lib/module/ui/backgrounds/backgroundStore.js +1 -125
- package/lib/module/ui/backgrounds/index.js +1 -19
- package/lib/module/ui/backgrounds/primitives.js +1 -365
- package/lib/module/ui/backgrounds/registry.js +1 -91
- package/lib/module/ui/backgrounds/rng.js +1 -85
- package/lib/module/ui/backgrounds/skyClock.js +1 -39
- package/lib/module/ui/backgrounds/types.js +1 -1
- package/lib/module/ui/backgrounds/variants/daylight.js +1 -449
- package/lib/module/ui/backgrounds/variants/deepField.js +1 -378
- package/lib/module/ui/backgrounds/variants/hyperspace.js +1 -214
- package/lib/module/ui/backgrounds/variants/liveSky.js +1 -893
- package/lib/module/ui/backgrounds/variants/meteors.js +1 -397
- package/lib/module/ui/backgrounds/variants/moonlight.js +1 -468
- package/lib/module/ui/backgrounds/variants/underwater.js +1 -753
- package/lib/module/ui/backgrounds/variants/wormhole/motion.js +1 -44
- package/lib/module/ui/backgrounds/variants/wormhole/textures.js +1 -3
- package/lib/module/ui/backgrounds/variants/wormhole.js +1 -132
- package/lib/module/ui/components/BackButton.js +1 -43
- package/lib/module/ui/components/Badge.js +1 -218
- package/lib/module/ui/components/ChangeRow.js +1 -106
- package/lib/module/ui/components/ChipStrip.js +1 -91
- package/lib/module/ui/components/ClipboardHintBanner.js +1 -145
- package/lib/module/ui/components/CollapsibleSection.js +1 -166
- package/lib/module/ui/components/CompactFilterChips.js +1 -110
- package/lib/module/ui/components/CompactRow.js +1 -291
- package/lib/module/ui/components/CopyButton.js +1 -303
- package/lib/module/ui/components/DataInspector.js +1 -319
- package/lib/module/ui/components/DetailView.js +1 -354
- package/lib/module/ui/components/DetailViewToggle.js +1 -125
- package/lib/module/ui/components/DevToolsCard.js +1 -122
- package/lib/module/ui/components/DraggableHeader.js +1 -211
- package/lib/module/ui/components/DynamicFilterView.js +1 -754
- package/lib/module/ui/components/EmptyState.js +1 -144
- package/lib/module/ui/components/EntityFilterView.js +1 -351
- package/lib/module/ui/components/EventHistoryViewer/CompareBar.js +1 -206
- package/lib/module/ui/components/EventHistoryViewer/DiffModeTabs.js +1 -94
- package/lib/module/ui/components/EventHistoryViewer/EventHistoryViewer.js +1 -179
- package/lib/module/ui/components/EventHistoryViewer/EventPickerModal.js +1 -203
- package/lib/module/ui/components/EventHistoryViewer/ViewToggleCards.js +1 -132
- package/lib/module/ui/components/EventHistoryViewer/index.js +1 -19
- package/lib/module/ui/components/EventHistoryViewer/types.js +1 -3
- package/lib/module/ui/components/EventListItem.js +1 -243
- package/lib/module/ui/components/EventStepperFooter.js +1 -180
- package/lib/module/ui/components/ExpandablePopover.js +1 -378
- package/lib/module/ui/components/ExpandedInfoRow.js +1 -103
- package/lib/module/ui/components/ExportPreview.js +1 -169
- package/lib/module/ui/components/FilterComponents.js +1 -282
- package/lib/module/ui/components/GripVerticalIcon.js +1 -61
- package/lib/module/ui/components/HeaderSearchButton.js +1 -46
- package/lib/module/ui/components/InfoRow.js +1 -87
- package/lib/module/ui/components/ListItem.js +1 -169
- package/lib/module/ui/components/ModalHeader.js +1 -297
- package/lib/module/ui/components/ModalHintBanner.js +1 -143
- package/lib/module/ui/components/Pill.js +1 -111
- package/lib/module/ui/components/PowerToggleButton.js +1 -74
- package/lib/module/ui/components/SearchBar.js +1 -161
- package/lib/module/ui/components/SectionHeader.js +1 -125
- package/lib/module/ui/components/StatsCard.js +1 -194
- package/lib/module/ui/components/StatusIndicator.js +1 -227
- package/lib/module/ui/components/StorageTypeBadge.js +1 -93
- package/lib/module/ui/components/TabSelector.js +1 -98
- package/lib/module/ui/components/TimeDisplay.js +1 -138
- package/lib/module/ui/components/ToggleRow.js +1 -112
- package/lib/module/ui/components/ToolButton.js +1 -89
- package/lib/module/ui/components/ToolEmptyState.js +1 -149
- package/lib/module/ui/components/ToolFooter.js +1 -197
- package/lib/module/ui/components/ValueTypeBadge.js +1 -143
- package/lib/module/ui/components/WindowControls.js +1 -383
- package/lib/module/ui/components/index.js +1 -52
- package/lib/module/ui/components/windowDrag.js +1 -41
- package/lib/module/ui/console/CyberpunkButtonOutline.js +1 -257
- package/lib/module/ui/console/CyberpunkIconContainer.js +1 -182
- package/lib/module/ui/console/CyberpunkSectionButton.js +1 -119
- package/lib/module/ui/floating/FloatingTool.js +1 -1003
- package/lib/module/ui/floating/FloatingTool.web.js +1 -600
- package/lib/module/ui/floating/FloatingToolHost.js +1 -29
- package/lib/module/ui/floating/FloatingToolHost.web.js +1 -25
- package/lib/module/ui/floating/index.js +1 -6
- package/lib/module/ui/floating/index.web.js +1 -6
- package/lib/module/ui/floating/onboardingConstants.js +1 -64
- package/lib/module/ui/floating/onboardingConstants.web.js +1 -27
- package/lib/module/ui/fonts.js +1 -8
- package/lib/module/ui/gameUI/components/GameUICollapsibleSection.js +1 -117
- package/lib/module/ui/gameUI/components/GameUICompactStats.js +1 -332
- package/lib/module/ui/gameUI/components/GameUIIssuesList.js +1 -280
- package/lib/module/ui/gameUI/components/GameUIStatusHeader.js +1 -141
- package/lib/module/ui/gameUI/constants/gameUIColors.js +1 -220
- package/lib/module/ui/gameUI/constants/macOSDesignSystemColors.js +1 -219
- package/lib/module/ui/gameUI/hooks/useGameUIAlertState.js +1 -105
- package/lib/module/ui/gameUI/index.js +1 -19
- package/lib/module/ui/index.js +1 -31
- package/lib/module/ui/listPresets.js +1 -39
- package/lib/module/ui/night/nightTheme.js +1 -126
- package/lib/module/ui/night/primitives.js +1 -511
- package/lib/module/ui/otto/OttoSceneView.js +1 -64
- package/lib/module/ui/otto/OttoSprite.js +1 -496
- package/lib/module/ui/otto/index.js +1 -22
- package/lib/module/ui/otto/ottoEngine.js +1 -2729
- package/lib/module/ui/otto/ottoScenes.js +1 -942
- package/lib/module/ui/otto/ottoSheet.js +1 -180
- package/lib/module/ui/toolTheme.js +1 -93
- package/lib/module/utils/absoluteFill.js +1 -24
- package/lib/module/utils/browserAsyncStorage.js +1 -151
- package/lib/module/utils/browserNavigation.js +1 -108
- package/lib/module/utils/devServer.js +1 -62
- package/lib/module/utils/devServer.web.js +1 -6
- package/lib/module/utils/displayValue.js +1 -36
- package/lib/module/utils/domRuntime.js +1 -134
- package/lib/module/utils/expoRouterModule.js +1 -46
- package/lib/module/utils/expoRouterModule.web.js +1 -9
- package/lib/module/utils/formatting/dataFormatting.js +1 -93
- package/lib/module/utils/formatting/httpFormatting.js +1 -142
- package/lib/module/utils/formatting/index.js +1 -8
- package/lib/module/utils/getSafeAreaInsets.js +1 -36
- package/lib/module/utils/getSafeAreaInsets.web.js +1 -31
- package/lib/module/utils/index.js +1 -23
- package/lib/module/utils/loadOptionalModule.js +1 -89
- package/lib/module/utils/loadToolModule.js +1 -42
- package/lib/module/utils/loadToolModule.web.js +1 -8
- package/lib/module/utils/minimalSuperJSON.js +1 -342
- package/lib/module/utils/modalStorage.js +1 -37
- package/lib/module/utils/nativeWeb.js +1 -107
- package/lib/module/utils/persistentStorage.js +1 -603
- package/lib/module/utils/persistentStorage.web.js +1 -72
- package/lib/module/utils/realNow.js +1 -0
- package/lib/module/utils/reloadApp.js +1 -99
- package/lib/module/utils/reloadPlatform.js +1 -31
- package/lib/module/utils/reloadPlatform.web.js +1 -11
- package/lib/module/utils/renderCaptureRegistry.js +1 -54
- package/lib/module/utils/safeExpoRouter.js +1 -189
- package/lib/module/utils/safeExpoRouter.web.js +1 -37
- package/lib/module/utils/safeStringify.js +1 -225
- package/lib/module/utils/snapshotProviderKit.js +1 -156
- package/lib/module/utils/stateSnapshotRegistry.js +1 -64
- package/lib/module/utils/stateTools.js +1 -154
- package/lib/module/utils/subscribable.js +1 -108
- package/lib/module/utils/subscriberCountNotifier.js +1 -66
- package/lib/module/utils/time/RelativeTime.js +1 -28
- package/lib/module/utils/time/TickContext.js +1 -38
- package/lib/module/utils/time/formatRelativeTime.js +1 -30
- package/lib/module/utils/time/index.js +1 -6
- package/lib/module/utils/time/useRelativeTime.js +1 -33
- package/lib/module/utils/toolModules.js +1 -19
- package/lib/module/utils/typeHelpers.js +1 -130
- package/lib/module/utils/valueFormatting.js +1 -131
- package/lib/typescript/commonjs/hooks/safe-area-impl.d.ts +1 -1
- package/lib/typescript/commonjs/icons/index.d.ts +1 -0
- package/lib/typescript/commonjs/index.d.ts +1 -1
- package/lib/typescript/commonjs/storage/devToolsStorageKeys.d.ts +8 -0
- package/lib/typescript/commonjs/ui/night/primitives.d.ts +9 -3
- package/lib/typescript/commonjs/utils/index.d.ts +1 -0
- package/lib/typescript/commonjs/utils/realNow.d.ts +11 -0
- package/lib/typescript/module/hooks/safe-area-impl.d.ts +1 -1
- package/lib/typescript/module/icons/index.d.ts +1 -0
- package/lib/typescript/module/index.d.ts +1 -1
- package/lib/typescript/module/storage/devToolsStorageKeys.d.ts +8 -0
- package/lib/typescript/module/ui/night/primitives.d.ts +9 -3
- package/lib/typescript/module/utils/index.d.ts +1 -0
- package/lib/typescript/module/utils/realNow.d.ts +11 -0
- package/lib/web/asyncStorage.mjs +1 -2
- package/lib/web/chunks/chunk-26OV3QDY.mjs +1 -0
- package/lib/web/chunks/chunk-3UTMGIUG.mjs +1 -2
- package/lib/web/chunks/chunk-53J2FMUD.mjs +1 -2
- package/lib/web/chunks/chunk-5KWAGM5V.mjs +1 -0
- package/lib/web/chunks/chunk-5NZOQR6Q.mjs +1 -2
- package/lib/web/chunks/chunk-7PRKERDN.mjs +1 -0
- package/lib/web/chunks/chunk-CE5U3CSQ.mjs +1 -2
- package/lib/web/chunks/chunk-D4RXBAOO.mjs +15 -0
- package/lib/web/chunks/chunk-ER3T3IDI.mjs +1 -0
- package/lib/web/chunks/chunk-GF5C5DVX.mjs +1 -2
- package/lib/web/chunks/chunk-K7CGIEFU.mjs +1 -2
- package/lib/web/chunks/{chunk-GTYIS7H7.mjs → chunk-L3AFTHWX.mjs} +8 -9
- package/lib/web/chunks/chunk-LZ7FZZ7R.mjs +1 -2
- package/lib/web/chunks/chunk-PTK5FO6C.mjs +1 -2
- package/lib/web/chunks/chunk-TJUBBXXK.mjs +1 -0
- package/lib/web/chunks/chunk-UKYVRCMZ.mjs +1 -0
- package/lib/web/chunks/chunk-XYUAUO57.mjs +1 -2
- package/lib/web/chunks/persistentStorage.web-6OAJAVRK.mjs +1 -0
- package/lib/web/colors.mjs +1 -2
- package/lib/web/dataViewer.mjs +2 -3
- package/lib/web/floating.mjs +1 -2
- package/lib/web/history.mjs +1 -2
- package/lib/web/hooks.mjs +1 -2
- package/lib/web/index.mjs +2 -3
- package/lib/web/native.mjs +1 -2
- package/lib/web/ui.mjs +1 -2
- package/lib/web/utils.mjs +1 -2
- package/package.json +8 -7
- package/scripts/detect-clipboard.js +5 -121
- package/scripts/detect-safe-area.js +3 -127
- package/ui.js +1 -7
- package/utils.js +1 -7
- package/lib/typescript/commonjs/JsModal.d.ts.map +0 -1
- package/lib/typescript/commonjs/JsModal.web.d.ts.map +0 -1
- package/lib/typescript/commonjs/clipboard/autoDetectClipboard.d.ts.map +0 -1
- package/lib/typescript/commonjs/clipboard/clipboard-impl.d.ts.map +0 -1
- package/lib/typescript/commonjs/clipboard/clipboard-impl.web.d.ts.map +0 -1
- package/lib/typescript/commonjs/clipboard/copyToClipboard.d.ts.map +0 -1
- package/lib/typescript/commonjs/clipboard/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/colors/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/context/HintsContext.d.ts.map +0 -1
- package/lib/typescript/commonjs/context/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/dataViewer/CyberpunkInput.d.ts.map +0 -1
- package/lib/typescript/commonjs/dataViewer/DataTreeActionBar.d.ts.map +0 -1
- package/lib/typescript/commonjs/dataViewer/DataTreeActionDock.d.ts.map +0 -1
- package/lib/typescript/commonjs/dataViewer/DataViewer.d.ts.map +0 -1
- package/lib/typescript/commonjs/dataViewer/DiffSummary.d.ts.map +0 -1
- package/lib/typescript/commonjs/dataViewer/IndentGuides.d.ts.map +0 -1
- package/lib/typescript/commonjs/dataViewer/IndentGuidesOverlay.d.ts.map +0 -1
- package/lib/typescript/commonjs/dataViewer/JsonStringNotice.d.ts.map +0 -1
- package/lib/typescript/commonjs/dataViewer/LiveExplorer.d.ts.map +0 -1
- package/lib/typescript/commonjs/dataViewer/SplitDiffViewer.d.ts.map +0 -1
- package/lib/typescript/commonjs/dataViewer/ThemedSplitView.d.ts.map +0 -1
- package/lib/typescript/commonjs/dataViewer/TimestampDeltaBar.d.ts.map +0 -1
- package/lib/typescript/commonjs/dataViewer/TypeLegend.d.ts.map +0 -1
- package/lib/typescript/commonjs/dataViewer/ValueEditModal.d.ts.map +0 -1
- package/lib/typescript/commonjs/dataViewer/VirtualizedDataExplorer.d.ts.map +0 -1
- package/lib/typescript/commonjs/dataViewer/diffThemes.d.ts.map +0 -1
- package/lib/typescript/commonjs/dataViewer/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/dataViewer/jsonOps.d.ts.map +0 -1
- package/lib/typescript/commonjs/dataViewer/jsonStringValue.d.ts.map +0 -1
- package/lib/typescript/commonjs/dataViewer/lineDiff.d.ts.map +0 -1
- package/lib/typescript/commonjs/dataViewer/nestedPath.d.ts.map +0 -1
- package/lib/typescript/commonjs/dataViewer/objectDiff.d.ts.map +0 -1
- package/lib/typescript/commonjs/dataViewer/timestampDiff.d.ts.map +0 -1
- package/lib/typescript/commonjs/dataViewer/tree/TreeDiffViewer.d.ts.map +0 -1
- package/lib/typescript/commonjs/dataViewer/treeActions.d.ts.map +0 -1
- package/lib/typescript/commonjs/dataViewer/useTreeDraft.d.ts.map +0 -1
- package/lib/typescript/commonjs/dataViewer/useTreeEditor.d.ts.map +0 -1
- package/lib/typescript/commonjs/env/EnvironmentIndicator.d.ts.map +0 -1
- package/lib/typescript/commonjs/env/EnvironmentIndicator.web.d.ts.map +0 -1
- package/lib/typescript/commonjs/env/EnvironmentSelector.d.ts.map +0 -1
- package/lib/typescript/commonjs/env/EnvironmentSelectorInline.d.ts.map +0 -1
- package/lib/typescript/commonjs/env/EnvironmentSelectorInline.web.d.ts.map +0 -1
- package/lib/typescript/commonjs/history/HistoryProvider.d.ts.map +0 -1
- package/lib/typescript/commonjs/history/components/HistoryEntryRow.d.ts.map +0 -1
- package/lib/typescript/commonjs/history/components/HistoryList.d.ts.map +0 -1
- package/lib/typescript/commonjs/history/components/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/history/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/history/types.d.ts.map +0 -1
- package/lib/typescript/commonjs/hooks/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/hooks/safe-area-impl.d.ts.map +0 -1
- package/lib/typescript/commonjs/hooks/useChangeLog.d.ts.map +0 -1
- package/lib/typescript/commonjs/hooks/useDeviceInfo.d.ts.map +0 -1
- package/lib/typescript/commonjs/hooks/useEventStoreEvents.d.ts.map +0 -1
- package/lib/typescript/commonjs/hooks/useFilterManager.d.ts.map +0 -1
- package/lib/typescript/commonjs/hooks/usePersistedState.d.ts.map +0 -1
- package/lib/typescript/commonjs/hooks/useSafeAreaInsets.d.ts.map +0 -1
- package/lib/typescript/commonjs/hooks/useSafeAreaInsets.web.d.ts.map +0 -1
- package/lib/typescript/commonjs/icons/BenchmarkIcon.d.ts.map +0 -1
- package/lib/typescript/commonjs/icons/EnvLaptopIcon.d.ts.map +0 -1
- package/lib/typescript/commonjs/icons/IconBackground.d.ts.map +0 -1
- package/lib/typescript/commonjs/icons/ReactQueryIcon.d.ts.map +0 -1
- package/lib/typescript/commonjs/icons/RenderCountIcon.d.ts.map +0 -1
- package/lib/typescript/commonjs/icons/RouteMapIcon.d.ts.map +0 -1
- package/lib/typescript/commonjs/icons/SentryBugIcon.d.ts.map +0 -1
- package/lib/typescript/commonjs/icons/StackPulseIcon.d.ts.map +0 -1
- package/lib/typescript/commonjs/icons/StorageStackIcon.d.ts.map +0 -1
- package/lib/typescript/commonjs/icons/WifiCircuitIcon.d.ts.map +0 -1
- package/lib/typescript/commonjs/icons/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/icons/lucide-icons-original-full.d.ts.map +0 -1
- package/lib/typescript/commonjs/icons/lucide-icons.d.ts.map +0 -1
- package/lib/typescript/commonjs/icons/primitives/GlobeIcon.d.ts.map +0 -1
- package/lib/typescript/commonjs/icons/primitives/icon-primitives.d.ts.map +0 -1
- package/lib/typescript/commonjs/icons/primitives/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/license/AccountSetup.d.ts.map +0 -1
- package/lib/typescript/commonjs/license/AccountSetup.web.d.ts.map +0 -1
- package/lib/typescript/commonjs/license/AccountSetupContent.d.ts.map +0 -1
- package/lib/typescript/commonjs/license/FeatureGate.d.ts.map +0 -1
- package/lib/typescript/commonjs/license/FreeAccountPrompt.d.ts.map +0 -1
- package/lib/typescript/commonjs/license/LicenseEntryModal.d.ts.map +0 -1
- package/lib/typescript/commonjs/license/accountRuntime.d.ts.map +0 -1
- package/lib/typescript/commonjs/license/accountRuntime.web.d.ts.map +0 -1
- package/lib/typescript/commonjs/license/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/license/licenseModule.d.ts.map +0 -1
- package/lib/typescript/commonjs/license/openPricing.d.ts.map +0 -1
- package/lib/typescript/commonjs/license/tierLimits.d.ts.map +0 -1
- package/lib/typescript/commonjs/logger/index-sentry.d.ts.map +0 -1
- package/lib/typescript/commonjs/logger/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/logger/logDump.d.ts.map +0 -1
- package/lib/typescript/commonjs/logger/types.d.ts.map +0 -1
- package/lib/typescript/commonjs/settings/components/BubbleSettingsSection.d.ts.map +0 -1
- package/lib/typescript/commonjs/settings/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/storage/definePersistedSetting.d.ts.map +0 -1
- package/lib/typescript/commonjs/storage/devToolsStorageKeys.d.ts.map +0 -1
- package/lib/typescript/commonjs/storage/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/stores/BaseEventStore.d.ts.map +0 -1
- package/lib/typescript/commonjs/stores/ChangeLog.d.ts.map +0 -1
- package/lib/typescript/commonjs/stores/createToolStore.d.ts.map +0 -1
- package/lib/typescript/commonjs/stores/floatingToolStore.d.ts.map +0 -1
- package/lib/typescript/commonjs/stores/floatingToolStore.test.d.ts.map +0 -1
- package/lib/typescript/commonjs/stores/ignoredPatternsCore.d.ts.map +0 -1
- package/lib/typescript/commonjs/stores/ignoredPatternsStore.d.ts.map +0 -1
- package/lib/typescript/commonjs/stores/ignoredPatternsStore.shared.d.ts.map +0 -1
- package/lib/typescript/commonjs/stores/ignoredPatternsStore.web.d.ts.map +0 -1
- package/lib/typescript/commonjs/stores/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/sync/keyedArrays.d.ts.map +0 -1
- package/lib/typescript/commonjs/sync/toolActionRegistry.d.ts.map +0 -1
- package/lib/typescript/commonjs/sync/toolAttention.test.d.ts.map +0 -1
- package/lib/typescript/commonjs/sync/toolSyncAdapter.d.ts.map +0 -1
- package/lib/typescript/commonjs/sync/toolUiBridge.d.ts.map +0 -1
- package/lib/typescript/commonjs/sync/typedEdit.d.ts.map +0 -1
- package/lib/typescript/commonjs/sync/valuePath.d.ts.map +0 -1
- package/lib/typescript/commonjs/sync/valueShape.d.ts.map +0 -1
- package/lib/typescript/commonjs/sync/wireBudget.d.ts.map +0 -1
- package/lib/typescript/commonjs/sync/wireForm.d.ts.map +0 -1
- package/lib/typescript/commonjs/tools/defineTool.d.ts.map +0 -1
- package/lib/typescript/commonjs/types/types.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/backgrounds/BackgroundSwitcher.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/backgrounds/ToolBackground.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/backgrounds/backgroundStore.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/backgrounds/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/backgrounds/primitives.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/backgrounds/registry.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/backgrounds/rng.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/backgrounds/skyClock.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/backgrounds/types.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/backgrounds/variants/daylight.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/backgrounds/variants/deepField.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/backgrounds/variants/hyperspace.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/backgrounds/variants/liveSky.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/backgrounds/variants/meteors.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/backgrounds/variants/moonlight.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/backgrounds/variants/underwater.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/backgrounds/variants/wormhole/motion.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/backgrounds/variants/wormhole/textures.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/backgrounds/variants/wormhole.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/BackButton.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/Badge.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/ChangeRow.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/ChipStrip.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/ClipboardHintBanner.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/CollapsibleSection.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/CompactFilterChips.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/CompactRow.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/CopyButton.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/DataInspector.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/DetailView.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/DetailViewToggle.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/DevToolsCard.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/DraggableHeader.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/DynamicFilterView.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/EmptyState.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/EntityFilterView.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/EventHistoryViewer/CompareBar.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/EventHistoryViewer/DiffModeTabs.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/EventHistoryViewer/EventHistoryViewer.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/EventHistoryViewer/EventPickerModal.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/EventHistoryViewer/ViewToggleCards.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/EventHistoryViewer/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/EventHistoryViewer/types.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/EventListItem.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/EventStepperFooter.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/ExpandablePopover.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/ExpandedInfoRow.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/ExportPreview.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/FilterComponents.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/GripVerticalIcon.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/HeaderSearchButton.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/InfoRow.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/ListItem.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/ModalHeader.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/ModalHintBanner.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/Pill.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/PowerToggleButton.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/SearchBar.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/SectionHeader.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/StatsCard.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/StatusIndicator.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/StorageTypeBadge.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/TabSelector.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/TimeDisplay.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/ToggleRow.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/ToolButton.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/ToolEmptyState.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/ToolFooter.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/ValueTypeBadge.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/WindowControls.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/components/windowDrag.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/console/CyberpunkButtonOutline.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/console/CyberpunkIconContainer.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/console/CyberpunkSectionButton.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/floating/FloatingTool.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/floating/FloatingTool.web.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/floating/FloatingToolHost.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/floating/FloatingToolHost.web.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/floating/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/floating/index.web.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/floating/onboardingConstants.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/floating/onboardingConstants.web.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/fonts.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/gameUI/components/GameUICollapsibleSection.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/gameUI/components/GameUICompactStats.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/gameUI/components/GameUIIssuesList.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/gameUI/components/GameUIStatusHeader.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/gameUI/constants/gameUIColors.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/gameUI/constants/macOSDesignSystemColors.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/gameUI/hooks/useGameUIAlertState.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/gameUI/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/listPresets.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/night/nightTheme.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/night/primitives.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/otto/OttoSceneView.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/otto/OttoSprite.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/otto/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/otto/ottoEngine.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/otto/ottoScenes.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/otto/ottoSheet.d.ts.map +0 -1
- package/lib/typescript/commonjs/ui/toolTheme.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/absoluteFill.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/browserAsyncStorage.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/browserNavigation.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/devServer.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/devServer.web.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/displayValue.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/domRuntime.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/expoRouterModule.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/expoRouterModule.web.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/formatting/dataFormatting.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/formatting/httpFormatting.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/formatting/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/getSafeAreaInsets.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/getSafeAreaInsets.web.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/loadOptionalModule.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/loadToolModule.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/loadToolModule.web.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/minimalSuperJSON.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/modalStorage.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/nativeWeb.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/persistentStorage.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/persistentStorage.web.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/reloadApp.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/reloadPlatform.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/reloadPlatform.web.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/renderCaptureRegistry.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/safeExpoRouter.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/safeExpoRouter.web.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/safeStringify.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/snapshotProviderKit.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/stateSnapshotRegistry.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/stateTools.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/subscribable.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/subscriberCountNotifier.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/time/RelativeTime.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/time/TickContext.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/time/formatRelativeTime.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/time/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/time/useRelativeTime.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/toolModules.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/typeHelpers.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/valueFormatting.d.ts.map +0 -1
- package/lib/typescript/module/JsModal.d.ts.map +0 -1
- package/lib/typescript/module/JsModal.web.d.ts.map +0 -1
- package/lib/typescript/module/clipboard/autoDetectClipboard.d.ts.map +0 -1
- package/lib/typescript/module/clipboard/clipboard-impl.d.ts.map +0 -1
- package/lib/typescript/module/clipboard/clipboard-impl.web.d.ts.map +0 -1
- package/lib/typescript/module/clipboard/copyToClipboard.d.ts.map +0 -1
- package/lib/typescript/module/clipboard/index.d.ts.map +0 -1
- package/lib/typescript/module/colors/index.d.ts.map +0 -1
- package/lib/typescript/module/context/HintsContext.d.ts.map +0 -1
- package/lib/typescript/module/context/index.d.ts.map +0 -1
- package/lib/typescript/module/dataViewer/CyberpunkInput.d.ts.map +0 -1
- package/lib/typescript/module/dataViewer/DataTreeActionBar.d.ts.map +0 -1
- package/lib/typescript/module/dataViewer/DataTreeActionDock.d.ts.map +0 -1
- package/lib/typescript/module/dataViewer/DataViewer.d.ts.map +0 -1
- package/lib/typescript/module/dataViewer/DiffSummary.d.ts.map +0 -1
- package/lib/typescript/module/dataViewer/IndentGuides.d.ts.map +0 -1
- package/lib/typescript/module/dataViewer/IndentGuidesOverlay.d.ts.map +0 -1
- package/lib/typescript/module/dataViewer/JsonStringNotice.d.ts.map +0 -1
- package/lib/typescript/module/dataViewer/LiveExplorer.d.ts.map +0 -1
- package/lib/typescript/module/dataViewer/SplitDiffViewer.d.ts.map +0 -1
- package/lib/typescript/module/dataViewer/ThemedSplitView.d.ts.map +0 -1
- package/lib/typescript/module/dataViewer/TimestampDeltaBar.d.ts.map +0 -1
- package/lib/typescript/module/dataViewer/TypeLegend.d.ts.map +0 -1
- package/lib/typescript/module/dataViewer/ValueEditModal.d.ts.map +0 -1
- package/lib/typescript/module/dataViewer/VirtualizedDataExplorer.d.ts.map +0 -1
- package/lib/typescript/module/dataViewer/diffThemes.d.ts.map +0 -1
- package/lib/typescript/module/dataViewer/index.d.ts.map +0 -1
- package/lib/typescript/module/dataViewer/jsonOps.d.ts.map +0 -1
- package/lib/typescript/module/dataViewer/jsonStringValue.d.ts.map +0 -1
- package/lib/typescript/module/dataViewer/lineDiff.d.ts.map +0 -1
- package/lib/typescript/module/dataViewer/nestedPath.d.ts.map +0 -1
- package/lib/typescript/module/dataViewer/objectDiff.d.ts.map +0 -1
- package/lib/typescript/module/dataViewer/timestampDiff.d.ts.map +0 -1
- package/lib/typescript/module/dataViewer/tree/TreeDiffViewer.d.ts.map +0 -1
- package/lib/typescript/module/dataViewer/treeActions.d.ts.map +0 -1
- package/lib/typescript/module/dataViewer/useTreeDraft.d.ts.map +0 -1
- package/lib/typescript/module/dataViewer/useTreeEditor.d.ts.map +0 -1
- package/lib/typescript/module/env/EnvironmentIndicator.d.ts.map +0 -1
- package/lib/typescript/module/env/EnvironmentIndicator.web.d.ts.map +0 -1
- package/lib/typescript/module/env/EnvironmentSelector.d.ts.map +0 -1
- package/lib/typescript/module/env/EnvironmentSelectorInline.d.ts.map +0 -1
- package/lib/typescript/module/env/EnvironmentSelectorInline.web.d.ts.map +0 -1
- package/lib/typescript/module/history/HistoryProvider.d.ts.map +0 -1
- package/lib/typescript/module/history/components/HistoryEntryRow.d.ts.map +0 -1
- package/lib/typescript/module/history/components/HistoryList.d.ts.map +0 -1
- package/lib/typescript/module/history/components/index.d.ts.map +0 -1
- package/lib/typescript/module/history/index.d.ts.map +0 -1
- package/lib/typescript/module/history/types.d.ts.map +0 -1
- package/lib/typescript/module/hooks/index.d.ts.map +0 -1
- package/lib/typescript/module/hooks/safe-area-impl.d.ts.map +0 -1
- package/lib/typescript/module/hooks/useChangeLog.d.ts.map +0 -1
- package/lib/typescript/module/hooks/useDeviceInfo.d.ts.map +0 -1
- package/lib/typescript/module/hooks/useEventStoreEvents.d.ts.map +0 -1
- package/lib/typescript/module/hooks/useFilterManager.d.ts.map +0 -1
- package/lib/typescript/module/hooks/usePersistedState.d.ts.map +0 -1
- package/lib/typescript/module/hooks/useSafeAreaInsets.d.ts.map +0 -1
- package/lib/typescript/module/hooks/useSafeAreaInsets.web.d.ts.map +0 -1
- package/lib/typescript/module/icons/BenchmarkIcon.d.ts.map +0 -1
- package/lib/typescript/module/icons/EnvLaptopIcon.d.ts.map +0 -1
- package/lib/typescript/module/icons/IconBackground.d.ts.map +0 -1
- package/lib/typescript/module/icons/ReactQueryIcon.d.ts.map +0 -1
- package/lib/typescript/module/icons/RenderCountIcon.d.ts.map +0 -1
- package/lib/typescript/module/icons/RouteMapIcon.d.ts.map +0 -1
- package/lib/typescript/module/icons/SentryBugIcon.d.ts.map +0 -1
- package/lib/typescript/module/icons/StackPulseIcon.d.ts.map +0 -1
- package/lib/typescript/module/icons/StorageStackIcon.d.ts.map +0 -1
- package/lib/typescript/module/icons/WifiCircuitIcon.d.ts.map +0 -1
- package/lib/typescript/module/icons/index.d.ts.map +0 -1
- package/lib/typescript/module/icons/lucide-icons-original-full.d.ts.map +0 -1
- package/lib/typescript/module/icons/lucide-icons.d.ts.map +0 -1
- package/lib/typescript/module/icons/primitives/GlobeIcon.d.ts.map +0 -1
- package/lib/typescript/module/icons/primitives/icon-primitives.d.ts.map +0 -1
- package/lib/typescript/module/icons/primitives/index.d.ts.map +0 -1
- package/lib/typescript/module/index.d.ts.map +0 -1
- package/lib/typescript/module/license/AccountSetup.d.ts.map +0 -1
- package/lib/typescript/module/license/AccountSetup.web.d.ts.map +0 -1
- package/lib/typescript/module/license/AccountSetupContent.d.ts.map +0 -1
- package/lib/typescript/module/license/FeatureGate.d.ts.map +0 -1
- package/lib/typescript/module/license/FreeAccountPrompt.d.ts.map +0 -1
- package/lib/typescript/module/license/LicenseEntryModal.d.ts.map +0 -1
- package/lib/typescript/module/license/accountRuntime.d.ts.map +0 -1
- package/lib/typescript/module/license/accountRuntime.web.d.ts.map +0 -1
- package/lib/typescript/module/license/index.d.ts.map +0 -1
- package/lib/typescript/module/license/licenseModule.d.ts.map +0 -1
- package/lib/typescript/module/license/openPricing.d.ts.map +0 -1
- package/lib/typescript/module/license/tierLimits.d.ts.map +0 -1
- package/lib/typescript/module/logger/index-sentry.d.ts.map +0 -1
- package/lib/typescript/module/logger/index.d.ts.map +0 -1
- package/lib/typescript/module/logger/logDump.d.ts.map +0 -1
- package/lib/typescript/module/logger/types.d.ts.map +0 -1
- package/lib/typescript/module/settings/components/BubbleSettingsSection.d.ts.map +0 -1
- package/lib/typescript/module/settings/index.d.ts.map +0 -1
- package/lib/typescript/module/storage/definePersistedSetting.d.ts.map +0 -1
- package/lib/typescript/module/storage/devToolsStorageKeys.d.ts.map +0 -1
- package/lib/typescript/module/storage/index.d.ts.map +0 -1
- package/lib/typescript/module/stores/BaseEventStore.d.ts.map +0 -1
- package/lib/typescript/module/stores/ChangeLog.d.ts.map +0 -1
- package/lib/typescript/module/stores/createToolStore.d.ts.map +0 -1
- package/lib/typescript/module/stores/floatingToolStore.d.ts.map +0 -1
- package/lib/typescript/module/stores/floatingToolStore.test.d.ts.map +0 -1
- package/lib/typescript/module/stores/ignoredPatternsCore.d.ts.map +0 -1
- package/lib/typescript/module/stores/ignoredPatternsStore.d.ts.map +0 -1
- package/lib/typescript/module/stores/ignoredPatternsStore.shared.d.ts.map +0 -1
- package/lib/typescript/module/stores/ignoredPatternsStore.web.d.ts.map +0 -1
- package/lib/typescript/module/stores/index.d.ts.map +0 -1
- package/lib/typescript/module/sync/keyedArrays.d.ts.map +0 -1
- package/lib/typescript/module/sync/toolActionRegistry.d.ts.map +0 -1
- package/lib/typescript/module/sync/toolAttention.test.d.ts.map +0 -1
- package/lib/typescript/module/sync/toolSyncAdapter.d.ts.map +0 -1
- package/lib/typescript/module/sync/toolUiBridge.d.ts.map +0 -1
- package/lib/typescript/module/sync/typedEdit.d.ts.map +0 -1
- package/lib/typescript/module/sync/valuePath.d.ts.map +0 -1
- package/lib/typescript/module/sync/valueShape.d.ts.map +0 -1
- package/lib/typescript/module/sync/wireBudget.d.ts.map +0 -1
- package/lib/typescript/module/sync/wireForm.d.ts.map +0 -1
- package/lib/typescript/module/tools/defineTool.d.ts.map +0 -1
- package/lib/typescript/module/types/types.d.ts.map +0 -1
- package/lib/typescript/module/ui/backgrounds/BackgroundSwitcher.d.ts.map +0 -1
- package/lib/typescript/module/ui/backgrounds/ToolBackground.d.ts.map +0 -1
- package/lib/typescript/module/ui/backgrounds/backgroundStore.d.ts.map +0 -1
- package/lib/typescript/module/ui/backgrounds/index.d.ts.map +0 -1
- package/lib/typescript/module/ui/backgrounds/primitives.d.ts.map +0 -1
- package/lib/typescript/module/ui/backgrounds/registry.d.ts.map +0 -1
- package/lib/typescript/module/ui/backgrounds/rng.d.ts.map +0 -1
- package/lib/typescript/module/ui/backgrounds/skyClock.d.ts.map +0 -1
- package/lib/typescript/module/ui/backgrounds/types.d.ts.map +0 -1
- package/lib/typescript/module/ui/backgrounds/variants/daylight.d.ts.map +0 -1
- package/lib/typescript/module/ui/backgrounds/variants/deepField.d.ts.map +0 -1
- package/lib/typescript/module/ui/backgrounds/variants/hyperspace.d.ts.map +0 -1
- package/lib/typescript/module/ui/backgrounds/variants/liveSky.d.ts.map +0 -1
- package/lib/typescript/module/ui/backgrounds/variants/meteors.d.ts.map +0 -1
- package/lib/typescript/module/ui/backgrounds/variants/moonlight.d.ts.map +0 -1
- package/lib/typescript/module/ui/backgrounds/variants/underwater.d.ts.map +0 -1
- package/lib/typescript/module/ui/backgrounds/variants/wormhole/motion.d.ts.map +0 -1
- package/lib/typescript/module/ui/backgrounds/variants/wormhole/textures.d.ts.map +0 -1
- package/lib/typescript/module/ui/backgrounds/variants/wormhole.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/BackButton.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/Badge.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/ChangeRow.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/ChipStrip.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/ClipboardHintBanner.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/CollapsibleSection.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/CompactFilterChips.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/CompactRow.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/CopyButton.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/DataInspector.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/DetailView.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/DetailViewToggle.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/DevToolsCard.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/DraggableHeader.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/DynamicFilterView.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/EmptyState.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/EntityFilterView.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/EventHistoryViewer/CompareBar.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/EventHistoryViewer/DiffModeTabs.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/EventHistoryViewer/EventHistoryViewer.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/EventHistoryViewer/EventPickerModal.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/EventHistoryViewer/ViewToggleCards.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/EventHistoryViewer/index.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/EventHistoryViewer/types.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/EventListItem.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/EventStepperFooter.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/ExpandablePopover.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/ExpandedInfoRow.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/ExportPreview.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/FilterComponents.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/GripVerticalIcon.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/HeaderSearchButton.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/InfoRow.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/ListItem.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/ModalHeader.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/ModalHintBanner.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/Pill.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/PowerToggleButton.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/SearchBar.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/SectionHeader.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/StatsCard.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/StatusIndicator.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/StorageTypeBadge.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/TabSelector.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/TimeDisplay.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/ToggleRow.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/ToolButton.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/ToolEmptyState.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/ToolFooter.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/ValueTypeBadge.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/WindowControls.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/index.d.ts.map +0 -1
- package/lib/typescript/module/ui/components/windowDrag.d.ts.map +0 -1
- package/lib/typescript/module/ui/console/CyberpunkButtonOutline.d.ts.map +0 -1
- package/lib/typescript/module/ui/console/CyberpunkIconContainer.d.ts.map +0 -1
- package/lib/typescript/module/ui/console/CyberpunkSectionButton.d.ts.map +0 -1
- package/lib/typescript/module/ui/floating/FloatingTool.d.ts.map +0 -1
- package/lib/typescript/module/ui/floating/FloatingTool.web.d.ts.map +0 -1
- package/lib/typescript/module/ui/floating/FloatingToolHost.d.ts.map +0 -1
- package/lib/typescript/module/ui/floating/FloatingToolHost.web.d.ts.map +0 -1
- package/lib/typescript/module/ui/floating/index.d.ts.map +0 -1
- package/lib/typescript/module/ui/floating/index.web.d.ts.map +0 -1
- package/lib/typescript/module/ui/floating/onboardingConstants.d.ts.map +0 -1
- package/lib/typescript/module/ui/floating/onboardingConstants.web.d.ts.map +0 -1
- package/lib/typescript/module/ui/fonts.d.ts.map +0 -1
- package/lib/typescript/module/ui/gameUI/components/GameUICollapsibleSection.d.ts.map +0 -1
- package/lib/typescript/module/ui/gameUI/components/GameUICompactStats.d.ts.map +0 -1
- package/lib/typescript/module/ui/gameUI/components/GameUIIssuesList.d.ts.map +0 -1
- package/lib/typescript/module/ui/gameUI/components/GameUIStatusHeader.d.ts.map +0 -1
- package/lib/typescript/module/ui/gameUI/constants/gameUIColors.d.ts.map +0 -1
- package/lib/typescript/module/ui/gameUI/constants/macOSDesignSystemColors.d.ts.map +0 -1
- package/lib/typescript/module/ui/gameUI/hooks/useGameUIAlertState.d.ts.map +0 -1
- package/lib/typescript/module/ui/gameUI/index.d.ts.map +0 -1
- package/lib/typescript/module/ui/index.d.ts.map +0 -1
- package/lib/typescript/module/ui/listPresets.d.ts.map +0 -1
- package/lib/typescript/module/ui/night/nightTheme.d.ts.map +0 -1
- package/lib/typescript/module/ui/night/primitives.d.ts.map +0 -1
- package/lib/typescript/module/ui/otto/OttoSceneView.d.ts.map +0 -1
- package/lib/typescript/module/ui/otto/OttoSprite.d.ts.map +0 -1
- package/lib/typescript/module/ui/otto/index.d.ts.map +0 -1
- package/lib/typescript/module/ui/otto/ottoEngine.d.ts.map +0 -1
- package/lib/typescript/module/ui/otto/ottoScenes.d.ts.map +0 -1
- package/lib/typescript/module/ui/otto/ottoSheet.d.ts.map +0 -1
- package/lib/typescript/module/ui/toolTheme.d.ts.map +0 -1
- package/lib/typescript/module/utils/absoluteFill.d.ts.map +0 -1
- package/lib/typescript/module/utils/browserAsyncStorage.d.ts.map +0 -1
- package/lib/typescript/module/utils/browserNavigation.d.ts.map +0 -1
- package/lib/typescript/module/utils/devServer.d.ts.map +0 -1
- package/lib/typescript/module/utils/devServer.web.d.ts.map +0 -1
- package/lib/typescript/module/utils/displayValue.d.ts.map +0 -1
- package/lib/typescript/module/utils/domRuntime.d.ts.map +0 -1
- package/lib/typescript/module/utils/expoRouterModule.d.ts.map +0 -1
- package/lib/typescript/module/utils/expoRouterModule.web.d.ts.map +0 -1
- package/lib/typescript/module/utils/formatting/dataFormatting.d.ts.map +0 -1
- package/lib/typescript/module/utils/formatting/httpFormatting.d.ts.map +0 -1
- package/lib/typescript/module/utils/formatting/index.d.ts.map +0 -1
- package/lib/typescript/module/utils/getSafeAreaInsets.d.ts.map +0 -1
- package/lib/typescript/module/utils/getSafeAreaInsets.web.d.ts.map +0 -1
- package/lib/typescript/module/utils/index.d.ts.map +0 -1
- package/lib/typescript/module/utils/loadOptionalModule.d.ts.map +0 -1
- package/lib/typescript/module/utils/loadToolModule.d.ts.map +0 -1
- package/lib/typescript/module/utils/loadToolModule.web.d.ts.map +0 -1
- package/lib/typescript/module/utils/minimalSuperJSON.d.ts.map +0 -1
- package/lib/typescript/module/utils/modalStorage.d.ts.map +0 -1
- package/lib/typescript/module/utils/nativeWeb.d.ts.map +0 -1
- package/lib/typescript/module/utils/persistentStorage.d.ts.map +0 -1
- package/lib/typescript/module/utils/persistentStorage.web.d.ts.map +0 -1
- package/lib/typescript/module/utils/reloadApp.d.ts.map +0 -1
- package/lib/typescript/module/utils/reloadPlatform.d.ts.map +0 -1
- package/lib/typescript/module/utils/reloadPlatform.web.d.ts.map +0 -1
- package/lib/typescript/module/utils/renderCaptureRegistry.d.ts.map +0 -1
- package/lib/typescript/module/utils/safeExpoRouter.d.ts.map +0 -1
- package/lib/typescript/module/utils/safeExpoRouter.web.d.ts.map +0 -1
- package/lib/typescript/module/utils/safeStringify.d.ts.map +0 -1
- package/lib/typescript/module/utils/snapshotProviderKit.d.ts.map +0 -1
- package/lib/typescript/module/utils/stateSnapshotRegistry.d.ts.map +0 -1
- package/lib/typescript/module/utils/stateTools.d.ts.map +0 -1
- package/lib/typescript/module/utils/subscribable.d.ts.map +0 -1
- package/lib/typescript/module/utils/subscriberCountNotifier.d.ts.map +0 -1
- package/lib/typescript/module/utils/time/RelativeTime.d.ts.map +0 -1
- package/lib/typescript/module/utils/time/TickContext.d.ts.map +0 -1
- package/lib/typescript/module/utils/time/formatRelativeTime.d.ts.map +0 -1
- package/lib/typescript/module/utils/time/index.d.ts.map +0 -1
- package/lib/typescript/module/utils/time/useRelativeTime.d.ts.map +0 -1
- package/lib/typescript/module/utils/toolModules.d.ts.map +0 -1
- package/lib/typescript/module/utils/typeHelpers.d.ts.map +0 -1
- package/lib/typescript/module/utils/valueFormatting.d.ts.map +0 -1
- package/lib/web/chunks/chunk-2MHKRRQW.mjs +0 -8
- package/lib/web/chunks/chunk-2Q3SDPH2.mjs +0 -14
- package/lib/web/chunks/chunk-34YQ42KI.mjs +0 -2
- package/lib/web/chunks/chunk-3NNNCQYP.mjs +0 -14
- package/lib/web/chunks/chunk-46CXXOQB.mjs +0 -2
- package/lib/web/chunks/chunk-475BSDCB.mjs +0 -2
- package/lib/web/chunks/chunk-552W4COI.mjs +0 -2
- package/lib/web/chunks/chunk-56TTTMX4.mjs +0 -6145
- package/lib/web/chunks/chunk-5LOQZINQ.mjs +0 -14
- package/lib/web/chunks/chunk-5NOIO6ZM.mjs +0 -16
- package/lib/web/chunks/chunk-6CCRCSA2.mjs +0 -2
- package/lib/web/chunks/chunk-6Q52HRBL.mjs +0 -2
- package/lib/web/chunks/chunk-6TEDFSNM.mjs +0 -655
- package/lib/web/chunks/chunk-7BMRSMHN.mjs +0 -2
- package/lib/web/chunks/chunk-A2SOFE47.mjs +0 -24
- package/lib/web/chunks/chunk-A7KJCK4R.mjs +0 -14
- package/lib/web/chunks/chunk-AEXGGXS7.mjs +0 -2
- package/lib/web/chunks/chunk-AGD7ZT6O.mjs +0 -15
- package/lib/web/chunks/chunk-AIEOQWNG.mjs +0 -2
- package/lib/web/chunks/chunk-ASTM35HG.mjs +0 -16
- package/lib/web/chunks/chunk-AZBMFPMX.mjs +0 -1421
- package/lib/web/chunks/chunk-B2V2UDCU.mjs +0 -16
- package/lib/web/chunks/chunk-BFGKGTAC.mjs +0 -2
- package/lib/web/chunks/chunk-BHW6AFO6.mjs +0 -2
- package/lib/web/chunks/chunk-BWRW3NJ2.mjs +0 -16
- package/lib/web/chunks/chunk-CBM2IZAK.mjs +0 -2
- package/lib/web/chunks/chunk-CDLCFF44.mjs +0 -2
- package/lib/web/chunks/chunk-CI5CO7FQ.mjs +0 -2
- package/lib/web/chunks/chunk-CIB4U2YK.mjs +0 -2
- package/lib/web/chunks/chunk-CLLTZQGD.mjs +0 -596
- package/lib/web/chunks/chunk-D5HQLRFW.mjs +0 -655
- package/lib/web/chunks/chunk-DZDTNXXK.mjs +0 -2
- package/lib/web/chunks/chunk-FDOZ6YSS.mjs +0 -2
- package/lib/web/chunks/chunk-FMEWNGQO.mjs +0 -2
- package/lib/web/chunks/chunk-G4DH7GMT.mjs +0 -2
- package/lib/web/chunks/chunk-GBUZCZE4.mjs +0 -2
- package/lib/web/chunks/chunk-GLMS5ZLJ.mjs +0 -445
- package/lib/web/chunks/chunk-GNGMIA7V.mjs +0 -2
- package/lib/web/chunks/chunk-HJ36IONA.mjs +0 -15
- package/lib/web/chunks/chunk-HXPTZMAZ.mjs +0 -2
- package/lib/web/chunks/chunk-I27M4JCS.mjs +0 -2
- package/lib/web/chunks/chunk-IVCT27JB.mjs +0 -2
- package/lib/web/chunks/chunk-JG4QSK5B.mjs +0 -2
- package/lib/web/chunks/chunk-JR7BJW6B.mjs +0 -389
- package/lib/web/chunks/chunk-K46ZJUXJ.mjs +0 -90
- package/lib/web/chunks/chunk-K4LXMO4D.mjs +0 -2
- package/lib/web/chunks/chunk-KBTYK5YE.mjs +0 -662
- package/lib/web/chunks/chunk-KHP6CSSM.mjs +0 -2
- package/lib/web/chunks/chunk-KRDRIW7T.mjs +0 -14
- package/lib/web/chunks/chunk-L2DTKDER.mjs +0 -2
- package/lib/web/chunks/chunk-LFDFDGHY.mjs +0 -655
- package/lib/web/chunks/chunk-MAIUUK4E.mjs +0 -2
- package/lib/web/chunks/chunk-MKJKS3IG.mjs +0 -275
- package/lib/web/chunks/chunk-MRQKVLXG.mjs +0 -2
- package/lib/web/chunks/chunk-NK3OISOL.mjs +0 -14
- package/lib/web/chunks/chunk-NLJDDIXW.mjs +0 -2
- package/lib/web/chunks/chunk-OENR3XFI.mjs +0 -11
- package/lib/web/chunks/chunk-OZB3VKZE.mjs +0 -2
- package/lib/web/chunks/chunk-P64PFJT3.mjs +0 -17618
- package/lib/web/chunks/chunk-PACPGYH7.mjs +0 -2
- package/lib/web/chunks/chunk-PART6HOE.mjs +0 -14
- package/lib/web/chunks/chunk-PMRXUQRH.mjs +0 -2
- package/lib/web/chunks/chunk-PZ45TQ55.mjs +0 -14
- package/lib/web/chunks/chunk-Q5LN7GET.mjs +0 -17624
- package/lib/web/chunks/chunk-QCD6T6L4.mjs +0 -297
- package/lib/web/chunks/chunk-QD5EUANU.mjs +0 -2
- package/lib/web/chunks/chunk-QJTECJCO.mjs +0 -2
- package/lib/web/chunks/chunk-QPIZURPZ.mjs +0 -2
- package/lib/web/chunks/chunk-QPY45R5F.mjs +0 -274
- package/lib/web/chunks/chunk-R2SGZIG5.mjs +0 -2
- package/lib/web/chunks/chunk-S3GYQYVJ.mjs +0 -16
- package/lib/web/chunks/chunk-SCCXVTDM.mjs +0 -2
- package/lib/web/chunks/chunk-SHJHD646.mjs +0 -2
- package/lib/web/chunks/chunk-TCRVZ55E.mjs +0 -2
- package/lib/web/chunks/chunk-TJ6ZVV2L.mjs +0 -15
- package/lib/web/chunks/chunk-TPSY4RC3.mjs +0 -14
- package/lib/web/chunks/chunk-U5KNX5O6.mjs +0 -17624
- package/lib/web/chunks/chunk-UCKELQSM.mjs +0 -2
- package/lib/web/chunks/chunk-UGGCYHRH.mjs +0 -15
- package/lib/web/chunks/chunk-UNYQJZET.mjs +0 -16
- package/lib/web/chunks/chunk-VE72SWLV.mjs +0 -15
- package/lib/web/chunks/chunk-VKONO6MI.mjs +0 -2
- package/lib/web/chunks/chunk-W4BGMPJO.mjs +0 -2
- package/lib/web/chunks/chunk-WHNEEKLR.mjs +0 -2
- package/lib/web/chunks/chunk-WLGUP3KY.mjs +0 -16
- package/lib/web/chunks/chunk-WY7D4WBZ.mjs +0 -2
- package/lib/web/chunks/chunk-XRNB2MHO.mjs +0 -107
- package/lib/web/chunks/chunk-XXTIAXQY.mjs +0 -2
- package/lib/web/chunks/chunk-YG6DIKQD.mjs +0 -2
- package/lib/web/chunks/chunk-YIZFMU66.mjs +0 -2
- package/lib/web/chunks/chunk-YOGAPOGC.mjs +0 -2
- package/lib/web/chunks/chunk-Z7373DS5.mjs +0 -2
- package/lib/web/chunks/chunk-Z76GRN66.mjs +0 -17627
- package/lib/web/chunks/persistentStorage.web-4FBAOYJ4.mjs +0 -12
- package/lib/web/chunks/persistentStorage.web-7W3Y6Q24.mjs +0 -12
- package/lib/web/chunks/persistentStorage.web-GOWNFMVT.mjs +0 -2
- package/lib/web/chunks/persistentStorage.web-RF47FXIK.mjs +0 -12
- package/scripts/generate-wormhole-textures.cjs +0 -261
- package/scripts/test-wormhole-motion.cjs +0 -59
|
@@ -1,1003 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import { useEffect, useMemo, useRef, useState, useContext, createContext, useCallback, Children } from "react";
|
|
4
|
-
import { Animated, Dimensions, useWindowDimensions, View, Text, TouchableOpacity } from "react-native";
|
|
5
|
-
import { night } from "../night/nightTheme.js";
|
|
6
|
-
import { DraggableHeader } from "../components/DraggableHeader.js";
|
|
7
|
-
import { EnvironmentSelectorInline } from "../../env/EnvironmentSelectorInline";
|
|
8
|
-
import { GripVerticalIcon } from "../components/GripVerticalIcon.js";
|
|
9
|
-
import { buoyColors } from "../gameUI/constants/gameUIColors.js";
|
|
10
|
-
import { getSafeAreaInsets, persistentStorage } from "../../utils/index.js";
|
|
11
|
-
import { useSafeAreaInsets } from "../../hooks/index.js";
|
|
12
|
-
import { calculateTargetPosition } from "./onboardingConstants";
|
|
13
|
-
|
|
14
|
-
// Shared utilities from floating-tools-core
|
|
15
|
-
import { getUserStatusConfig as getStatusConfig, filterValidChildren, floatingToolsColors } from "@buoy-gg/floating-tools-core";
|
|
16
|
-
|
|
17
|
-
// Re-export UserRole type for consumers
|
|
18
|
-
import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
|
|
19
|
-
// Using Views to render grip dots; no react-native-svg dependency
|
|
20
|
-
|
|
21
|
-
const STORAGE_KEYS = {
|
|
22
|
-
BUBBLE_POSITION_X: "@react_buoy_bubble_position_x",
|
|
23
|
-
BUBBLE_POSITION_Y: "@react_buoy_bubble_position_y"
|
|
24
|
-
};
|
|
25
|
-
|
|
26
|
-
// Position constants
|
|
27
|
-
const VISIBLE_HANDLE_WIDTH = 32;
|
|
28
|
-
const EDGE_PADDING = 20;
|
|
29
|
-
const LAYOUT_SETTLE_DELAY_MS = 150;
|
|
30
|
-
|
|
31
|
-
/** Helper to get current value from Animated.Value without triggering updates */
|
|
32
|
-
const getAnimatedValue = value => value.__getValue();
|
|
33
|
-
|
|
34
|
-
// =============================
|
|
35
|
-
// Position persistence hook
|
|
36
|
-
// Extracted logic dedicated to state/IO
|
|
37
|
-
// =============================
|
|
38
|
-
/**
|
|
39
|
-
* Custom hook for managing floating tools position persistence
|
|
40
|
-
*
|
|
41
|
-
* Handles loading, saving, and validating the position of the floating tools bubble
|
|
42
|
-
* with automatic boundary checking and storage management.
|
|
43
|
-
*
|
|
44
|
-
* @param props - Configuration for position management
|
|
45
|
-
* @param props.animatedPosition - Animated.ValueXY for position updates
|
|
46
|
-
* @param props.bubbleWidth - Width of the bubble for boundary calculations
|
|
47
|
-
* @param props.bubbleHeight - Height of the bubble for boundary calculations
|
|
48
|
-
* @param props.enabled - Whether position persistence is enabled
|
|
49
|
-
* @param props.visibleHandleWidth - Width of visible handle when bubble is hidden
|
|
50
|
-
* @param props.listenersSuspended - Pause automatic listeners without disabling manual saves
|
|
51
|
-
* @param props.onPositionLoaded - Callback fired once position is loaded and set
|
|
52
|
-
*
|
|
53
|
-
* @returns Object containing position management functions and loading state
|
|
54
|
-
*
|
|
55
|
-
* @performance Uses debounced saving to avoid excessive storage operations
|
|
56
|
-
* @performance Validates positions against screen boundaries and safe areas
|
|
57
|
-
*/
|
|
58
|
-
function useFloatingToolsPosition({
|
|
59
|
-
animatedPosition,
|
|
60
|
-
bubbleWidth = 100,
|
|
61
|
-
bubbleHeight = 32,
|
|
62
|
-
enabled = true,
|
|
63
|
-
visibleHandleWidth = 32,
|
|
64
|
-
listenersSuspended = false,
|
|
65
|
-
defaultPlacement = "top",
|
|
66
|
-
onPositionLoaded,
|
|
67
|
-
storageKey
|
|
68
|
-
}) {
|
|
69
|
-
// Use state instead of ref so we can react to changes and prevent races
|
|
70
|
-
const [isInitialized, setIsInitialized] = useState(false);
|
|
71
|
-
const saveTimeoutRef = useRef(undefined);
|
|
72
|
-
// Track if component is mounted to prevent state updates after unmount
|
|
73
|
-
const isMountedRef = useRef(true);
|
|
74
|
-
|
|
75
|
-
// Cleanup on unmount - cancel any pending saves
|
|
76
|
-
useEffect(() => {
|
|
77
|
-
isMountedRef.current = true;
|
|
78
|
-
return () => {
|
|
79
|
-
isMountedRef.current = false;
|
|
80
|
-
// Clear any pending debounced saves on unmount to prevent saving stale/invalid positions
|
|
81
|
-
if (saveTimeoutRef.current) {
|
|
82
|
-
clearTimeout(saveTimeoutRef.current);
|
|
83
|
-
saveTimeoutRef.current = undefined;
|
|
84
|
-
}
|
|
85
|
-
};
|
|
86
|
-
}, []);
|
|
87
|
-
const savePosition = useCallback(async (x, y) => {
|
|
88
|
-
if (!enabled) return;
|
|
89
|
-
// Don't save if component unmounted or position is clearly invalid
|
|
90
|
-
if (!isMountedRef.current) return;
|
|
91
|
-
// Guard against saving invalid positions (e.g., during HMR with stale dimensions)
|
|
92
|
-
const {
|
|
93
|
-
width: screenWidth
|
|
94
|
-
} = Dimensions.get("window");
|
|
95
|
-
if (screenWidth <= 0 || x < 0 || y < 0) return;
|
|
96
|
-
try {
|
|
97
|
-
await Promise.all([persistentStorage.setItem(storageKey ? `${storageKey}:x` : STORAGE_KEYS.BUBBLE_POSITION_X, x.toString()), persistentStorage.setItem(storageKey ? `${storageKey}:y` : STORAGE_KEYS.BUBBLE_POSITION_Y, y.toString())]);
|
|
98
|
-
} catch (error) {
|
|
99
|
-
// Failed to save position - continue without persistence
|
|
100
|
-
}
|
|
101
|
-
}, [enabled, storageKey]);
|
|
102
|
-
const debouncedSavePosition = useCallback((x, y) => {
|
|
103
|
-
// Don't schedule saves if unmounted
|
|
104
|
-
if (!isMountedRef.current) return;
|
|
105
|
-
if (saveTimeoutRef.current) clearTimeout(saveTimeoutRef.current);
|
|
106
|
-
saveTimeoutRef.current = setTimeout(() => {
|
|
107
|
-
// Double-check mount status before saving
|
|
108
|
-
if (isMountedRef.current) {
|
|
109
|
-
savePosition(x, y);
|
|
110
|
-
}
|
|
111
|
-
}, 500);
|
|
112
|
-
}, [savePosition]);
|
|
113
|
-
const loadPosition = useCallback(async () => {
|
|
114
|
-
if (!enabled) return null;
|
|
115
|
-
try {
|
|
116
|
-
const [xStr, yStr] = await Promise.all([persistentStorage.getItem(storageKey ? `${storageKey}:x` : STORAGE_KEYS.BUBBLE_POSITION_X), persistentStorage.getItem(storageKey ? `${storageKey}:y` : STORAGE_KEYS.BUBBLE_POSITION_Y)]);
|
|
117
|
-
if (xStr !== null && yStr !== null) {
|
|
118
|
-
const x = parseFloat(xStr);
|
|
119
|
-
const y = parseFloat(yStr);
|
|
120
|
-
if (!Number.isNaN(x) && !Number.isNaN(y)) {
|
|
121
|
-
return {
|
|
122
|
-
x,
|
|
123
|
-
y
|
|
124
|
-
};
|
|
125
|
-
}
|
|
126
|
-
}
|
|
127
|
-
} catch (error) {
|
|
128
|
-
// Failed to load position - use default
|
|
129
|
-
}
|
|
130
|
-
return null;
|
|
131
|
-
}, [enabled, storageKey]);
|
|
132
|
-
const validatePosition = useCallback(position => {
|
|
133
|
-
const {
|
|
134
|
-
width: screenWidth,
|
|
135
|
-
height: screenHeight
|
|
136
|
-
} = Dimensions.get("window");
|
|
137
|
-
const safeArea = getSafeAreaInsets();
|
|
138
|
-
|
|
139
|
-
// Guard against invalid screen dimensions (can happen during HMR)
|
|
140
|
-
// Return the position as-is but mark as invalid so caller knows not to trust it
|
|
141
|
-
if (screenWidth <= 0 || screenHeight <= 0) {
|
|
142
|
-
return {
|
|
143
|
-
...position,
|
|
144
|
-
isValid: false
|
|
145
|
-
};
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
// Prevent going off left, top, and bottom edges with safe area
|
|
149
|
-
// Allow pushing off-screen to the right so only the grab handle remains visible
|
|
150
|
-
const minX = safeArea.left;
|
|
151
|
-
const maxX = screenWidth - visibleHandleWidth;
|
|
152
|
-
// Add padding below the safe area top to ensure bubble doesn't go behind notch
|
|
153
|
-
const minY = safeArea.top + EDGE_PADDING;
|
|
154
|
-
const maxY = screenHeight - bubbleHeight - safeArea.bottom; // Respect safe area bottom
|
|
155
|
-
const clamped = {
|
|
156
|
-
x: Math.max(minX, Math.min(position.x, maxX)),
|
|
157
|
-
y: Math.max(minY, Math.min(position.y, maxY)),
|
|
158
|
-
isValid: true
|
|
159
|
-
};
|
|
160
|
-
return clamped;
|
|
161
|
-
}, [visibleHandleWidth, bubbleHeight]);
|
|
162
|
-
useEffect(() => {
|
|
163
|
-
if (!enabled || isInitialized) return;
|
|
164
|
-
let cancelled = false;
|
|
165
|
-
const restore = async () => {
|
|
166
|
-
const saved = await loadPosition();
|
|
167
|
-
|
|
168
|
-
// Check if cancelled or unmounted before updating state
|
|
169
|
-
if (cancelled || !isMountedRef.current) return;
|
|
170
|
-
const {
|
|
171
|
-
width: screenWidth,
|
|
172
|
-
height: screenHeight
|
|
173
|
-
} = Dimensions.get("window");
|
|
174
|
-
const safeArea = getSafeAreaInsets();
|
|
175
|
-
|
|
176
|
-
// If dimensions are invalid (HMR scenario), wait and retry
|
|
177
|
-
if (screenWidth <= 0 || screenHeight <= 0) {
|
|
178
|
-
// Schedule a retry after a short delay
|
|
179
|
-
setTimeout(() => {
|
|
180
|
-
if (isMountedRef.current && !cancelled) {
|
|
181
|
-
restore();
|
|
182
|
-
}
|
|
183
|
-
}, 100);
|
|
184
|
-
return;
|
|
185
|
-
}
|
|
186
|
-
let finalPosition;
|
|
187
|
-
let wasHidden = false;
|
|
188
|
-
if (saved) {
|
|
189
|
-
const validated = validatePosition(saved);
|
|
190
|
-
|
|
191
|
-
// If validation returned invalid, retry later
|
|
192
|
-
if (!validated.isValid) {
|
|
193
|
-
setTimeout(() => {
|
|
194
|
-
if (isMountedRef.current && !cancelled) {
|
|
195
|
-
restore();
|
|
196
|
-
}
|
|
197
|
-
}, 100);
|
|
198
|
-
return;
|
|
199
|
-
}
|
|
200
|
-
|
|
201
|
-
// Check if the saved position is out of bounds
|
|
202
|
-
const wasOutOfBounds = Math.abs(saved.x - validated.x) > 5 || Math.abs(saved.y - validated.y) > 5;
|
|
203
|
-
if (wasOutOfBounds) {
|
|
204
|
-
// Save the corrected position
|
|
205
|
-
await savePosition(validated.x, validated.y);
|
|
206
|
-
}
|
|
207
|
-
finalPosition = {
|
|
208
|
-
x: validated.x,
|
|
209
|
-
y: validated.y
|
|
210
|
-
};
|
|
211
|
-
|
|
212
|
-
// Check if loaded in hidden state (bubble pushed to right edge)
|
|
213
|
-
wasHidden = validated.x >= screenWidth - visibleHandleWidth - 5;
|
|
214
|
-
} else {
|
|
215
|
-
const defaultY = defaultPlacement === "bottom" ? Math.max(safeArea.top + EDGE_PADDING, screenHeight - bubbleHeight - safeArea.bottom - EDGE_PADDING) : Math.max(safeArea.top + EDGE_PADDING, Math.min(100, screenHeight - bubbleHeight - safeArea.bottom));
|
|
216
|
-
finalPosition = {
|
|
217
|
-
x: screenWidth - bubbleWidth - EDGE_PADDING,
|
|
218
|
-
y: defaultY
|
|
219
|
-
};
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
// Final mount check before updating
|
|
223
|
-
if (cancelled || !isMountedRef.current) return;
|
|
224
|
-
animatedPosition.setValue(finalPosition);
|
|
225
|
-
setIsInitialized(true);
|
|
226
|
-
onPositionLoaded?.(finalPosition, wasHidden);
|
|
227
|
-
};
|
|
228
|
-
restore();
|
|
229
|
-
return () => {
|
|
230
|
-
cancelled = true;
|
|
231
|
-
};
|
|
232
|
-
}, [enabled, isInitialized, animatedPosition, loadPosition, validatePosition, savePosition, bubbleWidth, bubbleHeight, visibleHandleWidth, onPositionLoaded]);
|
|
233
|
-
|
|
234
|
-
// Listener effect - now properly depends on isInitialized state
|
|
235
|
-
useEffect(() => {
|
|
236
|
-
// Don't attach listener until position is loaded
|
|
237
|
-
if (!enabled || !isInitialized || listenersSuspended) return;
|
|
238
|
-
const listener = animatedPosition.addListener(value => {
|
|
239
|
-
debouncedSavePosition(value.x, value.y);
|
|
240
|
-
});
|
|
241
|
-
return () => {
|
|
242
|
-
animatedPosition.removeListener(listener);
|
|
243
|
-
// Clear debounce timer when listener is removed
|
|
244
|
-
if (saveTimeoutRef.current) {
|
|
245
|
-
clearTimeout(saveTimeoutRef.current);
|
|
246
|
-
saveTimeoutRef.current = undefined;
|
|
247
|
-
}
|
|
248
|
-
};
|
|
249
|
-
}, [enabled, isInitialized, listenersSuspended, animatedPosition, debouncedSavePosition]);
|
|
250
|
-
return {
|
|
251
|
-
savePosition,
|
|
252
|
-
isInitialized
|
|
253
|
-
};
|
|
254
|
-
}
|
|
255
|
-
|
|
256
|
-
// =============================
|
|
257
|
-
// UI-only leaf components
|
|
258
|
-
// =============================
|
|
259
|
-
export function Divider() {
|
|
260
|
-
const dividerStyle = {
|
|
261
|
-
width: 1,
|
|
262
|
-
height: 12,
|
|
263
|
-
backgroundColor: buoyColors.textMuted + "66",
|
|
264
|
-
flexShrink: 0
|
|
265
|
-
};
|
|
266
|
-
return /*#__PURE__*/_jsx(View, {
|
|
267
|
-
style: dividerStyle
|
|
268
|
-
});
|
|
269
|
-
}
|
|
270
|
-
|
|
271
|
-
// Use shared getUserStatusConfig from floating-tools-core
|
|
272
|
-
// Wraps the core function to use our buoyColors (mapped to gameUIColors format)
|
|
273
|
-
const gameUIColorsCompat = {
|
|
274
|
-
success: "#20C997",
|
|
275
|
-
// teal
|
|
276
|
-
warning: "#FFA94D",
|
|
277
|
-
error: "#EF4444",
|
|
278
|
-
muted: buoyColors.textMuted,
|
|
279
|
-
secondary: buoyColors.textSecondary,
|
|
280
|
-
info: "#20C997",
|
|
281
|
-
// teal
|
|
282
|
-
primary: "#20C997",
|
|
283
|
-
optional: buoyColors.textSecondary // optional status color
|
|
284
|
-
};
|
|
285
|
-
function getUserStatusConfig(userRole) {
|
|
286
|
-
return getStatusConfig(userRole, gameUIColorsCompat);
|
|
287
|
-
}
|
|
288
|
-
|
|
289
|
-
// Context to avoid brittle prop threading and keep API composable
|
|
290
|
-
const FloatingToolsContext = /*#__PURE__*/createContext({
|
|
291
|
-
isDragging: false
|
|
292
|
-
});
|
|
293
|
-
export function UserStatus({
|
|
294
|
-
userRole,
|
|
295
|
-
onPress
|
|
296
|
-
}) {
|
|
297
|
-
const {
|
|
298
|
-
isDragging
|
|
299
|
-
} = useContext(FloatingToolsContext);
|
|
300
|
-
const config = getUserStatusConfig(userRole);
|
|
301
|
-
const containerStyle = {
|
|
302
|
-
flexDirection: "row",
|
|
303
|
-
alignItems: "center",
|
|
304
|
-
paddingVertical: 6,
|
|
305
|
-
paddingHorizontal: 8,
|
|
306
|
-
flexShrink: 0
|
|
307
|
-
};
|
|
308
|
-
const dotStyle = {
|
|
309
|
-
width: 6,
|
|
310
|
-
height: 6,
|
|
311
|
-
borderRadius: 3,
|
|
312
|
-
backgroundColor: config.dotColor,
|
|
313
|
-
marginRight: 4
|
|
314
|
-
};
|
|
315
|
-
const textStyle = {
|
|
316
|
-
fontSize: 10,
|
|
317
|
-
fontWeight: "500",
|
|
318
|
-
color: config.textColor,
|
|
319
|
-
letterSpacing: 0.3
|
|
320
|
-
};
|
|
321
|
-
if (!onPress) {
|
|
322
|
-
return /*#__PURE__*/_jsxs(View, {
|
|
323
|
-
style: containerStyle,
|
|
324
|
-
accessibilityLabel: `User status: ${config.label}`,
|
|
325
|
-
children: [/*#__PURE__*/_jsx(View, {
|
|
326
|
-
style: dotStyle
|
|
327
|
-
}), /*#__PURE__*/_jsx(Text, {
|
|
328
|
-
style: textStyle,
|
|
329
|
-
children: config.label
|
|
330
|
-
})]
|
|
331
|
-
});
|
|
332
|
-
}
|
|
333
|
-
return /*#__PURE__*/_jsxs(TouchableOpacity, {
|
|
334
|
-
accessibilityRole: "button",
|
|
335
|
-
accessibilityLabel: "Open Dev Tools Menu",
|
|
336
|
-
testID: "open-dev-tools-button",
|
|
337
|
-
onPress: onPress,
|
|
338
|
-
hitSlop: {
|
|
339
|
-
top: 10,
|
|
340
|
-
bottom: 10,
|
|
341
|
-
left: 0,
|
|
342
|
-
right: 10
|
|
343
|
-
},
|
|
344
|
-
disabled: isDragging,
|
|
345
|
-
activeOpacity: 0.85,
|
|
346
|
-
style: containerStyle,
|
|
347
|
-
children: [/*#__PURE__*/_jsx(View, {
|
|
348
|
-
style: dotStyle
|
|
349
|
-
}), /*#__PURE__*/_jsx(Text, {
|
|
350
|
-
style: textStyle,
|
|
351
|
-
children: config.label
|
|
352
|
-
})]
|
|
353
|
-
});
|
|
354
|
-
}
|
|
355
|
-
|
|
356
|
-
// =============================
|
|
357
|
-
// Helpers (using shared filterValidChildren from core)
|
|
358
|
-
// =============================
|
|
359
|
-
function interleaveWithDividers(childrenArray) {
|
|
360
|
-
const validChildren = filterValidChildren(childrenArray);
|
|
361
|
-
const result = [];
|
|
362
|
-
validChildren.forEach((child, index) => {
|
|
363
|
-
result.push(child);
|
|
364
|
-
if (index < validChildren.length - 1) result.push(/*#__PURE__*/_jsx(Divider, {}, `divider-${index}`));
|
|
365
|
-
});
|
|
366
|
-
return result;
|
|
367
|
-
}
|
|
368
|
-
|
|
369
|
-
// =============================
|
|
370
|
-
// Main Component (presentation only)
|
|
371
|
-
// =============================
|
|
372
|
-
|
|
373
|
-
/**
|
|
374
|
-
* FloatingTools - A draggable, resizable bubble for development tools
|
|
375
|
-
*
|
|
376
|
-
* This component provides a floating bubble interface that can contain various
|
|
377
|
-
* development tools and controls. It features:
|
|
378
|
-
* - Drag and drop positioning with boundary constraints
|
|
379
|
-
* - Hide/show functionality by dragging to screen edge
|
|
380
|
-
* - Position persistence across app restarts
|
|
381
|
-
* - Safe area aware positioning
|
|
382
|
-
* - Automatic divider insertion between child components
|
|
383
|
-
*
|
|
384
|
-
* @param props - Configuration for the floating tools
|
|
385
|
-
* @param props.enablePositionPersistence - Whether to save/restore position (default: true)
|
|
386
|
-
* @param props.children - Child components to render in the bubble
|
|
387
|
-
*
|
|
388
|
-
* @returns JSX.Element representing the floating tools bubble
|
|
389
|
-
*
|
|
390
|
-
* @example
|
|
391
|
-
* ```typescript
|
|
392
|
-
* <FloatingTools enablePositionPersistence={true}>
|
|
393
|
-
* <UserStatus userRole="admin" onPress={handleUserPress} />
|
|
394
|
-
* <ToolButton onPress={openSettings} />
|
|
395
|
-
* </FloatingTools>
|
|
396
|
-
* ```
|
|
397
|
-
*
|
|
398
|
-
* @performance Uses native driver animations for smooth positioning
|
|
399
|
-
* @performance Implements efficient boundary checking and position validation
|
|
400
|
-
* @performance Includes debounced position saving for optimal storage performance
|
|
401
|
-
*/
|
|
402
|
-
export function FloatingTool({
|
|
403
|
-
id,
|
|
404
|
-
suspendPointerEvents = false,
|
|
405
|
-
revealToken,
|
|
406
|
-
variant = "bubble",
|
|
407
|
-
dragFromSurface = false,
|
|
408
|
-
accessibilityLabel = "Move dev tools bubble",
|
|
409
|
-
minimizedStack,
|
|
410
|
-
hasMinimizedStack = false,
|
|
411
|
-
accessory,
|
|
412
|
-
handleAdornment,
|
|
413
|
-
enablePositionPersistence = true,
|
|
414
|
-
defaultPlacement = "top",
|
|
415
|
-
pushToSide = false,
|
|
416
|
-
centerOnboarding = false,
|
|
417
|
-
children,
|
|
418
|
-
environment,
|
|
419
|
-
availableEnvironments,
|
|
420
|
-
onEnvironmentSwitch,
|
|
421
|
-
showEnvironmentSelector = false
|
|
422
|
-
}) {
|
|
423
|
-
// Animated position and drag state
|
|
424
|
-
const animatedPosition = useRef(new Animated.ValueXY()).current;
|
|
425
|
-
const [isDragging, setIsDragging] = useState(false);
|
|
426
|
-
const [bubbleSize, setBubbleSize] = useState({
|
|
427
|
-
width: 100,
|
|
428
|
-
height: 32
|
|
429
|
-
});
|
|
430
|
-
const [isHidden, setIsHidden] = useState(false);
|
|
431
|
-
const [accessoryHeight, setAccessoryHeight] = useState(0);
|
|
432
|
-
const [accessoryAbove, setAccessoryAbove] = useState(false);
|
|
433
|
-
|
|
434
|
-
// Store the position before hiding to restore when showing
|
|
435
|
-
const savedPositionRef = useRef(null);
|
|
436
|
-
|
|
437
|
-
// Track if the hide state was triggered by pushToSide prop vs user toggle
|
|
438
|
-
const isPushedBySideRef = useRef(false);
|
|
439
|
-
|
|
440
|
-
// Track if user has explicitly chosen to show the menu (overriding pushToSide)
|
|
441
|
-
const userWantsVisibleRef = useRef(false);
|
|
442
|
-
|
|
443
|
-
// Track previous pushToSide value to detect transitions
|
|
444
|
-
const prevPushToSideRef = useRef(pushToSide);
|
|
445
|
-
|
|
446
|
-
// Track previous bubble width for auto-adjustment when tools are added/removed
|
|
447
|
-
const prevBubbleWidthRef = useRef(null);
|
|
448
|
-
|
|
449
|
-
// Track if layout has settled (after initial render cycle completes)
|
|
450
|
-
const [isLayoutSettled, setIsLayoutSettled] = useState(false);
|
|
451
|
-
const safeAreaInsets = useSafeAreaInsets();
|
|
452
|
-
const {
|
|
453
|
-
width: screenWidth,
|
|
454
|
-
height: screenHeight
|
|
455
|
-
} = useWindowDimensions();
|
|
456
|
-
|
|
457
|
-
// Callback when position is loaded - sets hidden state properly without racing
|
|
458
|
-
const handlePositionLoaded = useCallback((position, wasHidden) => {
|
|
459
|
-
if (wasHidden) {
|
|
460
|
-
setIsHidden(true);
|
|
461
|
-
}
|
|
462
|
-
}, []);
|
|
463
|
-
|
|
464
|
-
// Position persistence (state/IO extracted to hook)
|
|
465
|
-
const {
|
|
466
|
-
savePosition,
|
|
467
|
-
isInitialized: isPositionInitialized
|
|
468
|
-
} = useFloatingToolsPosition({
|
|
469
|
-
animatedPosition,
|
|
470
|
-
bubbleWidth: bubbleSize.width,
|
|
471
|
-
bubbleHeight: bubbleSize.height,
|
|
472
|
-
enabled: enablePositionPersistence,
|
|
473
|
-
visibleHandleWidth: VISIBLE_HANDLE_WIDTH,
|
|
474
|
-
listenersSuspended: isDragging,
|
|
475
|
-
defaultPlacement,
|
|
476
|
-
onPositionLoaded: handlePositionLoaded,
|
|
477
|
-
storageKey: id ? `@buoy/floating-tool/${id}` : undefined
|
|
478
|
-
});
|
|
479
|
-
|
|
480
|
-
// Effect to handle pushToSide prop changes
|
|
481
|
-
useEffect(() => {
|
|
482
|
-
// Don't process pushToSide until position is initialized (when persistence enabled)
|
|
483
|
-
if (enablePositionPersistence && !isPositionInitialized) return;
|
|
484
|
-
|
|
485
|
-
// Reset user override when pushToSide becomes true (dial/modal opens)
|
|
486
|
-
// This allows auto-hide to work after user manually showed the menu
|
|
487
|
-
if (!prevPushToSideRef.current && pushToSide) {
|
|
488
|
-
userWantsVisibleRef.current = false;
|
|
489
|
-
}
|
|
490
|
-
prevPushToSideRef.current = pushToSide;
|
|
491
|
-
|
|
492
|
-
// Only push to side if:
|
|
493
|
-
// 1. pushToSide is true
|
|
494
|
-
// 2. Not currently hidden
|
|
495
|
-
// 3. Not being dragged
|
|
496
|
-
// 4. User hasn't manually restored (userWantsVisibleRef)
|
|
497
|
-
if (pushToSide && !isHidden && !isDragging && !userWantsVisibleRef.current) {
|
|
498
|
-
// Push to side
|
|
499
|
-
const currentX = getAnimatedValue(animatedPosition.x);
|
|
500
|
-
const currentY = getAnimatedValue(animatedPosition.y);
|
|
501
|
-
|
|
502
|
-
// Save current position
|
|
503
|
-
savedPositionRef.current = {
|
|
504
|
-
x: currentX,
|
|
505
|
-
y: currentY
|
|
506
|
-
};
|
|
507
|
-
const hiddenX = screenWidth - VISIBLE_HANDLE_WIDTH;
|
|
508
|
-
isPushedBySideRef.current = true;
|
|
509
|
-
setIsHidden(true);
|
|
510
|
-
Animated.timing(animatedPosition, {
|
|
511
|
-
toValue: {
|
|
512
|
-
x: hiddenX,
|
|
513
|
-
y: currentY
|
|
514
|
-
},
|
|
515
|
-
duration: 200,
|
|
516
|
-
useNativeDriver: false
|
|
517
|
-
}).start(() => {
|
|
518
|
-
savePosition(hiddenX, currentY);
|
|
519
|
-
});
|
|
520
|
-
} else if (!pushToSide && isHidden && isPushedBySideRef.current) {
|
|
521
|
-
// Restore from side when pushToSide becomes false
|
|
522
|
-
if (savedPositionRef.current) {
|
|
523
|
-
const {
|
|
524
|
-
x: targetX,
|
|
525
|
-
y: targetY
|
|
526
|
-
} = savedPositionRef.current;
|
|
527
|
-
isPushedBySideRef.current = false;
|
|
528
|
-
userWantsVisibleRef.current = false; // Reset user override when tools close
|
|
529
|
-
setIsHidden(false);
|
|
530
|
-
Animated.timing(animatedPosition, {
|
|
531
|
-
toValue: {
|
|
532
|
-
x: targetX,
|
|
533
|
-
y: targetY
|
|
534
|
-
},
|
|
535
|
-
duration: 200,
|
|
536
|
-
useNativeDriver: false
|
|
537
|
-
}).start(() => {
|
|
538
|
-
savePosition(targetX, targetY);
|
|
539
|
-
});
|
|
540
|
-
}
|
|
541
|
-
}
|
|
542
|
-
}, [enablePositionPersistence, isPositionInitialized, pushToSide, isHidden, isDragging, screenWidth, animatedPosition, savePosition]);
|
|
543
|
-
|
|
544
|
-
// Hidden state is now set via onPositionLoaded callback - no racing effect needed
|
|
545
|
-
|
|
546
|
-
// Wait for layout to settle before enabling width tracking
|
|
547
|
-
// This prevents false-positive width changes during initial render when
|
|
548
|
-
// the bubble measures multiple times as children render
|
|
549
|
-
useEffect(() => {
|
|
550
|
-
if (!isPositionInitialized || isLayoutSettled) return;
|
|
551
|
-
const timer = setTimeout(() => {
|
|
552
|
-
// Capture the current width as the baseline AFTER layout has settled
|
|
553
|
-
prevBubbleWidthRef.current = bubbleSize.width;
|
|
554
|
-
setIsLayoutSettled(true);
|
|
555
|
-
}, LAYOUT_SETTLE_DELAY_MS);
|
|
556
|
-
return () => clearTimeout(timer);
|
|
557
|
-
}, [isPositionInitialized, isLayoutSettled, bubbleSize.width]);
|
|
558
|
-
|
|
559
|
-
// Auto-adjust position when bubble width changes (tools added/removed)
|
|
560
|
-
// This keeps the bubble's right edge in the same relative position
|
|
561
|
-
useEffect(() => {
|
|
562
|
-
// Skip if position not initialized yet
|
|
563
|
-
if (!isPositionInitialized) return;
|
|
564
|
-
|
|
565
|
-
// Skip until layout has settled (prevents false-positive width changes during initial render)
|
|
566
|
-
if (!isLayoutSettled) return;
|
|
567
|
-
|
|
568
|
-
// Skip if prevBubbleWidthRef hasn't been set yet
|
|
569
|
-
if (prevBubbleWidthRef.current === null) return;
|
|
570
|
-
|
|
571
|
-
// Skip if currently dragging - let drag handle position
|
|
572
|
-
if (isDragging) {
|
|
573
|
-
prevBubbleWidthRef.current = bubbleSize.width;
|
|
574
|
-
return;
|
|
575
|
-
}
|
|
576
|
-
const prevWidth = prevBubbleWidthRef.current;
|
|
577
|
-
const newWidth = bubbleSize.width;
|
|
578
|
-
const widthDelta = newWidth - prevWidth;
|
|
579
|
-
|
|
580
|
-
// Skip if no significant change (avoid jitter)
|
|
581
|
-
if (Math.abs(widthDelta) < 2) {
|
|
582
|
-
return;
|
|
583
|
-
}
|
|
584
|
-
|
|
585
|
-
// Update ref first
|
|
586
|
-
prevBubbleWidthRef.current = newWidth;
|
|
587
|
-
|
|
588
|
-
// If hidden, only adjust the saved position (not the current animated position)
|
|
589
|
-
if (isHidden) {
|
|
590
|
-
if (savedPositionRef.current) {
|
|
591
|
-
const adjustedX = savedPositionRef.current.x - widthDelta;
|
|
592
|
-
// Clamp to valid bounds
|
|
593
|
-
savedPositionRef.current.x = Math.max(safeAreaInsets.left, Math.min(adjustedX, screenWidth - newWidth - EDGE_PADDING));
|
|
594
|
-
}
|
|
595
|
-
return;
|
|
596
|
-
}
|
|
597
|
-
|
|
598
|
-
// Get current position
|
|
599
|
-
const currentX = getAnimatedValue(animatedPosition.x);
|
|
600
|
-
const currentY = getAnimatedValue(animatedPosition.y);
|
|
601
|
-
|
|
602
|
-
// Calculate new X position
|
|
603
|
-
// If bubble grew (positive delta), move left (decrease X)
|
|
604
|
-
// If bubble shrunk (negative delta), move right (increase X)
|
|
605
|
-
const newX = currentX - widthDelta;
|
|
606
|
-
|
|
607
|
-
// Validate new position is within bounds
|
|
608
|
-
const clampedX = Math.max(safeAreaInsets.left, Math.min(newX, screenWidth - VISIBLE_HANDLE_WIDTH));
|
|
609
|
-
|
|
610
|
-
// Only animate if position actually changed
|
|
611
|
-
if (Math.abs(clampedX - currentX) > 1) {
|
|
612
|
-
Animated.timing(animatedPosition, {
|
|
613
|
-
toValue: {
|
|
614
|
-
x: clampedX,
|
|
615
|
-
y: currentY
|
|
616
|
-
},
|
|
617
|
-
duration: 150,
|
|
618
|
-
useNativeDriver: false
|
|
619
|
-
}).start(() => {
|
|
620
|
-
savePosition(clampedX, currentY);
|
|
621
|
-
// Update savedPositionRef so show/hide works correctly
|
|
622
|
-
if (savedPositionRef.current) {
|
|
623
|
-
savedPositionRef.current.x = clampedX;
|
|
624
|
-
}
|
|
625
|
-
});
|
|
626
|
-
}
|
|
627
|
-
}, [bubbleSize.width, isPositionInitialized, isLayoutSettled, isDragging, isHidden, animatedPosition, screenWidth, safeAreaInsets.left, savePosition]);
|
|
628
|
-
|
|
629
|
-
// Default position when persistence disabled or during onboarding
|
|
630
|
-
useEffect(() => {
|
|
631
|
-
if (!enablePositionPersistence) {
|
|
632
|
-
if (centerOnboarding) {
|
|
633
|
-
// Center the bubble for onboarding - position under tooltip arrow
|
|
634
|
-
// Use shared calculation to ensure perfect alignment across all screens
|
|
635
|
-
const bottomOffset = calculateTargetPosition();
|
|
636
|
-
const centerX = (screenWidth - bubbleSize.width) / 2;
|
|
637
|
-
const centerY = screenHeight - bubbleSize.height - bottomOffset;
|
|
638
|
-
animatedPosition.setValue({
|
|
639
|
-
x: centerX,
|
|
640
|
-
y: centerY
|
|
641
|
-
});
|
|
642
|
-
} else {
|
|
643
|
-
// Default right-side position
|
|
644
|
-
const defaultY = defaultPlacement === "bottom" ? Math.max(safeAreaInsets.top + EDGE_PADDING, screenHeight - bubbleSize.height - safeAreaInsets.bottom - EDGE_PADDING) : Math.max(safeAreaInsets.top + EDGE_PADDING, Math.min(100, screenHeight - bubbleSize.height - safeAreaInsets.bottom));
|
|
645
|
-
animatedPosition.setValue({
|
|
646
|
-
x: screenWidth - bubbleSize.width - EDGE_PADDING,
|
|
647
|
-
y: defaultY
|
|
648
|
-
});
|
|
649
|
-
}
|
|
650
|
-
}
|
|
651
|
-
}, [enablePositionPersistence, centerOnboarding, animatedPosition, bubbleSize.width, bubbleSize.height, safeAreaInsets.top, safeAreaInsets.bottom, screenWidth, screenHeight]);
|
|
652
|
-
|
|
653
|
-
// Toggle hide/show function
|
|
654
|
-
const toggleHideShow = useCallback(() => {
|
|
655
|
-
const currentX = getAnimatedValue(animatedPosition.x);
|
|
656
|
-
const currentY = getAnimatedValue(animatedPosition.y);
|
|
657
|
-
|
|
658
|
-
// Check if the menu is visually off-screen (more than half hidden to the right)
|
|
659
|
-
// This handles edge cases where isHidden state might be out of sync with actual position
|
|
660
|
-
const isVisuallyOffScreen = currentX > screenWidth - bubbleSize.width / 2;
|
|
661
|
-
if (isHidden || isVisuallyOffScreen) {
|
|
662
|
-
// Show the bubble - restore to saved position or default visible position
|
|
663
|
-
let targetX;
|
|
664
|
-
let targetY;
|
|
665
|
-
if (savedPositionRef.current && savedPositionRef.current.x < screenWidth - bubbleSize.width / 2) {
|
|
666
|
-
// Restore to the saved position only if it's a valid visible position
|
|
667
|
-
targetX = savedPositionRef.current.x;
|
|
668
|
-
targetY = savedPositionRef.current.y;
|
|
669
|
-
} else {
|
|
670
|
-
// Default visible position if no saved position or saved position is off-screen
|
|
671
|
-
targetX = screenWidth - bubbleSize.width - EDGE_PADDING;
|
|
672
|
-
targetY = currentY;
|
|
673
|
-
}
|
|
674
|
-
|
|
675
|
-
// User explicitly wants the menu visible (overrides pushToSide)
|
|
676
|
-
isPushedBySideRef.current = false;
|
|
677
|
-
userWantsVisibleRef.current = true;
|
|
678
|
-
setIsHidden(false);
|
|
679
|
-
Animated.timing(animatedPosition, {
|
|
680
|
-
toValue: {
|
|
681
|
-
x: targetX,
|
|
682
|
-
y: targetY
|
|
683
|
-
},
|
|
684
|
-
duration: 200,
|
|
685
|
-
useNativeDriver: false
|
|
686
|
-
}).start(() => {
|
|
687
|
-
savePosition(targetX, targetY);
|
|
688
|
-
});
|
|
689
|
-
} else {
|
|
690
|
-
// Hide the bubble - save current position before hiding
|
|
691
|
-
savedPositionRef.current = {
|
|
692
|
-
x: currentX,
|
|
693
|
-
y: currentY
|
|
694
|
-
};
|
|
695
|
-
|
|
696
|
-
// User explicitly wants the menu hidden
|
|
697
|
-
userWantsVisibleRef.current = false;
|
|
698
|
-
const hiddenX = screenWidth - VISIBLE_HANDLE_WIDTH;
|
|
699
|
-
setIsHidden(true);
|
|
700
|
-
Animated.timing(animatedPosition, {
|
|
701
|
-
toValue: {
|
|
702
|
-
x: hiddenX,
|
|
703
|
-
y: currentY
|
|
704
|
-
},
|
|
705
|
-
duration: 200,
|
|
706
|
-
useNativeDriver: false
|
|
707
|
-
}).start(() => {
|
|
708
|
-
savePosition(hiddenX, currentY);
|
|
709
|
-
});
|
|
710
|
-
}
|
|
711
|
-
}, [animatedPosition, isHidden, bubbleSize.width, savePosition, screenWidth]);
|
|
712
|
-
const handleDragStart = useCallback(() => {
|
|
713
|
-
setIsDragging(true);
|
|
714
|
-
}, []);
|
|
715
|
-
const handleDragEnd = useCallback(finalPosition => {
|
|
716
|
-
let {
|
|
717
|
-
x: currentX,
|
|
718
|
-
y: currentY
|
|
719
|
-
} = finalPosition;
|
|
720
|
-
|
|
721
|
-
// Check if bubble is more than 50% over the right edge
|
|
722
|
-
const bubbleMidpoint = currentX + bubbleSize.width / 2;
|
|
723
|
-
const shouldHide = bubbleMidpoint > screenWidth;
|
|
724
|
-
if (shouldHide) {
|
|
725
|
-
// Animate to hidden position (only grabber visible)
|
|
726
|
-
const hiddenX = screenWidth - VISIBLE_HANDLE_WIDTH;
|
|
727
|
-
setIsHidden(true);
|
|
728
|
-
|
|
729
|
-
// Update savedPositionRef to preserve the Y position when dragging while hidden
|
|
730
|
-
// This ensures that when showing, the bubble restores to the new Y position
|
|
731
|
-
if (savedPositionRef.current) {
|
|
732
|
-
savedPositionRef.current.y = currentY;
|
|
733
|
-
} else {
|
|
734
|
-
// If no saved position exists, create one with default visible X
|
|
735
|
-
savedPositionRef.current = {
|
|
736
|
-
x: screenWidth - bubbleSize.width - EDGE_PADDING,
|
|
737
|
-
y: currentY
|
|
738
|
-
};
|
|
739
|
-
}
|
|
740
|
-
Animated.timing(animatedPosition, {
|
|
741
|
-
toValue: {
|
|
742
|
-
x: hiddenX,
|
|
743
|
-
y: currentY
|
|
744
|
-
},
|
|
745
|
-
duration: 200,
|
|
746
|
-
useNativeDriver: false
|
|
747
|
-
}).start(() => {
|
|
748
|
-
savePosition(hiddenX, currentY);
|
|
749
|
-
});
|
|
750
|
-
} else {
|
|
751
|
-
// Check if we're in hidden state and user is pulling it back
|
|
752
|
-
if (isHidden && currentX < screenWidth - VISIBLE_HANDLE_WIDTH - 10) {
|
|
753
|
-
setIsHidden(false);
|
|
754
|
-
}
|
|
755
|
-
|
|
756
|
-
// Update saved position if bubble is in visible area (not hidden)
|
|
757
|
-
if (currentX < screenWidth - bubbleSize.width / 2) {
|
|
758
|
-
savedPositionRef.current = {
|
|
759
|
-
x: currentX,
|
|
760
|
-
y: currentY
|
|
761
|
-
};
|
|
762
|
-
}
|
|
763
|
-
savePosition(currentX, currentY);
|
|
764
|
-
}
|
|
765
|
-
setIsDragging(false);
|
|
766
|
-
}, [animatedPosition, bubbleSize.width, isHidden, savePosition, screenWidth]);
|
|
767
|
-
const lastViewport = useRef({
|
|
768
|
-
width: screenWidth,
|
|
769
|
-
height: screenHeight
|
|
770
|
-
});
|
|
771
|
-
useEffect(() => {
|
|
772
|
-
if (enablePositionPersistence && !isPositionInitialized) return;
|
|
773
|
-
if (lastViewport.current.width === screenWidth && lastViewport.current.height === screenHeight) return;
|
|
774
|
-
lastViewport.current = {
|
|
775
|
-
width: screenWidth,
|
|
776
|
-
height: screenHeight
|
|
777
|
-
};
|
|
778
|
-
const clamp = point => ({
|
|
779
|
-
x: Math.max(safeAreaInsets.left, Math.min(point.x, screenWidth - bubbleSize.width - EDGE_PADDING)),
|
|
780
|
-
y: Math.max(safeAreaInsets.top + EDGE_PADDING, Math.min(point.y, screenHeight - bubbleSize.height - safeAreaInsets.bottom))
|
|
781
|
-
});
|
|
782
|
-
const current = clamp({
|
|
783
|
-
x: getAnimatedValue(animatedPosition.x),
|
|
784
|
-
y: getAnimatedValue(animatedPosition.y)
|
|
785
|
-
});
|
|
786
|
-
if (isHidden) current.x = screenWidth - VISIBLE_HANDLE_WIDTH;
|
|
787
|
-
if (savedPositionRef.current) savedPositionRef.current = clamp(savedPositionRef.current);
|
|
788
|
-
animatedPosition.stopAnimation();
|
|
789
|
-
animatedPosition.setValue(current);
|
|
790
|
-
void savePosition(current.x, current.y);
|
|
791
|
-
}, [screenWidth, screenHeight, isPositionInitialized, enablePositionPersistence, bubbleSize, safeAreaInsets, isHidden, animatedPosition, savePosition]);
|
|
792
|
-
const hasAccessory = Boolean(accessory);
|
|
793
|
-
useEffect(() => {
|
|
794
|
-
if (!hasAccessory) return;
|
|
795
|
-
const update = ({
|
|
796
|
-
y
|
|
797
|
-
}) => setAccessoryAbove(y + bubbleSize.height + accessoryHeight > screenHeight - safeAreaInsets.bottom);
|
|
798
|
-
update({
|
|
799
|
-
y: getAnimatedValue(animatedPosition.y)
|
|
800
|
-
});
|
|
801
|
-
const listener = animatedPosition.addListener(update);
|
|
802
|
-
return () => animatedPosition.removeListener(listener);
|
|
803
|
-
}, [animatedPosition, bubbleSize.height, accessoryHeight, screenHeight, safeAreaInsets.bottom, hasAccessory]);
|
|
804
|
-
|
|
805
|
-
// Stable styles
|
|
806
|
-
const bubbleStyle = useMemo(() => ({
|
|
807
|
-
position: "absolute",
|
|
808
|
-
zIndex: 1001,
|
|
809
|
-
transform: animatedPosition.getTranslateTransform()
|
|
810
|
-
}), [animatedPosition]);
|
|
811
|
-
const previousReveal = useRef(undefined);
|
|
812
|
-
useEffect(() => {
|
|
813
|
-
if (enablePositionPersistence && !isPositionInitialized) return;
|
|
814
|
-
if (previousReveal.current === revealToken) return;
|
|
815
|
-
previousReveal.current = revealToken;
|
|
816
|
-
if (revealToken !== undefined && revealToken > 0 && isHidden) toggleHideShow();
|
|
817
|
-
}, [revealToken, isPositionInitialized, enablePositionPersistence, isHidden, toggleHideShow]);
|
|
818
|
-
const hasMinimizedTools = hasMinimizedStack;
|
|
819
|
-
const containerStyle = {
|
|
820
|
-
flexDirection: "row",
|
|
821
|
-
alignItems: "center",
|
|
822
|
-
backgroundColor: buoyColors.card,
|
|
823
|
-
// When minimized tools showing, remove top-left radius so they connect seamlessly
|
|
824
|
-
borderTopLeftRadius: hasMinimizedTools ? 0 : 6,
|
|
825
|
-
borderTopRightRadius: 6,
|
|
826
|
-
borderBottomLeftRadius: 6,
|
|
827
|
-
borderBottomRightRadius: 6,
|
|
828
|
-
// Use individual border widths when minimized tools are showing
|
|
829
|
-
// Always show top border when dragging for visual feedback
|
|
830
|
-
borderLeftWidth: isDragging ? 2 : 1,
|
|
831
|
-
borderRightWidth: isDragging ? 2 : 1,
|
|
832
|
-
borderBottomWidth: isDragging ? 2 : 1,
|
|
833
|
-
borderTopWidth: isDragging ? 2 : hasMinimizedTools ? 0 : 1,
|
|
834
|
-
borderColor: isDragging ? floatingToolsColors.dragActive : buoyColors.textMuted + "66",
|
|
835
|
-
overflow: "visible",
|
|
836
|
-
elevation: 8,
|
|
837
|
-
shadowColor: isDragging ? floatingToolsColors.dragActive + "99" : "#000",
|
|
838
|
-
shadowOffset: {
|
|
839
|
-
width: 0,
|
|
840
|
-
height: isDragging ? 6 : 4
|
|
841
|
-
},
|
|
842
|
-
shadowOpacity: isDragging ? 0.6 : 0.3,
|
|
843
|
-
shadowRadius: isDragging ? 12 : 8,
|
|
844
|
-
...(variant === "strip" ? {
|
|
845
|
-
borderRadius: night.radius.card,
|
|
846
|
-
borderTopLeftRadius: night.radius.card,
|
|
847
|
-
borderTopRightRadius: night.radius.card,
|
|
848
|
-
borderBottomLeftRadius: night.radius.card,
|
|
849
|
-
borderBottomRightRadius: night.radius.card,
|
|
850
|
-
minHeight: 48,
|
|
851
|
-
backgroundColor: night.color.surface,
|
|
852
|
-
borderColor: isDragging ? night.color.accentBorderStrong : night.color.separator,
|
|
853
|
-
shadowOpacity: 0.24,
|
|
854
|
-
shadowRadius: 16
|
|
855
|
-
} : {})
|
|
856
|
-
};
|
|
857
|
-
const dragHandleStyle = {
|
|
858
|
-
paddingHorizontal: 6,
|
|
859
|
-
paddingVertical: 6,
|
|
860
|
-
backgroundColor: buoyColors.textMuted + "1A",
|
|
861
|
-
alignItems: "center",
|
|
862
|
-
justifyContent: "center",
|
|
863
|
-
width: 32,
|
|
864
|
-
...(variant === "strip" ? {
|
|
865
|
-
minHeight: 48
|
|
866
|
-
} : {}),
|
|
867
|
-
borderRightWidth: 1,
|
|
868
|
-
borderRightColor: buoyColors.textMuted + "66",
|
|
869
|
-
// Remove top-left radius when minimized tools are showing
|
|
870
|
-
borderTopLeftRadius: hasMinimizedTools ? 0 : undefined,
|
|
871
|
-
...(variant === "strip" ? {
|
|
872
|
-
backgroundColor: "transparent",
|
|
873
|
-
borderRightWidth: 0
|
|
874
|
-
} : {})
|
|
875
|
-
};
|
|
876
|
-
const contentStyle = {
|
|
877
|
-
flexDirection: "row",
|
|
878
|
-
alignItems: "center",
|
|
879
|
-
gap: 6,
|
|
880
|
-
paddingRight: 8
|
|
881
|
-
};
|
|
882
|
-
|
|
883
|
-
// Compose actions row with automatic dividers
|
|
884
|
-
const actions = useMemo(() => variant === "strip" ? Children.toArray(children) : interleaveWithDividers(Children.toArray(children)), [children, variant]);
|
|
885
|
-
|
|
886
|
-
// Width for the minimized tools stack - match the drag handle width
|
|
887
|
-
const minimizedStackWidth = 32;
|
|
888
|
-
|
|
889
|
-
// Don't render until position is initialized (when persistence enabled)
|
|
890
|
-
// This prevents the bubble from appearing at {0,0} before position loads
|
|
891
|
-
if (enablePositionPersistence && !isPositionInitialized) {
|
|
892
|
-
return null;
|
|
893
|
-
}
|
|
894
|
-
return /*#__PURE__*/_jsx(Animated.View, {
|
|
895
|
-
pointerEvents: suspendPointerEvents ? "none" : "box-none",
|
|
896
|
-
testID: id ?? "buoy-floating-tool",
|
|
897
|
-
style: bubbleStyle,
|
|
898
|
-
children: /*#__PURE__*/_jsxs(View, {
|
|
899
|
-
style: {
|
|
900
|
-
overflow: "visible"
|
|
901
|
-
},
|
|
902
|
-
children: [minimizedStack && /*#__PURE__*/_jsx(View, {
|
|
903
|
-
style: {
|
|
904
|
-
position: "absolute",
|
|
905
|
-
bottom: "100%",
|
|
906
|
-
left: 0,
|
|
907
|
-
width: minimizedStackWidth,
|
|
908
|
-
overflow: "visible",
|
|
909
|
-
zIndex: 1001
|
|
910
|
-
},
|
|
911
|
-
children: minimizedStack
|
|
912
|
-
}), /*#__PURE__*/_jsxs(DraggableHeader, {
|
|
913
|
-
position: animatedPosition,
|
|
914
|
-
enabled: dragFromSurface,
|
|
915
|
-
claimOnMove: false,
|
|
916
|
-
onDragStart: handleDragStart,
|
|
917
|
-
onDragEnd: handleDragEnd,
|
|
918
|
-
containerBounds: {
|
|
919
|
-
width: screenWidth,
|
|
920
|
-
height: screenHeight
|
|
921
|
-
},
|
|
922
|
-
elementSize: bubbleSize,
|
|
923
|
-
minPosition: {
|
|
924
|
-
x: safeAreaInsets.left,
|
|
925
|
-
y: safeAreaInsets.top + EDGE_PADDING
|
|
926
|
-
},
|
|
927
|
-
maxOverflowX: bubbleSize.width,
|
|
928
|
-
hitSlop: {
|
|
929
|
-
top: 10,
|
|
930
|
-
bottom: 10,
|
|
931
|
-
left: 10,
|
|
932
|
-
right: 10
|
|
933
|
-
},
|
|
934
|
-
style: containerStyle,
|
|
935
|
-
onLayout: event => {
|
|
936
|
-
const {
|
|
937
|
-
width,
|
|
938
|
-
height
|
|
939
|
-
} = event.nativeEvent.layout;
|
|
940
|
-
setBubbleSize({
|
|
941
|
-
width,
|
|
942
|
-
height
|
|
943
|
-
});
|
|
944
|
-
},
|
|
945
|
-
children: [/*#__PURE__*/_jsxs(DraggableHeader, {
|
|
946
|
-
position: animatedPosition,
|
|
947
|
-
testID: id ? `${id}-grip` : "buoy-floating-grip",
|
|
948
|
-
accessibilityLabel: accessibilityLabel,
|
|
949
|
-
onDragStart: handleDragStart,
|
|
950
|
-
onDragEnd: handleDragEnd,
|
|
951
|
-
onTap: toggleHideShow,
|
|
952
|
-
containerBounds: {
|
|
953
|
-
width: screenWidth,
|
|
954
|
-
height: screenHeight
|
|
955
|
-
},
|
|
956
|
-
elementSize: bubbleSize,
|
|
957
|
-
minPosition: {
|
|
958
|
-
x: safeAreaInsets.left,
|
|
959
|
-
y: safeAreaInsets.top + EDGE_PADDING
|
|
960
|
-
},
|
|
961
|
-
style: dragHandleStyle,
|
|
962
|
-
enabled: true,
|
|
963
|
-
maxOverflowX: bubbleSize.width,
|
|
964
|
-
children: [/*#__PURE__*/_jsx(GripVerticalIcon, {
|
|
965
|
-
size: variant === "strip" ? 20 : 12,
|
|
966
|
-
color: buoyColors.textSecondary + "CC"
|
|
967
|
-
}), handleAdornment]
|
|
968
|
-
}), /*#__PURE__*/_jsx(FloatingToolsContext.Provider, {
|
|
969
|
-
value: {
|
|
970
|
-
isDragging
|
|
971
|
-
},
|
|
972
|
-
children: /*#__PURE__*/_jsxs(View, {
|
|
973
|
-
style: contentStyle,
|
|
974
|
-
children: [showEnvironmentSelector && environment && availableEnvironments && onEnvironmentSwitch && /*#__PURE__*/_jsx(EnvironmentSelectorInline, {
|
|
975
|
-
currentEnvironment: environment,
|
|
976
|
-
availableEnvironments: availableEnvironments,
|
|
977
|
-
onSelect: onEnvironmentSwitch
|
|
978
|
-
}), actions]
|
|
979
|
-
})
|
|
980
|
-
})]
|
|
981
|
-
}), !isHidden && accessory && /*#__PURE__*/_jsx(View, {
|
|
982
|
-
onLayout: event => setAccessoryHeight(event.nativeEvent.layout.height),
|
|
983
|
-
style: {
|
|
984
|
-
position: "absolute",
|
|
985
|
-
...(accessoryAbove ? {
|
|
986
|
-
bottom: "100%"
|
|
987
|
-
} : {
|
|
988
|
-
top: "100%"
|
|
989
|
-
}),
|
|
990
|
-
left: 0,
|
|
991
|
-
width: "100%",
|
|
992
|
-
zIndex: 1002
|
|
993
|
-
},
|
|
994
|
-
children: accessory
|
|
995
|
-
})]
|
|
996
|
-
})
|
|
997
|
-
});
|
|
998
|
-
}
|
|
999
|
-
|
|
1000
|
-
/** Native AppHost gets its anchor from the minimized-tools provider. */
|
|
1001
|
-
export function getBubbleAnchorPosition() {
|
|
1002
|
-
return null;
|
|
1003
|
-
}
|
|
1
|
+
"use strict";import{useEffect as T,useMemo as mt,useRef as L,useState as F,useContext as Ot,createContext as At,useCallback as X,Children as gt}from"react";import{Animated as N,Dimensions as ct,useWindowDimensions as Et,View as Y,Text as yt,TouchableOpacity as Xt}from"react-native";import{night as W}from"../night/nightTheme.js";import{DraggableHeader as xt}from"../components/DraggableHeader.js";import{EnvironmentSelectorInline as Nt}from"../../env/EnvironmentSelectorInline";import{GripVerticalIcon as Yt}from"../components/GripVerticalIcon.js";import{buoyColors as V}from"../gameUI/constants/gameUIColors.js";import{getSafeAreaInsets as bt,persistentStorage as ot}from"../../utils/index.js";import{useSafeAreaInsets as Wt}from"../../hooks/index.js";import{calculateTargetPosition as zt}from"./onboardingConstants";import{getUserStatusConfig as Ht,filterValidChildren as Ut,floatingToolsColors as pt}from"@buoy-gg/floating-tools-core";import{jsx as R,jsxs as k}from"react/jsx-runtime";const it={BUBBLE_POSITION_X:"@react_buoy_bubble_position_x",BUBBLE_POSITION_Y:"@react_buoy_bubble_position_y"};const $=32;const y=20;const Ft=150;const C=u=>u.__getValue();function $t({animatedPosition:u,bubbleWidth:_=100,bubbleHeight:g=32,enabled:a=true,visibleHandleWidth:v=32,listenersSuspended:z=false,defaultPlacement:H="top",onPositionLoaded:Q,storageKey:p}){const[U,I]=F(false);const D=L(void 0);const x=L(true);T(()=>{x.current=true;return()=>{x.current=false;if(D.current){clearTimeout(D.current);D.current=void 0}}},[]);const O=X(async(c,m)=>{if(!a)return;if(!x.current)return;const{width:t}=ct.get("window");if(t<=0||c<0||m<0)return;try{await Promise.all([ot.setItem(p?`${p}:x`:it.BUBBLE_POSITION_X,c.toString()),ot.setItem(p?`${p}:y`:it.BUBBLE_POSITION_Y,m.toString())])}catch(o){}},[a,p]);const j=X((c,m)=>{if(!x.current)return;if(D.current)clearTimeout(D.current);D.current=setTimeout(()=>{if(x.current){O(c,m)}},500)},[O]);const G=X(async()=>{if(!a)return null;try{const[c,m]=await Promise.all([ot.getItem(p?`${p}:x`:it.BUBBLE_POSITION_X),ot.getItem(p?`${p}:y`:it.BUBBLE_POSITION_Y)]);if(c!==null&&m!==null){const t=parseFloat(c);const o=parseFloat(m);if(!Number.isNaN(t)&&!Number.isNaN(o)){return{x:t,y:o}}}}catch(c){}return null},[a,p]);const P=X(c=>{const{width:m,height:t}=ct.get("window");const o=bt();if(m<=0||t<=0){return{...c,isValid:false}}const A=o.left;const e=m-v;const E=o.top+y;const l=t-g-o.bottom;const d={x:Math.max(A,Math.min(c.x,e)),y:Math.max(E,Math.min(c.y,l)),isValid:true};return d},[v,g]);T(()=>{if(!a||U)return;let c=false;const m=async()=>{const t=await G();if(c||!x.current)return;const{width:o,height:A}=ct.get("window");const e=bt();if(o<=0||A<=0){setTimeout(()=>{if(x.current&&!c){m()}},100);return}let E;let l=false;if(t){const d=P(t);if(!d.isValid){setTimeout(()=>{if(x.current&&!c){m()}},100);return}const Z=Math.abs(t.x-d.x)>5||Math.abs(t.y-d.y)>5;if(Z){await O(d.x,d.y)}E={x:d.x,y:d.y};l=d.x>=o-v-5}else{const d=H==="bottom"?Math.max(e.top+y,A-g-e.bottom-y):Math.max(e.top+y,Math.min(100,A-g-e.bottom));E={x:o-_-y,y:d}}if(c||!x.current)return;u.setValue(E);I(true);Q?.(E,l)};m();return()=>{c=true}},[a,U,u,G,P,O,_,g,v,Q]);T(()=>{if(!a||!U||z)return;const c=u.addListener(m=>{j(m.x,m.y)});return()=>{u.removeListener(c);if(D.current){clearTimeout(D.current);D.current=void 0}}},[a,U,z,u,j]);return{savePosition:O,isInitialized:U}}export function Divider(){const u={width:1,height:12,backgroundColor:V.textMuted+"66",flexShrink:0};return R(Y,{style:u})}const jt={success:"#20C997",warning:"#FFA94D",error:"#EF4444",muted:V.textMuted,secondary:V.textSecondary,info:"#20C997",primary:"#20C997",optional:V.textSecondary};function kt(u){return Ht(u,jt)}const wt=At({isDragging:false});export function UserStatus({userRole:u,onPress:_}){const{isDragging:g}=Ot(wt);const a=kt(u);const v={flexDirection:"row",alignItems:"center",paddingVertical:6,paddingHorizontal:8,flexShrink:0};const z={width:6,height:6,borderRadius:3,backgroundColor:a.dotColor,marginRight:4};const H={fontSize:10,fontWeight:"500",color:a.textColor,letterSpacing:.3};if(!_){return k(Y,{style:v,accessibilityLabel:`User status: ${a.label}`,children:[R(Y,{style:z}),R(yt,{style:H,children:a.label})]})}return k(Xt,{accessibilityRole:"button",accessibilityLabel:"Open Dev Tools Menu",testID:"open-dev-tools-button",onPress:_,hitSlop:{top:10,bottom:10,left:0,right:10},disabled:g,activeOpacity:.85,style:v,children:[R(Y,{style:z}),R(yt,{style:H,children:a.label})]})}function Gt(u){const _=Ut(u);const g=[];_.forEach((a,v)=>{g.push(a);if(v<_.length-1)g.push(R(Divider,{},`divider-${v}`))});return g}export function FloatingTool({id:u,suspendPointerEvents:_=false,revealToken:g,variant:a="bubble",dragFromSurface:v=false,accessibilityLabel:z="Move dev tools bubble",minimizedStack:H,hasMinimizedStack:Q=false,accessory:p,handleAdornment:U,enablePositionPersistence:I=true,defaultPlacement:D="top",pushToSide:x=false,centerOnboarding:O=false,children:j,environment:G,availableEnvironments:P,onEnvironmentSwitch:c,showEnvironmentSelector:m=false}){const t=L(new N.ValueXY).current;const[o,A]=F(false);const[e,E]=F({width:100,height:32});const[l,d]=F(false);const[Z,St]=F(0);const[vt,It]=F(false);const f=L(null);const K=L(false);const q=L(false);const ut=L(x);const J=L(null);const[tt,Dt]=F(false);const h=Wt();const{width:i,height:S}=Et();const Mt=X((n,r)=>{if(r){d(true)}},[]);const{savePosition:w,isInitialized:B}=$t({animatedPosition:t,bubbleWidth:e.width,bubbleHeight:e.height,enabled:I,visibleHandleWidth:$,listenersSuspended:o,defaultPlacement:D,onPositionLoaded:Mt,storageKey:u?`@buoy/floating-tool/${u}`:void 0});T(()=>{if(I&&!B)return;if(!ut.current&&x){q.current=false}ut.current=x;if(x&&!l&&!o&&!q.current){const n=C(t.x);const r=C(t.y);f.current={x:n,y:r};const s=i-$;K.current=true;d(true);N.timing(t,{toValue:{x:s,y:r},duration:200,useNativeDriver:false}).start(()=>{w(s,r)})}else if(!x&&l&&K.current){if(f.current){const{x:n,y:r}=f.current;K.current=false;q.current=false;d(false);N.timing(t,{toValue:{x:n,y:r},duration:200,useNativeDriver:false}).start(()=>{w(n,r)})}}},[I,B,x,l,o,i,t,w]);T(()=>{if(!B||tt)return;const n=setTimeout(()=>{J.current=e.width;Dt(true);if(!l&&!o){const r=C(t.x);const s=i-e.width-y;if(r>s){const b=Math.max(h.left,s);const M=C(t.y);t.setValue({x:b,y:M});w(b,M)}}},Ft);return()=>clearTimeout(n)},[B,tt,e.width]);T(()=>{if(!B)return;if(!tt)return;if(J.current===null)return;if(o){J.current=e.width;return}const n=J.current;const r=e.width;const s=r-n;if(Math.abs(s)<2){return}J.current=r;if(l){if(f.current){const Vt=f.current.x-s;f.current.x=Math.max(h.left,Math.min(Vt,i-r-y))}return}const b=C(t.x);const M=C(t.y);const et=b-s;const rt=Math.max(h.left,Math.min(et,i-$));if(Math.abs(rt-b)>1){N.timing(t,{toValue:{x:rt,y:M},duration:150,useNativeDriver:false}).start(()=>{w(rt,M);if(f.current){f.current.x=rt}})}},[e.width,B,tt,o,l,t,i,h.left,w]);T(()=>{if(!I){if(O){const n=zt();const r=(i-e.width)/2;const s=S-e.height-n;t.setValue({x:r,y:s})}else{const n=D==="bottom"?Math.max(h.top+y,S-e.height-h.bottom-y):Math.max(h.top+y,Math.min(100,S-e.height-h.bottom));t.setValue({x:i-e.width-y,y:n})}}},[I,O,t,e.width,e.height,h.top,h.bottom,i,S]);const nt=X(()=>{const n=C(t.x);const r=C(t.y);const s=n>i-e.width/2;if(l||s){let b;let M;if(f.current&&f.current.x<i-e.width/2){b=f.current.x;M=f.current.y}else{b=i-e.width-y;M=r}K.current=false;q.current=true;d(false);N.timing(t,{toValue:{x:b,y:M},duration:200,useNativeDriver:false}).start(()=>{w(b,M)})}else{f.current={x:n,y:r};q.current=false;const b=i-$;d(true);N.timing(t,{toValue:{x:b,y:r},duration:200,useNativeDriver:false}).start(()=>{w(b,r)})}},[t,l,e.width,w,i]);const lt=X(()=>{A(true)},[]);const dt=X(n=>{let{x:r,y:s}=n;const b=r+e.width/2;const M=b>i;if(M){const et=i-$;d(true);if(f.current){f.current.y=s}else{f.current={x:i-e.width-y,y:s}}N.timing(t,{toValue:{x:et,y:s},duration:200,useNativeDriver:false}).start(()=>{w(et,s)})}else{if(l&&r<i-$-10){d(false)}if(r<i-e.width/2){f.current={x:r,y:s}}w(r,s)}A(false)},[t,e.width,l,w,i]);const st=L({width:i,height:S});T(()=>{if(I&&!B)return;if(st.current.width===i&&st.current.height===S)return;st.current={width:i,height:S};const n=s=>({x:Math.max(h.left,Math.min(s.x,i-e.width-y)),y:Math.max(h.top+y,Math.min(s.y,S-e.height-h.bottom))});const r=n({x:C(t.x),y:C(t.y)});if(l)r.x=i-$;if(f.current)f.current=n(f.current);t.stopAnimation();t.setValue(r);void w(r.x,r.y)},[i,S,B,I,e,h,l,t,w]);const ft=Boolean(p);T(()=>{if(!ft)return;const n=({y:s})=>It(s+e.height+Z>S-h.bottom);n({y:C(t.y)});const r=t.addListener(n);return()=>t.removeListener(r)},[t,e.height,Z,S,h.bottom,ft]);const Rt=mt(()=>({position:"absolute",zIndex:1001,transform:t.getTranslateTransform()}),[t]);const ht=L(void 0);T(()=>{if(I&&!B)return;if(ht.current===g)return;ht.current=g;if(g!==void 0&&g>0&&l)nt()},[g,B,I,l,nt]);const at=Q;const Bt={flexDirection:"row",alignItems:"center",backgroundColor:V.card,borderTopLeftRadius:at?0:6,borderTopRightRadius:6,borderBottomLeftRadius:6,borderBottomRightRadius:6,borderLeftWidth:o?2:1,borderRightWidth:o?2:1,borderBottomWidth:o?2:1,borderTopWidth:o?2:at?0:1,borderColor:o?pt.dragActive:V.textMuted+"66",overflow:"visible",elevation:8,shadowColor:o?pt.dragActive+"99":"#000",shadowOffset:{width:0,height:o?6:4},shadowOpacity:o?.6:.3,shadowRadius:o?12:8,...a==="strip"?{borderRadius:W.radius.card,borderTopLeftRadius:W.radius.card,borderTopRightRadius:W.radius.card,borderBottomLeftRadius:W.radius.card,borderBottomRightRadius:W.radius.card,minHeight:48,backgroundColor:W.color.surface,borderColor:o?W.color.accentBorderStrong:W.color.separator,shadowOpacity:.24,shadowRadius:16}:{}};const Ct={paddingHorizontal:6,paddingVertical:6,backgroundColor:V.textMuted+"1A",alignItems:"center",justifyContent:"center",width:32,...a==="strip"?{minHeight:48}:{},borderRightWidth:1,borderRightColor:V.textMuted+"66",borderTopLeftRadius:at?0:void 0,...a==="strip"?{backgroundColor:"transparent",borderRightWidth:0}:{}};const _t={flexDirection:"row",alignItems:"center",gap:6,paddingRight:8};const Tt=mt(()=>a==="strip"?gt.toArray(j):Gt(gt.toArray(j)),[j,a]);const Lt=32;if(I&&!B){return null}return R(N.View,{pointerEvents:_?"none":"box-none",testID:u??"buoy-floating-tool",style:Rt,children:k(Y,{style:{overflow:"visible"},children:[H&&R(Y,{style:{position:"absolute",bottom:"100%",left:0,width:Lt,overflow:"visible",zIndex:1001},children:H}),k(xt,{position:t,enabled:v,claimOnMove:false,onDragStart:lt,onDragEnd:dt,containerBounds:{width:i,height:S},elementSize:e,minPosition:{x:h.left,y:h.top+y},maxOverflowX:e.width,hitSlop:{top:10,bottom:10,left:10,right:10},style:Bt,onLayout:n=>{const{width:r,height:s}=n.nativeEvent.layout;E({width:r,height:s})},children:[k(xt,{position:t,testID:u?`${u}-grip`:"buoy-floating-grip",accessibilityLabel:z,onDragStart:lt,onDragEnd:dt,onTap:nt,containerBounds:{width:i,height:S},elementSize:e,minPosition:{x:h.left,y:h.top+y},style:Ct,enabled:true,maxOverflowX:e.width,children:[R(Yt,{size:a==="strip"?20:12,color:V.textSecondary+"CC"}),U]}),R(wt.Provider,{value:{isDragging:o},children:k(Y,{style:_t,children:[m&&G&&P&&c&&R(Nt,{currentEnvironment:G,availableEnvironments:P,onSelect:c}),Tt]})})]}),!l&&p&&R(Y,{onLayout:n=>St(n.nativeEvent.layout.height),style:{position:"absolute",...vt?{bottom:"100%"}:{top:"100%"},left:0,width:"100%",zIndex:1002},children:p})]})})}export function getBubbleAnchorPosition(){return null}
|