@buoy-gg/shared-ui 7.0.40 → 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/README.md +6 -0
- 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 -1814
- package/lib/commonjs/JsModal.web.js +1 -1652
- 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 -0
- 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 -913
- 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 -0
- 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 -826
- 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 -1098
- package/lib/commonjs/license/AccountSetup.js +1 -56
- package/lib/commonjs/license/AccountSetup.web.js +14 -81
- package/lib/commonjs/license/AccountSetupContent.js +1 -0
- package/lib/commonjs/license/FeatureGate.js +1 -788
- package/lib/commonjs/license/FreeAccountPrompt.js +1 -205
- package/lib/commonjs/license/LicenseEntryModal.js +2 -394
- package/lib/commonjs/license/accountRuntime.js +1 -0
- package/lib/commonjs/license/accountRuntime.web.js +1 -0
- package/lib/commonjs/license/index.js +1 -106
- package/lib/commonjs/license/licenseModule.js +1 -119
- 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 -205
- package/lib/commonjs/stores/ignoredPatternsStore.shared.js +1 -0
- package/lib/commonjs/stores/ignoredPatternsStore.web.js +1 -236
- 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 -133
- 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 -591
- 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 -517
- 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 -0
- package/lib/commonjs/utils/browserNavigation.js +1 -0
- package/lib/commonjs/utils/devServer.js +1 -62
- package/lib/commonjs/utils/devServer.web.js +1 -0
- package/lib/commonjs/utils/displayValue.js +1 -41
- package/lib/commonjs/utils/domRuntime.js +1 -0
- package/lib/commonjs/utils/expoRouterModule.js +1 -0
- package/lib/commonjs/utils/expoRouterModule.web.js +1 -0
- 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 -0
- package/lib/commonjs/utils/index.js +1 -309
- package/lib/commonjs/utils/loadOptionalModule.js +1 -94
- package/lib/commonjs/utils/loadToolModule.js +1 -0
- package/lib/commonjs/utils/loadToolModule.web.js +1 -0
- package/lib/commonjs/utils/minimalSuperJSON.js +1 -347
- package/lib/commonjs/utils/modalStorage.js +1 -0
- package/lib/commonjs/utils/nativeWeb.js +1 -0
- package/lib/commonjs/utils/persistentStorage.js +1 -609
- package/lib/commonjs/utils/persistentStorage.web.js +1 -0
- package/lib/commonjs/utils/realNow.js +1 -0
- package/lib/commonjs/utils/reloadApp.js +1 -144
- package/lib/commonjs/utils/reloadPlatform.js +1 -0
- package/lib/commonjs/utils/reloadPlatform.web.js +1 -0
- package/lib/commonjs/utils/renderCaptureRegistry.js +1 -59
- package/lib/commonjs/utils/safeExpoRouter.js +1 -250
- package/lib/commonjs/utils/safeExpoRouter.web.js +1 -0
- 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 -0
- package/lib/commonjs/utils/typeHelpers.js +1 -142
- package/lib/commonjs/utils/valueFormatting.js +1 -140
- package/lib/module/JsModal.js +1 -1810
- package/lib/module/JsModal.web.js +1 -1648
- 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 -0
- 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 -907
- 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 -0
- 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 -62
- 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 -108
- package/lib/module/license/AccountSetup.js +1 -52
- package/lib/module/license/AccountSetup.web.js +14 -77
- package/lib/module/license/AccountSetupContent.js +1 -0
- package/lib/module/license/FeatureGate.js +1 -778
- package/lib/module/license/FreeAccountPrompt.js +1 -199
- package/lib/module/license/LicenseEntryModal.js +2 -388
- package/lib/module/license/accountRuntime.js +1 -0
- package/lib/module/license/accountRuntime.web.js +1 -0
- package/lib/module/license/index.js +1 -9
- package/lib/module/license/licenseModule.js +1 -107
- 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 -189
- package/lib/module/stores/ignoredPatternsStore.shared.js +1 -0
- package/lib/module/stores/ignoredPatternsStore.web.js +1 -221
- 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 -129
- 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 -590
- 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 -504
- 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 -0
- package/lib/module/utils/browserNavigation.js +1 -0
- package/lib/module/utils/devServer.js +1 -58
- package/lib/module/utils/devServer.web.js +1 -0
- package/lib/module/utils/displayValue.js +1 -36
- package/lib/module/utils/domRuntime.js +1 -0
- package/lib/module/utils/expoRouterModule.js +1 -0
- package/lib/module/utils/expoRouterModule.web.js +1 -0
- 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 -0
- package/lib/module/utils/index.js +1 -18
- package/lib/module/utils/loadOptionalModule.js +1 -89
- package/lib/module/utils/loadToolModule.js +1 -0
- package/lib/module/utils/loadToolModule.web.js +1 -0
- package/lib/module/utils/minimalSuperJSON.js +1 -342
- package/lib/module/utils/modalStorage.js +1 -0
- package/lib/module/utils/nativeWeb.js +1 -0
- package/lib/module/utils/persistentStorage.js +1 -603
- package/lib/module/utils/persistentStorage.web.js +1 -0
- package/lib/module/utils/realNow.js +1 -0
- package/lib/module/utils/reloadApp.js +1 -137
- package/lib/module/utils/reloadPlatform.js +1 -0
- package/lib/module/utils/reloadPlatform.web.js +1 -0
- package/lib/module/utils/renderCaptureRegistry.js +1 -54
- package/lib/module/utils/safeExpoRouter.js +1 -239
- package/lib/module/utils/safeExpoRouter.web.js +1 -0
- 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 -0
- package/lib/module/utils/typeHelpers.js +1 -130
- package/lib/module/utils/valueFormatting.js +1 -131
- package/lib/typescript/commonjs/JsModal.web.d.ts +7 -18
- package/lib/typescript/commonjs/clipboard/clipboard-impl.web.d.ts +5 -0
- package/lib/typescript/commonjs/hooks/safe-area-impl.d.ts +1 -1
- package/lib/typescript/commonjs/hooks/useSafeAreaInsets.web.d.ts +6 -0
- package/lib/typescript/commonjs/icons/index.d.ts +2 -0
- package/lib/typescript/commonjs/index.d.ts +3 -1
- package/lib/typescript/commonjs/license/AccountSetup.web.d.ts +1 -1
- package/lib/typescript/commonjs/license/AccountSetupContent.d.ts +11 -0
- package/lib/typescript/commonjs/license/FreeAccountPrompt.d.ts +3 -15
- package/lib/typescript/commonjs/license/accountRuntime.d.ts +2 -0
- package/lib/typescript/commonjs/license/accountRuntime.web.d.ts +2 -0
- package/lib/typescript/commonjs/license/licenseModule.d.ts +3 -1
- package/lib/typescript/commonjs/storage/devToolsStorageKeys.d.ts +8 -0
- package/lib/typescript/commonjs/stores/ignoredPatternsStore.d.ts +1 -59
- package/lib/typescript/commonjs/stores/ignoredPatternsStore.shared.d.ts +60 -0
- package/lib/typescript/commonjs/stores/ignoredPatternsStore.web.d.ts +1 -71
- package/lib/typescript/commonjs/ui/night/primitives.d.ts +9 -3
- package/lib/typescript/commonjs/ui/otto/ottoEngine.d.ts +1 -1
- package/lib/typescript/commonjs/utils/browserAsyncStorage.d.ts +25 -0
- package/lib/typescript/commonjs/utils/browserNavigation.d.ts +31 -0
- package/lib/typescript/commonjs/utils/devServer.web.d.ts +2 -0
- package/lib/typescript/commonjs/utils/domRuntime.d.ts +27 -0
- package/lib/typescript/commonjs/utils/expoRouterModule.d.ts +3 -0
- package/lib/typescript/commonjs/utils/expoRouterModule.web.d.ts +3 -0
- package/lib/typescript/commonjs/utils/getSafeAreaInsets.web.d.ts +8 -0
- package/lib/typescript/commonjs/utils/index.d.ts +6 -0
- package/lib/typescript/commonjs/utils/loadToolModule.d.ts +3 -0
- package/lib/typescript/commonjs/utils/loadToolModule.web.d.ts +2 -0
- package/lib/typescript/commonjs/utils/modalStorage.d.ts +21 -0
- package/lib/typescript/commonjs/utils/nativeWeb.d.ts +22 -0
- package/lib/typescript/commonjs/utils/persistentStorage.web.d.ts +6 -0
- package/lib/typescript/commonjs/utils/realNow.d.ts +11 -0
- package/lib/typescript/commonjs/utils/reloadApp.d.ts +7 -25
- package/lib/typescript/commonjs/utils/reloadPlatform.d.ts +8 -0
- package/lib/typescript/commonjs/utils/reloadPlatform.web.d.ts +4 -0
- package/lib/typescript/commonjs/utils/safeExpoRouter.web.d.ts +43 -0
- package/lib/typescript/commonjs/utils/toolModules.d.ts +5 -0
- package/lib/typescript/module/JsModal.web.d.ts +7 -18
- package/lib/typescript/module/clipboard/clipboard-impl.web.d.ts +5 -0
- package/lib/typescript/module/hooks/safe-area-impl.d.ts +1 -1
- package/lib/typescript/module/hooks/useSafeAreaInsets.web.d.ts +6 -0
- package/lib/typescript/module/icons/index.d.ts +2 -0
- package/lib/typescript/module/index.d.ts +3 -1
- package/lib/typescript/module/license/AccountSetup.web.d.ts +1 -1
- package/lib/typescript/module/license/AccountSetupContent.d.ts +11 -0
- package/lib/typescript/module/license/FreeAccountPrompt.d.ts +3 -15
- package/lib/typescript/module/license/accountRuntime.d.ts +2 -0
- package/lib/typescript/module/license/accountRuntime.web.d.ts +2 -0
- package/lib/typescript/module/license/licenseModule.d.ts +3 -1
- package/lib/typescript/module/storage/devToolsStorageKeys.d.ts +8 -0
- package/lib/typescript/module/stores/ignoredPatternsStore.d.ts +1 -59
- package/lib/typescript/module/stores/ignoredPatternsStore.shared.d.ts +60 -0
- package/lib/typescript/module/stores/ignoredPatternsStore.web.d.ts +1 -71
- package/lib/typescript/module/ui/night/primitives.d.ts +9 -3
- package/lib/typescript/module/ui/otto/ottoEngine.d.ts +1 -1
- package/lib/typescript/module/utils/browserAsyncStorage.d.ts +25 -0
- package/lib/typescript/module/utils/browserNavigation.d.ts +31 -0
- package/lib/typescript/module/utils/devServer.web.d.ts +2 -0
- package/lib/typescript/module/utils/domRuntime.d.ts +27 -0
- package/lib/typescript/module/utils/expoRouterModule.d.ts +3 -0
- package/lib/typescript/module/utils/expoRouterModule.web.d.ts +3 -0
- package/lib/typescript/module/utils/getSafeAreaInsets.web.d.ts +8 -0
- package/lib/typescript/module/utils/index.d.ts +6 -0
- package/lib/typescript/module/utils/loadToolModule.d.ts +3 -0
- package/lib/typescript/module/utils/loadToolModule.web.d.ts +2 -0
- package/lib/typescript/module/utils/modalStorage.d.ts +21 -0
- package/lib/typescript/module/utils/nativeWeb.d.ts +22 -0
- package/lib/typescript/module/utils/persistentStorage.web.d.ts +6 -0
- package/lib/typescript/module/utils/realNow.d.ts +11 -0
- package/lib/typescript/module/utils/reloadApp.d.ts +7 -25
- package/lib/typescript/module/utils/reloadPlatform.d.ts +8 -0
- package/lib/typescript/module/utils/reloadPlatform.web.d.ts +4 -0
- package/lib/typescript/module/utils/safeExpoRouter.web.d.ts +43 -0
- package/lib/typescript/module/utils/toolModules.d.ts +5 -0
- package/lib/web/asyncStorage.mjs +1 -0
- package/lib/web/chunks/chunk-26OV3QDY.mjs +1 -0
- package/lib/web/chunks/chunk-3UTMGIUG.mjs +1 -0
- package/lib/web/chunks/chunk-53J2FMUD.mjs +1 -0
- package/lib/web/chunks/chunk-5KWAGM5V.mjs +1 -0
- package/lib/web/chunks/chunk-5NZOQR6Q.mjs +1 -0
- package/lib/web/chunks/chunk-7PRKERDN.mjs +1 -0
- package/lib/web/chunks/chunk-CE5U3CSQ.mjs +1 -0
- 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 -0
- package/lib/web/chunks/chunk-K7CGIEFU.mjs +1 -0
- package/lib/web/chunks/chunk-L3AFTHWX.mjs +14 -0
- package/lib/web/chunks/chunk-LZ7FZZ7R.mjs +1 -0
- package/lib/web/chunks/chunk-PTK5FO6C.mjs +1 -0
- 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 -0
- package/lib/web/chunks/persistentStorage.web-6OAJAVRK.mjs +1 -0
- package/lib/web/colors.mjs +1 -0
- package/lib/web/dataViewer.mjs +2 -0
- package/lib/web/floating.mjs +1 -0
- package/lib/web/history.mjs +1 -0
- package/lib/web/hooks.mjs +1 -0
- package/lib/web/index.mjs +14 -0
- package/lib/web/native.mjs +1 -0
- package/lib/web/ui.mjs +1 -0
- package/lib/web/utils.mjs +1 -0
- package/package.json +121 -38
- 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/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/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/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/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.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/devServer.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/displayValue.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/index.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/loadOptionalModule.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/minimalSuperJSON.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/persistentStorage.d.ts.map +0 -1
- package/lib/typescript/commonjs/utils/reloadApp.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/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/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/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/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/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/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.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/devServer.d.ts.map +0 -1
- package/lib/typescript/module/utils/displayValue.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/index.d.ts.map +0 -1
- package/lib/typescript/module/utils/loadOptionalModule.d.ts.map +0 -1
- package/lib/typescript/module/utils/minimalSuperJSON.d.ts.map +0 -1
- package/lib/typescript/module/utils/persistentStorage.d.ts.map +0 -1
- package/lib/typescript/module/utils/reloadApp.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/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/typeHelpers.d.ts.map +0 -1
- package/lib/typescript/module/utils/valueFormatting.d.ts.map +0 -1
- package/scripts/generate-wormhole-textures.cjs +0 -261
- package/scripts/test-wormhole-motion.cjs +0 -59
|
@@ -1,1265 +1 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
|
|
3
|
-
import { useState, useMemo, useCallback, useRef, useEffect, memo } from "react";
|
|
4
|
-
import { Text, TouchableOpacity, View, StyleSheet, FlatList } from "react-native";
|
|
5
|
-
import { displayValue } from "../utils/displayValue.js";
|
|
6
|
-
import { gameUIColors } from "../ui/gameUI/index.js";
|
|
7
|
-
import { night } from "../ui/night/nightTheme.js";
|
|
8
|
-
import { CopyButton } from "../ui/components/CopyButton.js";
|
|
9
|
-
import { ChevronRight } from "../icons/index.js";
|
|
10
|
-
import { IndentGuidesOverlay } from "./IndentGuidesOverlay.js";
|
|
11
|
-
import { monoFont } from "../ui/fonts.js";
|
|
12
|
-
// Stable constants to prevent re-renders [[memory:4875251]]
|
|
13
|
-
import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
|
|
14
|
-
const HIT_SLOP_10 = {
|
|
15
|
-
top: 10,
|
|
16
|
-
bottom: 10,
|
|
17
|
-
left: 10,
|
|
18
|
-
right: 10
|
|
19
|
-
};
|
|
20
|
-
const ITEM_HEIGHT = 24; // Fixed height per row for crisp guides
|
|
21
|
-
const LONG_ITEM_HEIGHT = 24; // Keep uniform height to match VS Code tree
|
|
22
|
-
const CHUNK_SIZE = 50; // Process data in chunks to avoid blocking UI
|
|
23
|
-
const MAX_DEPTH_LIMIT = 15; // Prevent excessive nesting
|
|
24
|
-
const MAX_ITEMS_PER_LEVEL = 500; // Limit items to prevent memory issues
|
|
25
|
-
const LONG_KEY_THRESHOLD = 30; // Keys longer than this use vertical layout
|
|
26
|
-
/** Two presses inside this window count as a double-tap (RN has no dblclick). */
|
|
27
|
-
const DOUBLE_TAP_MS = 300;
|
|
28
|
-
|
|
29
|
-
// Pre-computed indent styles (VS Code-style width)
|
|
30
|
-
const INDENT_WIDTH = 16;
|
|
31
|
-
const INDENT_STYLES = Array.from({
|
|
32
|
-
length: MAX_DEPTH_LIMIT + 1
|
|
33
|
-
}, (_, depth) => StyleSheet.create({
|
|
34
|
-
container: {
|
|
35
|
-
marginLeft: depth * INDENT_WIDTH
|
|
36
|
-
}
|
|
37
|
-
}).container);
|
|
38
|
-
|
|
39
|
-
// Enhanced type color cache using centralized theme colors [[memory:4875251]]
|
|
40
|
-
const TYPE_COLOR_CACHE = new Map([["string", gameUIColors.dataTypes.string], ["number", gameUIColors.dataTypes.number], ["bigint", gameUIColors.optional],
|
|
41
|
-
// Purple for bigint (distinct from number)
|
|
42
|
-
["boolean", gameUIColors.dataTypes.boolean], ["null", gameUIColors.dataTypes.null], ["undefined", gameUIColors.dataTypes.undefined], ["function", gameUIColors.dataTypes.function], ["symbol", gameUIColors.critical],
|
|
43
|
-
// Pink for symbols (distinct from function)
|
|
44
|
-
["date", gameUIColors.critical],
|
|
45
|
-
// Pink for dates
|
|
46
|
-
["error", gameUIColors.error],
|
|
47
|
-
// Red for errors
|
|
48
|
-
["array", gameUIColors.dataTypes.array], ["object", gameUIColors.dataTypes.object], ["map", gameUIColors.info],
|
|
49
|
-
// Cyan for maps (distinct from object/array)
|
|
50
|
-
["set", gameUIColors.success],
|
|
51
|
-
// Green for sets (distinct from map/array/object)
|
|
52
|
-
["circular", gameUIColors.warning] // Yellow for circular references
|
|
53
|
-
]);
|
|
54
|
-
|
|
55
|
-
// Pre-computed stable styles with React Query-inspired design
|
|
56
|
-
const STABLE_STYLES = StyleSheet.create({
|
|
57
|
-
container: {
|
|
58
|
-
// Night inset panel: darker than the card it sits in, hairline border —
|
|
59
|
-
// the old white-wash fill (primary+"08") read as a grey slab on the
|
|
60
|
-
// night surfaces. Global on purpose: every tool is moving to night.
|
|
61
|
-
backgroundColor: night.color.bg,
|
|
62
|
-
borderRadius: 8,
|
|
63
|
-
borderWidth: 1,
|
|
64
|
-
borderColor: night.color.border
|
|
65
|
-
},
|
|
66
|
-
header: {
|
|
67
|
-
flexDirection: "column",
|
|
68
|
-
paddingHorizontal: 16,
|
|
69
|
-
// Increased padding like dev tools
|
|
70
|
-
paddingVertical: 12
|
|
71
|
-
},
|
|
72
|
-
headerRow: {
|
|
73
|
-
flexDirection: "row",
|
|
74
|
-
justifyContent: "space-between",
|
|
75
|
-
alignItems: "center",
|
|
76
|
-
marginBottom: 6
|
|
77
|
-
},
|
|
78
|
-
title: {
|
|
79
|
-
color: gameUIColors.primary,
|
|
80
|
-
// text-white
|
|
81
|
-
fontSize: 14,
|
|
82
|
-
fontWeight: "500" // font-medium
|
|
83
|
-
},
|
|
84
|
-
description: {
|
|
85
|
-
color: gameUIColors.secondary,
|
|
86
|
-
// text-gray-400
|
|
87
|
-
fontSize: 12,
|
|
88
|
-
marginTop: 2
|
|
89
|
-
},
|
|
90
|
-
typeLegend: {
|
|
91
|
-
flexDirection: "row",
|
|
92
|
-
flexWrap: "wrap",
|
|
93
|
-
gap: 6,
|
|
94
|
-
marginTop: 8,
|
|
95
|
-
paddingTop: 8,
|
|
96
|
-
borderTopWidth: 1,
|
|
97
|
-
borderTopColor: gameUIColors.primary + "14" // border-white/[0.08]
|
|
98
|
-
},
|
|
99
|
-
typeBadge: {
|
|
100
|
-
flexDirection: "row",
|
|
101
|
-
alignItems: "center",
|
|
102
|
-
paddingHorizontal: 6,
|
|
103
|
-
paddingVertical: 2,
|
|
104
|
-
borderRadius: 4,
|
|
105
|
-
borderWidth: 1
|
|
106
|
-
},
|
|
107
|
-
typeColor: {
|
|
108
|
-
width: 8,
|
|
109
|
-
height: 8,
|
|
110
|
-
borderRadius: 4,
|
|
111
|
-
marginRight: 4
|
|
112
|
-
},
|
|
113
|
-
typeName: {
|
|
114
|
-
fontSize: 10,
|
|
115
|
-
fontWeight: "500",
|
|
116
|
-
color: gameUIColors.secondary // text-gray-400
|
|
117
|
-
},
|
|
118
|
-
itemContainer: {
|
|
119
|
-
minHeight: ITEM_HEIGHT,
|
|
120
|
-
backgroundColor: "transparent",
|
|
121
|
-
position: "relative",
|
|
122
|
-
flexDirection: "row",
|
|
123
|
-
alignItems: "flex-start" // Align items to top for better alignment with expand arrows
|
|
124
|
-
},
|
|
125
|
-
itemTouchable: {
|
|
126
|
-
flex: 1,
|
|
127
|
-
flexDirection: "row",
|
|
128
|
-
alignItems: "flex-start",
|
|
129
|
-
// Changed from center to align expand arrow with first line of text
|
|
130
|
-
paddingLeft: 0,
|
|
131
|
-
// Remove padding to align with tree lines
|
|
132
|
-
paddingRight: 16,
|
|
133
|
-
paddingVertical: 2,
|
|
134
|
-
// Further reduced for even tighter spacing
|
|
135
|
-
minHeight: 24 // Match ITEM_HEIGHT for consistency
|
|
136
|
-
},
|
|
137
|
-
itemTouchablePressed: {
|
|
138
|
-
backgroundColor: gameUIColors.primary + "0A" // slightly more visible on press
|
|
139
|
-
},
|
|
140
|
-
itemSelected: {
|
|
141
|
-
backgroundColor: gameUIColors.primary + "14" // selected row highlight (subtle)
|
|
142
|
-
},
|
|
143
|
-
expanderContainer: {
|
|
144
|
-
width: 16,
|
|
145
|
-
// Reduced to minimize space
|
|
146
|
-
alignItems: "center",
|
|
147
|
-
justifyContent: "center",
|
|
148
|
-
marginTop: 4 // Align with text baseline
|
|
149
|
-
},
|
|
150
|
-
expanderIcon: {
|
|
151
|
-
width: 12,
|
|
152
|
-
height: 12
|
|
153
|
-
},
|
|
154
|
-
labelContainer: {
|
|
155
|
-
flex: 1,
|
|
156
|
-
flexDirection: "row",
|
|
157
|
-
alignItems: "flex-start",
|
|
158
|
-
paddingLeft: 2
|
|
159
|
-
},
|
|
160
|
-
labelContainerVertical: {
|
|
161
|
-
flex: 1,
|
|
162
|
-
flexDirection: "column",
|
|
163
|
-
paddingLeft: 2,
|
|
164
|
-
// Reduced padding for tighter alignment
|
|
165
|
-
paddingVertical: 2
|
|
166
|
-
},
|
|
167
|
-
labelContainerVerticalRow: {
|
|
168
|
-
flexDirection: "row",
|
|
169
|
-
alignItems: "center",
|
|
170
|
-
marginBottom: 2
|
|
171
|
-
},
|
|
172
|
-
labelText: {
|
|
173
|
-
color: gameUIColors.primary,
|
|
174
|
-
// text-white
|
|
175
|
-
fontSize: 12,
|
|
176
|
-
fontWeight: "500",
|
|
177
|
-
// font-medium
|
|
178
|
-
fontFamily: monoFont,
|
|
179
|
-
marginRight: 8,
|
|
180
|
-
flexShrink: 1
|
|
181
|
-
},
|
|
182
|
-
labelTextTruncated: {
|
|
183
|
-
color: gameUIColors.primary,
|
|
184
|
-
// text-white
|
|
185
|
-
fontSize: 12,
|
|
186
|
-
fontWeight: "500",
|
|
187
|
-
// font-medium
|
|
188
|
-
fontFamily: monoFont,
|
|
189
|
-
flexShrink: 1
|
|
190
|
-
},
|
|
191
|
-
valueText: {
|
|
192
|
-
fontSize: 12,
|
|
193
|
-
fontFamily: monoFont,
|
|
194
|
-
flex: 1,
|
|
195
|
-
color: gameUIColors.primaryLight // text-gray-300
|
|
196
|
-
},
|
|
197
|
-
loadingContainer: {
|
|
198
|
-
padding: 16,
|
|
199
|
-
alignItems: "center"
|
|
200
|
-
},
|
|
201
|
-
loadingText: {
|
|
202
|
-
color: gameUIColors.secondary,
|
|
203
|
-
// text-gray-400
|
|
204
|
-
fontSize: 12
|
|
205
|
-
},
|
|
206
|
-
noDataContainer: {
|
|
207
|
-
padding: 16,
|
|
208
|
-
alignItems: "center"
|
|
209
|
-
},
|
|
210
|
-
noDataText: {
|
|
211
|
-
color: gameUIColors.secondary,
|
|
212
|
-
// text-gray-400
|
|
213
|
-
fontSize: 12
|
|
214
|
-
},
|
|
215
|
-
listContent: {
|
|
216
|
-
paddingBottom: 8
|
|
217
|
-
},
|
|
218
|
-
headerTouchable: {
|
|
219
|
-
flex: 1,
|
|
220
|
-
flexDirection: "row",
|
|
221
|
-
alignItems: "center"
|
|
222
|
-
},
|
|
223
|
-
expanderMargin: {
|
|
224
|
-
marginLeft: 8
|
|
225
|
-
}
|
|
226
|
-
});
|
|
227
|
-
|
|
228
|
-
/**
|
|
229
|
-
* A tree row as the HOST sees it.
|
|
230
|
-
*
|
|
231
|
-
* `item.path` is addressed for the TREE, which is seeded with a synthetic
|
|
232
|
-
* "root" node wrapping the caller's data — so the top row is `["root"]` and its
|
|
233
|
-
* first child `["root", "0"]`. Ops address the DATA, where those are `[]` and
|
|
234
|
-
* `["0"]`. Dropping the first segment is what reconciles the two, and doing it
|
|
235
|
-
* in ONE place is what keeps selection, inline editing and ops all agreeing.
|
|
236
|
-
*/
|
|
237
|
-
function selectionOf(item) {
|
|
238
|
-
return {
|
|
239
|
-
path: item.path.slice(1),
|
|
240
|
-
value: item.value,
|
|
241
|
-
label: item.key
|
|
242
|
-
};
|
|
243
|
-
}
|
|
244
|
-
|
|
245
|
-
// Type definitions for flattened data structure
|
|
246
|
-
|
|
247
|
-
/**
|
|
248
|
-
* Node count, capped at `limit`.
|
|
249
|
-
*
|
|
250
|
-
* Deliberately short-circuits: this runs on every render to decide which
|
|
251
|
-
* flattening path to take, so it must cost O(limit), never O(document).
|
|
252
|
-
*/
|
|
253
|
-
function countNodesUpTo(value, limit, seen = 0) {
|
|
254
|
-
if (seen >= limit) return seen;
|
|
255
|
-
let n = seen + 1;
|
|
256
|
-
if (Array.isArray(value)) {
|
|
257
|
-
for (const child of value) {
|
|
258
|
-
if (n >= limit) return n;
|
|
259
|
-
n = countNodesUpTo(child, limit, n);
|
|
260
|
-
}
|
|
261
|
-
} else if (value !== null && typeof value === "object") {
|
|
262
|
-
for (const child of Object.values(value)) {
|
|
263
|
-
if (n >= limit) return n;
|
|
264
|
-
n = countNodesUpTo(child, limit, n);
|
|
265
|
-
}
|
|
266
|
-
}
|
|
267
|
-
return n;
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
// Enhanced type detection optimized for performance
|
|
271
|
-
const getValueType = value => {
|
|
272
|
-
if (value === null) return "null";
|
|
273
|
-
if (value === undefined) return "undefined";
|
|
274
|
-
if (Array.isArray(value)) return "array";
|
|
275
|
-
if (value instanceof Date) return "date";
|
|
276
|
-
if (value instanceof Error) return "error";
|
|
277
|
-
if (value instanceof Map) return "map";
|
|
278
|
-
if (value instanceof Set) return "set";
|
|
279
|
-
if (value instanceof RegExp) return "regexp";
|
|
280
|
-
if (typeof value === "function") return "function";
|
|
281
|
-
if (typeof value === "symbol") return "symbol";
|
|
282
|
-
if (typeof value === "bigint") return "bigint";
|
|
283
|
-
if (typeof value === "object") return "object";
|
|
284
|
-
return typeof value;
|
|
285
|
-
};
|
|
286
|
-
|
|
287
|
-
// Get value count for collections
|
|
288
|
-
const getValueCount = (value, valueType) => {
|
|
289
|
-
if (value === null) return 0;
|
|
290
|
-
switch (valueType) {
|
|
291
|
-
case "array":
|
|
292
|
-
return Array.isArray(value) ? value.length : 0;
|
|
293
|
-
case "object":
|
|
294
|
-
return typeof value === "object" && !(value instanceof Date) && !(value instanceof Error) && !(value instanceof RegExp) && !(value instanceof Map) && !(value instanceof Set) ? Object.keys(value).length : 0;
|
|
295
|
-
case "map":
|
|
296
|
-
return value instanceof Map ? value.size : 0;
|
|
297
|
-
case "set":
|
|
298
|
-
return value instanceof Set ? value.size : 0;
|
|
299
|
-
default:
|
|
300
|
-
return 0;
|
|
301
|
-
}
|
|
302
|
-
};
|
|
303
|
-
|
|
304
|
-
// Format value for display
|
|
305
|
-
const formatValue = (value, valueType) => {
|
|
306
|
-
if (value === null) return "null";
|
|
307
|
-
if (value === undefined) return "undefined";
|
|
308
|
-
switch (valueType) {
|
|
309
|
-
case "string":
|
|
310
|
-
return `"${String(value)}"`;
|
|
311
|
-
case "boolean":
|
|
312
|
-
return value === true ? "true" : "false";
|
|
313
|
-
case "function":
|
|
314
|
-
return typeof value === "function" ? value.toString().slice(0, 50) + "..." : "undefined";
|
|
315
|
-
case "symbol":
|
|
316
|
-
return typeof value === "symbol" ? String(value) : "undefined";
|
|
317
|
-
case "date":
|
|
318
|
-
return value instanceof Date ? value.toISOString() : "undefined";
|
|
319
|
-
case "regexp":
|
|
320
|
-
return value instanceof RegExp ? value.toString() : "undefined";
|
|
321
|
-
case "bigint":
|
|
322
|
-
return typeof value === "bigint" ? value.toString() + "n" : "undefined";
|
|
323
|
-
case "error":
|
|
324
|
-
return value instanceof Error ? `${value.name}: ${value.message}` : "undefined";
|
|
325
|
-
default:
|
|
326
|
-
return displayValue(value);
|
|
327
|
-
}
|
|
328
|
-
};
|
|
329
|
-
|
|
330
|
-
// Optimized type color lookup using cache [[memory:4875251]]
|
|
331
|
-
const getTypeColor = valueType => {
|
|
332
|
-
return TYPE_COLOR_CACHE.get(valueType) || gameUIColors.dataTypes.array;
|
|
333
|
-
};
|
|
334
|
-
|
|
335
|
-
// Memoized components for performance
|
|
336
|
-
const ExpanderComponent = ({
|
|
337
|
-
expanded,
|
|
338
|
-
onPress
|
|
339
|
-
}) => {
|
|
340
|
-
return /*#__PURE__*/_jsx(TouchableOpacity, {
|
|
341
|
-
"sentry-label": "ignore devtools data explorer expander",
|
|
342
|
-
style: STABLE_STYLES.expanderContainer,
|
|
343
|
-
onPress: onPress,
|
|
344
|
-
hitSlop: HIT_SLOP_10,
|
|
345
|
-
children: /*#__PURE__*/_jsx(View, {
|
|
346
|
-
style: STABLE_STYLES.expanderIcon,
|
|
347
|
-
children: /*#__PURE__*/_jsx(ChevronRight, {
|
|
348
|
-
size: 12,
|
|
349
|
-
color: gameUIColors.secondary,
|
|
350
|
-
strokeWidth: 2,
|
|
351
|
-
style: {
|
|
352
|
-
transform: [{
|
|
353
|
-
rotate: expanded ? "90deg" : "0deg"
|
|
354
|
-
}]
|
|
355
|
-
}
|
|
356
|
-
})
|
|
357
|
-
})
|
|
358
|
-
});
|
|
359
|
-
};
|
|
360
|
-
ExpanderComponent.displayName = "Expander";
|
|
361
|
-
const Expander = /*#__PURE__*/memo(ExpanderComponent);
|
|
362
|
-
|
|
363
|
-
// Type legend component to replace inline type indicators
|
|
364
|
-
const TypeLegendComponent = ({
|
|
365
|
-
visibleTypes
|
|
366
|
-
}) => {
|
|
367
|
-
const uniqueTypes = Array.from(new Set(visibleTypes)).slice(0, 8); // Limit to 8 most common types
|
|
368
|
-
|
|
369
|
-
return /*#__PURE__*/_jsx(View, {
|
|
370
|
-
style: STABLE_STYLES.typeLegend,
|
|
371
|
-
children: uniqueTypes.map(type => {
|
|
372
|
-
const color = getTypeColor(type);
|
|
373
|
-
return /*#__PURE__*/_jsxs(View, {
|
|
374
|
-
style: [STABLE_STYLES.typeBadge, {
|
|
375
|
-
backgroundColor: `${color}10`,
|
|
376
|
-
borderColor: `${color}30`
|
|
377
|
-
}],
|
|
378
|
-
children: [/*#__PURE__*/_jsx(View, {
|
|
379
|
-
style: [STABLE_STYLES.typeColor, {
|
|
380
|
-
backgroundColor: color
|
|
381
|
-
}]
|
|
382
|
-
}), /*#__PURE__*/_jsx(Text, {
|
|
383
|
-
style: STABLE_STYLES.typeName,
|
|
384
|
-
children: type
|
|
385
|
-
})]
|
|
386
|
-
}, type);
|
|
387
|
-
})
|
|
388
|
-
});
|
|
389
|
-
};
|
|
390
|
-
TypeLegendComponent.displayName = "TypeLegend";
|
|
391
|
-
const TypeLegend = /*#__PURE__*/memo(TypeLegendComponent);
|
|
392
|
-
|
|
393
|
-
// Optimized data flattening with chunked processing to prevent UI blocking [[memory:4875251]]
|
|
394
|
-
const useDataFlattening = (data, maxDepth = 10, autoExpandFirstLevel = false) => {
|
|
395
|
-
const [flatData, setFlatData] = useState([]);
|
|
396
|
-
const flatDataMapRef = useRef(new Map());
|
|
397
|
-
|
|
398
|
-
// Initialize with root expanded and optionally first level
|
|
399
|
-
const getInitialExpanded = useCallback(() => {
|
|
400
|
-
const initial = new Set(["root"]);
|
|
401
|
-
if (autoExpandFirstLevel && data && typeof data === "object") {
|
|
402
|
-
if (Array.isArray(data)) {
|
|
403
|
-
data.forEach((_, index) => {
|
|
404
|
-
initial.add(`root.${index}`);
|
|
405
|
-
});
|
|
406
|
-
} else {
|
|
407
|
-
Object.keys(data).forEach(key => {
|
|
408
|
-
initial.add(`root.${key}`);
|
|
409
|
-
});
|
|
410
|
-
}
|
|
411
|
-
}
|
|
412
|
-
return initial;
|
|
413
|
-
}, [autoExpandFirstLevel, data]);
|
|
414
|
-
const [expandedItems, setExpandedItems] = useState(() => getInitialExpanded());
|
|
415
|
-
const [isProcessing, setIsProcessing] = useState(false);
|
|
416
|
-
|
|
417
|
-
// Debug logging - commented out for less noise
|
|
418
|
-
// Store circular cache outside of re-renders to prevent reset
|
|
419
|
-
const circularCacheRef = useRef(new WeakSet());
|
|
420
|
-
const processingRef = useRef(false);
|
|
421
|
-
/**
|
|
422
|
-
* Monotonic token identifying the newest flatten run.
|
|
423
|
-
*
|
|
424
|
-
* WHY: a cancelled run used to `return` without clearing `isProcessing`, so
|
|
425
|
-
* whenever renders arrived faster than the 10ms debounce + flatten, every run
|
|
426
|
-
* was superseded before it finished and the spinner never came down — the
|
|
427
|
-
* viewer sat on "Processing data…" forever. Now each run checks it is still
|
|
428
|
-
* the current one, and the run that ends up last ALWAYS resolves the flag.
|
|
429
|
-
*/
|
|
430
|
-
const runIdRef = useRef(0);
|
|
431
|
-
const dataVersionRef = useRef(0);
|
|
432
|
-
const lastActionRef = useRef(undefined);
|
|
433
|
-
|
|
434
|
-
// Stable flattenData function that doesn't depend on expandedItems
|
|
435
|
-
const flattenDataStable = useCallback((value, expandedSet, circularCache, key = "root", depth = 0, parentId, path = [], siblingIndex = 0, totalSiblings = 1, parentHasMoreSiblings = []) => {
|
|
436
|
-
// Early termination for performance [[memory:4875251]]
|
|
437
|
-
if (depth > Math.min(maxDepth, MAX_DEPTH_LIMIT)) return [];
|
|
438
|
-
const currentPath = [...path, key];
|
|
439
|
-
const id = currentPath.join(".");
|
|
440
|
-
const valueType = getValueType(value);
|
|
441
|
-
const isExpandable = ["object", "array", "map", "set"].includes(valueType) && value !== null;
|
|
442
|
-
const rawChildCount = isExpandable ? getValueCount(value, valueType) : 0;
|
|
443
|
-
// Limit child count to prevent performance issues [[memory:4875251]]
|
|
444
|
-
const childCount = Math.min(rawChildCount, MAX_ITEMS_PER_LEVEL);
|
|
445
|
-
|
|
446
|
-
// Check for circular references
|
|
447
|
-
if (value && typeof value === "object") {
|
|
448
|
-
if (circularCache.has(value)) {
|
|
449
|
-
return [{
|
|
450
|
-
id,
|
|
451
|
-
key,
|
|
452
|
-
value: "[Circular Reference]",
|
|
453
|
-
valueType: "circular",
|
|
454
|
-
depth,
|
|
455
|
-
isExpandable: false,
|
|
456
|
-
isExpanded: false,
|
|
457
|
-
parentId,
|
|
458
|
-
hasChildren: false,
|
|
459
|
-
childCount: 0,
|
|
460
|
-
path: currentPath,
|
|
461
|
-
type: "circular",
|
|
462
|
-
isLastChild: siblingIndex === totalSiblings - 1,
|
|
463
|
-
parentHasMoreSiblings: [...parentHasMoreSiblings],
|
|
464
|
-
siblingIndex,
|
|
465
|
-
totalSiblings
|
|
466
|
-
}];
|
|
467
|
-
}
|
|
468
|
-
circularCache.add(value);
|
|
469
|
-
}
|
|
470
|
-
const currentItem = {
|
|
471
|
-
id,
|
|
472
|
-
key,
|
|
473
|
-
value,
|
|
474
|
-
valueType,
|
|
475
|
-
depth,
|
|
476
|
-
isExpandable,
|
|
477
|
-
isExpanded: expandedSet.has(id),
|
|
478
|
-
parentId,
|
|
479
|
-
hasChildren: childCount > 0,
|
|
480
|
-
childCount,
|
|
481
|
-
path: currentPath,
|
|
482
|
-
type: isExpandable ? "expandable" : valueType,
|
|
483
|
-
isLastChild: siblingIndex === totalSiblings - 1,
|
|
484
|
-
parentHasMoreSiblings: [...parentHasMoreSiblings],
|
|
485
|
-
siblingIndex,
|
|
486
|
-
totalSiblings
|
|
487
|
-
};
|
|
488
|
-
const result = [currentItem];
|
|
489
|
-
|
|
490
|
-
// Only add children if expanded and not too deep [[memory:4875251]]
|
|
491
|
-
if (isExpandable && expandedSet.has(id) && depth < Math.min(maxDepth, MAX_DEPTH_LIMIT)) {
|
|
492
|
-
try {
|
|
493
|
-
let entries = [];
|
|
494
|
-
switch (valueType) {
|
|
495
|
-
case "array":
|
|
496
|
-
entries = Array.isArray(value) ? value.map((item, index) => [index.toString(), item]) : [];
|
|
497
|
-
break;
|
|
498
|
-
case "object":
|
|
499
|
-
entries = typeof value === "object" && value !== null && !(value instanceof Date) && !(value instanceof Error) && !(value instanceof RegExp) && !(value instanceof Map) && !(value instanceof Set) ? Object.entries(value) : [];
|
|
500
|
-
break;
|
|
501
|
-
case "map":
|
|
502
|
-
entries = value instanceof Map ? Array.from(value.entries()).map(([k, v]) => [String(k), v]) : [];
|
|
503
|
-
break;
|
|
504
|
-
case "set":
|
|
505
|
-
entries = value instanceof Set ? Array.from(value.values()).map((v, index) => [index.toString(), v]) : [];
|
|
506
|
-
break;
|
|
507
|
-
}
|
|
508
|
-
|
|
509
|
-
// Aggressively limit children for performance [[memory:4875251]]
|
|
510
|
-
const limitedEntries = entries.slice(0, childCount);
|
|
511
|
-
const totalChildCount = limitedEntries.length;
|
|
512
|
-
|
|
513
|
-
// Update parent's sibling tracking for children
|
|
514
|
-
const newParentHasMoreSiblings = [...parentHasMoreSiblings];
|
|
515
|
-
if (depth > 0) {
|
|
516
|
-
// Current item has more siblings if it's not the last child
|
|
517
|
-
newParentHasMoreSiblings[depth - 1] = !currentItem.isLastChild;
|
|
518
|
-
}
|
|
519
|
-
|
|
520
|
-
// Process children in smaller batches to avoid blocking
|
|
521
|
-
for (let i = 0; i < limitedEntries.length; i += CHUNK_SIZE) {
|
|
522
|
-
const chunk = limitedEntries.slice(i, i + CHUNK_SIZE);
|
|
523
|
-
let chunkIndex = i;
|
|
524
|
-
for (const [childKey, childValue] of chunk) {
|
|
525
|
-
result.push(...flattenDataStable(childValue, expandedSet, circularCache, childKey, depth + 1, id, currentPath, chunkIndex, totalChildCount, newParentHasMoreSiblings));
|
|
526
|
-
chunkIndex++;
|
|
527
|
-
}
|
|
528
|
-
|
|
529
|
-
// Yield to main thread periodically for large datasets
|
|
530
|
-
if (i > 0 && i % (CHUNK_SIZE * 2) === 0) {
|
|
531
|
-
break; // Let InteractionManager handle the rest
|
|
532
|
-
}
|
|
533
|
-
}
|
|
534
|
-
} catch (error) {
|
|
535
|
-
console.error(error);
|
|
536
|
-
// Skip malformed data
|
|
537
|
-
}
|
|
538
|
-
}
|
|
539
|
-
return result;
|
|
540
|
-
}, [maxDepth] // Only depend on maxDepth, not expandedItems
|
|
541
|
-
);
|
|
542
|
-
|
|
543
|
-
// Only process full data when data changes (not on expand/collapse)
|
|
544
|
-
useEffect(() => {
|
|
545
|
-
// Skip if this was just an expand/collapse action
|
|
546
|
-
if (lastActionRef.current && (lastActionRef.current.type === "expand" || lastActionRef.current.type === "collapse")) {
|
|
547
|
-
// Make sure processing flag is cleared for incremental updates
|
|
548
|
-
if (isProcessing) {
|
|
549
|
-
setIsProcessing(false);
|
|
550
|
-
processingRef.current = false;
|
|
551
|
-
}
|
|
552
|
-
lastActionRef.current = undefined;
|
|
553
|
-
return;
|
|
554
|
-
}
|
|
555
|
-
|
|
556
|
-
// Prevent concurrent processing
|
|
557
|
-
if (processingRef.current) {
|
|
558
|
-
return;
|
|
559
|
-
}
|
|
560
|
-
let timeoutId;
|
|
561
|
-
const runId = ++runIdRef.current;
|
|
562
|
-
/** True while this run is still the newest one scheduled. */
|
|
563
|
-
const isCurrent = () => runIdRef.current === runId;
|
|
564
|
-
processingRef.current = true;
|
|
565
|
-
setIsProcessing(true);
|
|
566
|
-
const processData = async () => {
|
|
567
|
-
// Failsafe timeout to prevent stuck processing
|
|
568
|
-
timeoutId = setTimeout(() => {
|
|
569
|
-
if (processingRef.current && isCurrent()) {
|
|
570
|
-
setIsProcessing(false);
|
|
571
|
-
processingRef.current = false;
|
|
572
|
-
}
|
|
573
|
-
}, 5000);
|
|
574
|
-
// Small delay to debounce rapid changes
|
|
575
|
-
// Small delay to batch rapid changes
|
|
576
|
-
await new Promise(resolve => setTimeout(() => resolve(), 10));
|
|
577
|
-
|
|
578
|
-
// Superseded by a newer run — that run now owns `isProcessing`, so leave
|
|
579
|
-
// the flag alone and let it resolve.
|
|
580
|
-
if (!isCurrent()) {
|
|
581
|
-
return;
|
|
582
|
-
}
|
|
583
|
-
try {
|
|
584
|
-
// Initialize circular cache for new data
|
|
585
|
-
circularCacheRef.current = new WeakSet();
|
|
586
|
-
dataVersionRef.current = Date.now();
|
|
587
|
-
const newFlatData = flattenDataStable(data, expandedItems, circularCacheRef.current, "root", 0, undefined, [], 0, 1, []);
|
|
588
|
-
|
|
589
|
-
// Build the map for incremental updates
|
|
590
|
-
const newMap = new Map();
|
|
591
|
-
newFlatData.forEach((item, index) => {
|
|
592
|
-
newMap.set(item.id, {
|
|
593
|
-
item,
|
|
594
|
-
index
|
|
595
|
-
});
|
|
596
|
-
});
|
|
597
|
-
flatDataMapRef.current = newMap;
|
|
598
|
-
if (timeoutId) clearTimeout(timeoutId);
|
|
599
|
-
if (isCurrent()) {
|
|
600
|
-
setFlatData(newFlatData);
|
|
601
|
-
setIsProcessing(false);
|
|
602
|
-
processingRef.current = false;
|
|
603
|
-
}
|
|
604
|
-
} catch (error) {
|
|
605
|
-
console.error(error);
|
|
606
|
-
// Reset to empty data on error
|
|
607
|
-
if (timeoutId) clearTimeout(timeoutId);
|
|
608
|
-
if (isCurrent()) {
|
|
609
|
-
setFlatData([]);
|
|
610
|
-
flatDataMapRef.current = new Map();
|
|
611
|
-
setIsProcessing(false);
|
|
612
|
-
processingRef.current = false;
|
|
613
|
-
}
|
|
614
|
-
}
|
|
615
|
-
};
|
|
616
|
-
processData();
|
|
617
|
-
return () => {
|
|
618
|
-
processingRef.current = false;
|
|
619
|
-
if (timeoutId) clearTimeout(timeoutId);
|
|
620
|
-
};
|
|
621
|
-
}, [data, expandedItems, flattenDataStable, maxDepth]);
|
|
622
|
-
|
|
623
|
-
// Incremental update function for expand/collapse
|
|
624
|
-
const updateFlatDataIncremental = useCallback((itemId, isExpanding) => {
|
|
625
|
-
// Clear processing flag since we're doing incremental update
|
|
626
|
-
setIsProcessing(false);
|
|
627
|
-
processingRef.current = false;
|
|
628
|
-
setFlatData(prevFlatData => {
|
|
629
|
-
const itemEntry = flatDataMapRef.current.get(itemId);
|
|
630
|
-
if (!itemEntry) {
|
|
631
|
-
return prevFlatData;
|
|
632
|
-
}
|
|
633
|
-
const {
|
|
634
|
-
item,
|
|
635
|
-
index
|
|
636
|
-
} = itemEntry;
|
|
637
|
-
if (isExpanding && item.isExpandable && item.hasChildren) {
|
|
638
|
-
// Expand: insert children after the item
|
|
639
|
-
const newItems = [...prevFlatData];
|
|
640
|
-
|
|
641
|
-
// Create a new circular cache for this subtree
|
|
642
|
-
const subCircularCache = new WeakSet();
|
|
643
|
-
if (item.value && typeof item.value === "object") {
|
|
644
|
-
subCircularCache.add(item.value);
|
|
645
|
-
}
|
|
646
|
-
|
|
647
|
-
// We need to get the actual children, not re-process the parent
|
|
648
|
-
// So we process each child entry individually
|
|
649
|
-
const childrenItems = [];
|
|
650
|
-
try {
|
|
651
|
-
let entries = [];
|
|
652
|
-
const valueType = item.valueType;
|
|
653
|
-
switch (valueType) {
|
|
654
|
-
case "array":
|
|
655
|
-
entries = Array.isArray(item.value) ? item.value.map((childValue, index) => [index.toString(), childValue]) : [];
|
|
656
|
-
break;
|
|
657
|
-
case "object":
|
|
658
|
-
entries = typeof item.value === "object" && item.value !== null && !(item.value instanceof Date) && !(item.value instanceof Error) && !(item.value instanceof RegExp) && !(item.value instanceof Map) && !(item.value instanceof Set) ? Object.entries(item.value) : [];
|
|
659
|
-
break;
|
|
660
|
-
case "map":
|
|
661
|
-
entries = item.value instanceof Map ? Array.from(item.value.entries()).map(([k, v]) => [String(k), v]) : [];
|
|
662
|
-
break;
|
|
663
|
-
case "set":
|
|
664
|
-
entries = item.value instanceof Set ? Array.from(item.value.values()).map((v, index) => [index.toString(), v]) : [];
|
|
665
|
-
break;
|
|
666
|
-
}
|
|
667
|
-
|
|
668
|
-
// Process each child with sibling tracking
|
|
669
|
-
const totalEntries = entries.length;
|
|
670
|
-
const parentHasMoreSiblings = item.parentHasMoreSiblings || [];
|
|
671
|
-
const newParentHasMoreSiblings = [...parentHasMoreSiblings];
|
|
672
|
-
if (item.depth > 0) {
|
|
673
|
-
newParentHasMoreSiblings[item.depth - 1] = !item.isLastChild;
|
|
674
|
-
}
|
|
675
|
-
entries.forEach(([childKey, childValue], index) => {
|
|
676
|
-
const childItems = flattenDataStable(childValue, new Set(),
|
|
677
|
-
// Children start collapsed
|
|
678
|
-
subCircularCache, childKey, item.depth + 1, itemId, item.path, index, totalEntries, newParentHasMoreSiblings);
|
|
679
|
-
childrenItems.push(...childItems);
|
|
680
|
-
});
|
|
681
|
-
} catch (error) {
|
|
682
|
-
console.error(error);
|
|
683
|
-
}
|
|
684
|
-
const childrenToInsert = childrenItems;
|
|
685
|
-
if (childrenToInsert.length > 0) {
|
|
686
|
-
// Children are ready to insert
|
|
687
|
-
}
|
|
688
|
-
|
|
689
|
-
// Update the parent item to show it's expanded
|
|
690
|
-
newItems[index] = {
|
|
691
|
-
...item,
|
|
692
|
-
isExpanded: true
|
|
693
|
-
};
|
|
694
|
-
|
|
695
|
-
// Insert children after the parent
|
|
696
|
-
newItems.splice(index + 1, 0, ...childrenToInsert);
|
|
697
|
-
|
|
698
|
-
// Rebuild the map
|
|
699
|
-
const newMap = new Map();
|
|
700
|
-
newItems.forEach((item, index) => {
|
|
701
|
-
newMap.set(item.id, {
|
|
702
|
-
item,
|
|
703
|
-
index
|
|
704
|
-
});
|
|
705
|
-
});
|
|
706
|
-
flatDataMapRef.current = newMap;
|
|
707
|
-
return newItems;
|
|
708
|
-
} else if (!isExpanding) {
|
|
709
|
-
// Collapse: remove all descendants
|
|
710
|
-
const itemsToRemove = new Set();
|
|
711
|
-
const findDescendants = (parentId, depth) => {
|
|
712
|
-
prevFlatData.forEach(child => {
|
|
713
|
-
if (child.parentId === parentId || child.id.startsWith(parentId + ".") && child.depth > depth) {
|
|
714
|
-
itemsToRemove.add(child.id);
|
|
715
|
-
if (child.hasChildren) {
|
|
716
|
-
findDescendants(child.id, child.depth);
|
|
717
|
-
}
|
|
718
|
-
}
|
|
719
|
-
});
|
|
720
|
-
};
|
|
721
|
-
findDescendants(itemId, item.depth);
|
|
722
|
-
|
|
723
|
-
// Filter out descendants and update the parent
|
|
724
|
-
const newItems = prevFlatData.map(it => {
|
|
725
|
-
if (it.id === itemId) {
|
|
726
|
-
return {
|
|
727
|
-
...it,
|
|
728
|
-
isExpanded: false
|
|
729
|
-
};
|
|
730
|
-
}
|
|
731
|
-
return it;
|
|
732
|
-
}).filter(it => !itemsToRemove.has(it.id));
|
|
733
|
-
|
|
734
|
-
// Rebuild the map
|
|
735
|
-
const newMap = new Map();
|
|
736
|
-
newItems.forEach((item, index) => {
|
|
737
|
-
newMap.set(item.id, {
|
|
738
|
-
item,
|
|
739
|
-
index
|
|
740
|
-
});
|
|
741
|
-
});
|
|
742
|
-
flatDataMapRef.current = newMap;
|
|
743
|
-
return newItems;
|
|
744
|
-
}
|
|
745
|
-
return prevFlatData;
|
|
746
|
-
});
|
|
747
|
-
}, [flattenDataStable]);
|
|
748
|
-
const toggleExpanded = useCallback(itemId => {
|
|
749
|
-
setExpandedItems(prev => {
|
|
750
|
-
const newSet = new Set(prev);
|
|
751
|
-
const isExpanding = !newSet.has(itemId);
|
|
752
|
-
if (isExpanding) {
|
|
753
|
-
newSet.add(itemId);
|
|
754
|
-
} else {
|
|
755
|
-
newSet.delete(itemId);
|
|
756
|
-
}
|
|
757
|
-
|
|
758
|
-
// Store the action for the effect to use
|
|
759
|
-
lastActionRef.current = {
|
|
760
|
-
type: isExpanding ? "expand" : "collapse",
|
|
761
|
-
itemId
|
|
762
|
-
};
|
|
763
|
-
|
|
764
|
-
// Perform incremental update
|
|
765
|
-
updateFlatDataIncremental(itemId, isExpanding);
|
|
766
|
-
return newSet;
|
|
767
|
-
});
|
|
768
|
-
}, [updateFlatDataIncremental]);
|
|
769
|
-
|
|
770
|
-
/**
|
|
771
|
-
* Small documents flatten SYNCHRONOUSLY, during render.
|
|
772
|
-
*
|
|
773
|
-
* The chunked effect above exists so a 500-node payload can't block a frame,
|
|
774
|
-
* and it pays for that with an async, multi-commit rebuild every time `data`
|
|
775
|
-
* changes identity. Editing is immutable, so that's every single op — which
|
|
776
|
-
* made a three-item array rebuild itself in stages on every tap, visibly, for
|
|
777
|
-
* machinery it never needed. Below the chunk threshold the entire flatten is
|
|
778
|
-
* cheaper than one of those commits, so derive it inline and let React
|
|
779
|
-
* reconcile the rows normally. The chunked path is untouched above that size.
|
|
780
|
-
*/
|
|
781
|
-
const isSmallDocument = countNodesUpTo(data, CHUNK_SIZE, 0) < CHUNK_SIZE;
|
|
782
|
-
const syncFlatData = useMemo(() => {
|
|
783
|
-
if (!isSmallDocument) return null;
|
|
784
|
-
return flattenDataStable(data, expandedItems, new WeakSet(), "root", 0, undefined, [], 0, 1, []);
|
|
785
|
-
}, [isSmallDocument, data, expandedItems, flattenDataStable]);
|
|
786
|
-
|
|
787
|
-
/**
|
|
788
|
-
* Expand a set of ancestor ids so a node deeper in the tree becomes visible.
|
|
789
|
-
*
|
|
790
|
-
* Needed because a host can relocate the selection to a node the user never
|
|
791
|
-
* expanded their way to — append into a collapsed array and the new entry is
|
|
792
|
-
* selected but off-tree, which reads as "nothing happened". Unlike
|
|
793
|
-
* `toggleExpanded` this doesn't patch `flatData` incrementally; the full
|
|
794
|
-
* flatten effect already re-runs on `expandedItems`, and a reveal is rare
|
|
795
|
-
* enough that the extra pass isn't worth a second incremental code path.
|
|
796
|
-
*/
|
|
797
|
-
const revealPath = useCallback(ancestorIds => {
|
|
798
|
-
if (ancestorIds.length === 0) return;
|
|
799
|
-
setExpandedItems(prev => {
|
|
800
|
-
if (ancestorIds.every(id => prev.has(id))) return prev;
|
|
801
|
-
const next = new Set(prev);
|
|
802
|
-
for (const id of ancestorIds) next.add(id);
|
|
803
|
-
return next;
|
|
804
|
-
});
|
|
805
|
-
}, []);
|
|
806
|
-
return {
|
|
807
|
-
flatData: syncFlatData ?? flatData,
|
|
808
|
-
// A synchronous list is never "processing" — the spinner would flash on
|
|
809
|
-
// every keystroke otherwise.
|
|
810
|
-
isProcessing: syncFlatData ? false : isProcessing,
|
|
811
|
-
toggleExpanded,
|
|
812
|
-
revealPath
|
|
813
|
-
};
|
|
814
|
-
};
|
|
815
|
-
|
|
816
|
-
// Optimized virtualized item renderer with full-row clickability [[memory:4875251]]
|
|
817
|
-
const VirtualizedItemComponent = ({
|
|
818
|
-
item,
|
|
819
|
-
onToggleExpanded,
|
|
820
|
-
index,
|
|
821
|
-
onSelect,
|
|
822
|
-
isSelected,
|
|
823
|
-
selectable,
|
|
824
|
-
onRequestInlineEdit,
|
|
825
|
-
isInlineEditing,
|
|
826
|
-
inlineEditor,
|
|
827
|
-
testIDPrefix
|
|
828
|
-
}) => {
|
|
829
|
-
const [isPressed, setIsPressed] = useState(false);
|
|
830
|
-
const [showFullKey, setShowFullKey] = useState(false);
|
|
831
|
-
const canEdit = selectable === true;
|
|
832
|
-
const lastPressRef = useRef(0);
|
|
833
|
-
|
|
834
|
-
/**
|
|
835
|
-
* `item.path` is addressed for the TREE, which is seeded with a synthetic
|
|
836
|
-
* "root" node wrapping the caller's data — so the top row is `["root"]` and
|
|
837
|
-
* its first child `["root", "0"]`. Ops address the DATA, where those are `[]`
|
|
838
|
-
* and `["0"]`. Dropping the first segment is what reconciles the two.
|
|
839
|
-
*
|
|
840
|
-
* Worth stating plainly because getting it wrong fails silently: `applyJsonOp`
|
|
841
|
-
* treats an unresolvable path as a no-op, so every button would simply have
|
|
842
|
-
* done nothing rather than erroring.
|
|
843
|
-
*/
|
|
844
|
-
const dataPath = item.path.slice(1);
|
|
845
|
-
|
|
846
|
-
// Use pre-computed styles to avoid inline calculations [[memory:4875251]]
|
|
847
|
-
const indentStyle = INDENT_STYLES[Math.min(item.depth, MAX_DEPTH_LIMIT)] || INDENT_STYLES[0];
|
|
848
|
-
const color = getTypeColor(item.valueType);
|
|
849
|
-
|
|
850
|
-
// Uniform row layout: single-line like VS Code tree
|
|
851
|
-
const isLongKey = false;
|
|
852
|
-
|
|
853
|
-
// Use inline handler since component is already memoized [[memory:4875251]]
|
|
854
|
-
|
|
855
|
-
/**
|
|
856
|
-
* Row body. In editable mode this SELECTS only — pressing a container to see
|
|
857
|
-
* its actions would otherwise collapse the very subtree you're editing, and
|
|
858
|
-
* the expander already exists to do the toggling (the same split every tree
|
|
859
|
-
* view makes). Read-only mode keeps the original toggle-on-row-press.
|
|
860
|
-
*/
|
|
861
|
-
const handlePress = () => {
|
|
862
|
-
if (canEdit) {
|
|
863
|
-
// Double-tap opens the inline editor, matching the mockup's
|
|
864
|
-
// double-click. Detected by hand because RN has no dblclick: two presses
|
|
865
|
-
// inside DOUBLE_TAP_MS on an already-selected scalar row.
|
|
866
|
-
const now = Date.now();
|
|
867
|
-
const isDouble = now - lastPressRef.current < DOUBLE_TAP_MS;
|
|
868
|
-
lastPressRef.current = now;
|
|
869
|
-
if (isDouble && !item.isExpandable && onRequestInlineEdit) {
|
|
870
|
-
onRequestInlineEdit(item);
|
|
871
|
-
return;
|
|
872
|
-
}
|
|
873
|
-
onSelect(item);
|
|
874
|
-
return;
|
|
875
|
-
}
|
|
876
|
-
if (item.isExpandable) {
|
|
877
|
-
onToggleExpanded(item.id);
|
|
878
|
-
}
|
|
879
|
-
onSelect(item);
|
|
880
|
-
};
|
|
881
|
-
|
|
882
|
-
/** The chevron always toggles, in both modes. */
|
|
883
|
-
const handleExpanderPress = () => {
|
|
884
|
-
if (item.isExpandable) {
|
|
885
|
-
onToggleExpanded(item.id);
|
|
886
|
-
}
|
|
887
|
-
onSelect(item);
|
|
888
|
-
};
|
|
889
|
-
const handleKeyPress = () => {};
|
|
890
|
-
|
|
891
|
-
// Always show full key for better identification
|
|
892
|
-
const displayKey = item.key;
|
|
893
|
-
return /*#__PURE__*/_jsxs(View, {
|
|
894
|
-
style: [STABLE_STYLES.itemContainer, indentStyle],
|
|
895
|
-
children: [/*#__PURE__*/_jsxs(TouchableOpacity, {
|
|
896
|
-
"sentry-label": "ignore devtools data explorer item"
|
|
897
|
-
// `item.id` is the dotted path from the root ("root.settings.theme"),
|
|
898
|
-
// so this handle addresses a NODE rather than a list position — stable
|
|
899
|
-
// across expand/collapse and across re-renders.
|
|
900
|
-
,
|
|
901
|
-
testID: `${testIDPrefix}-${item.id}`,
|
|
902
|
-
accessibilityLabel: `${item.key}: ${item.valueType}`,
|
|
903
|
-
style: [STABLE_STYLES.itemTouchable, isPressed && STABLE_STYLES.itemTouchablePressed,
|
|
904
|
-
// The selected wash exists for the action-bar/edit flow. In a plain
|
|
905
|
-
// read-only viewer every expand/collapse tap ALSO selects, which
|
|
906
|
-
// left a permanent grey strip on the last-tapped row (the collapsed
|
|
907
|
-
// root, usually) — so the wash only paints when selection means
|
|
908
|
-
// something. selectedId still tracks either way: the indent-guide
|
|
909
|
-
// depth highlight uses it.
|
|
910
|
-
canEdit && isSelected && STABLE_STYLES.itemSelected, isLongKey && {
|
|
911
|
-
minHeight: LONG_ITEM_HEIGHT,
|
|
912
|
-
paddingVertical: 2
|
|
913
|
-
}],
|
|
914
|
-
onPress: handlePress,
|
|
915
|
-
onPressIn: () => setIsPressed(true),
|
|
916
|
-
onPressOut: () => setIsPressed(false),
|
|
917
|
-
activeOpacity: item.isExpandable || canEdit ? 0.7 : 1
|
|
918
|
-
// A leaf row has nothing to expand, so it was left unpressable. In
|
|
919
|
-
// editable mode the press IS the selection that reveals this row's
|
|
920
|
-
// actions, so scalars — the ones you most want to edit — have to be
|
|
921
|
-
// pressable too.
|
|
922
|
-
,
|
|
923
|
-
disabled: !item.isExpandable && !canEdit,
|
|
924
|
-
children: [item.isExpandable ? /*#__PURE__*/_jsx(Expander, {
|
|
925
|
-
expanded: item.isExpanded,
|
|
926
|
-
onPress: handleExpanderPress
|
|
927
|
-
}) : /*#__PURE__*/_jsx(View, {
|
|
928
|
-
style: STABLE_STYLES.expanderContainer
|
|
929
|
-
}), /*#__PURE__*/_jsxs(View, {
|
|
930
|
-
style: STABLE_STYLES.labelContainer,
|
|
931
|
-
children: [/*#__PURE__*/_jsxs(Text, {
|
|
932
|
-
style: STABLE_STYLES.labelText,
|
|
933
|
-
numberOfLines: 1,
|
|
934
|
-
children: [item.key, ":"]
|
|
935
|
-
}), isInlineEditing && inlineEditor ? inlineEditor : item.isExpandable ? /*#__PURE__*/_jsxs(Text, {
|
|
936
|
-
style: [STABLE_STYLES.valueText, {
|
|
937
|
-
color: gameUIColors.secondary
|
|
938
|
-
}],
|
|
939
|
-
numberOfLines: 1,
|
|
940
|
-
children: [item.valueType, " (", item.childCount, " ", item.childCount === 1 ? "item" : "items", ")"]
|
|
941
|
-
}) : /*#__PURE__*/_jsx(Text, {
|
|
942
|
-
style: [STABLE_STYLES.valueText, {
|
|
943
|
-
color
|
|
944
|
-
}],
|
|
945
|
-
numberOfLines: 1,
|
|
946
|
-
children: formatValue(item.value, item.valueType)
|
|
947
|
-
})]
|
|
948
|
-
})]
|
|
949
|
-
}), item.value !== undefined ? /*#__PURE__*/_jsx(CopyButton, {
|
|
950
|
-
value: item.value,
|
|
951
|
-
size: 14,
|
|
952
|
-
buttonStyle: {
|
|
953
|
-
marginLeft: 8,
|
|
954
|
-
marginRight: 8
|
|
955
|
-
}
|
|
956
|
-
}) : null]
|
|
957
|
-
});
|
|
958
|
-
};
|
|
959
|
-
VirtualizedItemComponent.displayName = "VirtualizedItem";
|
|
960
|
-
const VirtualizedItem = /*#__PURE__*/memo(VirtualizedItemComponent);
|
|
961
|
-
|
|
962
|
-
// Main virtualized data explorer component
|
|
963
|
-
|
|
964
|
-
export const VirtualizedDataExplorer = ({
|
|
965
|
-
title,
|
|
966
|
-
description,
|
|
967
|
-
data,
|
|
968
|
-
maxDepth = 10,
|
|
969
|
-
rawMode = false,
|
|
970
|
-
initialExpanded = false,
|
|
971
|
-
// disableCopy is accepted for API compatibility but CopyButton handles Pro gating internally
|
|
972
|
-
disableCopy: _disableCopy = false,
|
|
973
|
-
onSelectionChange,
|
|
974
|
-
onRequestInlineEdit,
|
|
975
|
-
inlineEditPath,
|
|
976
|
-
renderInlineEditor,
|
|
977
|
-
selectPath,
|
|
978
|
-
testIDPrefix = "buoy-tree-row"
|
|
979
|
-
}) => {
|
|
980
|
-
const [isExpanded, setIsExpanded] = useState(rawMode); // Auto-expand in raw mode
|
|
981
|
-
const {
|
|
982
|
-
flatData,
|
|
983
|
-
isProcessing,
|
|
984
|
-
toggleExpanded,
|
|
985
|
-
revealPath
|
|
986
|
-
} = useDataFlattening(data, maxDepth, initialExpanded);
|
|
987
|
-
|
|
988
|
-
// Track visible range for overlay rendering
|
|
989
|
-
const listRef = useRef(null);
|
|
990
|
-
const [visibleRange, setVisibleRange] = useState({
|
|
991
|
-
start: 0,
|
|
992
|
-
end: Math.min(flatData.length - 1, Math.max(0, Math.ceil(400 / ITEM_HEIGHT) - 1))
|
|
993
|
-
});
|
|
994
|
-
const viewabilityConfigRef = useRef({
|
|
995
|
-
itemVisiblePercentThreshold: 1
|
|
996
|
-
});
|
|
997
|
-
const onViewableItemsChanged = useRef(({
|
|
998
|
-
viewableItems
|
|
999
|
-
}) => {
|
|
1000
|
-
const idx = viewableItems.map(v => v.index).filter(n => typeof n === "number");
|
|
1001
|
-
if (idx.length) {
|
|
1002
|
-
setVisibleRange({
|
|
1003
|
-
start: Math.min(...idx),
|
|
1004
|
-
end: Math.max(...idx)
|
|
1005
|
-
});
|
|
1006
|
-
}
|
|
1007
|
-
}).current;
|
|
1008
|
-
useEffect(() => {
|
|
1009
|
-
// When data changes, reset the presumed visible window
|
|
1010
|
-
setVisibleRange({
|
|
1011
|
-
start: 0,
|
|
1012
|
-
end: Math.min(flatData.length - 1, Math.max(0, Math.ceil(400 / ITEM_HEIGHT) - 1))
|
|
1013
|
-
});
|
|
1014
|
-
}, [flatData.length]);
|
|
1015
|
-
|
|
1016
|
-
// Calculate visible types for the legend with single pass deduplication
|
|
1017
|
-
// Performance: Avoiding array.map() + Array.from(new Set()), using single loop for unique types
|
|
1018
|
-
const visibleTypes = useMemo(() => {
|
|
1019
|
-
const typeSet = new Set();
|
|
1020
|
-
for (const item of flatData) {
|
|
1021
|
-
typeSet.add(item.valueType);
|
|
1022
|
-
// Early exit if we have enough types for the legend (max 8 as per TypeLegend component)
|
|
1023
|
-
if (typeSet.size >= 8) break;
|
|
1024
|
-
}
|
|
1025
|
-
return Array.from(typeSet);
|
|
1026
|
-
}, [flatData]);
|
|
1027
|
-
|
|
1028
|
-
// Remove unnecessary useCallback - not passed to memoized components [[memory:4875251]]
|
|
1029
|
-
const toggleMainExpanded = () => {
|
|
1030
|
-
setIsExpanded(!isExpanded);
|
|
1031
|
-
};
|
|
1032
|
-
|
|
1033
|
-
// Stable renderItem using module-scope function [[memory:4875251]]
|
|
1034
|
-
/**
|
|
1035
|
-
* Selection is tracked by the row's stable id (its path), NOT its index.
|
|
1036
|
-
*
|
|
1037
|
-
* An edit reshapes the list — removing item 1 slides everything up — so an
|
|
1038
|
-
* index-based selection would silently start pointing at a different node
|
|
1039
|
-
* and the action bar would operate on the wrong one. An id survives that, and
|
|
1040
|
-
* resolves to nothing when the node it named is gone.
|
|
1041
|
-
*/
|
|
1042
|
-
const [selectedId, setSelectedId] = useState(null);
|
|
1043
|
-
const selectedItem = useMemo(() => selectedId == null ? undefined : flatData.find(it => it.id === selectedId), [flatData, selectedId]);
|
|
1044
|
-
const activeDepth = selectedItem?.depth;
|
|
1045
|
-
|
|
1046
|
-
// Report the selection outward, re-emitting after each data change so the
|
|
1047
|
-
// action bar is looking at the CURRENT value of the node it has selected.
|
|
1048
|
-
useEffect(() => {
|
|
1049
|
-
if (!onSelectionChange) return;
|
|
1050
|
-
onSelectionChange(selectedItem ? selectionOf(selectedItem) : null);
|
|
1051
|
-
}, [selectedItem, onSelectionChange]);
|
|
1052
|
-
|
|
1053
|
-
/** Tapping the selected row again clears it, so the bar can be dismissed. */
|
|
1054
|
-
const handleSelect = useCallback(item => {
|
|
1055
|
-
setSelectedId(prev => prev === item.id ? null : item.id);
|
|
1056
|
-
}, []);
|
|
1057
|
-
|
|
1058
|
-
// Re-sync when the host relocates the selection. Keyed on the joined path so
|
|
1059
|
-
// an unchanged array identity (a fresh render) doesn't clobber a user's tap.
|
|
1060
|
-
const selectPathKey = selectPath === undefined ? undefined : selectPath === null ? "\u0000null" : selectPath.join(".");
|
|
1061
|
-
const lastSelectPathKey = useRef(selectPathKey);
|
|
1062
|
-
useEffect(() => {
|
|
1063
|
-
if (selectPathKey === lastSelectPathKey.current) return;
|
|
1064
|
-
lastSelectPathKey.current = selectPathKey;
|
|
1065
|
-
if (selectPathKey === undefined) return;
|
|
1066
|
-
if (selectPath == null) {
|
|
1067
|
-
setSelectedId(null);
|
|
1068
|
-
return;
|
|
1069
|
-
}
|
|
1070
|
-
// Reveal it first — a selection the user can't see reads as a no-op.
|
|
1071
|
-
const ancestors = ["root"];
|
|
1072
|
-
for (const segment of selectPath.slice(0, -1)) {
|
|
1073
|
-
ancestors.push(`${ancestors[ancestors.length - 1]}.${segment}`);
|
|
1074
|
-
}
|
|
1075
|
-
revealPath(ancestors);
|
|
1076
|
-
setSelectedId(["root", ...selectPath].join("."));
|
|
1077
|
-
}, [selectPathKey, selectPath, revealPath]);
|
|
1078
|
-
const handleRequestInlineEdit = useCallback(item => {
|
|
1079
|
-
setSelectedId(item.id);
|
|
1080
|
-
onRequestInlineEdit?.(selectionOf(item));
|
|
1081
|
-
}, [onRequestInlineEdit]);
|
|
1082
|
-
const renderItem = ({
|
|
1083
|
-
item,
|
|
1084
|
-
index
|
|
1085
|
-
}) => /*#__PURE__*/_jsx(VirtualizedItem, {
|
|
1086
|
-
item: item,
|
|
1087
|
-
index: index,
|
|
1088
|
-
onToggleExpanded: toggleExpanded,
|
|
1089
|
-
onSelect: handleSelect,
|
|
1090
|
-
isSelected: selectedItem?.id === item.id,
|
|
1091
|
-
selectable: onSelectionChange != null,
|
|
1092
|
-
onRequestInlineEdit: handleRequestInlineEdit,
|
|
1093
|
-
isInlineEditing: inlineEditPath != null && inlineEditPath.join(".") === item.path.slice(1).join("."),
|
|
1094
|
-
inlineEditor: renderInlineEditor ? renderInlineEditor(selectionOf(item)) : null,
|
|
1095
|
-
testIDPrefix: testIDPrefix
|
|
1096
|
-
});
|
|
1097
|
-
|
|
1098
|
-
// Uniform row height for crisp guide geometry
|
|
1099
|
-
const averageItemSize = ITEM_HEIGHT;
|
|
1100
|
-
|
|
1101
|
-
// Simple keyExtractor without useCallback [[memory:4875251]]
|
|
1102
|
-
const keyExtractor = item => item.id;
|
|
1103
|
-
const hasData = data !== null && data !== undefined && (typeof data === "string" ? data.length > 0 : typeof data === "number" || typeof data === "boolean" ? true : Array.isArray(data) ? data.length > 0 : typeof data === "object" ? Object.keys(data).length > 0 : false);
|
|
1104
|
-
|
|
1105
|
-
// Raw mode: render data directly without header/container
|
|
1106
|
-
if (rawMode) {
|
|
1107
|
-
if (!hasData) {
|
|
1108
|
-
return /*#__PURE__*/_jsx(View, {
|
|
1109
|
-
style: {
|
|
1110
|
-
flex: 1,
|
|
1111
|
-
justifyContent: "center",
|
|
1112
|
-
alignItems: "center",
|
|
1113
|
-
padding: 20
|
|
1114
|
-
},
|
|
1115
|
-
children: /*#__PURE__*/_jsx(Text, {
|
|
1116
|
-
style: STABLE_STYLES.noDataText,
|
|
1117
|
-
children: "No data available"
|
|
1118
|
-
})
|
|
1119
|
-
});
|
|
1120
|
-
}
|
|
1121
|
-
return /*#__PURE__*/_jsx(View, {
|
|
1122
|
-
style: {
|
|
1123
|
-
minHeight: isProcessing ? 40 : flatData.length * ITEM_HEIGHT
|
|
1124
|
-
},
|
|
1125
|
-
children: isProcessing ? /*#__PURE__*/_jsx(View, {
|
|
1126
|
-
style: {
|
|
1127
|
-
flex: 1,
|
|
1128
|
-
justifyContent: "center",
|
|
1129
|
-
alignItems: "center"
|
|
1130
|
-
},
|
|
1131
|
-
children: /*#__PURE__*/_jsxs(Text, {
|
|
1132
|
-
style: STABLE_STYLES.loadingText,
|
|
1133
|
-
children: ["Processing data... (raw mode, isProcessing=", String(isProcessing), ")"]
|
|
1134
|
-
})
|
|
1135
|
-
}) : /*#__PURE__*/_jsxs(View, {
|
|
1136
|
-
style: {
|
|
1137
|
-
position: "relative",
|
|
1138
|
-
height: flatData.length * ITEM_HEIGHT
|
|
1139
|
-
},
|
|
1140
|
-
children: [/*#__PURE__*/_jsx(IndentGuidesOverlay, {
|
|
1141
|
-
items: flatData,
|
|
1142
|
-
visibleRange: {
|
|
1143
|
-
start: 0,
|
|
1144
|
-
end: Math.max(0, flatData.length - 1)
|
|
1145
|
-
},
|
|
1146
|
-
itemHeight: ITEM_HEIGHT,
|
|
1147
|
-
indentWidth: INDENT_WIDTH,
|
|
1148
|
-
activeDepth: activeDepth
|
|
1149
|
-
}), /*#__PURE__*/_jsx(FlatList, {
|
|
1150
|
-
ref: listRef,
|
|
1151
|
-
"sentry-label": "ignore devtools data explorer list",
|
|
1152
|
-
data: flatData,
|
|
1153
|
-
renderItem: renderItem,
|
|
1154
|
-
keyExtractor: keyExtractor,
|
|
1155
|
-
showsVerticalScrollIndicator: true,
|
|
1156
|
-
contentContainerStyle: STABLE_STYLES.listContent,
|
|
1157
|
-
initialNumToRender: 15,
|
|
1158
|
-
maxToRenderPerBatch: 10,
|
|
1159
|
-
windowSize: 10,
|
|
1160
|
-
scrollEnabled: false
|
|
1161
|
-
})]
|
|
1162
|
-
})
|
|
1163
|
-
});
|
|
1164
|
-
}
|
|
1165
|
-
|
|
1166
|
-
// Standard mode: render with header and container
|
|
1167
|
-
if (!hasData) {
|
|
1168
|
-
return /*#__PURE__*/_jsxs(View, {
|
|
1169
|
-
style: STABLE_STYLES.container,
|
|
1170
|
-
children: [/*#__PURE__*/_jsx(View, {
|
|
1171
|
-
style: STABLE_STYLES.header,
|
|
1172
|
-
children: /*#__PURE__*/_jsx(View, {
|
|
1173
|
-
style: STABLE_STYLES.headerRow,
|
|
1174
|
-
children: /*#__PURE__*/_jsxs(View, {
|
|
1175
|
-
style: {
|
|
1176
|
-
flex: 1
|
|
1177
|
-
},
|
|
1178
|
-
children: [/*#__PURE__*/_jsx(Text, {
|
|
1179
|
-
style: STABLE_STYLES.title,
|
|
1180
|
-
children: title
|
|
1181
|
-
}), description && /*#__PURE__*/_jsx(Text, {
|
|
1182
|
-
style: STABLE_STYLES.description,
|
|
1183
|
-
children: description
|
|
1184
|
-
})]
|
|
1185
|
-
})
|
|
1186
|
-
})
|
|
1187
|
-
}), /*#__PURE__*/_jsx(View, {
|
|
1188
|
-
style: STABLE_STYLES.noDataContainer,
|
|
1189
|
-
children: /*#__PURE__*/_jsx(Text, {
|
|
1190
|
-
style: STABLE_STYLES.noDataText,
|
|
1191
|
-
children: "No data available"
|
|
1192
|
-
})
|
|
1193
|
-
})]
|
|
1194
|
-
});
|
|
1195
|
-
}
|
|
1196
|
-
return /*#__PURE__*/_jsxs(View, {
|
|
1197
|
-
style: STABLE_STYLES.container,
|
|
1198
|
-
children: [/*#__PURE__*/_jsxs(View, {
|
|
1199
|
-
style: STABLE_STYLES.header,
|
|
1200
|
-
children: [/*#__PURE__*/_jsx(View, {
|
|
1201
|
-
style: STABLE_STYLES.headerRow,
|
|
1202
|
-
children: /*#__PURE__*/_jsxs(TouchableOpacity, {
|
|
1203
|
-
"sentry-label": "ignore devtools data explorer header toggle",
|
|
1204
|
-
onPress: toggleMainExpanded,
|
|
1205
|
-
hitSlop: HIT_SLOP_10,
|
|
1206
|
-
style: STABLE_STYLES.headerTouchable,
|
|
1207
|
-
children: [/*#__PURE__*/_jsxs(View, {
|
|
1208
|
-
style: {
|
|
1209
|
-
flex: 1
|
|
1210
|
-
},
|
|
1211
|
-
children: [/*#__PURE__*/_jsx(Text, {
|
|
1212
|
-
style: STABLE_STYLES.title,
|
|
1213
|
-
children: title
|
|
1214
|
-
}), description && /*#__PURE__*/_jsx(Text, {
|
|
1215
|
-
style: STABLE_STYLES.description,
|
|
1216
|
-
children: description
|
|
1217
|
-
})]
|
|
1218
|
-
}), /*#__PURE__*/_jsx(View, {
|
|
1219
|
-
style: STABLE_STYLES.expanderMargin,
|
|
1220
|
-
children: /*#__PURE__*/_jsx(Expander, {
|
|
1221
|
-
expanded: isExpanded,
|
|
1222
|
-
onPress: toggleMainExpanded
|
|
1223
|
-
})
|
|
1224
|
-
})]
|
|
1225
|
-
})
|
|
1226
|
-
}), isExpanded && visibleTypes.length > 0 && !rawMode && /*#__PURE__*/_jsx(TypeLegend, {
|
|
1227
|
-
visibleTypes: visibleTypes
|
|
1228
|
-
})]
|
|
1229
|
-
}), isExpanded && /*#__PURE__*/_jsx(_Fragment, {
|
|
1230
|
-
children: isProcessing ? /*#__PURE__*/_jsx(View, {
|
|
1231
|
-
style: STABLE_STYLES.loadingContainer,
|
|
1232
|
-
children: /*#__PURE__*/_jsxs(Text, {
|
|
1233
|
-
style: STABLE_STYLES.loadingText,
|
|
1234
|
-
children: ["Processing data... (isProcessing=", String(isProcessing), ")"]
|
|
1235
|
-
})
|
|
1236
|
-
}) : /*#__PURE__*/_jsxs(View, {
|
|
1237
|
-
style: {
|
|
1238
|
-
height: flatData.length * ITEM_HEIGHT,
|
|
1239
|
-
position: "relative"
|
|
1240
|
-
},
|
|
1241
|
-
children: [/*#__PURE__*/_jsx(IndentGuidesOverlay, {
|
|
1242
|
-
items: flatData,
|
|
1243
|
-
visibleRange: visibleRange,
|
|
1244
|
-
itemHeight: ITEM_HEIGHT,
|
|
1245
|
-
indentWidth: INDENT_WIDTH,
|
|
1246
|
-
activeDepth: activeDepth
|
|
1247
|
-
}), /*#__PURE__*/_jsx(FlatList, {
|
|
1248
|
-
ref: listRef,
|
|
1249
|
-
"sentry-label": "ignore devtools data explorer collapsed list",
|
|
1250
|
-
data: flatData,
|
|
1251
|
-
renderItem: renderItem,
|
|
1252
|
-
keyExtractor: keyExtractor,
|
|
1253
|
-
showsVerticalScrollIndicator: true,
|
|
1254
|
-
contentContainerStyle: STABLE_STYLES.listContent,
|
|
1255
|
-
initialNumToRender: 15,
|
|
1256
|
-
maxToRenderPerBatch: 10,
|
|
1257
|
-
windowSize: 10,
|
|
1258
|
-
scrollEnabled: false,
|
|
1259
|
-
onViewableItemsChanged: onViewableItemsChanged,
|
|
1260
|
-
viewabilityConfig: viewabilityConfigRef.current
|
|
1261
|
-
})]
|
|
1262
|
-
})
|
|
1263
|
-
})]
|
|
1264
|
-
});
|
|
1265
|
-
};
|
|
1
|
+
"use strict";import{useState as $,useMemo as re,useCallback as U,useRef as _,useEffect as te,memo as oe}from"react";import{Text as P,TouchableOpacity as ie,View as u,StyleSheet as ue,FlatList as pe}from"react-native";import{displayValue as Me}from"../utils/displayValue.js";import{gameUIColors as a}from"../ui/gameUI/index.js";import{night as ye}from"../ui/night/nightTheme.js";import{CopyButton as De}from"../ui/components/CopyButton.js";import{ChevronRight as Re}from"../icons/index.js";import{IndentGuidesOverlay as he}from"./IndentGuidesOverlay.js";import{monoFont as se}from"../ui/fonts.js";import{jsx as i,jsxs as T,Fragment as je}from"react/jsx-runtime";const ge={top:10,bottom:10,left:10,right:10};const z=24;const ke=24;const ee=50;const ne=15;const Pe=500;const Ze=30;const Le=300;const ae=16;const me=Array.from({length:ne+1},(e,l)=>ue.create({container:{marginLeft:l*ae}}).container);const Ae=new Map([["string",a.dataTypes.string],["number",a.dataTypes.number],["bigint",a.optional],["boolean",a.dataTypes.boolean],["null",a.dataTypes.null],["undefined",a.dataTypes.undefined],["function",a.dataTypes.function],["symbol",a.critical],["date",a.critical],["error",a.error],["array",a.dataTypes.array],["object",a.dataTypes.object],["map",a.info],["set",a.success],["circular",a.warning]]);const o=ue.create({container:{backgroundColor:ye.color.bg,borderRadius:8,borderWidth:1,borderColor:ye.color.border},header:{flexDirection:"column",paddingHorizontal:16,paddingVertical:12},headerRow:{flexDirection:"row",justifyContent:"space-between",alignItems:"center",marginBottom:6},title:{color:a.primary,fontSize:14,fontWeight:"500"},description:{color:a.secondary,fontSize:12,marginTop:2},typeLegend:{flexDirection:"row",flexWrap:"wrap",gap:6,marginTop:8,paddingTop:8,borderTopWidth:1,borderTopColor:a.primary+"14"},typeBadge:{flexDirection:"row",alignItems:"center",paddingHorizontal:6,paddingVertical:2,borderRadius:4,borderWidth:1},typeColor:{width:8,height:8,borderRadius:4,marginRight:4},typeName:{fontSize:10,fontWeight:"500",color:a.secondary},itemContainer:{minHeight:z,backgroundColor:"transparent",position:"relative",flexDirection:"row",alignItems:"flex-start"},itemTouchable:{flex:1,flexDirection:"row",alignItems:"flex-start",paddingLeft:0,paddingRight:16,paddingVertical:2,minHeight:24},itemTouchablePressed:{backgroundColor:a.primary+"0A"},itemSelected:{backgroundColor:a.primary+"14"},expanderContainer:{width:16,alignItems:"center",justifyContent:"center",marginTop:4},expanderIcon:{width:12,height:12},labelContainer:{flex:1,flexDirection:"row",alignItems:"flex-start",paddingLeft:2},labelContainerVertical:{flex:1,flexDirection:"column",paddingLeft:2,paddingVertical:2},labelContainerVerticalRow:{flexDirection:"row",alignItems:"center",marginBottom:2},labelText:{color:a.primary,fontSize:12,fontWeight:"500",fontFamily:se,marginRight:8,flexShrink:1},labelTextTruncated:{color:a.primary,fontSize:12,fontWeight:"500",fontFamily:se,flexShrink:1},valueText:{fontSize:12,fontFamily:se,flex:1,color:a.primaryLight},loadingContainer:{padding:16,alignItems:"center"},loadingText:{color:a.secondary,fontSize:12},noDataContainer:{padding:16,alignItems:"center"},noDataText:{color:a.secondary,fontSize:12},listContent:{paddingBottom:8},headerTouchable:{flex:1,flexDirection:"row",alignItems:"center"},expanderMargin:{marginLeft:8}});function le(e){return{path:e.path.slice(1),value:e.value,label:e.key}}function ce(e,l,d=0){if(d>=l)return d;let h=d+1;if(Array.isArray(e)){for(const w of e){if(h>=l)return h;h=ce(w,l,h)}}else if(e!==null&&typeof e==="object"){for(const w of Object.values(e)){if(h>=l)return h;h=ce(w,l,h)}}return h}const _e=e=>{if(e===null)return"null";if(e===void 0)return"undefined";if(Array.isArray(e))return"array";if(e instanceof Date)return"date";if(e instanceof Error)return"error";if(e instanceof Map)return"map";if(e instanceof Set)return"set";if(e instanceof RegExp)return"regexp";if(typeof e==="function")return"function";if(typeof e==="symbol")return"symbol";if(typeof e==="bigint")return"bigint";if(typeof e==="object")return"object";return typeof e};const Ve=(e,l)=>{if(e===null)return 0;switch(l){case"array":return Array.isArray(e)?e.length:0;case"object":return typeof e==="object"&&!(e instanceof Date)&&!(e instanceof Error)&&!(e instanceof RegExp)&&!(e instanceof Map)&&!(e instanceof Set)?Object.keys(e).length:0;case"map":return e instanceof Map?e.size:0;case"set":return e instanceof Set?e.size:0;default:return 0}};const He=(e,l)=>{if(e===null)return"null";if(e===void 0)return"undefined";switch(l){case"string":return`"${String(e)}"`;case"boolean":return e===true?"true":"false";case"function":return typeof e==="function"?e.toString().slice(0,50)+"...":"undefined";case"symbol":return typeof e==="symbol"?String(e):"undefined";case"date":return e instanceof Date?e.toISOString():"undefined";case"regexp":return e instanceof RegExp?e.toString():"undefined";case"bigint":return typeof e==="bigint"?e.toString()+"n":"undefined";case"error":return e instanceof Error?`${e.name}: ${e.message}`:"undefined";default:return Me(e)}};const be=e=>{return Ae.get(e)||a.dataTypes.array};const xe=({expanded:e,onPress:l})=>{return i(ie,{"sentry-label":"ignore devtools data explorer expander",style:o.expanderContainer,onPress:l,hitSlop:ge,children:i(u,{style:o.expanderIcon,children:i(Re,{size:12,color:a.secondary,strokeWidth:2,style:{transform:[{rotate:e?"90deg":"0deg"}]}})})})};xe.displayName="Expander";const Te=oe(xe);const Se=({visibleTypes:e})=>{const l=Array.from(new Set(e)).slice(0,8);return i(u,{style:o.typeLegend,children:l.map(d=>{const h=be(d);return T(u,{style:[o.typeBadge,{backgroundColor:`${h}10`,borderColor:`${h}30`}],children:[i(u,{style:[o.typeColor,{backgroundColor:h}]}),i(P,{style:o.typeName,children:d})]},d)})})};Se.displayName="TypeLegend";const ze=oe(Se);const Oe=(e,l=10,d=false)=>{const[h,w]=$([]);const V=_(new Map);const Q=U(()=>{const t=new Set(["root"]);if(d&&e&&typeof e==="object"){if(Array.isArray(e)){e.forEach((m,s)=>{t.add(`root.${s}`)})}else{Object.keys(e).forEach(m=>{t.add(`root.${m}`)})}}return t},[d,e]);const[L,O]=$(()=>Q());const[B,A]=$(false);const I=_(new WeakSet);const j=_(false);const N=_(0);const W=_(0);const c=_(void 0);const C=U((t,m,s,g="root",n=0,M,x=[],S=0,k=1,E=[])=>{if(n>Math.min(l,ne))return[];const p=[...x,g];const f=p.join(".");const b=_e(t);const F=["object","array","map","set"].includes(b)&&t!==null;const J=F?Ve(t,b):0;const H=Math.min(J,Pe);if(t&&typeof t==="object"){if(s.has(t)){return[{id:f,key:g,value:"[Circular Reference]",valueType:"circular",depth:n,isExpandable:false,isExpanded:false,parentId:M,hasChildren:false,childCount:0,path:p,type:"circular",isLastChild:S===k-1,parentHasMoreSiblings:[...E],siblingIndex:S,totalSiblings:k}]}s.add(t)}const r={id:f,key:g,value:t,valueType:b,depth:n,isExpandable:F,isExpanded:m.has(f),parentId:M,hasChildren:H>0,childCount:H,path:p,type:F?"expandable":b,isLastChild:S===k-1,parentHasMoreSiblings:[...E],siblingIndex:S,totalSiblings:k};const y=[r];if(F&&m.has(f)&&n<Math.min(l,ne)){try{let D=[];switch(b){case"array":D=Array.isArray(t)?t.map((R,G)=>[G.toString(),R]):[];break;case"object":D=typeof t==="object"&&t!==null&&!(t instanceof Date)&&!(t instanceof Error)&&!(t instanceof RegExp)&&!(t instanceof Map)&&!(t instanceof Set)?Object.entries(t):[];break;case"map":D=t instanceof Map?Array.from(t.entries()).map(([R,G])=>[String(R),G]):[];break;case"set":D=t instanceof Set?Array.from(t.values()).map((R,G)=>[G.toString(),R]):[];break}const v=D.slice(0,H);const Ce=v.length;const de=[...E];if(n>0){de[n-1]=!r.isLastChild}for(let R=0;R<v.length;R+=ee){const G=v.slice(R,R+ee);let fe=R;for(const[we,Ie]of G){y.push(...C(Ie,m,s,we,n+1,f,p,fe,Ce,de));fe++}if(R>0&&R%(ee*2)===0){break}}}catch(D){console.error(D)}}return y},[l]);te(()=>{if(c.current&&(c.current.type==="expand"||c.current.type==="collapse")){if(B){A(false);j.current=false}c.current=void 0;return}if(j.current){return}let t;const m=++N.current;const s=()=>N.current===m;j.current=true;A(true);const g=async()=>{t=setTimeout(()=>{if(j.current&&s()){A(false);j.current=false}},5e3);await new Promise(n=>setTimeout(()=>n(),10));if(!s()){return}try{I.current=new WeakSet;W.current=Date.now();const n=C(e,L,I.current,"root",0,void 0,[],0,1,[]);const M=new Map;n.forEach((x,S)=>{M.set(x.id,{item:x,index:S})});V.current=M;if(t)clearTimeout(t);if(s()){w(n);A(false);j.current=false}}catch(n){console.error(n);if(t)clearTimeout(t);if(s()){w([]);V.current=new Map;A(false);j.current=false}}};g();return()=>{j.current=false;if(t)clearTimeout(t)}},[e,L,C,l]);const Y=U((t,m)=>{A(false);j.current=false;w(s=>{const g=V.current.get(t);if(!g){return s}const{item:n,index:M}=g;if(m&&n.isExpandable&&n.hasChildren){const x=[...s];const S=new WeakSet;if(n.value&&typeof n.value==="object"){S.add(n.value)}const k=[];try{let f=[];const b=n.valueType;switch(b){case"array":f=Array.isArray(n.value)?n.value.map((r,y)=>[y.toString(),r]):[];break;case"object":f=typeof n.value==="object"&&n.value!==null&&!(n.value instanceof Date)&&!(n.value instanceof Error)&&!(n.value instanceof RegExp)&&!(n.value instanceof Map)&&!(n.value instanceof Set)?Object.entries(n.value):[];break;case"map":f=n.value instanceof Map?Array.from(n.value.entries()).map(([r,y])=>[String(r),y]):[];break;case"set":f=n.value instanceof Set?Array.from(n.value.values()).map((r,y)=>[y.toString(),r]):[];break}const F=f.length;const J=n.parentHasMoreSiblings||[];const H=[...J];if(n.depth>0){H[n.depth-1]=!n.isLastChild}f.forEach(([r,y],D)=>{const v=C(y,new Set,S,r,n.depth+1,t,n.path,D,F,H);k.push(...v)})}catch(f){console.error(f)}const E=k;if(E.length>0){}x[M]={...n,isExpanded:true};x.splice(M+1,0,...E);const p=new Map;x.forEach((f,b)=>{p.set(f.id,{item:f,index:b})});V.current=p;return x}else if(!m){const x=new Set;const S=(p,f)=>{s.forEach(b=>{if(b.parentId===p||b.id.startsWith(p+".")&&b.depth>f){x.add(b.id);if(b.hasChildren){S(b.id,b.depth)}}})};S(t,n.depth);const k=s.map(p=>{if(p.id===t){return{...p,isExpanded:false}}return p}).filter(p=>!x.has(p.id));const E=new Map;k.forEach((p,f)=>{E.set(p.id,{item:p,index:f})});V.current=E;return k}return s})},[C]);const X=U(t=>{O(m=>{const s=new Set(m);const g=!s.has(t);if(g){s.add(t)}else{s.delete(t)}c.current={type:g?"expand":"collapse",itemId:t};Y(t,g);return s})},[Y]);const K=ce(e,ee,0)<ee;const q=re(()=>{if(!K)return null;return C(e,L,new WeakSet,"root",0,void 0,[],0,1,[])},[K,e,L,C]);const Z=U(t=>{if(t.length===0)return;O(m=>{if(t.every(g=>m.has(g)))return m;const s=new Set(m);for(const g of t)s.add(g);return s})},[]);return{flatData:q??h,isProcessing:q?false:B,toggleExpanded:X,revealPath:Z}};const Ee=({item:e,onToggleExpanded:l,index:d,onSelect:h,isSelected:w,selectable:V,onRequestInlineEdit:Q,isInlineEditing:L,inlineEditor:O,testIDPrefix:B})=>{const[A,I]=$(false);const[j,N]=$(false);const W=V===true;const c=_(0);const C=e.path.slice(1);const Y=me[Math.min(e.depth,ne)]||me[0];const X=be(e.valueType);const K=false;const q=()=>{if(W){const s=Date.now();const g=s-c.current<Le;c.current=s;if(g&&!e.isExpandable&&Q){Q(e);return}h(e);return}if(e.isExpandable){l(e.id)}h(e)};const Z=()=>{if(e.isExpandable){l(e.id)}h(e)};const t=()=>{};const m=e.key;return T(u,{style:[o.itemContainer,Y],children:[T(ie,{"sentry-label":"ignore devtools data explorer item",testID:`${B}-${e.id}`,accessibilityLabel:`${e.key}: ${e.valueType}`,style:[o.itemTouchable,A&&o.itemTouchablePressed,W&&w&&o.itemSelected,K&&{minHeight:ke,paddingVertical:2}],onPress:q,onPressIn:()=>I(true),onPressOut:()=>I(false),activeOpacity:e.isExpandable||W?.7:1,disabled:!e.isExpandable&&!W,children:[e.isExpandable?i(Te,{expanded:e.isExpanded,onPress:Z}):i(u,{style:o.expanderContainer}),T(u,{style:o.labelContainer,children:[T(P,{style:o.labelText,numberOfLines:1,children:[e.key,":"]}),L&&O?O:e.isExpandable?T(P,{style:[o.valueText,{color:a.secondary}],numberOfLines:1,children:[e.valueType," (",e.childCount," ",e.childCount===1?"item":"items",")"]}):i(P,{style:[o.valueText,{color:X}],numberOfLines:1,children:He(e.value,e.valueType)})]})]}),e.value!==void 0?i(De,{value:e.value,size:14,buttonStyle:{marginLeft:8,marginRight:8}}):null]})};Ee.displayName="VirtualizedItem";const Ne=oe(Ee);export const VirtualizedDataExplorer=({title:e,description:l,data:d,maxDepth:h=10,rawMode:w=false,initialExpanded:V=false,disableCopy:Q=false,onSelectionChange:L,onRequestInlineEdit:O,inlineEditPath:B,renderInlineEditor:A,selectPath:I,testIDPrefix:j="buoy-tree-row"})=>{const[N,W]=$(w);const{flatData:c,isProcessing:C,toggleExpanded:Y,revealPath:X}=Oe(d,h,V);const K=_(null);const[q,Z]=$({start:0,end:Math.min(c.length-1,Math.max(0,Math.ceil(400/z)-1))});const t=_({itemVisiblePercentThreshold:1});const m=_(({viewableItems:r})=>{const y=r.map(D=>D.index).filter(D=>typeof D==="number");if(y.length){Z({start:Math.min(...y),end:Math.max(...y)})}}).current;te(()=>{Z({start:0,end:Math.min(c.length-1,Math.max(0,Math.ceil(400/z)-1))})},[c.length]);const s=re(()=>{const r=new Set;for(const y of c){r.add(y.valueType);if(r.size>=8)break}return Array.from(r)},[c]);const g=()=>{W(!N)};const[n,M]=$(null);const x=re(()=>n==null?void 0:c.find(r=>r.id===n),[c,n]);const S=x?.depth;te(()=>{if(!L)return;L(x?le(x):null)},[x,L]);const k=U(r=>{M(y=>y===r.id?null:r.id)},[]);const E=I===void 0?void 0:I===null?"\0null":I.join(".");const p=_(E);te(()=>{if(E===p.current)return;p.current=E;if(E===void 0)return;if(I==null){M(null);return}const r=["root"];for(const y of I.slice(0,-1)){r.push(`${r[r.length-1]}.${y}`)}X(r);M(["root",...I].join("."))},[E,I,X]);const f=U(r=>{M(r.id);O?.(le(r))},[O]);const b=({item:r,index:y})=>i(Ne,{item:r,index:y,onToggleExpanded:Y,onSelect:k,isSelected:x?.id===r.id,selectable:L!=null,onRequestInlineEdit:f,isInlineEditing:B!=null&&B.join(".")===r.path.slice(1).join("."),inlineEditor:A?A(le(r)):null,testIDPrefix:j});const F=z;const J=r=>r.id;const H=d!==null&&d!==void 0&&(typeof d==="string"?d.length>0:typeof d==="number"||typeof d==="boolean"?true:Array.isArray(d)?d.length>0:typeof d==="object"?Object.keys(d).length>0:false);if(w){if(!H){return i(u,{style:{flex:1,justifyContent:"center",alignItems:"center",padding:20},children:i(P,{style:o.noDataText,children:"No data available"})})}return i(u,{style:{minHeight:C?40:c.length*z},children:C?i(u,{style:{flex:1,justifyContent:"center",alignItems:"center"},children:T(P,{style:o.loadingText,children:["Processing data... (raw mode, isProcessing=",String(C),")"]})}):T(u,{style:{position:"relative",height:c.length*z},children:[i(he,{items:c,visibleRange:{start:0,end:Math.max(0,c.length-1)},itemHeight:z,indentWidth:ae,activeDepth:S}),i(pe,{ref:K,"sentry-label":"ignore devtools data explorer list",data:c,renderItem:b,keyExtractor:J,showsVerticalScrollIndicator:true,contentContainerStyle:o.listContent,initialNumToRender:15,maxToRenderPerBatch:10,windowSize:10,scrollEnabled:false})]})})}if(!H){return T(u,{style:o.container,children:[i(u,{style:o.header,children:i(u,{style:o.headerRow,children:T(u,{style:{flex:1},children:[i(P,{style:o.title,children:e}),l&&i(P,{style:o.description,children:l})]})})}),i(u,{style:o.noDataContainer,children:i(P,{style:o.noDataText,children:"No data available"})})]})}return T(u,{style:o.container,children:[T(u,{style:o.header,children:[i(u,{style:o.headerRow,children:T(ie,{"sentry-label":"ignore devtools data explorer header toggle",onPress:g,hitSlop:ge,style:o.headerTouchable,children:[T(u,{style:{flex:1},children:[i(P,{style:o.title,children:e}),l&&i(P,{style:o.description,children:l})]}),i(u,{style:o.expanderMargin,children:i(Te,{expanded:N,onPress:g})})]})}),N&&s.length>0&&!w&&i(ze,{visibleTypes:s})]}),N&&i(je,{children:C?i(u,{style:o.loadingContainer,children:T(P,{style:o.loadingText,children:["Processing data... (isProcessing=",String(C),")"]})}):T(u,{style:{height:c.length*z,position:"relative"},children:[i(he,{items:c,visibleRange:q,itemHeight:z,indentWidth:ae,activeDepth:S}),i(pe,{ref:K,"sentry-label":"ignore devtools data explorer collapsed list",data:c,renderItem:b,keyExtractor:J,showsVerticalScrollIndicator:true,contentContainerStyle:o.listContent,initialNumToRender:15,maxToRenderPerBatch:10,windowSize:10,scrollEnabled:false,onViewableItemsChanged:m,viewabilityConfig:t.current})]})})]})};
|