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