@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,1814 +1 @@
1
- "use strict";
2
-
3
- Object.defineProperty(exports, "__esModule", {
4
- value: true
5
- });
6
- exports.JsModal = void 0;
7
- var _licenseModule = require("./license/licenseModule.js");
8
- var _AccountSetup = require("./license/AccountSetup");
9
- var _react = require("react");
10
- var _reactNative = require("react-native");
11
- var _absoluteFill = require("./utils/absoluteFill.js");
12
- var _useSafeAreaInsets = require("./hooks/useSafeAreaInsets.js");
13
- var _index = require("./ui/gameUI/index.js");
14
- var _index2 = require("./ui/components/index.js");
15
- var _ToolBackground = require("./ui/backgrounds/ToolBackground.js");
16
- var _nightTheme = require("./ui/night/nightTheme.js");
17
- var _persistentStorage = require("./utils/persistentStorage.js");
18
- var _devToolsStorageKeys = require("./storage/devToolsStorageKeys.js");
19
- var _index3 = require("./context/index.js");
20
- var _jsxRuntime = require("react/jsx-runtime");
21
- /**
22
- * JsModal - Ultra-optimized for true 60FPS performance
23
- *
24
- * Achieves 60FPS by following the principles from the dial menu:
25
- * 1. ALWAYS use native driver (useNativeDriver: true)
26
- * 2. Use transforms instead of layout properties (translateY instead of height)
27
- * 3. Use interpolation for all calculations (no JS thread math)
28
- * 4. Minimize PanResponder JS work (direct setValue, no state updates)
29
- *
30
- * Structure follows SRP with each function doing ONE thing only.
31
- */
32
-
33
- // ============================================================================
34
- // CONSTANTS - Modal dimensions and configuration
35
- // ============================================================================
36
-
37
- /**
38
- * Tool modals open and close without an entrance animation.
39
- *
40
- * The animated entrance was `parallel([spring(tension:180, friction:22),
41
- * timing(200ms)])`. Two measured problems: the modal mounts at opacity 0 and
42
- * the fade only starts once its content has committed, so a tap left the screen
43
- * unchanged for ~240ms; and the spring's completion did not land until ~1s,
44
- * creeping long after it looked settled. Snapping to the final state made the
45
- * whole devtools UI feel markedly faster.
46
- *
47
- * Setting this to `false` restores the animation for every tool modal — this is
48
- * shared chrome, not settings-specific.
49
- */
50
- const INSTANT_MODAL_ENTRANCE = true;
51
- const SCREEN = _reactNative.Dimensions.get("window");
52
- const MIN_HEIGHT = 100;
53
- const DEFAULT_HEIGHT = 400;
54
- const FLOATING_WIDTH = SCREEN.width; // Full width
55
- const FLOATING_HEIGHT = 500;
56
- const FLOATING_MIN_WIDTH = SCREEN.width * 0.25; // 1/4 of screen width
57
- const FLOATING_MIN_HEIGHT = 80; // Just a bit more than header height (60px header + 20px content)
58
-
59
- /**
60
- * Vertical band the absolutely-positioned window controls occupy at the top
61
- * right of the chrome: `windowControlsContainer` top 4 + the expandable
62
- * trigger's 2pt padding + a 12pt dot + 2 = 20. The drag-indicator strip above
63
- * custom header content reserves exactly this, which is what lets a tool's
64
- * header row below run the FULL width instead of buying its clearance with a
65
- * right inset (that inset read as a hole on the right of every tool's nav).
66
- */
67
- const WINDOW_CONTROLS_BAND = 20;
68
-
69
- // ============================================================================
70
- // STORAGE - Modal state persistence with AsyncStorage
71
- // ============================================================================
72
-
73
- /**
74
- * Utility class for persisting modal state to AsyncStorage
75
- *
76
- * Handles saving and loading modal state including mode, dimensions,
77
- * and position with memory caching for performance.
78
- */
79
- class ModalStorage {
80
- static memoryCache = {};
81
-
82
- /**
83
- * Save modal state to AsyncStorage with memory caching
84
- *
85
- * @param key - Storage key for the modal state
86
- * @param value - Modal state to persist
87
- */
88
- static async save(key, value) {
89
- try {
90
- this.memoryCache[key] = value;
91
- await _persistentStorage.persistentStorage.setItem(key, JSON.stringify(value));
92
- } catch (error) {
93
- // Failed to save modal state
94
- }
95
- }
96
-
97
- /**
98
- * Load modal state from AsyncStorage with memory cache fallback
99
- *
100
- * @param key - Storage key for the modal state
101
- * @returns Persisted modal state or null if not found
102
- */
103
- static async load(key) {
104
- try {
105
- // Try memory cache first
106
- if (this.memoryCache[key]) {
107
- return this.memoryCache[key];
108
- }
109
-
110
- // Load from storage (AsyncStorage or memory fallback)
111
- const stored = await _persistentStorage.persistentStorage.getItem(key);
112
- if (stored) {
113
- const parsed = JSON.parse(stored);
114
- this.memoryCache[key] = parsed;
115
- return parsed;
116
- }
117
- } catch (error) {
118
- // Failed to load modal state
119
- }
120
- return null;
121
- }
122
- }
123
-
124
- // ============================================================================
125
- // TYPE DEFINITIONS - Interface contracts for the modal
126
- // ============================================================================
127
-
128
- /**
129
- * Chrome variant. "night" (the default since the suite-wide theme move) is
130
- * the Everlights-style sheet (see ui/night): near-black `#050505` surfaces at
131
- * radius 16, a hairline accent border, a neutral drag handle instead of the
132
- * teal bar, a transparent header, and the ToolBackground hoisted to the sheet
133
- * root so the star field runs through the header instead of stopping under
134
- * it. "default" is the legacy card-grey chrome, kept as an escape hatch.
135
- */
136
-
137
- /**
138
- * Modal state that can be saved and restored when minimizing/restoring
139
- */
140
-
141
- // ============================================================================
142
- // ICON COMPONENTS - Visual indicators for modal controls
143
- // ============================================================================
144
-
145
- /**
146
- * DragIndicator - Visual feedback for draggable areas
147
- */
148
- const DragIndicator = /*#__PURE__*/(0, _react.memo)(function DragIndicator({
149
- isResizing,
150
- mode,
151
- hasCustomContent = false,
152
- variant = "default"
153
- }) {
154
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
155
- style: [styles.dragIndicatorContainer, hasCustomContent && styles.dragIndicatorContainerCustom],
156
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
157
- style: [styles.dragIndicator, mode === "floating" && styles.floatingDragIndicator, isResizing && styles.dragIndicatorActive,
158
- // Night: the neutral Everlights sheet handle, no glow, both modes.
159
- variant === "night" && styles.nightDragIndicator]
160
- }), isResizing && mode === "bottomSheet" && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
161
- style: styles.resizeGripContainer,
162
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
163
- style: styles.resizeGripLine
164
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
165
- style: styles.resizeGripLine
166
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
167
- style: styles.resizeGripLine
168
- })]
169
- })]
170
- });
171
- });
172
-
173
- /**
174
- * CornerHandle - Resize handle for floating mode corners
175
- */
176
- const CornerHandle = /*#__PURE__*/(0, _react.memo)(function CornerHandle({
177
- position,
178
- isActive
179
- }) {
180
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
181
- style: [styles.cornerHandle],
182
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
183
- style: [styles.handler, isActive && styles.handlerActive]
184
- })
185
- });
186
- });
187
-
188
- /**
189
- * ModalHeader - Header bar with title, controls, and drag area
190
- */
191
-
192
- const ModalHeader = /*#__PURE__*/(0, _react.memo)(function ModalHeader({
193
- header,
194
- onClose,
195
- onToggleMode,
196
- onMinimize,
197
- isResizing,
198
- mode,
199
- panHandlers,
200
- variant = "default"
201
- }) {
202
- const lastTapRef = (0, _react.useRef)(0);
203
- const tapCountRef = (0, _react.useRef)(0);
204
- const tapTimeoutRef = (0, _react.useRef)(null);
205
- const handleHeaderTap = (0, _react.useCallback)(() => {
206
- const now = Date.now();
207
- const timeSinceLastTap = now - lastTapRef.current;
208
-
209
- // Reset tap count if more than 500ms since last tap
210
- if (timeSinceLastTap > 500) {
211
- tapCountRef.current = 0;
212
- }
213
- tapCountRef.current++;
214
- lastTapRef.current = now;
215
-
216
- // Clear existing timeout
217
- if (tapTimeoutRef.current) {
218
- clearTimeout(tapTimeoutRef.current);
219
- }
220
-
221
- // Set timeout to process the tap gesture
222
- tapTimeoutRef.current = setTimeout(() => {
223
- if (tapCountRef.current === 2) {
224
- // Double tap - toggle mode
225
- onToggleMode();
226
- } else if (tapCountRef.current >= 3) {
227
- // Triple tap - minimize modal (if available)
228
- if (onMinimize) {
229
- onMinimize();
230
- }
231
- }
232
- tapCountRef.current = 0;
233
- }, 300);
234
- }, [onToggleMode, onMinimize]);
235
-
236
- // Clean up timeout on unmount
237
- (0, _react.useEffect)(() => {
238
- return () => {
239
- if (tapTimeoutRef.current) {
240
- clearTimeout(tapTimeoutRef.current);
241
- }
242
- };
243
- }, []);
244
- const headerProps = panHandlers ? panHandlers : {};
245
- // Disable tap handling when no panHandlers (i.e., when using DraggableHeader in floating mode)
246
- const shouldHandleTap = !!panHandlers;
247
-
248
- // If custom content is provided, check if it's a complete replacement
249
- if (header?.customContent) {
250
- // Check if the custom content is a complete header replacement (like CyberpunkModalHeader)
251
- // by checking if it's a React element with specific props
252
- const isCompleteReplacement = /*#__PURE__*/(0, _react.isValidElement)(header.customContent) && typeof header.customContent.type === "function" && header.customContent.type.name === "CyberpunkModalHeader";
253
- if (isCompleteReplacement) {
254
- // Clone the element and pass the necessary props
255
- return /*#__PURE__*/(0, _react.cloneElement)(header.customContent, {
256
- onToggleMode,
257
- onClose,
258
- mode,
259
- panHandlers: headerProps,
260
- showToggleButton: header?.showToggleButton !== false,
261
- hideCloseButton: header?.hideCloseButton
262
- });
263
- }
264
-
265
- // Otherwise, render custom content within the standard header structure
266
- // Apply pan handlers to the outer View for dragging in floating mode
267
- // If the custom content is a React element, inject onMinimize so it can trigger minimize
268
- let customContentWithMinimize = header.customContent;
269
- if (/*#__PURE__*/(0, _react.isValidElement)(header.customContent) && onMinimize) {
270
- customContentWithMinimize = /*#__PURE__*/(0, _react.cloneElement)(header.customContent, {
271
- onMinimize
272
- });
273
- }
274
- const headerContent = /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
275
- style: styles.headerInner,
276
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(DragIndicator, {
277
- isResizing: isResizing,
278
- mode: mode,
279
- hasCustomContent: true,
280
- variant: variant
281
- }), customContentWithMinimize]
282
- });
283
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
284
- style: [styles.header, variant === "night" && styles.nightHeader],
285
- ...headerProps,
286
- children: shouldHandleTap ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableWithoutFeedback, {
287
- onPress: handleHeaderTap,
288
- children: headerContent
289
- }) : headerContent
290
- });
291
- }
292
- const headerContent = /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
293
- style: styles.headerInner,
294
- children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(DragIndicator, {
295
- isResizing: isResizing,
296
- mode: mode,
297
- variant: variant
298
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
299
- style: styles.headerContent,
300
- children: [header?.title && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
301
- style: styles.headerTitle,
302
- children: header.title
303
- }), header?.subtitle && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
304
- style: styles.headerSubtitle,
305
- children: header.subtitle
306
- })]
307
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
308
- style: styles.headerHintText,
309
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
310
- style: styles.hintText,
311
- children: "Double tap: Toggle \u2022 Triple tap: Close"
312
- })
313
- })]
314
- });
315
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
316
- style: [styles.header, mode === "floating" && styles.floatingModeHeader, variant === "night" && styles.nightHeader],
317
- ...headerProps,
318
- children: shouldHandleTap ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableWithoutFeedback, {
319
- onPress: handleHeaderTap,
320
- children: headerContent
321
- }) : headerContent
322
- });
323
- });
324
-
325
- // ============================================================================
326
- // MAIN COMPONENT - Optimized for 60FPS with transforms and interpolation
327
- // ============================================================================
328
- /**
329
- * JsModal - Ultra-optimized modal component for true 60FPS performance
330
- *
331
- * This modal component is designed for maximum performance using native driver
332
- * animations, transforms instead of layout properties, and minimal JavaScript
333
- * thread work. It supports two modes: bottom sheet and floating window.
334
- *
335
- * Key Performance Features:
336
- * - Uses native driver for all animations (useNativeDriver: true)
337
- * - Transform-based positioning instead of layout changes
338
- * - Interpolation for all calculations on the native thread
339
- * - Minimal PanResponder JavaScript work
340
- * - State persistence with AsyncStorage
341
- * - Drag and resize functionality in both modes
342
- *
343
- * @param props - Modal configuration and content
344
- * @returns JSX.Element representing the modal
345
- *
346
- * @example
347
- * ```typescript
348
- * <JsModal
349
- * visible={isVisible}
350
- * onClose={() => setVisible(false)}
351
- * header={{
352
- * title: "Settings",
353
- * subtitle: "Configure your preferences"
354
- * }}
355
- * persistenceKey="settings-modal"
356
- * enablePersistence={true}
357
- * >
358
- * <SettingsContent />
359
- * </JsModal>
360
- * ```
361
- *
362
- * @performance All animations use native driver for 60FPS performance
363
- * @performance Uses transform-based positioning for optimal rendering
364
- * @performance Includes state persistence and restoration capabilities
365
- */
366
- const JsModalComponent = ({
367
- visible,
368
- onClose,
369
- children,
370
- header,
371
- styles: customStyles = {},
372
- minHeight = MIN_HEIGHT,
373
- maxHeight,
374
- initialHeight = DEFAULT_HEIGHT,
375
- animatedHeight: externalAnimatedHeight,
376
- benchMotion,
377
- initialMode = "bottomSheet",
378
- onModeChange,
379
- persistenceKey,
380
- enablePersistence = true,
381
- initialFloatingPosition,
382
- footer,
383
- footerHeight = 0,
384
- onBack,
385
- onMinimize,
386
- minimizeRequest = 0,
387
- minimizeTargetPosition,
388
- initialModalState,
389
- zIndex,
390
- disableScrollWrapper = false,
391
- background = true,
392
- variant = "night"
393
- }) => {
394
- const insets = (0, _useSafeAreaInsets.useSafeAreaInsets)();
395
- const [isStateLoaded, setIsStateLoaded] = (0, _react.useState)(!enablePersistence);
396
- const [mode, setMode] = (0, _react.useState)(initialMode);
397
- const [isResizing, setIsResizing] = (0, _react.useState)(false);
398
- const [isDragging, setIsDragging] = (0, _react.useState)(false);
399
- const [panelHeight, setPanelHeight] = (0, _react.useState)(initialHeight);
400
- const [dimensions, setDimensions] = (0, _react.useState)({
401
- width: FLOATING_WIDTH,
402
- height: FLOATING_HEIGHT,
403
- top: (SCREEN.height - FLOATING_HEIGHT) / 2,
404
- left: 0 // Flush with left edge
405
- });
406
- const [containerBounds] = (0, _react.useState)({
407
- width: SCREEN.width,
408
- height: SCREEN.height
409
- });
410
- const [showHint, setShowHint] = (0, _react.useState)(false);
411
- const [hintLoaded, setHintLoaded] = (0, _react.useState)(false);
412
- const hintsDisabled = (0, _index3.useHintsDisabled)();
413
-
414
- // ============================================================================
415
- // ANIMATED VALUES - All using native driver
416
- // ============================================================================
417
-
418
- // Main visibility progress (0 = hidden, 1 = visible)
419
- const visibilityProgress = (0, _react.useRef)(new _reactNative.Animated.Value(0)).current;
420
-
421
- // Bottom sheet specific - using translateY for performance!
422
- const bottomSheetTranslateY = (0, _react.useRef)(new _reactNative.Animated.Value(SCREEN.height)).current;
423
- const dragOffset = (0, _react.useRef)(new _reactNative.Animated.Value(0)).current;
424
-
425
- // Height tracking for resize - actual position from bottom
426
- const animatedBottomPosition = (0, _react.useRef)(new _reactNative.Animated.Value(initialHeight)).current;
427
- const currentHeightRef = (0, _react.useRef)(initialHeight);
428
-
429
- // Save state with debounce
430
- (0, _react.useEffect)(() => {
431
- if (!enablePersistence || !persistenceKey || !isStateLoaded) return;
432
- const timeoutId = setTimeout(() => {
433
- ModalStorage.save(persistenceKey, {
434
- mode,
435
- panelHeight: currentHeightRef.current,
436
- dimensions,
437
- isVisible: visible
438
- });
439
- }, 500);
440
- return () => clearTimeout(timeoutId);
441
- }, [mode, panelHeight, dimensions, visible, persistenceKey, enablePersistence, isStateLoaded]);
442
-
443
- // Seed the external height ONCE. This used to re-run when `isResizing`
444
- // flipped, which snapped an externally-controlled sheet back to
445
- // initialHeight the moment a drag-resize ended (the release handler had
446
- // just written the real height). The host owns the value after the seed;
447
- // persistence restore above may overwrite the seed, which is correct.
448
- const externalHeightSeeded = (0, _react.useRef)(false);
449
- (0, _react.useEffect)(() => {
450
- if (externalAnimatedHeight && !externalHeightSeeded.current) {
451
- externalHeightSeeded.current = true;
452
- currentHeightRef.current = initialHeight;
453
- externalAnimatedHeight.setValue(initialHeight);
454
- }
455
- }, [externalAnimatedHeight, initialHeight]);
456
-
457
- // Update refs when dimensions change
458
- (0, _react.useEffect)(() => {
459
- currentDimensionsRef.current = dimensions;
460
- }, [dimensions]);
461
-
462
- // Floating mode animations - use initialFloatingPosition if provided
463
- const floatingPosition = (0, _react.useRef)(new _reactNative.Animated.ValueXY({
464
- x: initialFloatingPosition?.x ?? 0,
465
- // Flush with left edge
466
- y: initialFloatingPosition?.y ?? (SCREEN.height - FLOATING_HEIGHT) / 2
467
- })).current;
468
- const floatingScale = (0, _react.useRef)(new _reactNative.Animated.Value(0)).current;
469
- const animatedWidth = (0, _react.useRef)(new _reactNative.Animated.Value(FLOATING_WIDTH)).current;
470
- const animatedFloatingHeight = (0, _react.useRef)(new _reactNative.Animated.Value(FLOATING_HEIGHT)).current;
471
-
472
- // Refs for resize handles
473
- const currentDimensionsRef = (0, _react.useRef)(dimensions);
474
- const startDimensionsRef = (0, _react.useRef)(dimensions);
475
- const offsetX = (0, _react.useRef)(0);
476
- const offsetY = (0, _react.useRef)(0);
477
- const sHeight = (0, _react.useRef)(0);
478
- const sWidth = (0, _react.useRef)(0);
479
-
480
- // Load hint acknowledgment status on mount
481
- (0, _react.useEffect)(() => {
482
- let mounted = true;
483
- const loadHintStatus = async () => {
484
- try {
485
- const hintKey = _devToolsStorageKeys.devToolsStorageKeys.modal.hintAcknowledged();
486
- const acknowledged = await _persistentStorage.persistentStorage.getItem(hintKey);
487
- if (mounted) {
488
- // Show hint if not acknowledged yet
489
- setShowHint(acknowledged !== "true");
490
- setHintLoaded(true);
491
- }
492
- } catch (error) {
493
- // Failed to load hint status, default to showing hint
494
- if (mounted) {
495
- setShowHint(true);
496
- setHintLoaded(true);
497
- }
498
- }
499
- };
500
- loadHintStatus();
501
- return () => {
502
- mounted = false;
503
- };
504
- }, []);
505
-
506
- // Handle hint acknowledgment
507
- const handleHintAcknowledge = (0, _react.useCallback)(async () => {
508
- try {
509
- const hintKey = _devToolsStorageKeys.devToolsStorageKeys.modal.hintAcknowledged();
510
- await _persistentStorage.persistentStorage.setItem(hintKey, "true");
511
- setShowHint(false);
512
- } catch (error) {
513
- // Failed to save hint acknowledgment, just hide it locally
514
- setShowHint(false);
515
- }
516
- }, []);
517
-
518
- // Parents routinely pass an inline `onModeChange` (a new identity every
519
- // render). The persisted-state load below is mount/key-scoped — if the
520
- // callback identity re-triggered it, every parent re-render would reload
521
- // the OLD persisted mode and stomp a live toggleMode() before the 500ms
522
- // save debounce could write the new one (mode flipped to floating, then
523
- // snapped back ~50ms later). So the callback rides in a ref instead of
524
- // the dependency list.
525
- const onModeChangeRef = (0, _react.useRef)(onModeChange);
526
- onModeChangeRef.current = onModeChange;
527
-
528
- // Load persisted state on mount
529
- (0, _react.useEffect)(() => {
530
- if (!enablePersistence || !persistenceKey) {
531
- setIsStateLoaded(true);
532
- return;
533
- }
534
- let mounted = true;
535
- const loadState = async () => {
536
- const savedState = await ModalStorage.load(persistenceKey);
537
- if (mounted && savedState) {
538
- // Restore mode
539
- if (savedState.mode) {
540
- setMode(savedState.mode);
541
- // Notify parent of loaded mode
542
- onModeChangeRef.current?.(savedState.mode);
543
- }
544
-
545
- // Restore bottom sheet height. The external animated height (when a
546
- // host passes one) IS the rendered height, so it must be restored
547
- // too or a persisted sheet always reopens at initialHeight.
548
- if (savedState.panelHeight) {
549
- setPanelHeight(savedState.panelHeight);
550
- currentHeightRef.current = savedState.panelHeight;
551
- animatedBottomPosition.setValue(savedState.panelHeight);
552
- externalAnimatedHeight?.setValue(savedState.panelHeight);
553
- }
554
-
555
- // Restore floating dimensions and position
556
- if (savedState.dimensions) {
557
- setDimensions(savedState.dimensions);
558
- floatingPosition.setValue({
559
- x: savedState.dimensions.left,
560
- y: savedState.dimensions.top
561
- });
562
- animatedWidth.setValue(savedState.dimensions.width);
563
- animatedFloatingHeight.setValue(savedState.dimensions.height);
564
- }
565
- }
566
- if (mounted) setIsStateLoaded(true);
567
- };
568
- loadState();
569
- return () => {
570
- mounted = false;
571
- };
572
- }, [persistenceKey, enablePersistence, animatedBottomPosition, animatedFloatingHeight, animatedWidth, floatingPosition]);
573
-
574
- // Cleanup on unmount
575
- (0, _react.useEffect)(() => {
576
- // Mount/Unmount effect
577
- return () => {
578
- // Stop all animations and reset when component unmounts
579
- visibilityProgress.stopAnimation();
580
- bottomSheetTranslateY.stopAnimation();
581
- floatingScale.stopAnimation();
582
- dragOffset.stopAnimation();
583
- animatedBottomPosition.stopAnimation();
584
- floatingPosition.stopAnimation();
585
- animatedWidth.stopAnimation();
586
- animatedFloatingHeight.stopAnimation();
587
-
588
- // Reset to initial values
589
- visibilityProgress.setValue(0);
590
- bottomSheetTranslateY.setValue(SCREEN.height);
591
- floatingScale.setValue(0);
592
- dragOffset.setValue(0);
593
- animatedBottomPosition.setValue(initialHeight);
594
- currentHeightRef.current = initialHeight;
595
- };
596
- }, []);
597
-
598
- // ============================================================================
599
- // INTERPOLATIONS - All math done natively!
600
- // ============================================================================
601
-
602
- // Opacity interpolation for smooth fade
603
- const modalOpacity = visibilityProgress.interpolate({
604
- inputRange: [0, 1],
605
- outputRange: [0, 1],
606
- extrapolate: "clamp"
607
- });
608
-
609
- // ============================================================================
610
- // REFS for values we need to track
611
- // ============================================================================
612
- const effectiveMaxHeight = maxHeight || SCREEN.height - insets.top;
613
-
614
- // Mode toggle handler
615
- /**
616
- * Toggle between bottom sheet and floating modal modes
617
- *
618
- * Clears active dragging and resizing states to prevent visual artifacts
619
- * when switching between modes with different interaction patterns.
620
- */
621
- const toggleMode = (0, _react.useCallback)(() => {
622
- // Avoid carrying active styling across modes
623
- setIsDragging(false);
624
- setIsResizing(false);
625
- const newMode = mode === "bottomSheet" ? "floating" : "bottomSheet";
626
- setMode(newMode);
627
- onModeChange?.(newMode);
628
- }, [mode, onModeChange]);
629
-
630
- // Belt-and-suspenders: also clear flags when mode changes
631
- (0, _react.useEffect)(() => {
632
- setIsDragging(false);
633
- setIsResizing(false);
634
- }, [mode]);
635
-
636
- // Minimize handler - captures current state and animates out
637
- const handleMinimize = (0, _react.useCallback)(() => {
638
- if (!onMinimize) return;
639
-
640
- // Capture current modal state for restoration
641
- const currentState = {
642
- mode,
643
- panelHeight: currentHeightRef.current,
644
- floatingPosition: {
645
- x: currentDimensionsRef.current.left,
646
- y: currentDimensionsRef.current.top
647
- },
648
- floatingDimensions: {
649
- width: currentDimensionsRef.current.width,
650
- height: currentDimensionsRef.current.height
651
- }
652
- };
653
-
654
- // Animate modal shrinking toward target position
655
- const targetX = minimizeTargetPosition?.x ?? SCREEN.width - 50;
656
- const targetY = minimizeTargetPosition?.y ?? SCREEN.height - 150;
657
-
658
- // Calculate animation based on current mode
659
- if (mode === "bottomSheet") {
660
- // Animate bottom sheet shrinking and moving toward target
661
- _reactNative.Animated.parallel([_reactNative.Animated.timing(visibilityProgress, {
662
- toValue: 0,
663
- duration: 300,
664
- useNativeDriver: true
665
- }), _reactNative.Animated.timing(bottomSheetTranslateY, {
666
- toValue: SCREEN.height,
667
- duration: 300,
668
- useNativeDriver: true
669
- })]).start(() => {
670
- onMinimize(currentState);
671
- });
672
- } else {
673
- // Floating mode - animate scale and position toward icon
674
- _reactNative.Animated.parallel([_reactNative.Animated.timing(floatingScale, {
675
- toValue: 0,
676
- duration: 300,
677
- useNativeDriver: true
678
- }), _reactNative.Animated.timing(visibilityProgress, {
679
- toValue: 0,
680
- duration: 300,
681
- useNativeDriver: true
682
- }), _reactNative.Animated.timing(floatingPosition, {
683
- toValue: {
684
- x: targetX,
685
- y: targetY
686
- },
687
- duration: 300,
688
- useNativeDriver: true
689
- })]).start(() => {
690
- onMinimize(currentState);
691
- });
692
- }
693
- }, [mode, onMinimize, minimizeTargetPosition, visibilityProgress, bottomSheetTranslateY, floatingScale, floatingPosition]);
694
- const lastMinimizeRequest = (0, _react.useRef)(minimizeRequest);
695
- (0, _react.useEffect)(() => {
696
- if (lastMinimizeRequest.current === minimizeRequest) return;
697
- lastMinimizeRequest.current = minimizeRequest;
698
- handleMinimize();
699
- }, [minimizeRequest, handleMinimize]);
700
-
701
- // Apply initial modal state when restoring from minimized
702
- (0, _react.useEffect)(() => {
703
- if (!initialModalState) return;
704
-
705
- // Restore mode
706
- if (initialModalState.mode) {
707
- setMode(initialModalState.mode);
708
- onModeChange?.(initialModalState.mode);
709
- }
710
-
711
- // Restore bottom sheet height
712
- if (initialModalState.panelHeight) {
713
- setPanelHeight(initialModalState.panelHeight);
714
- currentHeightRef.current = initialModalState.panelHeight;
715
- animatedBottomPosition.setValue(initialModalState.panelHeight);
716
- }
717
-
718
- // Restore floating dimensions and position
719
- if (initialModalState.floatingDimensions && initialModalState.floatingPosition) {
720
- const newDimensions = {
721
- width: initialModalState.floatingDimensions.width,
722
- height: initialModalState.floatingDimensions.height,
723
- top: initialModalState.floatingPosition.y,
724
- left: initialModalState.floatingPosition.x
725
- };
726
- setDimensions(newDimensions);
727
- floatingPosition.setValue({
728
- x: initialModalState.floatingPosition.x,
729
- y: initialModalState.floatingPosition.y
730
- });
731
- animatedWidth.setValue(initialModalState.floatingDimensions.width);
732
- animatedFloatingHeight.setValue(initialModalState.floatingDimensions.height);
733
- }
734
- }, [initialModalState]);
735
-
736
- // ============================================================================
737
- // EFFECT: Visibility Animations - All using native driver!
738
- // ============================================================================
739
- const snapVisibility = shown => {
740
- if (shown) {
741
- if (mode === "bottomSheet") {
742
- bottomSheetTranslateY.setValue(0);
743
- } else {
744
- floatingScale.setValue(1);
745
- floatingPosition.setValue({
746
- x: currentDimensionsRef.current.left,
747
- y: currentDimensionsRef.current.top
748
- });
749
- }
750
- visibilityProgress.setValue(1);
751
- } else {
752
- if (mode === "bottomSheet") {
753
- bottomSheetTranslateY.setValue(SCREEN.height);
754
- }
755
- visibilityProgress.setValue(0);
756
- }
757
- };
758
-
759
- /**
760
- * Snap DURING RENDER when `visible` flips, not only in the effect below.
761
- *
762
- * These values drive the sheet's opacity/translate through the native
763
- * driver. The React commit for a `visible` change carries whatever the
764
- * JS-side values are at render time — the OLD, hidden ones when the snap
765
- * only happens in the effect — and on Fabric that commit's mount can land
766
- * on the main thread AFTER the effect's native `setValue`, overwriting it.
767
- * The Animated node then says "shown" while the UIView sits at opacity 0,
768
- * until some unrelated re-render commits the JS-side values again. That
769
- * is how "restore tool A: nothing; restore tool B: A appears; hide B: now
770
- * B appears" happened — every restore was one commit behind.
771
- *
772
- * Setting the values before the render's props are computed makes the
773
- * commit and the native node agree, whichever lands last. `setValue` is
774
- * idempotent, so a re-run render is harmless.
775
- */
776
- const snappedVisibleRef = (0, _react.useRef)(null);
777
- if (INSTANT_MODAL_ENTRANCE && snappedVisibleRef.current !== visible) {
778
- snappedVisibleRef.current = visible;
779
- snapVisibility(visible);
780
- }
781
- (0, _react.useEffect)(() => {
782
- // Visibility effect
783
- let openAnimation = null;
784
- let closeAnimation = null;
785
- if (INSTANT_MODAL_ENTRANCE) {
786
- // Snap to the final state — no animation in either direction. The
787
- // render-phase snap above already did this for a `visible` flip; this
788
- // re-applies it for a `mode` change while shown.
789
- snapVisibility(visible);
790
- return;
791
- }
792
- if (visible) {
793
- // Reset position if needed and then open
794
- bottomSheetTranslateY.setValue(SCREEN.height);
795
- visibilityProgress.setValue(0);
796
-
797
- // Open animations
798
- if (mode === "bottomSheet") {
799
- // Parallel animations for smooth opening
800
- openAnimation = _reactNative.Animated.parallel([
801
- // Slide up from bottom
802
- _reactNative.Animated.spring(bottomSheetTranslateY, {
803
- toValue: 0,
804
- tension: 180,
805
- friction: 22,
806
- useNativeDriver: true
807
- }),
808
- // Fade in backdrop
809
- _reactNative.Animated.timing(visibilityProgress, {
810
- toValue: 1,
811
- duration: 200,
812
- useNativeDriver: true
813
- })]);
814
- openAnimation.start();
815
- } else {
816
- // Floating mode entrance - simple fade without scale pop
817
- floatingScale.setValue(1); // Set scale to 1 directly, no animation
818
- // Minimizing animated the window to the dock icon's corner. Put it
819
- // back where it actually lives, or reopening leaves it parked
820
- // off-screen — `initialModalState` only covers the dock's restore
821
- // path, and the dial opens the same tool without one.
822
- floatingPosition.setValue({
823
- x: currentDimensionsRef.current.left,
824
- y: currentDimensionsRef.current.top
825
- });
826
- openAnimation = _reactNative.Animated.timing(visibilityProgress, {
827
- toValue: 1,
828
- duration: 200,
829
- useNativeDriver: true
830
- });
831
- openAnimation.start();
832
- }
833
- } else {
834
- // Close animations
835
- if (mode === "bottomSheet") {
836
- closeAnimation = _reactNative.Animated.parallel([
837
- // Slide down
838
- _reactNative.Animated.spring(bottomSheetTranslateY, {
839
- toValue: SCREEN.height,
840
- tension: 180,
841
- friction: 22,
842
- useNativeDriver: true
843
- }),
844
- // Fade out backdrop
845
- _reactNative.Animated.timing(visibilityProgress, {
846
- toValue: 0,
847
- duration: 200,
848
- useNativeDriver: true
849
- })]);
850
- closeAnimation.start();
851
- } else {
852
- // Floating mode exit - simple fade without scale
853
- closeAnimation = _reactNative.Animated.timing(visibilityProgress, {
854
- toValue: 0,
855
- duration: 200,
856
- useNativeDriver: true
857
- });
858
- closeAnimation.start();
859
- }
860
- }
861
-
862
- // Cleanup function - only stop animations, don't reset values
863
- return () => {
864
- // Cleanup animations
865
- if (openAnimation) {
866
- openAnimation.stop();
867
- // Stopped open animation
868
- }
869
- if (closeAnimation) {
870
- closeAnimation.stop();
871
- // Stopped close animation
872
- }
873
- };
874
- }, [visible, mode, visibilityProgress, bottomSheetTranslateY, floatingScale, floatingPosition, externalAnimatedHeight]); // Removed initialHeight to prevent animation restarts on height changes
875
-
876
- // ============================================================================
877
- // OPTIMIZED PAN RESPONDER: Bottom Sheet Resize
878
- // Following the documentation pattern for proper resize
879
- // ============================================================================
880
- const headerTouchOffsetRef = (0, _react.useRef)(0);
881
-
882
- // DEV-ONLY scripted resize motion (see benchMotion prop). Mirrors
883
- // onPanResponderMove exactly: direct setValue, no per-frame state. Every
884
- // ~2.5s it simulates a grab/release (setIsResizing toggles) so the
885
- // benchmark includes the gesture-boundary re-render cost.
886
- (0, _react.useEffect)(() => {
887
- if (!__DEV__ || !benchMotion || !visible) return undefined;
888
- let rafId = null;
889
- let intervalId = null;
890
- let running = true;
891
- const start = Date.now();
892
- let grabbed = false;
893
- const setGrab = on => {
894
- grabbed = on;
895
- if (benchMotion === "resize" || benchMotion === "float-resize") {
896
- setIsResizing(on);
897
- } else if (benchMotion === "float-drag") {
898
- setIsDragging(on);
899
- }
900
- };
901
- if (benchMotion === "mode-cycle") {
902
- intervalId = setInterval(() => toggleMode(), 2200);
903
- } else {
904
- const min = minHeight;
905
- const max = effectiveMaxHeight;
906
- const tick = () => {
907
- if (!running) return;
908
- const t = (Date.now() - start) / 1000;
909
- const phase = t % 2.5; // grab 2s, release 0.5s
910
- if (phase < 2 && !grabbed) setGrab(true);else if (phase >= 2 && grabbed) setGrab(false);
911
- if (grabbed) {
912
- const wave = (Math.sin(t * 2.2) + 1) / 2;
913
- if (benchMotion === "resize") {
914
- const targetHeight = min + wave * (max - min);
915
- animatedBottomPosition.setValue(targetHeight);
916
- currentHeightRef.current = targetHeight;
917
- if (externalAnimatedHeight) {
918
- externalAnimatedHeight.setValue(targetHeight);
919
- }
920
- } else if (benchMotion === "float-drag") {
921
- // Same write DraggableHeader makes per move event.
922
- const wave2 = (Math.sin(t * 1.7) + 1) / 2;
923
- floatingPosition.setValue({
924
- x: 10 + wave * Math.max(SCREEN.width - FLOATING_WIDTH - 20, 0),
925
- y: 70 + wave2 * 260
926
- });
927
- } else if (benchMotion === "float-resize") {
928
- // Same writes as the bottom-right corner resize handler.
929
- const width = FLOATING_WIDTH + wave * Math.max(SCREEN.width - FLOATING_WIDTH - 40, 0);
930
- const height = FLOATING_HEIGHT + wave * 240;
931
- animatedWidth.setValue(width);
932
- animatedFloatingHeight.setValue(height);
933
- currentDimensionsRef.current = {
934
- ...currentDimensionsRef.current,
935
- width,
936
- height
937
- };
938
- }
939
- }
940
- rafId = requestAnimationFrame(tick);
941
- };
942
- rafId = requestAnimationFrame(tick);
943
- }
944
- return () => {
945
- running = false;
946
- if (rafId != null) cancelAnimationFrame(rafId);
947
- if (intervalId != null) clearInterval(intervalId);
948
- setIsResizing(false);
949
- setIsDragging(false);
950
- };
951
- // eslint-disable-next-line react-hooks/exhaustive-deps
952
- }, [benchMotion, visible]);
953
- const bottomSheetPanResponder = (0, _react.useMemo)(() => _reactNative.PanResponder.create({
954
- // An external `animatedHeight` used to disable this responder
955
- // outright ("externally controlled"), which left Ask Buoy's sheet —
956
- // the one host that passes one, for its peek animation — with a
957
- // header that could not be dragged in bottom-sheet mode. The move
958
- // and release handlers below already write every height into the
959
- // external value, so the host and the finger share one number; the
960
- // grab just has to stop whatever the host is animating first.
961
- onStartShouldSetPanResponder: () => mode === "bottomSheet",
962
- onMoveShouldSetPanResponder: (evt, gestureState) => mode === "bottomSheet" && Math.abs(gestureState.dy) > 3,
963
- onPanResponderTerminationRequest: () => false,
964
- onPanResponderGrant: evt => {
965
- setIsResizing(true);
966
-
967
- // Where inside the header the finger grabbed
968
- headerTouchOffsetRef.current = evt.nativeEvent.locationY || 0;
969
-
970
- // Stop any in-flight animations so we start from truth
971
- animatedBottomPosition.stopAnimation(val => {
972
- currentHeightRef.current = val;
973
- });
974
- externalAnimatedHeight?.stopAnimation();
975
- bottomSheetTranslateY.stopAnimation();
976
- },
977
- onPanResponderMove: evt => {
978
- // Absolute finger anchoring: sheet top should match finger (minus header offset)
979
- const sheetTop = evt.nativeEvent.pageY - headerTouchOffsetRef.current;
980
- // Height is from bottom of screen to sheetTop
981
- let targetHeight = SCREEN.height - sheetTop;
982
-
983
- // Clamp
984
- targetHeight = Math.max(minHeight, Math.min(targetHeight, effectiveMaxHeight));
985
-
986
- // Push to UI (no React state!)
987
- animatedBottomPosition.setValue(targetHeight);
988
- currentHeightRef.current = targetHeight;
989
- if (externalAnimatedHeight) {
990
- externalAnimatedHeight.setValue(targetHeight);
991
- }
992
- },
993
- onPanResponderRelease: (evt, gestureState) => {
994
- setIsResizing(false);
995
- const finalHeight = currentHeightRef.current;
996
-
997
- // Optional: close with fast downward swipe
998
- const shouldClose = gestureState.vy > 0.8 && gestureState.dy > 50 || gestureState.dy > 150 && finalHeight <= minHeight;
999
- if (shouldClose) {
1000
- _reactNative.Animated.parallel([_reactNative.Animated.timing(visibilityProgress, {
1001
- toValue: 0,
1002
- duration: 200,
1003
- useNativeDriver: true
1004
- }), _reactNative.Animated.spring(bottomSheetTranslateY, {
1005
- toValue: SCREEN.height,
1006
- tension: 180,
1007
- friction: 22,
1008
- useNativeDriver: true
1009
- })]).start(() => onClose());
1010
- return;
1011
- }
1012
-
1013
- // We're already at the finger-tracked height; avoid re-animating it.
1014
- setPanelHeight(finalHeight);
1015
- if (externalAnimatedHeight) externalAnimatedHeight.setValue(finalHeight);
1016
- },
1017
- onPanResponderTerminate: () => {
1018
- setIsResizing(false);
1019
- // snap back to the last stable height if you want; otherwise no-op
1020
- }
1021
- }), [mode, minHeight, effectiveMaxHeight, animatedBottomPosition, externalAnimatedHeight, bottomSheetTranslateY, visibilityProgress, onClose]);
1022
-
1023
- // ============================================================================
1024
- // CREATE RESIZE HANDLER: For 4-corner resize in floating mode (fixed geometry)
1025
- // ============================================================================
1026
- /**
1027
- * Create a PanResponder for handling corner-based resizing in floating mode
1028
- *
1029
- * This function generates resize handlers for each corner that allow users to
1030
- * resize the floating modal by dragging from any corner. It includes boundary
1031
- * checking and minimum size constraints.
1032
- *
1033
- * @param corner - Which corner this handler is for
1034
- * @returns PanResponder configured for that corner's resize behavior
1035
- *
1036
- * @performance Uses direct animated value updates for smooth resizing
1037
- * @performance Includes safe area boundary checking for all corners
1038
- */
1039
- const createResizeHandler = (0, _react.useCallback)(corner => {
1040
- let didResize = false;
1041
- return _reactNative.PanResponder.create({
1042
- onStartShouldSetPanResponder: () => mode === "floating",
1043
- onMoveShouldSetPanResponder: () => mode === "floating",
1044
- onPanResponderGrant: () => {
1045
- didResize = false;
1046
- const currentDims = currentDimensionsRef.current;
1047
-
1048
- // If any animation is in-flight, stop and capture final XY to keep math consistent
1049
- floatingPosition.stopAnimation(({
1050
- x,
1051
- y
1052
- }) => {
1053
- floatingPosition.setValue({
1054
- x,
1055
- y
1056
- });
1057
- });
1058
- setIsResizing(true);
1059
- // Snapshot starting rect
1060
- startDimensionsRef.current = {
1061
- ...currentDims
1062
- };
1063
-
1064
- // Keep your existing refs up-to-date (not strictly needed now, but harmless)
1065
- sHeight.current = currentDims.height;
1066
- sWidth.current = currentDims.width;
1067
- offsetX.current = currentDims.left;
1068
- offsetY.current = currentDims.top;
1069
- },
1070
- onPanResponderMove: (_evt, gestureState) => {
1071
- const {
1072
- dx,
1073
- dy
1074
- } = gestureState;
1075
- if (Math.abs(dx) < 0.5 && Math.abs(dy) < 0.5) return;
1076
- didResize = true;
1077
- // Safe-area–aware bounds
1078
- const minLeft = Math.max(0, insets.left || 0);
1079
- const maxRight = containerBounds.width - Math.max(0, insets.right || 0);
1080
- const minTop = Math.max(0, insets.top || 0);
1081
- const maxBottom = containerBounds.height - Math.max(0, insets.bottom || 0);
1082
- const start = startDimensionsRef.current;
1083
- const startRight = start.left + start.width;
1084
- const startBottom = start.top + start.height;
1085
- let left = start.left;
1086
- let top = start.top;
1087
- let right = startRight;
1088
- let bottom = startBottom;
1089
- switch (corner) {
1090
- case "topLeft":
1091
- {
1092
- // Move left & top; anchor right & bottom
1093
- const newLeft = Math.max(minLeft, Math.min(start.left + dx, startRight - FLOATING_MIN_WIDTH));
1094
- const newTop = Math.max(minTop, Math.min(start.top + dy, startBottom - FLOATING_MIN_HEIGHT));
1095
- left = newLeft;
1096
- top = newTop;
1097
- right = startRight;
1098
- bottom = startBottom;
1099
- break;
1100
- }
1101
- case "topRight":
1102
- {
1103
- // Move right & top; anchor left & bottom
1104
- const newRight = Math.min(maxRight, Math.max(startRight + dx, start.left + FLOATING_MIN_WIDTH));
1105
- const newTop = Math.max(minTop, Math.min(start.top + dy, startBottom - FLOATING_MIN_HEIGHT));
1106
- left = start.left;
1107
- top = newTop;
1108
- right = newRight;
1109
- bottom = startBottom;
1110
- break;
1111
- }
1112
- case "bottomLeft":
1113
- {
1114
- // Move left & bottom; anchor right & top
1115
- const newLeft = Math.max(minLeft, Math.min(start.left + dx, startRight - FLOATING_MIN_WIDTH));
1116
- const newBottom = Math.min(maxBottom, Math.max(startBottom + dy, start.top + FLOATING_MIN_HEIGHT));
1117
- left = newLeft;
1118
- top = start.top;
1119
- right = startRight;
1120
- bottom = newBottom;
1121
- break;
1122
- }
1123
- case "bottomRight":
1124
- {
1125
- // Move right & bottom; anchor left & top
1126
- const newRight = Math.min(maxRight, Math.max(startRight + dx, start.left + FLOATING_MIN_WIDTH));
1127
- const newBottom = Math.min(maxBottom, Math.max(startBottom + dy, start.top + FLOATING_MIN_HEIGHT));
1128
- left = start.left;
1129
- top = start.top;
1130
- right = newRight;
1131
- bottom = newBottom;
1132
- break;
1133
- }
1134
- }
1135
-
1136
- // Derive width/height from the edges
1137
- const updatedWidth = Math.max(FLOATING_MIN_WIDTH, right - left);
1138
- const updatedHeight = Math.max(FLOATING_MIN_HEIGHT, bottom - top);
1139
-
1140
- // Push to UI
1141
- setDimensions({
1142
- width: updatedWidth,
1143
- height: updatedHeight,
1144
- left,
1145
- top
1146
- });
1147
-
1148
- // Keep animated values in sync for your transforms
1149
- animatedWidth.setValue(updatedWidth);
1150
- animatedFloatingHeight.setValue(updatedHeight);
1151
- floatingPosition.setValue({
1152
- x: left,
1153
- y: top
1154
- });
1155
-
1156
- // Cache
1157
- currentDimensionsRef.current = {
1158
- width: updatedWidth,
1159
- height: updatedHeight,
1160
- left,
1161
- top
1162
- };
1163
- },
1164
- onPanResponderRelease: () => {
1165
- setIsResizing(false);
1166
- didResize = false;
1167
- // currentDimensionsRef already holds the last values
1168
- setDimensions(currentDimensionsRef.current);
1169
- },
1170
- onPanResponderTerminate: () => {
1171
- setIsResizing(false);
1172
- didResize = false;
1173
- }
1174
- });
1175
- }, [mode, containerBounds, insets.left, insets.right, insets.top, insets.bottom, floatingPosition, animatedWidth, animatedFloatingHeight, onClose, onBack]);
1176
- const resizeHandlers = (0, _react.useMemo)(() => {
1177
- return {
1178
- topLeft: createResizeHandler("topLeft"),
1179
- topRight: createResizeHandler("topRight"),
1180
- bottomLeft: createResizeHandler("bottomLeft"),
1181
- bottomRight: createResizeHandler("bottomRight")
1182
- };
1183
- }, [createResizeHandler]);
1184
-
1185
- // ============================================================================
1186
- // Floating Mode Drag Handlers for DraggableHeader
1187
- // ============================================================================
1188
- const handleFloatingDragStart = (0, _react.useCallback)(() => {
1189
- setIsDragging(true);
1190
- }, []);
1191
- const handleFloatingDragEnd = (0, _react.useCallback)(finalPosition => {
1192
- setIsDragging(false);
1193
-
1194
- // Update dimensions state to match final position
1195
- const currentDims = currentDimensionsRef.current;
1196
- const newDimensions = {
1197
- ...currentDims,
1198
- left: finalPosition.x,
1199
- top: finalPosition.y
1200
- };
1201
- setDimensions(newDimensions);
1202
- }, []);
1203
-
1204
- // Track taps for double/triple tap functionality
1205
- const lastTapRef = (0, _react.useRef)(0);
1206
- const tapCountRef = (0, _react.useRef)(0);
1207
- const tapTimeoutRef = (0, _react.useRef)(null);
1208
- const handleFloatingTap = (0, _react.useCallback)(() => {
1209
- const now = Date.now();
1210
- const timeSinceLastTap = now - lastTapRef.current;
1211
-
1212
- // Reset tap count if more than 500ms since last tap
1213
- if (timeSinceLastTap > 500) {
1214
- tapCountRef.current = 0;
1215
- }
1216
- tapCountRef.current++;
1217
- lastTapRef.current = now;
1218
-
1219
- // Clear existing timeout
1220
- if (tapTimeoutRef.current) {
1221
- clearTimeout(tapTimeoutRef.current);
1222
- }
1223
-
1224
- // Set timeout to process the tap gesture
1225
- tapTimeoutRef.current = setTimeout(() => {
1226
- if (tapCountRef.current === 2) {
1227
- // Double tap - toggle mode
1228
- toggleMode();
1229
- } else if (tapCountRef.current >= 3) {
1230
- // Triple tap - minimize modal (if available)
1231
- if (onMinimize) {
1232
- handleMinimize();
1233
- }
1234
- }
1235
- tapCountRef.current = 0;
1236
- }, 300);
1237
- }, [toggleMode, onMinimize, handleMinimize]);
1238
-
1239
- // Clean up timeout on unmount for main component tap handler
1240
- (0, _react.useEffect)(() => {
1241
- return () => {
1242
- if (tapTimeoutRef.current) {
1243
- clearTimeout(tapTimeoutRef.current);
1244
- }
1245
- };
1246
- }, []);
1247
-
1248
- // ============================================================================
1249
- // RENDER: Modal UI with transform-based animations
1250
- // ============================================================================
1251
-
1252
- // When not visible the SAME tree is rendered, just parked off-screen. It has
1253
- // to be the same tree: React reconciles by position, so a separate "hidden"
1254
- // branch would unmount and rebuild every child on each minimize AND each
1255
- // restore — which is the whole cost minimizing is supposed to avoid.
1256
-
1257
- // Render floating mode
1258
- if (mode === "floating") {
1259
- return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Animated.View, {
1260
- nativeID: "jsmodal-root",
1261
- pointerEvents: visible ? "auto" : "none",
1262
- accessibilityElementsHidden: !visible,
1263
- importantForAccessibility: visible ? "auto" : "no-hide-descendants",
1264
- style: [styles.floatingModal, {
1265
- width: dimensions.width,
1266
- // Use state dimensions for real-time updates
1267
- height: dimensions.height,
1268
- opacity: modalOpacity,
1269
- transform: [{
1270
- translateX: floatingPosition.x
1271
- }, {
1272
- translateY: floatingPosition.y
1273
- }],
1274
- ...(zIndex !== undefined && {
1275
- zIndex
1276
- })
1277
- }, variant === "night" && styles.nightFloatingModal, (isDragging || isResizing) && styles.floatingModalDragging, customStyles.container, !visible && styles.parkedOffscreen],
1278
- children: [background && variant === "night" ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
1279
- style: styles.nightBackdropFloating,
1280
- pointerEvents: "none",
1281
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ToolBackground.ToolBackground, {})
1282
- }) : null, /*#__PURE__*/(0, _jsxRuntime.jsx)(_index2.DraggableHeader, {
1283
- position: floatingPosition,
1284
- onDragStart: handleFloatingDragStart,
1285
- onDragEnd: handleFloatingDragEnd,
1286
- onTap: handleFloatingTap,
1287
- containerBounds: containerBounds,
1288
- elementSize: dimensions,
1289
- minPosition: {
1290
- x: 0,
1291
- y: insets.top
1292
- },
1293
- style: styles.floatingHeader,
1294
- enabled: mode === "floating" && !isResizing,
1295
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ModalHeader, {
1296
- header: header,
1297
- onClose: onClose,
1298
- onToggleMode: toggleMode,
1299
- onMinimize: onMinimize ? handleMinimize : undefined,
1300
- isResizing: isDragging || isResizing,
1301
- mode: mode,
1302
- variant: variant
1303
- })
1304
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
1305
- style: styles.windowControlsContainer,
1306
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_index2.WindowControls, {
1307
- onClose: onClose,
1308
- onMinimize: onMinimize ? handleMinimize : undefined,
1309
- onToggleMode: toggleMode,
1310
- mode: mode,
1311
- variant: variant
1312
- })
1313
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
1314
- style: [styles.content, variant === "night" && styles.nightContent, customStyles.content],
1315
- children: [background && variant !== "night" ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_ToolBackground.ToolBackground, {}) : null, disableScrollWrapper ?
1316
- /*#__PURE__*/
1317
- // Render children directly when they manage their own scrolling (FlatList, etc.)
1318
- (0, _jsxRuntime.jsx)(_reactNative.View, {
1319
- style: {
1320
- flex: 1,
1321
- paddingBottom: footerHeight
1322
- },
1323
- children: children
1324
- }) :
1325
- /*#__PURE__*/
1326
- // Wrap in ScrollView for content that needs scrolling
1327
- (0, _jsxRuntime.jsx)(_reactNative.ScrollView, {
1328
- style: {
1329
- flex: 1
1330
- },
1331
- contentContainerStyle: {
1332
- flexGrow: 1,
1333
- paddingBottom: footerHeight
1334
- },
1335
- showsVerticalScrollIndicator: true,
1336
- nestedScrollEnabled: true,
1337
- children: children
1338
- }), footer ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
1339
- style: footerStyles.footerContainer,
1340
- children: footer
1341
- }) : null]
1342
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
1343
- ...resizeHandlers.bottomLeft.panHandlers,
1344
- style: [styles.cornerHandleWrapper, {
1345
- bottom: 4,
1346
- left: 4
1347
- }],
1348
- hitSlop: {
1349
- top: 2,
1350
- left: 2,
1351
- right: 2,
1352
- bottom: 2
1353
- },
1354
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(CornerHandle, {
1355
- position: "bottomLeft",
1356
- isActive: isDragging || isResizing
1357
- })
1358
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
1359
- ...resizeHandlers.bottomRight.panHandlers,
1360
- style: [styles.cornerHandleWrapper, {
1361
- bottom: 4,
1362
- right: 4
1363
- }],
1364
- hitSlop: {
1365
- top: 2,
1366
- left: 2,
1367
- right: 2,
1368
- bottom: 2
1369
- },
1370
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(CornerHandle, {
1371
- position: "bottomRight",
1372
- isActive: isDragging || isResizing
1373
- })
1374
- })]
1375
- });
1376
- }
1377
-
1378
- // Render bottom sheet mode with proper height animation
1379
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
1380
- style: [
1381
- // Same box either way — parking it off-screen instead of resizing it
1382
- // keeps the sheet's layout intact, so coming back is a translate and
1383
- // not a full relayout.
1384
- visible ? styles.fullScreenContainer : styles.parkedFullScreen, visible && zIndex !== undefined && {
1385
- zIndex
1386
- }],
1387
- pointerEvents: visible ? "box-none" : "none",
1388
- accessibilityElementsHidden: !visible,
1389
- importantForAccessibility: visible ? "auto" : "no-hide-descendants",
1390
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Animated.View, {
1391
- nativeID: "jsmodal-root",
1392
- style: [styles.bottomSheetWrapper, {
1393
- opacity: modalOpacity,
1394
- transform: [{
1395
- translateY: bottomSheetTranslateY
1396
- }]
1397
- }],
1398
- children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Animated.View, {
1399
- style: [styles.bottomSheet, variant === "night" && styles.nightBottomSheet, customStyles.container, {
1400
- height: externalAnimatedHeight || animatedBottomPosition
1401
- }],
1402
- children: [background && variant === "night" ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
1403
- style: styles.nightBackdropSheet,
1404
- pointerEvents: "none",
1405
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_ToolBackground.ToolBackground, {})
1406
- }) : null, /*#__PURE__*/(0, _jsxRuntime.jsx)(ModalHeader, {
1407
- header: header,
1408
- onClose: onClose,
1409
- onToggleMode: toggleMode,
1410
- onMinimize: onMinimize ? handleMinimize : undefined,
1411
- isResizing: isResizing,
1412
- mode: mode,
1413
- panHandlers: bottomSheetPanResponder.panHandlers,
1414
- variant: variant
1415
- }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
1416
- style: styles.windowControlsContainer,
1417
- children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_index2.WindowControls, {
1418
- onClose: onClose,
1419
- onMinimize: onMinimize ? handleMinimize : undefined,
1420
- onToggleMode: toggleMode,
1421
- mode: mode,
1422
- variant: variant
1423
- })
1424
- }), hintLoaded && showHint && mode === "bottomSheet" && !hintsDisabled && /*#__PURE__*/(0, _jsxRuntime.jsx)(_index2.ModalHintBanner, {
1425
- onAcknowledge: handleHintAcknowledge
1426
- }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
1427
- style: [styles.content, variant === "night" && styles.nightContent, customStyles.content],
1428
- children: [background && variant !== "night" ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_ToolBackground.ToolBackground, {}) : null, disableScrollWrapper ?
1429
- /*#__PURE__*/
1430
- // Render children directly when they manage their own scrolling (FlatList, etc.)
1431
- (0, _jsxRuntime.jsx)(_reactNative.View, {
1432
- style: {
1433
- flex: 1,
1434
- paddingBottom: footerHeight
1435
- },
1436
- children: children
1437
- }) :
1438
- /*#__PURE__*/
1439
- // Wrap in ScrollView for content that needs scrolling
1440
- (0, _jsxRuntime.jsx)(_reactNative.ScrollView, {
1441
- style: {
1442
- flex: 1
1443
- },
1444
- contentContainerStyle: {
1445
- flexGrow: 1,
1446
- paddingBottom: footerHeight
1447
- },
1448
- showsVerticalScrollIndicator: true,
1449
- nestedScrollEnabled: true,
1450
- children: children
1451
- }), footer ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
1452
- style: footerStyles.footerContainer,
1453
- children: footer
1454
- }) : null]
1455
- })]
1456
- })
1457
- })
1458
- });
1459
- };
1460
-
1461
- // ============================================================================
1462
- // STYLES - Visual styling for all modal components
1463
- // ============================================================================
1464
- const styles = _reactNative.StyleSheet.create({
1465
- fullScreenContainer: {
1466
- ..._absoluteFill.absoluteFill,
1467
- zIndex: 1000
1468
- },
1469
- bottomSheetWrapper: {
1470
- position: "absolute",
1471
- bottom: 0,
1472
- left: 0,
1473
- right: 0
1474
- },
1475
- bottomSheet: {
1476
- backgroundColor: _index.buoyColors.card,
1477
- // Buoy card
1478
- borderTopLeftRadius: 6,
1479
- borderTopRightRadius: 6,
1480
- borderWidth: 1,
1481
- borderColor: _index.buoyColors.border,
1482
- shadowColor: _index.buoyColors.primary,
1483
- shadowOffset: {
1484
- width: 0,
1485
- height: -4
1486
- },
1487
- shadowOpacity: 0.2,
1488
- shadowRadius: 12,
1489
- elevation: 20
1490
- },
1491
- /** Off-screen park for a minimized floating modal — same box, moved away. */
1492
- parkedOffscreen: {
1493
- left: -9999,
1494
- top: -9999,
1495
- opacity: 0
1496
- },
1497
- /**
1498
- * Off-screen park for a minimized bottom sheet. Screen-sized on purpose:
1499
- * `fullScreenContainer` is an absolute fill, and shrinking it here would
1500
- * relayout the whole sheet on every minimize/restore.
1501
- */
1502
- parkedFullScreen: {
1503
- position: "absolute",
1504
- left: -9999,
1505
- top: -9999,
1506
- width: SCREEN.width,
1507
- height: SCREEN.height,
1508
- opacity: 0
1509
- },
1510
- floatingModal: {
1511
- position: "absolute",
1512
- backgroundColor: _index.buoyColors.card,
1513
- borderRadius: 6,
1514
- borderWidth: 1,
1515
- borderColor: _index.buoyColors.border,
1516
- shadowColor: _index.buoyColors.primary,
1517
- shadowOffset: {
1518
- width: 0,
1519
- height: 0
1520
- },
1521
- shadowOpacity: 0.3,
1522
- shadowRadius: 20,
1523
- elevation: 24,
1524
- zIndex: 1000,
1525
- // Default dimensions, will be overridden by animated values
1526
- width: FLOATING_WIDTH,
1527
- height: FLOATING_HEIGHT
1528
- },
1529
- floatingModalDragging: {
1530
- borderColor: _index.buoyColors.primary,
1531
- borderWidth: 2,
1532
- shadowColor: _index.buoyColors.primary + "99",
1533
- shadowOpacity: 0.8,
1534
- shadowRadius: 12
1535
- },
1536
- header: {
1537
- borderTopLeftRadius: 6,
1538
- borderTopRightRadius: 6,
1539
- backgroundColor: _index.buoyColors.card,
1540
- // Buoy card color
1541
- minHeight: 56,
1542
- borderWidth: 1,
1543
- borderColor: _index.buoyColors.border,
1544
- // Buoy border
1545
- borderBottomWidth: 1,
1546
- borderBottomColor: _index.buoyColors.border
1547
- },
1548
- // ── Night variant (Everlights sheet — see ui/night/nightTheme.ts) ────────
1549
- // NO `overflow: "hidden"` on the sheets: Fabric clips children to the
1550
- // square rect, so the star-field layer's corner painted OVER the rounded
1551
- // corner (it read as chopped off) — and iOS suppresses a layer's own shadow
1552
- // when it clips. The backdrop clips itself instead (nightBackdrop* below).
1553
- nightBottomSheet: {
1554
- backgroundColor: _nightTheme.night.color.bg,
1555
- borderTopLeftRadius: _nightTheme.night.radius.sheet,
1556
- borderTopRightRadius: _nightTheme.night.radius.sheet,
1557
- borderWidth: _reactNative.StyleSheet.hairlineWidth,
1558
- borderColor: _nightTheme.night.color.accent + "55",
1559
- shadowColor: _nightTheme.night.color.accent,
1560
- shadowOffset: {
1561
- width: 0,
1562
- height: -4
1563
- },
1564
- shadowOpacity: 0.22,
1565
- shadowRadius: 10
1566
- },
1567
- nightFloatingModal: {
1568
- backgroundColor: _nightTheme.night.color.bg,
1569
- borderRadius: _nightTheme.night.radius.sheet,
1570
- borderWidth: _reactNative.StyleSheet.hairlineWidth,
1571
- borderColor: _nightTheme.night.color.accent + "55",
1572
- shadowColor: _nightTheme.night.color.accent,
1573
- shadowOffset: {
1574
- width: 0,
1575
- height: 0
1576
- },
1577
- shadowOpacity: 0.22,
1578
- shadowRadius: 14
1579
- },
1580
- /** The header is glass — the sheet-level star field runs through it. */
1581
- nightHeader: {
1582
- backgroundColor: "transparent",
1583
- borderWidth: 0,
1584
- borderBottomWidth: 0,
1585
- borderTopLeftRadius: _nightTheme.night.radius.sheet,
1586
- borderTopRightRadius: _nightTheme.night.radius.sheet
1587
- },
1588
- nightContent: {
1589
- backgroundColor: "transparent"
1590
- },
1591
- /**
1592
- * The hoisted star field clips ITSELF to the sheet's corners (matching
1593
- * radii + overflow hidden) — see the note on the sheet styles above. It
1594
- * also keeps scenes that animate outside their own bounds (Hyperspace's
1595
- * scaled shells) from bleeding past the window.
1596
- */
1597
- nightBackdropSheet: {
1598
- ..._absoluteFill.absoluteFill,
1599
- borderTopLeftRadius: _nightTheme.night.radius.sheet,
1600
- borderTopRightRadius: _nightTheme.night.radius.sheet,
1601
- overflow: "hidden"
1602
- },
1603
- nightBackdropFloating: {
1604
- ..._absoluteFill.absoluteFill,
1605
- borderRadius: _nightTheme.night.radius.sheet,
1606
- overflow: "hidden"
1607
- },
1608
- /** Neutral Everlights handle instead of the glowing teal bar. */
1609
- nightDragIndicator: {
1610
- width: 36,
1611
- height: 5,
1612
- borderRadius: 2.5,
1613
- backgroundColor: _nightTheme.night.color.placeholder,
1614
- shadowOpacity: 0,
1615
- elevation: 0
1616
- },
1617
- floatingHeader: {
1618
- borderTopLeftRadius: 6,
1619
- borderTopRightRadius: 6
1620
- },
1621
- windowControlsContainer: {
1622
- position: "absolute",
1623
- top: 4,
1624
- right: 4,
1625
- zIndex: 10
1626
- },
1627
- floatingModeHeader: {
1628
- borderTopLeftRadius: 6,
1629
- borderTopRightRadius: 6
1630
- },
1631
- headerInner: {
1632
- flex: 1,
1633
- justifyContent: "center"
1634
- },
1635
- dragIndicatorContainer: {
1636
- alignItems: "center",
1637
- paddingVertical: 8,
1638
- backgroundColor: "transparent"
1639
- },
1640
- /**
1641
- * With custom header content the pill shares the top band with the window
1642
- * controls, so the strip claims that band (and centres the pill in it)
1643
- * rather than the header row below paying for the clearance sideways.
1644
- */
1645
- dragIndicatorContainerCustom: {
1646
- minHeight: WINDOW_CONTROLS_BAND,
1647
- justifyContent: "center",
1648
- paddingVertical: 0,
1649
- backgroundColor: "transparent"
1650
- },
1651
- dragIndicator: {
1652
- width: 40,
1653
- height: 3,
1654
- backgroundColor: _index.buoyColors.primary,
1655
- // Buoy primary teal
1656
- borderRadius: 2,
1657
- shadowColor: _index.buoyColors.primary,
1658
- shadowOffset: {
1659
- width: 0,
1660
- height: 0
1661
- },
1662
- shadowOpacity: 0.6,
1663
- shadowRadius: 4
1664
- },
1665
- floatingDragIndicator: {
1666
- width: 50,
1667
- height: 5,
1668
- backgroundColor: _index.buoyColors.textMuted
1669
- },
1670
- dragIndicatorActive: {
1671
- backgroundColor: _index.buoyColors.primary,
1672
- width: 40
1673
- },
1674
- resizeGripContainer: {
1675
- position: "absolute",
1676
- flexDirection: "row",
1677
- gap: 2,
1678
- marginTop: 12
1679
- },
1680
- resizeGripLine: {
1681
- width: 12,
1682
- height: 1,
1683
- backgroundColor: _index.gameUIColors.success,
1684
- opacity: 0.6
1685
- },
1686
- headerContent: {
1687
- paddingHorizontal: 16,
1688
- alignItems: "center"
1689
- },
1690
- headerControls: {
1691
- position: "absolute",
1692
- top: 8,
1693
- right: 16,
1694
- flexDirection: "row",
1695
- alignItems: "center"
1696
- },
1697
- headerTitle: {
1698
- fontSize: 16,
1699
- fontWeight: "600",
1700
- color: _index.gameUIColors.primary
1701
- },
1702
- headerSubtitle: {
1703
- fontSize: 12,
1704
- color: _index.gameUIColors.secondary,
1705
- paddingTop: 4
1706
- },
1707
- headerHintText: {
1708
- position: "absolute",
1709
- top: 0,
1710
- left: 0,
1711
- right: 0,
1712
- bottom: 0,
1713
- justifyContent: "center",
1714
- alignItems: "center"
1715
- },
1716
- hintText: {
1717
- fontSize: 10,
1718
- color: _index.gameUIColors.muted,
1719
- fontStyle: "italic"
1720
- },
1721
- controlButton: {
1722
- width: 28,
1723
- height: 28,
1724
- borderRadius: 6,
1725
- justifyContent: "center",
1726
- alignItems: "center",
1727
- marginLeft: 8
1728
- },
1729
- toggleButton: {
1730
- backgroundColor: _index.gameUIColors.info + "1A",
1731
- borderWidth: 1,
1732
- borderColor: _index.gameUIColors.info + "33"
1733
- },
1734
- closeButton: {
1735
- width: 28,
1736
- height: 28,
1737
- borderRadius: 6,
1738
- justifyContent: "center",
1739
- alignItems: "center",
1740
- backgroundColor: _index.gameUIColors.error + "1A",
1741
- borderWidth: 1,
1742
- borderColor: _index.gameUIColors.error + "33",
1743
- marginLeft: 8
1744
- },
1745
- iconLine: {
1746
- position: "absolute",
1747
- top: 7.25,
1748
- left: 2,
1749
- width: 12,
1750
- height: 1.5,
1751
- backgroundColor: _index.gameUIColors.error
1752
- },
1753
- content: {
1754
- flex: 1,
1755
- backgroundColor: _index.buoyColors.base,
1756
- borderBottomLeftRadius: 16,
1757
- borderBottomRightRadius: 16,
1758
- overflow: "hidden"
1759
- },
1760
- cornerHandle: {
1761
- position: "absolute",
1762
- zIndex: 1
1763
- },
1764
- cornerHandleWrapper: {
1765
- position: "absolute",
1766
- width: 30,
1767
- height: 30,
1768
- zIndex: 1000
1769
- },
1770
- handler: {
1771
- width: 20,
1772
- height: 20,
1773
- backgroundColor: "transparent",
1774
- borderRadius: 10,
1775
- borderWidth: 0,
1776
- borderColor: "transparent"
1777
- },
1778
- handlerActive: {
1779
- backgroundColor: _index.gameUIColors.success + "1A",
1780
- borderColor: _index.gameUIColors.success,
1781
- borderWidth: 2,
1782
- shadowColor: _index.gameUIColors.success + "99",
1783
- shadowOffset: {
1784
- width: 0,
1785
- height: 0
1786
- },
1787
- shadowOpacity: 1,
1788
- shadowRadius: 8
1789
- }
1790
- });
1791
-
1792
- // Footer container styles (absolute within modal content area)
1793
- const footerStyles = _reactNative.StyleSheet.create({
1794
- footerContainer: {
1795
- position: "absolute",
1796
- left: 0,
1797
- right: 0,
1798
- bottom: 0,
1799
- backgroundColor: _index.buoyColors.base,
1800
- borderBottomLeftRadius: 16,
1801
- borderBottomRightRadius: 16
1802
- }
1803
- });
1804
-
1805
- // ============================================================================
1806
- // EXPORT - Memoized modal component for optimal performance
1807
- // ============================================================================
1808
- const JsModal = exports.JsModal = /*#__PURE__*/(0, _react.memo)(props => {
1809
- const access = (0, _licenseModule.getUseAccountAccess)()();
1810
- if (access.status !== "admitted") return props.visible ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_AccountSetup.AccountSetup, {}) : null;
1811
- return /*#__PURE__*/(0, _jsxRuntime.jsx)(JsModalComponent, {
1812
- ...props
1813
- });
1814
- });
1
+ "use strict";Object.defineProperty(exports,"__esModule",{value:true});exports.JsModal=void 0;var _licenseModule=require("./license/licenseModule.js");var _AccountSetup=require("./license/AccountSetup");var _react=require("react");var _reactNative=require("react-native");var _absoluteFill=require("./utils/absoluteFill.js");var _useSafeAreaInsets=require("./hooks/useSafeAreaInsets");var _index=require("./ui/gameUI/index.js");var _index2=require("./ui/components/index.js");var _ToolBackground=require("./ui/backgrounds/ToolBackground.js");var _nightTheme=require("./ui/night/nightTheme.js");var _persistentStorage=require("./utils/persistentStorage");var _modalStorage=require("./utils/modalStorage.js");var _devToolsStorageKeys=require("./storage/devToolsStorageKeys.js");var _index3=require("./context/index.js");var _jsxRuntime=require("react/jsx-runtime");const INSTANT_MODAL_ENTRANCE=true;const SCREEN=_reactNative.Dimensions.get("window");const MIN_HEIGHT=100;const DEFAULT_HEIGHT=400;const FLOATING_WIDTH=SCREEN.width;const FLOATING_HEIGHT=500;const FLOATING_MIN_WIDTH=SCREEN.width*.25;const FLOATING_MIN_HEIGHT=80;const WINDOW_CONTROLS_BAND=20;const DragIndicator=(0,_react.memo)(function s({isResizing:n,mode:x,hasCustomContent:B=false,variant:m="default"}){return(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[styles.dragIndicatorContainer,B&&styles.dragIndicatorContainerCustom],children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:[styles.dragIndicator,x==="floating"&&styles.floatingDragIndicator,n&&styles.dragIndicatorActive,m==="night"&&styles.nightDragIndicator]}),n&&x==="bottomSheet"&&(0,_jsxRuntime.jsxs)(_reactNative.View,{style:styles.resizeGripContainer,children:[(0,_jsxRuntime.jsx)(_reactNative.View,{style:styles.resizeGripLine}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:styles.resizeGripLine}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:styles.resizeGripLine})]})]})});const CornerHandle=(0,_react.memo)(function s({position:n,isActive:x}){return(0,_jsxRuntime.jsx)(_reactNative.View,{style:[styles.cornerHandle],children:(0,_jsxRuntime.jsx)(_reactNative.View,{style:[styles.handler,x&&styles.handlerActive]})})});const ModalHeader=(0,_react.memo)(function s({header:n,onClose:x,onToggleMode:B,onMinimize:m,isResizing:W,mode:Y,panHandlers:p,variant:a="default"}){const b=(0,_react.useRef)(0);const N=(0,_react.useRef)(0);const V=(0,_react.useRef)(null);const w=(0,_react.useCallback)(()=>{const D=Date.now();const J=D-b.current;if(J>500){N.current=0}N.current++;b.current=D;if(V.current){clearTimeout(V.current)}V.current=setTimeout(()=>{if(N.current===2){B()}else if(N.current>=3){if(m){m()}}N.current=0},300)},[B,m]);(0,_react.useEffect)(()=>{return()=>{if(V.current){clearTimeout(V.current)}}},[]);const T=p?p:{};const $=!!p;if(n?.customContent){const D=(0,_react.isValidElement)(n.customContent)&&typeof n.customContent.type==="function"&&n.customContent.type.name==="CyberpunkModalHeader";if(D){return(0,_react.cloneElement)(n.customContent,{onToggleMode:B,onClose:x,mode:Y,panHandlers:T,showToggleButton:n?.showToggleButton!==false,hideCloseButton:n?.hideCloseButton})}let J=n.customContent;if((0,_react.isValidElement)(n.customContent)&&m){J=(0,_react.cloneElement)(n.customContent,{onMinimize:m})}const g=(0,_jsxRuntime.jsxs)(_reactNative.View,{style:styles.headerInner,children:[(0,_jsxRuntime.jsx)(DragIndicator,{isResizing:W,mode:Y,hasCustomContent:true,variant:a}),J]});return(0,_jsxRuntime.jsx)(_reactNative.View,{style:[styles.header,a==="night"&&styles.nightHeader],...T,children:$?(0,_jsxRuntime.jsx)(_reactNative.TouchableWithoutFeedback,{onPress:w,children:g}):g})}const O=(0,_jsxRuntime.jsxs)(_reactNative.View,{style:styles.headerInner,children:[(0,_jsxRuntime.jsx)(DragIndicator,{isResizing:W,mode:Y,variant:a}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:styles.headerContent,children:[n?.title&&(0,_jsxRuntime.jsx)(_reactNative.Text,{style:styles.headerTitle,children:n.title}),n?.subtitle&&(0,_jsxRuntime.jsx)(_reactNative.Text,{style:styles.headerSubtitle,children:n.subtitle})]}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:styles.headerHintText,children:(0,_jsxRuntime.jsx)(_reactNative.Text,{style:styles.hintText,children:"Double tap: Toggle \u2022 Triple tap: Close"})})]});return(0,_jsxRuntime.jsx)(_reactNative.View,{style:[styles.header,Y==="floating"&&styles.floatingModeHeader,a==="night"&&styles.nightHeader],...T,children:$?(0,_jsxRuntime.jsx)(_reactNative.TouchableWithoutFeedback,{onPress:w,children:O}):O})});const JsModalComponent=({visible:s,onClose:n,children:x,header:B,styles:m={},minHeight:W=MIN_HEIGHT,maxHeight:Y,initialHeight:p=DEFAULT_HEIGHT,animatedHeight:a,benchMotion:b,initialMode:N="bottomSheet",onModeChange:V,persistenceKey:w,enablePersistence:T=true,initialFloatingPosition:$,footer:O,footerHeight:D=0,onBack:J,onMinimize:g,minimizeRequest:ie=0,minimizeTargetPosition:fe,initialModalState:l,zIndex:ae,disableScrollWrapper:Ce=false,background:le=true,variant:C="night"})=>{const j=(0,_useSafeAreaInsets.useSafeAreaInsets)();const[ye,Re]=(0,_react.useState)(!T);const[r,ge]=(0,_react.useState)(N);const[X,I]=(0,_react.useState)(false);const[de,Q]=(0,_react.useState)(false);const[Be,me]=(0,_react.useState)(p);const[k,K]=(0,_react.useState)({width:FLOATING_WIDTH,height:FLOATING_HEIGHT,top:(SCREEN.height-FLOATING_HEIGHT)/2,left:0});const[ue]=(0,_react.useState)({width:SCREEN.width,height:SCREEN.height});const[Ee,ce]=(0,_react.useState)(false);const[Me,xe]=(0,_react.useState)(false);const _e=(0,_index3.useHintsDisabled)();const u=(0,_react.useRef)(new _reactNative.Animated.Value(0)).current;const f=(0,_react.useRef)(new _reactNative.Animated.Value(SCREEN.height)).current;const Ve=(0,_react.useRef)(new _reactNative.Animated.Value(0)).current;const v=(0,_react.useRef)(new _reactNative.Animated.Value(p)).current;const A=(0,_react.useRef)(p);(0,_react.useEffect)(()=>{if(!T||!w||!ye)return;const e=setTimeout(()=>{_modalStorage.ModalStorage.save(w,{mode:r,panelHeight:A.current,dimensions:k,isVisible:s})},500);return()=>clearTimeout(e)},[r,Be,k,s,w,T,ye]);const Te=(0,_react.useRef)(false);(0,_react.useEffect)(()=>{if(a&&!Te.current){Te.current=true;A.current=p;a.setValue(p)}},[a,p]);(0,_react.useEffect)(()=>{h.current=k},[k]);const d=(0,_react.useRef)(new _reactNative.Animated.ValueXY({x:$?.x??0,y:$?.y??(SCREEN.height-FLOATING_HEIGHT)/2})).current;const F=(0,_react.useRef)(new _reactNative.Animated.Value(0)).current;const P=(0,_react.useRef)(new _reactNative.Animated.Value(FLOATING_WIDTH)).current;const G=(0,_react.useRef)(new _reactNative.Animated.Value(FLOATING_HEIGHT)).current;const h=(0,_react.useRef)(k);const Se=(0,_react.useRef)(k);const We=(0,_react.useRef)(0);const Ne=(0,_react.useRef)(0);const Oe=(0,_react.useRef)(0);const Fe=(0,_react.useRef)(0);(0,_react.useEffect)(()=>{let e=true;const o=async()=>{try{const t=_devToolsStorageKeys.devToolsStorageKeys.modal.hintAcknowledged();const H=await _persistentStorage.persistentStorage.getItem(t);if(e){ce(H!=="true");xe(true)}}catch(t){if(e){ce(true);xe(true)}}};o();return()=>{e=false}},[]);const Pe=(0,_react.useCallback)(async()=>{try{const e=_devToolsStorageKeys.devToolsStorageKeys.modal.hintAcknowledged();await _persistentStorage.persistentStorage.setItem(e,"true");ce(false)}catch(e){ce(false)}},[]);const je=(0,_react.useRef)(V);je.current=V;(0,_react.useEffect)(()=>{if(!T||!w){Re(true);return}let e=true;const o=async()=>{const t=await _modalStorage.ModalStorage.load(w);if(e&&t){if(t.mode){ge(t.mode);je.current?.(t.mode)}if(t.panelHeight){me(t.panelHeight);A.current=t.panelHeight;v.setValue(t.panelHeight);a?.setValue(t.panelHeight)}if(t.dimensions){K(t.dimensions);d.setValue({x:t.dimensions.left,y:t.dimensions.top});P.setValue(t.dimensions.width);G.setValue(t.dimensions.height)}}if(e)Re(true)};o();return()=>{e=false}},[w,T,v,G,P,d]);(0,_react.useEffect)(()=>{return()=>{u.stopAnimation();f.stopAnimation();F.stopAnimation();Ve.stopAnimation();v.stopAnimation();d.stopAnimation();P.stopAnimation();G.stopAnimation();u.setValue(0);f.setValue(SCREEN.height);F.setValue(0);Ve.setValue(0);v.setValue(p);A.current=p}},[]);const Ie=u.interpolate({inputRange:[0,1],outputRange:[0,1],extrapolate:"clamp"});const pe=Y||SCREEN.height-j.top;const q=(0,_react.useCallback)(()=>{Q(false);I(false);const e=r==="bottomSheet"?"floating":"bottomSheet";ge(e);V?.(e)},[r,V]);(0,_react.useEffect)(()=>{Q(false);I(false)},[r]);const E=(0,_react.useCallback)(()=>{if(!g)return;const e={mode:r,panelHeight:A.current,floatingPosition:{x:h.current.left,y:h.current.top},floatingDimensions:{width:h.current.width,height:h.current.height}};if(T&&w)void _modalStorage.ModalStorage.saveMinimized(w,e);const o=fe?.x??SCREEN.width-50;const t=fe?.y??SCREEN.height-150;if(r==="bottomSheet"){_reactNative.Animated.parallel([_reactNative.Animated.timing(u,{toValue:0,duration:300,useNativeDriver:true}),_reactNative.Animated.timing(f,{toValue:SCREEN.height,duration:300,useNativeDriver:true})]).start(()=>{g(e)})}else{_reactNative.Animated.parallel([_reactNative.Animated.timing(F,{toValue:0,duration:300,useNativeDriver:true}),_reactNative.Animated.timing(u,{toValue:0,duration:300,useNativeDriver:true}),_reactNative.Animated.timing(d,{toValue:{x:o,y:t},duration:300,useNativeDriver:true})]).start(()=>{g(e)})}},[r,g,fe,T,w,u,f,F,d]);const ve=(0,_react.useRef)(ie);(0,_react.useEffect)(()=>{if(ve.current===ie)return;ve.current=ie;E()},[ie,E]);(0,_react.useEffect)(()=>{if(!l)return;if(l.mode){ge(l.mode);V?.(l.mode)}if(l.panelHeight){me(l.panelHeight);A.current=l.panelHeight;v.setValue(l.panelHeight)}if(l.floatingDimensions&&l.floatingPosition){const e={width:l.floatingDimensions.width,height:l.floatingDimensions.height,top:l.floatingPosition.y,left:l.floatingPosition.x};K(e);d.setValue({x:l.floatingPosition.x,y:l.floatingPosition.y});P.setValue(l.floatingDimensions.width);G.setValue(l.floatingDimensions.height)}},[l]);const Ae=e=>{if(e){if(r==="bottomSheet"){f.setValue(0)}else{F.setValue(1);d.setValue({x:h.current.left,y:h.current.top})}u.setValue(1)}else{if(r==="bottomSheet"){f.setValue(SCREEN.height)}u.setValue(0)}};const De=(0,_react.useRef)(null);if(INSTANT_MODAL_ENTRANCE&&De.current!==s){De.current=s;Ae(s)}(0,_react.useEffect)(()=>{let e=null;let o=null;if(INSTANT_MODAL_ENTRANCE){Ae(s);return}if(s){f.setValue(SCREEN.height);u.setValue(0);if(r==="bottomSheet"){e=_reactNative.Animated.parallel([_reactNative.Animated.spring(f,{toValue:0,tension:180,friction:22,useNativeDriver:true}),_reactNative.Animated.timing(u,{toValue:1,duration:200,useNativeDriver:true})]);e.start()}else{F.setValue(1);d.setValue({x:h.current.left,y:h.current.top});e=_reactNative.Animated.timing(u,{toValue:1,duration:200,useNativeDriver:true});e.start()}}else{if(r==="bottomSheet"){o=_reactNative.Animated.parallel([_reactNative.Animated.spring(f,{toValue:SCREEN.height,tension:180,friction:22,useNativeDriver:true}),_reactNative.Animated.timing(u,{toValue:0,duration:200,useNativeDriver:true})]);o.start()}else{o=_reactNative.Animated.timing(u,{toValue:0,duration:200,useNativeDriver:true});o.start()}}return()=>{if(e){e.stop()}if(o){o.stop()}}},[s,r,u,f,F,d,a]);const ke=(0,_react.useRef)(0);(0,_react.useEffect)(()=>{if(!__DEV__||!b||!s)return void 0;let e=null;let o=null;let t=true;const H=Date.now();let y=false;const M=L=>{y=L;if(b==="resize"||b==="float-resize"){I(L)}else if(b==="float-drag"){Q(L)}};if(b==="mode-cycle"){o=setInterval(()=>q(),2200)}else{const L=W;const he=pe;const ne=()=>{if(!t)return;const Z=(Date.now()-H)/1e3;const i=Z%2.5;if(i<2&&!y)M(true);else if(i>=2&&y)M(false);if(y){const R=(Math.sin(Z*2.2)+1)/2;if(b==="resize"){const c=L+R*(he-L);v.setValue(c);A.current=c;if(a){a.setValue(c)}}else if(b==="float-drag"){const c=(Math.sin(Z*1.7)+1)/2;d.setValue({x:10+R*Math.max(SCREEN.width-FLOATING_WIDTH-20,0),y:70+c*260})}else if(b==="float-resize"){const c=FLOATING_WIDTH+R*Math.max(SCREEN.width-FLOATING_WIDTH-40,0);const S=FLOATING_HEIGHT+R*240;P.setValue(c);G.setValue(S);h.current={...h.current,width:c,height:S}}}e=requestAnimationFrame(ne)};e=requestAnimationFrame(ne)}return()=>{t=false;if(e!=null)cancelAnimationFrame(e);if(o!=null)clearInterval(o);I(false);Q(false)}},[b,s]);const Ge=(0,_react.useMemo)(()=>_reactNative.PanResponder.create({onStartShouldSetPanResponder:()=>r==="bottomSheet",onMoveShouldSetPanResponder:(e,o)=>r==="bottomSheet"&&Math.abs(o.dy)>3,onPanResponderTerminationRequest:()=>false,onPanResponderGrant:e=>{I(true);ke.current=e.nativeEvent.locationY||0;v.stopAnimation(o=>{A.current=o});a?.stopAnimation();f.stopAnimation()},onPanResponderMove:e=>{const o=e.nativeEvent.pageY-ke.current;let t=SCREEN.height-o;t=Math.max(W,Math.min(t,pe));v.setValue(t);A.current=t;if(a){a.setValue(t)}},onPanResponderRelease:(e,o)=>{I(false);const t=A.current;const H=o.vy>.8&&o.dy>50||o.dy>150&&t<=W;if(H){_reactNative.Animated.parallel([_reactNative.Animated.timing(u,{toValue:0,duration:200,useNativeDriver:true}),_reactNative.Animated.spring(f,{toValue:SCREEN.height,tension:180,friction:22,useNativeDriver:true})]).start(()=>n());return}me(t);if(a)a.setValue(t)},onPanResponderTerminate:()=>{I(false)}}),[r,W,pe,v,a,f,u,n]);const ee=(0,_react.useCallback)(e=>{let o=false;return _reactNative.PanResponder.create({onStartShouldSetPanResponder:()=>r==="floating",onMoveShouldSetPanResponder:()=>r==="floating",onPanResponderGrant:()=>{o=false;const t=h.current;d.stopAnimation(({x:H,y})=>{d.setValue({x:H,y})});I(true);Se.current={...t};Oe.current=t.height;Fe.current=t.width;We.current=t.left;Ne.current=t.top},onPanResponderMove:(t,H)=>{const{dx:y,dy:M}=H;if(Math.abs(y)<.5&&Math.abs(M)<.5)return;o=true;const L=Math.max(0,j.left||0);const he=ue.width-Math.max(0,j.right||0);const ne=Math.max(0,j.top||0);const Z=ue.height-Math.max(0,j.bottom||0);const i=Se.current;const R=i.left+i.width;const c=i.top+i.height;let S=i.left;let _=i.top;let re=R;let se=c;switch(e){case"topLeft":{const U=Math.max(L,Math.min(i.left+y,R-FLOATING_MIN_WIDTH));const z=Math.max(ne,Math.min(i.top+M,c-FLOATING_MIN_HEIGHT));S=U;_=z;re=R;se=c;break}case"topRight":{const U=Math.min(he,Math.max(R+y,i.left+FLOATING_MIN_WIDTH));const z=Math.max(ne,Math.min(i.top+M,c-FLOATING_MIN_HEIGHT));S=i.left;_=z;re=U;se=c;break}case"bottomLeft":{const U=Math.max(L,Math.min(i.left+y,R-FLOATING_MIN_WIDTH));const z=Math.min(Z,Math.max(c+M,i.top+FLOATING_MIN_HEIGHT));S=U;_=i.top;re=R;se=z;break}case"bottomRight":{const U=Math.min(he,Math.max(R+y,i.left+FLOATING_MIN_WIDTH));const z=Math.min(Z,Math.max(c+M,i.top+FLOATING_MIN_HEIGHT));S=i.left;_=i.top;re=U;se=z;break}}const be=Math.max(FLOATING_MIN_WIDTH,re-S);const we=Math.max(FLOATING_MIN_HEIGHT,se-_);K({width:be,height:we,left:S,top:_});P.setValue(be);G.setValue(we);d.setValue({x:S,y:_});h.current={width:be,height:we,left:S,top:_}},onPanResponderRelease:()=>{I(false);o=false;K(h.current)},onPanResponderTerminate:()=>{I(false);o=false}})},[r,ue,j.left,j.right,j.top,j.bottom,d,P,G,n,J]);const He=(0,_react.useMemo)(()=>{return{topLeft:ee("topLeft"),topRight:ee("topRight"),bottomLeft:ee("bottomLeft"),bottomRight:ee("bottomRight")}},[ee]);const qe=(0,_react.useCallback)(()=>{Q(true)},[]);const Ue=(0,_react.useCallback)(e=>{Q(false);const o=h.current;const t={...o,left:e.x,top:e.y};K(t)},[]);const Le=(0,_react.useRef)(0);const te=(0,_react.useRef)(0);const oe=(0,_react.useRef)(null);const ze=(0,_react.useCallback)(()=>{const e=Date.now();const o=e-Le.current;if(o>500){te.current=0}te.current++;Le.current=e;if(oe.current){clearTimeout(oe.current)}oe.current=setTimeout(()=>{if(te.current===2){q()}else if(te.current>=3){if(g){E()}}te.current=0},300)},[q,g,E]);(0,_react.useEffect)(()=>{return()=>{if(oe.current){clearTimeout(oe.current)}}},[]);if(r==="floating"){return(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{nativeID:"jsmodal-root",pointerEvents:s?"auto":"none",accessibilityElementsHidden:!s,importantForAccessibility:s?"auto":"no-hide-descendants",style:[styles.floatingModal,{width:k.width,height:k.height,opacity:Ie,transform:[{translateX:d.x},{translateY:d.y}],...ae!==void 0&&{zIndex:ae}},C==="night"&&styles.nightFloatingModal,(de||X)&&styles.floatingModalDragging,m.container,!s&&styles.parkedOffscreen],children:[le&&C==="night"?(0,_jsxRuntime.jsx)(_reactNative.View,{style:styles.nightBackdropFloating,pointerEvents:"none",children:(0,_jsxRuntime.jsx)(_ToolBackground.ToolBackground,{})}):null,(0,_jsxRuntime.jsx)(_index2.DraggableHeader,{position:d,onDragStart:qe,onDragEnd:Ue,onTap:ze,containerBounds:ue,elementSize:k,minPosition:{x:0,y:j.top},style:styles.floatingHeader,enabled:r==="floating"&&!X,children:(0,_jsxRuntime.jsx)(ModalHeader,{header:B,onClose:n,onToggleMode:q,onMinimize:g?E:void 0,isResizing:de||X,mode:r,variant:C})}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:styles.windowControlsContainer,children:(0,_jsxRuntime.jsx)(_index2.WindowControls,{onClose:n,onMinimize:g?E:void 0,onToggleMode:q,mode:r,variant:C})}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[styles.content,C==="night"&&styles.nightContent,m.content],children:[le&&C!=="night"?(0,_jsxRuntime.jsx)(_ToolBackground.ToolBackground,{}):null,Ce?(0,_jsxRuntime.jsx)(_reactNative.View,{style:{flex:1,paddingBottom:D},children:x}):(0,_jsxRuntime.jsx)(_reactNative.ScrollView,{style:{flex:1},contentContainerStyle:{flexGrow:1,paddingBottom:D},showsVerticalScrollIndicator:true,nestedScrollEnabled:true,keyboardShouldPersistTaps:"handled",children:x}),O?(0,_jsxRuntime.jsx)(_reactNative.View,{style:footerStyles.footerContainer,children:O}):null]}),(0,_jsxRuntime.jsx)(_reactNative.View,{...He.bottomLeft.panHandlers,style:[styles.cornerHandleWrapper,{bottom:4,left:4}],hitSlop:{top:2,left:2,right:2,bottom:2},children:(0,_jsxRuntime.jsx)(CornerHandle,{position:"bottomLeft",isActive:de||X})}),(0,_jsxRuntime.jsx)(_reactNative.View,{...He.bottomRight.panHandlers,style:[styles.cornerHandleWrapper,{bottom:4,right:4}],hitSlop:{top:2,left:2,right:2,bottom:2},children:(0,_jsxRuntime.jsx)(CornerHandle,{position:"bottomRight",isActive:de||X})})]})}return(0,_jsxRuntime.jsx)(_reactNative.View,{style:[s?styles.fullScreenContainer:styles.parkedFullScreen,s&&ae!==void 0&&{zIndex:ae}],pointerEvents:s?"box-none":"none",accessibilityElementsHidden:!s,importantForAccessibility:s?"auto":"no-hide-descendants",children:(0,_jsxRuntime.jsx)(_reactNative.Animated.View,{nativeID:"jsmodal-root",style:[styles.bottomSheetWrapper,{opacity:Ie,transform:[{translateY:f}]}],children:(0,_jsxRuntime.jsxs)(_reactNative.Animated.View,{style:[styles.bottomSheet,C==="night"&&styles.nightBottomSheet,m.container,{height:a||v}],children:[le&&C==="night"?(0,_jsxRuntime.jsx)(_reactNative.View,{style:styles.nightBackdropSheet,pointerEvents:"none",children:(0,_jsxRuntime.jsx)(_ToolBackground.ToolBackground,{})}):null,(0,_jsxRuntime.jsx)(ModalHeader,{header:B,onClose:n,onToggleMode:q,onMinimize:g?E:void 0,isResizing:X,mode:r,panHandlers:Ge.panHandlers,variant:C}),(0,_jsxRuntime.jsx)(_reactNative.View,{style:styles.windowControlsContainer,children:(0,_jsxRuntime.jsx)(_index2.WindowControls,{onClose:n,onMinimize:g?E:void 0,onToggleMode:q,mode:r,variant:C})}),Me&&Ee&&r==="bottomSheet"&&!_e&&(0,_jsxRuntime.jsx)(_index2.ModalHintBanner,{onAcknowledge:Pe}),(0,_jsxRuntime.jsxs)(_reactNative.View,{style:[styles.content,C==="night"&&styles.nightContent,m.content],children:[le&&C!=="night"?(0,_jsxRuntime.jsx)(_ToolBackground.ToolBackground,{}):null,Ce?(0,_jsxRuntime.jsx)(_reactNative.View,{style:{flex:1,paddingBottom:D},children:x}):(0,_jsxRuntime.jsx)(_reactNative.ScrollView,{style:{flex:1},contentContainerStyle:{flexGrow:1,paddingBottom:D},showsVerticalScrollIndicator:true,nestedScrollEnabled:true,keyboardShouldPersistTaps:"handled",children:x}),O?(0,_jsxRuntime.jsx)(_reactNative.View,{style:footerStyles.footerContainer,children:O}):null]})]})})})};const styles=_reactNative.StyleSheet.create({fullScreenContainer:{..._absoluteFill.absoluteFill,zIndex:1e3},bottomSheetWrapper:{position:"absolute",bottom:0,left:0,right:0},bottomSheet:{backgroundColor:_index.buoyColors.card,borderTopLeftRadius:6,borderTopRightRadius:6,borderWidth:1,borderColor:_index.buoyColors.border,shadowColor:_index.buoyColors.primary,shadowOffset:{width:0,height:-4},shadowOpacity:.2,shadowRadius:12,elevation:20},parkedOffscreen:{left:-9999,top:-9999,opacity:0},parkedFullScreen:{position:"absolute",left:-9999,top:-9999,width:SCREEN.width,height:SCREEN.height,opacity:0},floatingModal:{position:"absolute",backgroundColor:_index.buoyColors.card,borderRadius:6,borderWidth:1,borderColor:_index.buoyColors.border,shadowColor:_index.buoyColors.primary,shadowOffset:{width:0,height:0},shadowOpacity:.3,shadowRadius:20,elevation:24,zIndex:1e3,width:FLOATING_WIDTH,height:FLOATING_HEIGHT},floatingModalDragging:{borderColor:_index.buoyColors.primary,borderWidth:2,shadowColor:_index.buoyColors.primary+"99",shadowOpacity:.8,shadowRadius:12},header:{borderTopLeftRadius:6,borderTopRightRadius:6,backgroundColor:_index.buoyColors.card,minHeight:56,borderWidth:1,borderColor:_index.buoyColors.border,borderBottomWidth:1,borderBottomColor:_index.buoyColors.border},nightBottomSheet:{backgroundColor:_nightTheme.night.color.bg,borderTopLeftRadius:_nightTheme.night.radius.sheet,borderTopRightRadius:_nightTheme.night.radius.sheet,borderWidth:_reactNative.StyleSheet.hairlineWidth,borderColor:_nightTheme.night.color.accent+"55",shadowColor:_nightTheme.night.color.accent,shadowOffset:{width:0,height:-4},shadowOpacity:.22,shadowRadius:10},nightFloatingModal:{backgroundColor:_nightTheme.night.color.bg,borderRadius:_nightTheme.night.radius.sheet,borderWidth:_reactNative.StyleSheet.hairlineWidth,borderColor:_nightTheme.night.color.accent+"55",shadowColor:_nightTheme.night.color.accent,shadowOffset:{width:0,height:0},shadowOpacity:.22,shadowRadius:14},nightHeader:{backgroundColor:"transparent",borderWidth:0,borderBottomWidth:0,borderTopLeftRadius:_nightTheme.night.radius.sheet,borderTopRightRadius:_nightTheme.night.radius.sheet},nightContent:{backgroundColor:"transparent"},nightBackdropSheet:{..._absoluteFill.absoluteFill,borderTopLeftRadius:_nightTheme.night.radius.sheet,borderTopRightRadius:_nightTheme.night.radius.sheet,overflow:"hidden"},nightBackdropFloating:{..._absoluteFill.absoluteFill,borderRadius:_nightTheme.night.radius.sheet,overflow:"hidden"},nightDragIndicator:{width:36,height:5,borderRadius:2.5,backgroundColor:_nightTheme.night.color.placeholder,shadowOpacity:0,elevation:0},floatingHeader:{borderTopLeftRadius:6,borderTopRightRadius:6},windowControlsContainer:{position:"absolute",top:4,right:4,zIndex:10},floatingModeHeader:{borderTopLeftRadius:6,borderTopRightRadius:6},headerInner:{flex:1,justifyContent:"center"},dragIndicatorContainer:{alignItems:"center",paddingVertical:8,backgroundColor:"transparent"},dragIndicatorContainerCustom:{minHeight:WINDOW_CONTROLS_BAND,justifyContent:"center",paddingVertical:0,backgroundColor:"transparent"},dragIndicator:{width:40,height:3,backgroundColor:_index.buoyColors.primary,borderRadius:2,shadowColor:_index.buoyColors.primary,shadowOffset:{width:0,height:0},shadowOpacity:.6,shadowRadius:4},floatingDragIndicator:{width:50,height:5,backgroundColor:_index.buoyColors.textMuted},dragIndicatorActive:{backgroundColor:_index.buoyColors.primary,width:40},resizeGripContainer:{position:"absolute",flexDirection:"row",gap:2,marginTop:12},resizeGripLine:{width:12,height:1,backgroundColor:_index.gameUIColors.success,opacity:.6},headerContent:{paddingHorizontal:16,alignItems:"center"},headerControls:{position:"absolute",top:8,right:16,flexDirection:"row",alignItems:"center"},headerTitle:{fontSize:16,fontWeight:"600",color:_index.gameUIColors.primary},headerSubtitle:{fontSize:12,color:_index.gameUIColors.secondary,paddingTop:4},headerHintText:{position:"absolute",top:0,left:0,right:0,bottom:0,justifyContent:"center",alignItems:"center"},hintText:{fontSize:10,color:_index.gameUIColors.muted,fontStyle:"italic"},controlButton:{width:28,height:28,borderRadius:6,justifyContent:"center",alignItems:"center",marginLeft:8},toggleButton:{backgroundColor:_index.gameUIColors.info+"1A",borderWidth:1,borderColor:_index.gameUIColors.info+"33"},closeButton:{width:28,height:28,borderRadius:6,justifyContent:"center",alignItems:"center",backgroundColor:_index.gameUIColors.error+"1A",borderWidth:1,borderColor:_index.gameUIColors.error+"33",marginLeft:8},iconLine:{position:"absolute",top:7.25,left:2,width:12,height:1.5,backgroundColor:_index.gameUIColors.error},content:{flex:1,backgroundColor:_index.buoyColors.base,borderBottomLeftRadius:16,borderBottomRightRadius:16,overflow:"hidden"},cornerHandle:{position:"absolute",zIndex:1},cornerHandleWrapper:{position:"absolute",width:30,height:30,zIndex:1e3},handler:{width:20,height:20,backgroundColor:"transparent",borderRadius:10,borderWidth:0,borderColor:"transparent"},handlerActive:{backgroundColor:_index.gameUIColors.success+"1A",borderColor:_index.gameUIColors.success,borderWidth:2,shadowColor:_index.gameUIColors.success+"99",shadowOffset:{width:0,height:0},shadowOpacity:1,shadowRadius:8}});const footerStyles=_reactNative.StyleSheet.create({footerContainer:{position:"absolute",left:0,right:0,bottom:0,backgroundColor:_index.buoyColors.base,borderBottomLeftRadius:16,borderBottomRightRadius:16}});const JsModal=exports.JsModal=(0,_react.memo)(s=>{const n=(0,_licenseModule.getUseAccountAccess)()();if(n.status!=="admitted")return s.visible?(0,_jsxRuntime.jsx)(_AccountSetup.AccountSetup,{}):null;return(0,_jsxRuntime.jsx)(JsModalComponent,{...s})});