@buoy-gg/shared-ui 1.7.2

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 (820) hide show
  1. package/README.md +34 -0
  2. package/lib/commonjs/JsModal.js +1473 -0
  3. package/lib/commonjs/clipboard/autoDetectClipboard.js +67 -0
  4. package/lib/commonjs/clipboard/clipboard-impl.js +26 -0
  5. package/lib/commonjs/clipboard/copyToClipboard.js +66 -0
  6. package/lib/commonjs/clipboard/index.js +25 -0
  7. package/lib/commonjs/context/HintsContext.js +49 -0
  8. package/lib/commonjs/context/index.js +24 -0
  9. package/lib/commonjs/dataViewer/CyberpunkInput.js +382 -0
  10. package/lib/commonjs/dataViewer/DataViewer.js +142 -0
  11. package/lib/commonjs/dataViewer/DiffSummary.js +133 -0
  12. package/lib/commonjs/dataViewer/IndentGuides.js +128 -0
  13. package/lib/commonjs/dataViewer/IndentGuidesOverlay.js +104 -0
  14. package/lib/commonjs/dataViewer/SplitDiffViewer.js +420 -0
  15. package/lib/commonjs/dataViewer/TypeLegend.js +111 -0
  16. package/lib/commonjs/dataViewer/VirtualizedDataExplorer.js +1057 -0
  17. package/lib/commonjs/dataViewer/diffThemes.js +108 -0
  18. package/lib/commonjs/dataViewer/index.js +101 -0
  19. package/lib/commonjs/dataViewer/lineDiff.js +366 -0
  20. package/lib/commonjs/dataViewer/tree/TreeDiffViewer.js +887 -0
  21. package/lib/commonjs/env/EnvironmentIndicator.js +121 -0
  22. package/lib/commonjs/env/EnvironmentSelector.js +204 -0
  23. package/lib/commonjs/env/EnvironmentSelectorInline.js +298 -0
  24. package/lib/commonjs/hooks/index.js +44 -0
  25. package/lib/commonjs/hooks/safe-area-impl.js +28 -0
  26. package/lib/commonjs/hooks/useDeviceInfo.js +524 -0
  27. package/lib/commonjs/hooks/useFilterManager.js +136 -0
  28. package/lib/commonjs/hooks/useSafeAreaInsets.js +256 -0
  29. package/lib/commonjs/icons/BenchmarkIcon.js +109 -0
  30. package/lib/commonjs/icons/EnvLaptopIcon.js +204 -0
  31. package/lib/commonjs/icons/IconBackground.js +279 -0
  32. package/lib/commonjs/icons/ReactQueryIcon.js +169 -0
  33. package/lib/commonjs/icons/RenderCountIcon.js +147 -0
  34. package/lib/commonjs/icons/RouteMapIcon.js +250 -0
  35. package/lib/commonjs/icons/SentryBugIcon.js +181 -0
  36. package/lib/commonjs/icons/StackPulseIcon.js +158 -0
  37. package/lib/commonjs/icons/StorageStackIcon.js +156 -0
  38. package/lib/commonjs/icons/WifiCircuitIcon.js +169 -0
  39. package/lib/commonjs/icons/index.js +175 -0
  40. package/lib/commonjs/icons/lucide-icons-original-full.js +3244 -0
  41. package/lib/commonjs/icons/lucide-icons.js +2252 -0
  42. package/lib/commonjs/icons/primitives/GlobeIcon.js +66 -0
  43. package/lib/commonjs/icons/primitives/icon-primitives.js +169 -0
  44. package/lib/commonjs/icons/primitives/index.js +49 -0
  45. package/lib/commonjs/index.js +485 -0
  46. package/lib/commonjs/license/FeatureGate.js +764 -0
  47. package/lib/commonjs/license/LicenseEntryModal.js +950 -0
  48. package/lib/commonjs/license/ManageDevicesModal.js +545 -0
  49. package/lib/commonjs/license/index.js +62 -0
  50. package/lib/commonjs/logger/index-sentry.js +245 -0
  51. package/lib/commonjs/logger/index.js +62 -0
  52. package/lib/commonjs/logger/logDump.js +19 -0
  53. package/lib/commonjs/logger/types.js +38 -0
  54. package/lib/commonjs/package.json +1 -0
  55. package/lib/commonjs/settings/components/BubbleSettingsSection.js +382 -0
  56. package/lib/commonjs/settings/index.js +24 -0
  57. package/lib/commonjs/storage/devToolsStorageKeys.js +235 -0
  58. package/lib/commonjs/storage/index.js +18 -0
  59. package/lib/commonjs/types/index.js +16 -0
  60. package/lib/commonjs/types/types.d.js +1 -0
  61. package/lib/commonjs/types/types.js +12 -0
  62. package/lib/commonjs/ui/components/BackButton.js +47 -0
  63. package/lib/commonjs/ui/components/Badge.js +221 -0
  64. package/lib/commonjs/ui/components/ClipboardHintBanner.js +149 -0
  65. package/lib/commonjs/ui/components/CollapsibleSection.js +170 -0
  66. package/lib/commonjs/ui/components/CompactFilterChips.js +114 -0
  67. package/lib/commonjs/ui/components/CompactRow.js +230 -0
  68. package/lib/commonjs/ui/components/CopyButton.js +256 -0
  69. package/lib/commonjs/ui/components/DataInspector.js +322 -0
  70. package/lib/commonjs/ui/components/DetailView.js +357 -0
  71. package/lib/commonjs/ui/components/Divider.js +18 -0
  72. package/lib/commonjs/ui/components/DraggableHeader.js +144 -0
  73. package/lib/commonjs/ui/components/DynamicFilterView.js +725 -0
  74. package/lib/commonjs/ui/components/EmptyState.js +136 -0
  75. package/lib/commonjs/ui/components/ErrorBoundary.js +112 -0
  76. package/lib/commonjs/ui/components/EventHistoryViewer/CompareBar.js +210 -0
  77. package/lib/commonjs/ui/components/EventHistoryViewer/DiffModeTabs.js +90 -0
  78. package/lib/commonjs/ui/components/EventHistoryViewer/EventHistoryViewer.js +130 -0
  79. package/lib/commonjs/ui/components/EventHistoryViewer/EventPickerModal.js +206 -0
  80. package/lib/commonjs/ui/components/EventHistoryViewer/ViewToggleCards.js +137 -0
  81. package/lib/commonjs/ui/components/EventHistoryViewer/index.js +40 -0
  82. package/lib/commonjs/ui/components/EventHistoryViewer/types.js +5 -0
  83. package/lib/commonjs/ui/components/EventListItem.js +247 -0
  84. package/lib/commonjs/ui/components/EventStepperFooter.js +148 -0
  85. package/lib/commonjs/ui/components/ExpandablePopover.js +341 -0
  86. package/lib/commonjs/ui/components/ExpandableSection.js +71 -0
  87. package/lib/commonjs/ui/components/ExpandableSectionHeader.js +86 -0
  88. package/lib/commonjs/ui/components/ExpandableSectionWithModal.js +182 -0
  89. package/lib/commonjs/ui/components/FilterComponents.js +267 -0
  90. package/lib/commonjs/ui/components/FilterViewPattern.js +174 -0
  91. package/lib/commonjs/ui/components/HeaderSearchButton.js +32 -0
  92. package/lib/commonjs/ui/components/ListItem.js +171 -0
  93. package/lib/commonjs/ui/components/ModalHeader.js +173 -0
  94. package/lib/commonjs/ui/components/ModalHintBanner.js +147 -0
  95. package/lib/commonjs/ui/components/SearchBar.js +264 -0
  96. package/lib/commonjs/ui/components/SectionHeader.js +125 -0
  97. package/lib/commonjs/ui/components/StatsCard.js +198 -0
  98. package/lib/commonjs/ui/components/StatusIndicator.js +231 -0
  99. package/lib/commonjs/ui/components/StorageTypeBadge.js +96 -0
  100. package/lib/commonjs/ui/components/TabSelector.js +70 -0
  101. package/lib/commonjs/ui/components/TimeDisplay.js +142 -0
  102. package/lib/commonjs/ui/components/TypeBadge.js +100 -0
  103. package/lib/commonjs/ui/components/ValueTypeBadge.js +146 -0
  104. package/lib/commonjs/ui/components/WindowControls.js +118 -0
  105. package/lib/commonjs/ui/components/index.js +323 -0
  106. package/lib/commonjs/ui/components/types.js +5 -0
  107. package/lib/commonjs/ui/console/BubbleSettingsModal.js +50 -0
  108. package/lib/commonjs/ui/console/ConsoleSection.js +50 -0
  109. package/lib/commonjs/ui/console/CyberpunkButtonOutline.js +261 -0
  110. package/lib/commonjs/ui/console/CyberpunkConsoleSection.js +649 -0
  111. package/lib/commonjs/ui/console/CyberpunkIconContainer.js +186 -0
  112. package/lib/commonjs/ui/console/CyberpunkSectionButton.js +122 -0
  113. package/lib/commonjs/ui/console/GalaxyButton.js +99 -0
  114. package/lib/commonjs/ui/console/index.js +12 -0
  115. package/lib/commonjs/ui/gameUI/components/GameUICollapsibleSection.js +120 -0
  116. package/lib/commonjs/ui/gameUI/components/GameUICompactStats.js +335 -0
  117. package/lib/commonjs/ui/gameUI/components/GameUIIssuesList.js +283 -0
  118. package/lib/commonjs/ui/gameUI/components/GameUIStatusHeader.js +143 -0
  119. package/lib/commonjs/ui/gameUI/constants/gameUIColors.js +186 -0
  120. package/lib/commonjs/ui/gameUI/constants/macOSDesignSystemColors.js +206 -0
  121. package/lib/commonjs/ui/gameUI/hooks/useGameUIAlertState.js +110 -0
  122. package/lib/commonjs/ui/gameUI/index.js +72 -0
  123. package/lib/commonjs/ui/index.js +39 -0
  124. package/lib/commonjs/utils/displayValue.js +41 -0
  125. package/lib/commonjs/utils/formatting/dataFormatting.js +73 -0
  126. package/lib/commonjs/utils/formatting/httpFormatting.js +153 -0
  127. package/lib/commonjs/utils/formatting/index.js +27 -0
  128. package/lib/commonjs/utils/getSafeAreaInsets.js +40 -0
  129. package/lib/commonjs/utils/index.js +175 -0
  130. package/lib/commonjs/utils/loadOptionalModule.js +94 -0
  131. package/lib/commonjs/utils/minimalSuperJSON.js +337 -0
  132. package/lib/commonjs/utils/persistentStorage.js +594 -0
  133. package/lib/commonjs/utils/safeAsyncStorage.js +71 -0
  134. package/lib/commonjs/utils/safeStringify.js +229 -0
  135. package/lib/commonjs/utils/time/formatRelativeTime.js +34 -0
  136. package/lib/commonjs/utils/time/index.js +12 -0
  137. package/lib/commonjs/utils/typeHelpers.js +142 -0
  138. package/lib/commonjs/utils/valueFormatting.js +140 -0
  139. package/lib/module/JsModal.js +1469 -0
  140. package/lib/module/clipboard/autoDetectClipboard.js +45 -0
  141. package/lib/module/clipboard/clipboard-impl.js +20 -0
  142. package/lib/module/clipboard/copyToClipboard.js +62 -0
  143. package/lib/module/clipboard/index.js +5 -0
  144. package/lib/module/context/HintsContext.js +43 -0
  145. package/lib/module/context/index.js +3 -0
  146. package/lib/module/dataViewer/CyberpunkInput.js +378 -0
  147. package/lib/module/dataViewer/DataViewer.js +137 -0
  148. package/lib/module/dataViewer/DiffSummary.js +128 -0
  149. package/lib/module/dataViewer/IndentGuides.js +124 -0
  150. package/lib/module/dataViewer/IndentGuidesOverlay.js +99 -0
  151. package/lib/module/dataViewer/SplitDiffViewer.js +415 -0
  152. package/lib/module/dataViewer/TypeLegend.js +105 -0
  153. package/lib/module/dataViewer/VirtualizedDataExplorer.js +1053 -0
  154. package/lib/module/dataViewer/diffThemes.js +104 -0
  155. package/lib/module/dataViewer/index.js +17 -0
  156. package/lib/module/dataViewer/lineDiff.js +362 -0
  157. package/lib/module/dataViewer/tree/TreeDiffViewer.js +882 -0
  158. package/lib/module/env/EnvironmentIndicator.js +117 -0
  159. package/lib/module/env/EnvironmentSelector.js +199 -0
  160. package/lib/module/env/EnvironmentSelectorInline.js +293 -0
  161. package/lib/module/hooks/index.js +6 -0
  162. package/lib/module/hooks/safe-area-impl.js +23 -0
  163. package/lib/module/hooks/useDeviceInfo.js +519 -0
  164. package/lib/module/hooks/useFilterManager.js +132 -0
  165. package/lib/module/hooks/useSafeAreaInsets.js +250 -0
  166. package/lib/module/icons/BenchmarkIcon.js +104 -0
  167. package/lib/module/icons/EnvLaptopIcon.js +199 -0
  168. package/lib/module/icons/IconBackground.js +274 -0
  169. package/lib/module/icons/ReactQueryIcon.js +164 -0
  170. package/lib/module/icons/RenderCountIcon.js +142 -0
  171. package/lib/module/icons/RouteMapIcon.js +245 -0
  172. package/lib/module/icons/SentryBugIcon.js +176 -0
  173. package/lib/module/icons/StackPulseIcon.js +153 -0
  174. package/lib/module/icons/StorageStackIcon.js +151 -0
  175. package/lib/module/icons/WifiCircuitIcon.js +164 -0
  176. package/lib/module/icons/index.js +23 -0
  177. package/lib/module/icons/lucide-icons-original-full.js +3174 -0
  178. package/lib/module/icons/lucide-icons.js +2199 -0
  179. package/lib/module/icons/primitives/GlobeIcon.js +61 -0
  180. package/lib/module/icons/primitives/icon-primitives.js +161 -0
  181. package/lib/module/icons/primitives/index.js +15 -0
  182. package/lib/module/index.js +58 -0
  183. package/lib/module/license/FeatureGate.js +754 -0
  184. package/lib/module/license/LicenseEntryModal.js +944 -0
  185. package/lib/module/license/ManageDevicesModal.js +539 -0
  186. package/lib/module/license/index.js +5 -0
  187. package/lib/module/logger/index-sentry.js +230 -0
  188. package/lib/module/logger/index.js +13 -0
  189. package/lib/module/logger/logDump.js +13 -0
  190. package/lib/module/logger/types.js +37 -0
  191. package/lib/module/package.json +1 -0
  192. package/lib/module/settings/components/BubbleSettingsSection.js +376 -0
  193. package/lib/module/settings/index.js +3 -0
  194. package/lib/module/storage/devToolsStorageKeys.js +228 -0
  195. package/lib/module/storage/index.js +3 -0
  196. package/lib/module/types/index.js +3 -0
  197. package/lib/module/types/types.d.js +1 -0
  198. package/lib/module/types/types.js +8 -0
  199. package/lib/module/ui/components/BackButton.js +43 -0
  200. package/lib/module/ui/components/Badge.js +213 -0
  201. package/lib/module/ui/components/ClipboardHintBanner.js +145 -0
  202. package/lib/module/ui/components/CollapsibleSection.js +166 -0
  203. package/lib/module/ui/components/CompactFilterChips.js +110 -0
  204. package/lib/module/ui/components/CompactRow.js +226 -0
  205. package/lib/module/ui/components/CopyButton.js +253 -0
  206. package/lib/module/ui/components/DataInspector.js +318 -0
  207. package/lib/module/ui/components/DetailView.js +353 -0
  208. package/lib/module/ui/components/Divider.js +14 -0
  209. package/lib/module/ui/components/DraggableHeader.js +140 -0
  210. package/lib/module/ui/components/DynamicFilterView.js +721 -0
  211. package/lib/module/ui/components/EmptyState.js +129 -0
  212. package/lib/module/ui/components/ErrorBoundary.js +107 -0
  213. package/lib/module/ui/components/EventHistoryViewer/CompareBar.js +205 -0
  214. package/lib/module/ui/components/EventHistoryViewer/DiffModeTabs.js +85 -0
  215. package/lib/module/ui/components/EventHistoryViewer/EventHistoryViewer.js +125 -0
  216. package/lib/module/ui/components/EventHistoryViewer/EventPickerModal.js +201 -0
  217. package/lib/module/ui/components/EventHistoryViewer/ViewToggleCards.js +132 -0
  218. package/lib/module/ui/components/EventHistoryViewer/index.js +19 -0
  219. package/lib/module/ui/components/EventHistoryViewer/types.js +3 -0
  220. package/lib/module/ui/components/EventListItem.js +243 -0
  221. package/lib/module/ui/components/EventStepperFooter.js +143 -0
  222. package/lib/module/ui/components/ExpandablePopover.js +338 -0
  223. package/lib/module/ui/components/ExpandableSection.js +67 -0
  224. package/lib/module/ui/components/ExpandableSectionHeader.js +82 -0
  225. package/lib/module/ui/components/ExpandableSectionWithModal.js +178 -0
  226. package/lib/module/ui/components/FilterComponents.js +259 -0
  227. package/lib/module/ui/components/FilterViewPattern.js +170 -0
  228. package/lib/module/ui/components/HeaderSearchButton.js +28 -0
  229. package/lib/module/ui/components/ListItem.js +167 -0
  230. package/lib/module/ui/components/ModalHeader.js +166 -0
  231. package/lib/module/ui/components/ModalHintBanner.js +143 -0
  232. package/lib/module/ui/components/SearchBar.js +260 -0
  233. package/lib/module/ui/components/SectionHeader.js +121 -0
  234. package/lib/module/ui/components/StatsCard.js +194 -0
  235. package/lib/module/ui/components/StatusIndicator.js +227 -0
  236. package/lib/module/ui/components/StorageTypeBadge.js +92 -0
  237. package/lib/module/ui/components/TabSelector.js +66 -0
  238. package/lib/module/ui/components/TimeDisplay.js +138 -0
  239. package/lib/module/ui/components/TypeBadge.js +96 -0
  240. package/lib/module/ui/components/ValueTypeBadge.js +142 -0
  241. package/lib/module/ui/components/WindowControls.js +114 -0
  242. package/lib/module/ui/components/index.js +33 -0
  243. package/lib/module/ui/components/types.js +3 -0
  244. package/lib/module/ui/console/BubbleSettingsModal.js +46 -0
  245. package/lib/module/ui/console/ConsoleSection.js +46 -0
  246. package/lib/module/ui/console/CyberpunkButtonOutline.js +257 -0
  247. package/lib/module/ui/console/CyberpunkConsoleSection.js +646 -0
  248. package/lib/module/ui/console/CyberpunkIconContainer.js +182 -0
  249. package/lib/module/ui/console/CyberpunkSectionButton.js +118 -0
  250. package/lib/module/ui/console/GalaxyButton.js +95 -0
  251. package/lib/module/ui/console/index.js +5 -0
  252. package/lib/module/ui/gameUI/components/GameUICollapsibleSection.js +116 -0
  253. package/lib/module/ui/gameUI/components/GameUICompactStats.js +331 -0
  254. package/lib/module/ui/gameUI/components/GameUIIssuesList.js +279 -0
  255. package/lib/module/ui/gameUI/components/GameUIStatusHeader.js +139 -0
  256. package/lib/module/ui/gameUI/constants/gameUIColors.js +183 -0
  257. package/lib/module/ui/gameUI/constants/macOSDesignSystemColors.js +202 -0
  258. package/lib/module/ui/gameUI/hooks/useGameUIAlertState.js +105 -0
  259. package/lib/module/ui/gameUI/index.js +19 -0
  260. package/lib/module/ui/index.js +12 -0
  261. package/lib/module/utils/displayValue.js +36 -0
  262. package/lib/module/utils/formatting/dataFormatting.js +66 -0
  263. package/lib/module/utils/formatting/httpFormatting.js +148 -0
  264. package/lib/module/utils/formatting/index.js +8 -0
  265. package/lib/module/utils/getSafeAreaInsets.js +36 -0
  266. package/lib/module/utils/index.js +10 -0
  267. package/lib/module/utils/loadOptionalModule.js +89 -0
  268. package/lib/module/utils/minimalSuperJSON.js +332 -0
  269. package/lib/module/utils/persistentStorage.js +588 -0
  270. package/lib/module/utils/safeAsyncStorage.js +64 -0
  271. package/lib/module/utils/safeStringify.js +225 -0
  272. package/lib/module/utils/time/formatRelativeTime.js +30 -0
  273. package/lib/module/utils/time/index.js +3 -0
  274. package/lib/module/utils/typeHelpers.js +130 -0
  275. package/lib/module/utils/valueFormatting.js +131 -0
  276. package/lib/typescript/commonjs/JsModal.d.ts +78 -0
  277. package/lib/typescript/commonjs/JsModal.d.ts.map +1 -0
  278. package/lib/typescript/commonjs/clipboard/autoDetectClipboard.d.ts +31 -0
  279. package/lib/typescript/commonjs/clipboard/autoDetectClipboard.d.ts.map +1 -0
  280. package/lib/typescript/commonjs/clipboard/clipboard-impl.d.ts +16 -0
  281. package/lib/typescript/commonjs/clipboard/clipboard-impl.d.ts.map +1 -0
  282. package/lib/typescript/commonjs/clipboard/copyToClipboard.d.ts +11 -0
  283. package/lib/typescript/commonjs/clipboard/copyToClipboard.d.ts.map +1 -0
  284. package/lib/typescript/commonjs/clipboard/index.d.ts +4 -0
  285. package/lib/typescript/commonjs/clipboard/index.d.ts.map +1 -0
  286. package/lib/typescript/commonjs/context/HintsContext.d.ts +30 -0
  287. package/lib/typescript/commonjs/context/HintsContext.d.ts.map +1 -0
  288. package/lib/typescript/commonjs/context/index.d.ts +2 -0
  289. package/lib/typescript/commonjs/context/index.d.ts.map +1 -0
  290. package/lib/typescript/commonjs/dataViewer/CyberpunkInput.d.ts +13 -0
  291. package/lib/typescript/commonjs/dataViewer/CyberpunkInput.d.ts.map +1 -0
  292. package/lib/typescript/commonjs/dataViewer/DataViewer.d.ts +24 -0
  293. package/lib/typescript/commonjs/dataViewer/DataViewer.d.ts.map +1 -0
  294. package/lib/typescript/commonjs/dataViewer/DiffSummary.d.ts +26 -0
  295. package/lib/typescript/commonjs/dataViewer/DiffSummary.d.ts.map +1 -0
  296. package/lib/typescript/commonjs/dataViewer/IndentGuides.d.ts +16 -0
  297. package/lib/typescript/commonjs/dataViewer/IndentGuides.d.ts.map +1 -0
  298. package/lib/typescript/commonjs/dataViewer/IndentGuidesOverlay.d.ts +19 -0
  299. package/lib/typescript/commonjs/dataViewer/IndentGuidesOverlay.d.ts.map +1 -0
  300. package/lib/typescript/commonjs/dataViewer/SplitDiffViewer.d.ts +40 -0
  301. package/lib/typescript/commonjs/dataViewer/SplitDiffViewer.d.ts.map +1 -0
  302. package/lib/typescript/commonjs/dataViewer/TypeLegend.d.ts +18 -0
  303. package/lib/typescript/commonjs/dataViewer/TypeLegend.d.ts.map +1 -0
  304. package/lib/typescript/commonjs/dataViewer/VirtualizedDataExplorer.d.ts +14 -0
  305. package/lib/typescript/commonjs/dataViewer/VirtualizedDataExplorer.d.ts.map +1 -0
  306. package/lib/typescript/commonjs/dataViewer/diffThemes.d.ts +62 -0
  307. package/lib/typescript/commonjs/dataViewer/diffThemes.d.ts.map +1 -0
  308. package/lib/typescript/commonjs/dataViewer/index.d.ts +14 -0
  309. package/lib/typescript/commonjs/dataViewer/index.d.ts.map +1 -0
  310. package/lib/typescript/commonjs/dataViewer/lineDiff.d.ts +36 -0
  311. package/lib/typescript/commonjs/dataViewer/lineDiff.d.ts.map +1 -0
  312. package/lib/typescript/commonjs/dataViewer/tree/TreeDiffViewer.d.ts +24 -0
  313. package/lib/typescript/commonjs/dataViewer/tree/TreeDiffViewer.d.ts.map +1 -0
  314. package/lib/typescript/commonjs/env/EnvironmentIndicator.d.ts +12 -0
  315. package/lib/typescript/commonjs/env/EnvironmentIndicator.d.ts.map +1 -0
  316. package/lib/typescript/commonjs/env/EnvironmentSelector.d.ts +18 -0
  317. package/lib/typescript/commonjs/env/EnvironmentSelector.d.ts.map +1 -0
  318. package/lib/typescript/commonjs/env/EnvironmentSelectorInline.d.ts +12 -0
  319. package/lib/typescript/commonjs/env/EnvironmentSelectorInline.d.ts.map +1 -0
  320. package/lib/typescript/commonjs/hooks/index.d.ts +5 -0
  321. package/lib/typescript/commonjs/hooks/index.d.ts.map +1 -0
  322. package/lib/typescript/commonjs/hooks/safe-area-impl.d.ts +24 -0
  323. package/lib/typescript/commonjs/hooks/safe-area-impl.d.ts.map +1 -0
  324. package/lib/typescript/commonjs/hooks/useDeviceInfo.d.ts +125 -0
  325. package/lib/typescript/commonjs/hooks/useDeviceInfo.d.ts.map +1 -0
  326. package/lib/typescript/commonjs/hooks/useFilterManager.d.ts +59 -0
  327. package/lib/typescript/commonjs/hooks/useFilterManager.d.ts.map +1 -0
  328. package/lib/typescript/commonjs/hooks/useSafeAreaInsets.d.ts +113 -0
  329. package/lib/typescript/commonjs/hooks/useSafeAreaInsets.d.ts.map +1 -0
  330. package/lib/typescript/commonjs/icons/BenchmarkIcon.d.ts +14 -0
  331. package/lib/typescript/commonjs/icons/BenchmarkIcon.d.ts.map +1 -0
  332. package/lib/typescript/commonjs/icons/EnvLaptopIcon.d.ts +14 -0
  333. package/lib/typescript/commonjs/icons/EnvLaptopIcon.d.ts.map +1 -0
  334. package/lib/typescript/commonjs/icons/IconBackground.d.ts +10 -0
  335. package/lib/typescript/commonjs/icons/IconBackground.d.ts.map +1 -0
  336. package/lib/typescript/commonjs/icons/ReactQueryIcon.d.ts +12 -0
  337. package/lib/typescript/commonjs/icons/ReactQueryIcon.d.ts.map +1 -0
  338. package/lib/typescript/commonjs/icons/RenderCountIcon.d.ts +14 -0
  339. package/lib/typescript/commonjs/icons/RenderCountIcon.d.ts.map +1 -0
  340. package/lib/typescript/commonjs/icons/RouteMapIcon.d.ts +14 -0
  341. package/lib/typescript/commonjs/icons/RouteMapIcon.d.ts.map +1 -0
  342. package/lib/typescript/commonjs/icons/SentryBugIcon.d.ts +12 -0
  343. package/lib/typescript/commonjs/icons/SentryBugIcon.d.ts.map +1 -0
  344. package/lib/typescript/commonjs/icons/StackPulseIcon.d.ts +11 -0
  345. package/lib/typescript/commonjs/icons/StackPulseIcon.d.ts.map +1 -0
  346. package/lib/typescript/commonjs/icons/StorageStackIcon.d.ts +12 -0
  347. package/lib/typescript/commonjs/icons/StorageStackIcon.d.ts.map +1 -0
  348. package/lib/typescript/commonjs/icons/WifiCircuitIcon.d.ts +15 -0
  349. package/lib/typescript/commonjs/icons/WifiCircuitIcon.d.ts.map +1 -0
  350. package/lib/typescript/commonjs/icons/index.d.ts +15 -0
  351. package/lib/typescript/commonjs/icons/index.d.ts.map +1 -0
  352. package/lib/typescript/commonjs/icons/lucide-icons-original-full.d.ts +148 -0
  353. package/lib/typescript/commonjs/icons/lucide-icons-original-full.d.ts.map +1 -0
  354. package/lib/typescript/commonjs/icons/lucide-icons.d.ts +170 -0
  355. package/lib/typescript/commonjs/icons/lucide-icons.d.ts.map +1 -0
  356. package/lib/typescript/commonjs/icons/primitives/GlobeIcon.d.ts +15 -0
  357. package/lib/typescript/commonjs/icons/primitives/GlobeIcon.d.ts.map +1 -0
  358. package/lib/typescript/commonjs/icons/primitives/icon-primitives.d.ts +92 -0
  359. package/lib/typescript/commonjs/icons/primitives/icon-primitives.d.ts.map +1 -0
  360. package/lib/typescript/commonjs/icons/primitives/index.d.ts +9 -0
  361. package/lib/typescript/commonjs/icons/primitives/index.d.ts.map +1 -0
  362. package/lib/typescript/commonjs/index.d.ts +28 -0
  363. package/lib/typescript/commonjs/index.d.ts.map +1 -0
  364. package/lib/typescript/commonjs/license/FeatureGate.d.ts +123 -0
  365. package/lib/typescript/commonjs/license/FeatureGate.d.ts.map +1 -0
  366. package/lib/typescript/commonjs/license/LicenseEntryModal.d.ts +69 -0
  367. package/lib/typescript/commonjs/license/LicenseEntryModal.d.ts.map +1 -0
  368. package/lib/typescript/commonjs/license/ManageDevicesModal.d.ts +23 -0
  369. package/lib/typescript/commonjs/license/ManageDevicesModal.d.ts.map +1 -0
  370. package/lib/typescript/commonjs/license/index.d.ts +7 -0
  371. package/lib/typescript/commonjs/license/index.d.ts.map +1 -0
  372. package/lib/typescript/commonjs/logger/index-sentry.d.ts +68 -0
  373. package/lib/typescript/commonjs/logger/index-sentry.d.ts.map +1 -0
  374. package/lib/typescript/commonjs/logger/index.d.ts +5 -0
  375. package/lib/typescript/commonjs/logger/index.d.ts.map +1 -0
  376. package/lib/typescript/commonjs/logger/logDump.d.ts +5 -0
  377. package/lib/typescript/commonjs/logger/logDump.d.ts.map +1 -0
  378. package/lib/typescript/commonjs/logger/types.d.ts +100 -0
  379. package/lib/typescript/commonjs/logger/types.d.ts.map +1 -0
  380. package/lib/typescript/commonjs/package.json +1 -0
  381. package/lib/typescript/commonjs/settings/components/BubbleSettingsSection.d.ts +19 -0
  382. package/lib/typescript/commonjs/settings/components/BubbleSettingsSection.d.ts.map +1 -0
  383. package/lib/typescript/commonjs/settings/index.d.ts +2 -0
  384. package/lib/typescript/commonjs/settings/index.d.ts.map +1 -0
  385. package/lib/typescript/commonjs/storage/devToolsStorageKeys.d.ts +173 -0
  386. package/lib/typescript/commonjs/storage/devToolsStorageKeys.d.ts.map +1 -0
  387. package/lib/typescript/commonjs/storage/index.d.ts +2 -0
  388. package/lib/typescript/commonjs/storage/index.d.ts.map +1 -0
  389. package/lib/typescript/commonjs/types/index.d.ts +2 -0
  390. package/lib/typescript/commonjs/types/index.d.ts.map +1 -0
  391. package/lib/typescript/commonjs/types/types.d.ts +8 -0
  392. package/lib/typescript/commonjs/types/types.d.ts.map +1 -0
  393. package/lib/typescript/commonjs/ui/components/BackButton.d.ts +10 -0
  394. package/lib/typescript/commonjs/ui/components/BackButton.d.ts.map +1 -0
  395. package/lib/typescript/commonjs/ui/components/Badge.d.ts +41 -0
  396. package/lib/typescript/commonjs/ui/components/Badge.d.ts.map +1 -0
  397. package/lib/typescript/commonjs/ui/components/ClipboardHintBanner.d.ts +17 -0
  398. package/lib/typescript/commonjs/ui/components/ClipboardHintBanner.d.ts.map +1 -0
  399. package/lib/typescript/commonjs/ui/components/CollapsibleSection.d.ts +35 -0
  400. package/lib/typescript/commonjs/ui/components/CollapsibleSection.d.ts.map +1 -0
  401. package/lib/typescript/commonjs/ui/components/CompactFilterChips.d.ts +23 -0
  402. package/lib/typescript/commonjs/ui/components/CompactFilterChips.d.ts.map +1 -0
  403. package/lib/typescript/commonjs/ui/components/CompactRow.d.ts +21 -0
  404. package/lib/typescript/commonjs/ui/components/CompactRow.d.ts.map +1 -0
  405. package/lib/typescript/commonjs/ui/components/CopyButton.d.ts +41 -0
  406. package/lib/typescript/commonjs/ui/components/CopyButton.d.ts.map +1 -0
  407. package/lib/typescript/commonjs/ui/components/DataInspector.d.ts +35 -0
  408. package/lib/typescript/commonjs/ui/components/DataInspector.d.ts.map +1 -0
  409. package/lib/typescript/commonjs/ui/components/DetailView.d.ts +68 -0
  410. package/lib/typescript/commonjs/ui/components/DetailView.d.ts.map +1 -0
  411. package/lib/typescript/commonjs/ui/components/Divider.d.ts +2 -0
  412. package/lib/typescript/commonjs/ui/components/Divider.d.ts.map +1 -0
  413. package/lib/typescript/commonjs/ui/components/DraggableHeader.d.ts +35 -0
  414. package/lib/typescript/commonjs/ui/components/DraggableHeader.d.ts.map +1 -0
  415. package/lib/typescript/commonjs/ui/components/DynamicFilterView.d.ts +91 -0
  416. package/lib/typescript/commonjs/ui/components/DynamicFilterView.d.ts.map +1 -0
  417. package/lib/typescript/commonjs/ui/components/EmptyState.d.ts +43 -0
  418. package/lib/typescript/commonjs/ui/components/EmptyState.d.ts.map +1 -0
  419. package/lib/typescript/commonjs/ui/components/ErrorBoundary.d.ts +18 -0
  420. package/lib/typescript/commonjs/ui/components/ErrorBoundary.d.ts.map +1 -0
  421. package/lib/typescript/commonjs/ui/components/EventHistoryViewer/CompareBar.d.ts +15 -0
  422. package/lib/typescript/commonjs/ui/components/EventHistoryViewer/CompareBar.d.ts.map +1 -0
  423. package/lib/typescript/commonjs/ui/components/EventHistoryViewer/DiffModeTabs.d.ts +15 -0
  424. package/lib/typescript/commonjs/ui/components/EventHistoryViewer/DiffModeTabs.d.ts.map +1 -0
  425. package/lib/typescript/commonjs/ui/components/EventHistoryViewer/EventHistoryViewer.d.ts +15 -0
  426. package/lib/typescript/commonjs/ui/components/EventHistoryViewer/EventHistoryViewer.d.ts.map +1 -0
  427. package/lib/typescript/commonjs/ui/components/EventHistoryViewer/EventPickerModal.d.ts +15 -0
  428. package/lib/typescript/commonjs/ui/components/EventHistoryViewer/EventPickerModal.d.ts.map +1 -0
  429. package/lib/typescript/commonjs/ui/components/EventHistoryViewer/ViewToggleCards.d.ts +14 -0
  430. package/lib/typescript/commonjs/ui/components/EventHistoryViewer/ViewToggleCards.d.ts.map +1 -0
  431. package/lib/typescript/commonjs/ui/components/EventHistoryViewer/index.d.ts +13 -0
  432. package/lib/typescript/commonjs/ui/components/EventHistoryViewer/index.d.ts.map +1 -0
  433. package/lib/typescript/commonjs/ui/components/EventHistoryViewer/types.d.ts +216 -0
  434. package/lib/typescript/commonjs/ui/components/EventHistoryViewer/types.d.ts.map +1 -0
  435. package/lib/typescript/commonjs/ui/components/EventListItem.d.ts +65 -0
  436. package/lib/typescript/commonjs/ui/components/EventListItem.d.ts.map +1 -0
  437. package/lib/typescript/commonjs/ui/components/EventStepperFooter.d.ts +32 -0
  438. package/lib/typescript/commonjs/ui/components/EventStepperFooter.d.ts.map +1 -0
  439. package/lib/typescript/commonjs/ui/components/ExpandablePopover.d.ts +34 -0
  440. package/lib/typescript/commonjs/ui/components/ExpandablePopover.d.ts.map +1 -0
  441. package/lib/typescript/commonjs/ui/components/ExpandableSection.d.ts +15 -0
  442. package/lib/typescript/commonjs/ui/components/ExpandableSection.d.ts.map +1 -0
  443. package/lib/typescript/commonjs/ui/components/ExpandableSectionHeader.d.ts +13 -0
  444. package/lib/typescript/commonjs/ui/components/ExpandableSectionHeader.d.ts.map +1 -0
  445. package/lib/typescript/commonjs/ui/components/ExpandableSectionWithModal.d.ts +18 -0
  446. package/lib/typescript/commonjs/ui/components/ExpandableSectionWithModal.d.ts.map +1 -0
  447. package/lib/typescript/commonjs/ui/components/FilterComponents.d.ts +38 -0
  448. package/lib/typescript/commonjs/ui/components/FilterComponents.d.ts.map +1 -0
  449. package/lib/typescript/commonjs/ui/components/FilterViewPattern.d.ts +15 -0
  450. package/lib/typescript/commonjs/ui/components/FilterViewPattern.d.ts.map +1 -0
  451. package/lib/typescript/commonjs/ui/components/HeaderSearchButton.d.ts +9 -0
  452. package/lib/typescript/commonjs/ui/components/HeaderSearchButton.d.ts.map +1 -0
  453. package/lib/typescript/commonjs/ui/components/ListItem.d.ts +49 -0
  454. package/lib/typescript/commonjs/ui/components/ListItem.d.ts.map +1 -0
  455. package/lib/typescript/commonjs/ui/components/ModalHeader.d.ts +34 -0
  456. package/lib/typescript/commonjs/ui/components/ModalHeader.d.ts.map +1 -0
  457. package/lib/typescript/commonjs/ui/components/ModalHintBanner.d.ts +15 -0
  458. package/lib/typescript/commonjs/ui/components/ModalHintBanner.d.ts.map +1 -0
  459. package/lib/typescript/commonjs/ui/components/SearchBar.d.ts +32 -0
  460. package/lib/typescript/commonjs/ui/components/SearchBar.d.ts.map +1 -0
  461. package/lib/typescript/commonjs/ui/components/SectionHeader.d.ts +33 -0
  462. package/lib/typescript/commonjs/ui/components/SectionHeader.d.ts.map +1 -0
  463. package/lib/typescript/commonjs/ui/components/StatsCard.d.ts +45 -0
  464. package/lib/typescript/commonjs/ui/components/StatsCard.d.ts.map +1 -0
  465. package/lib/typescript/commonjs/ui/components/StatusIndicator.d.ts +40 -0
  466. package/lib/typescript/commonjs/ui/components/StatusIndicator.d.ts.map +1 -0
  467. package/lib/typescript/commonjs/ui/components/StorageTypeBadge.d.ts +9 -0
  468. package/lib/typescript/commonjs/ui/components/StorageTypeBadge.d.ts.map +1 -0
  469. package/lib/typescript/commonjs/ui/components/TabSelector.d.ts +12 -0
  470. package/lib/typescript/commonjs/ui/components/TabSelector.d.ts.map +1 -0
  471. package/lib/typescript/commonjs/ui/components/TimeDisplay.d.ts +30 -0
  472. package/lib/typescript/commonjs/ui/components/TimeDisplay.d.ts.map +1 -0
  473. package/lib/typescript/commonjs/ui/components/TypeBadge.d.ts +6 -0
  474. package/lib/typescript/commonjs/ui/components/TypeBadge.d.ts.map +1 -0
  475. package/lib/typescript/commonjs/ui/components/ValueTypeBadge.d.ts +10 -0
  476. package/lib/typescript/commonjs/ui/components/ValueTypeBadge.d.ts.map +1 -0
  477. package/lib/typescript/commonjs/ui/components/WindowControls.d.ts +19 -0
  478. package/lib/typescript/commonjs/ui/components/WindowControls.d.ts.map +1 -0
  479. package/lib/typescript/commonjs/ui/components/index.d.ts +36 -0
  480. package/lib/typescript/commonjs/ui/components/index.d.ts.map +1 -0
  481. package/lib/typescript/commonjs/ui/components/types.d.ts +3 -0
  482. package/lib/typescript/commonjs/ui/components/types.d.ts.map +1 -0
  483. package/lib/typescript/commonjs/ui/console/BubbleSettingsModal.d.ts +11 -0
  484. package/lib/typescript/commonjs/ui/console/BubbleSettingsModal.d.ts.map +1 -0
  485. package/lib/typescript/commonjs/ui/console/ConsoleSection.d.ts +19 -0
  486. package/lib/typescript/commonjs/ui/console/ConsoleSection.d.ts.map +1 -0
  487. package/lib/typescript/commonjs/ui/console/CyberpunkButtonOutline.d.ts +12 -0
  488. package/lib/typescript/commonjs/ui/console/CyberpunkButtonOutline.d.ts.map +1 -0
  489. package/lib/typescript/commonjs/ui/console/CyberpunkConsoleSection.d.ts +17 -0
  490. package/lib/typescript/commonjs/ui/console/CyberpunkConsoleSection.d.ts.map +1 -0
  491. package/lib/typescript/commonjs/ui/console/CyberpunkIconContainer.d.ts +9 -0
  492. package/lib/typescript/commonjs/ui/console/CyberpunkIconContainer.d.ts.map +1 -0
  493. package/lib/typescript/commonjs/ui/console/CyberpunkSectionButton.d.ts +14 -0
  494. package/lib/typescript/commonjs/ui/console/CyberpunkSectionButton.d.ts.map +1 -0
  495. package/lib/typescript/commonjs/ui/console/GalaxyButton.d.ts +10 -0
  496. package/lib/typescript/commonjs/ui/console/GalaxyButton.d.ts.map +1 -0
  497. package/lib/typescript/commonjs/ui/console/index.d.ts +2 -0
  498. package/lib/typescript/commonjs/ui/console/index.d.ts.map +1 -0
  499. package/lib/typescript/commonjs/ui/gameUI/components/GameUICollapsibleSection.d.ts +24 -0
  500. package/lib/typescript/commonjs/ui/gameUI/components/GameUICollapsibleSection.d.ts.map +1 -0
  501. package/lib/typescript/commonjs/ui/gameUI/components/GameUICompactStats.d.ts +40 -0
  502. package/lib/typescript/commonjs/ui/gameUI/components/GameUICompactStats.d.ts.map +1 -0
  503. package/lib/typescript/commonjs/ui/gameUI/components/GameUIIssuesList.d.ts +29 -0
  504. package/lib/typescript/commonjs/ui/gameUI/components/GameUIIssuesList.d.ts.map +1 -0
  505. package/lib/typescript/commonjs/ui/gameUI/components/GameUIStatusHeader.d.ts +16 -0
  506. package/lib/typescript/commonjs/ui/gameUI/components/GameUIStatusHeader.d.ts.map +1 -0
  507. package/lib/typescript/commonjs/ui/gameUI/constants/gameUIColors.d.ts +103 -0
  508. package/lib/typescript/commonjs/ui/gameUI/constants/gameUIColors.d.ts.map +1 -0
  509. package/lib/typescript/commonjs/ui/gameUI/constants/macOSDesignSystemColors.d.ts +157 -0
  510. package/lib/typescript/commonjs/ui/gameUI/constants/macOSDesignSystemColors.d.ts.map +1 -0
  511. package/lib/typescript/commonjs/ui/gameUI/hooks/useGameUIAlertState.d.ts +37 -0
  512. package/lib/typescript/commonjs/ui/gameUI/hooks/useGameUIAlertState.d.ts.map +1 -0
  513. package/lib/typescript/commonjs/ui/gameUI/index.d.ts +18 -0
  514. package/lib/typescript/commonjs/ui/gameUI/index.d.ts.map +1 -0
  515. package/lib/typescript/commonjs/ui/index.d.ts +4 -0
  516. package/lib/typescript/commonjs/ui/index.d.ts.map +1 -0
  517. package/lib/typescript/commonjs/utils/displayValue.d.ts +16 -0
  518. package/lib/typescript/commonjs/utils/displayValue.d.ts.map +1 -0
  519. package/lib/typescript/commonjs/utils/formatting/dataFormatting.d.ts +31 -0
  520. package/lib/typescript/commonjs/utils/formatting/dataFormatting.d.ts.map +1 -0
  521. package/lib/typescript/commonjs/utils/formatting/httpFormatting.d.ts +34 -0
  522. package/lib/typescript/commonjs/utils/formatting/httpFormatting.d.ts.map +1 -0
  523. package/lib/typescript/commonjs/utils/formatting/index.d.ts +6 -0
  524. package/lib/typescript/commonjs/utils/formatting/index.d.ts.map +1 -0
  525. package/lib/typescript/commonjs/utils/getSafeAreaInsets.d.ts +14 -0
  526. package/lib/typescript/commonjs/utils/getSafeAreaInsets.d.ts.map +1 -0
  527. package/lib/typescript/commonjs/utils/index.d.ts +9 -0
  528. package/lib/typescript/commonjs/utils/index.d.ts.map +1 -0
  529. package/lib/typescript/commonjs/utils/loadOptionalModule.d.ts +27 -0
  530. package/lib/typescript/commonjs/utils/loadOptionalModule.d.ts.map +1 -0
  531. package/lib/typescript/commonjs/utils/minimalSuperJSON.d.ts +18 -0
  532. package/lib/typescript/commonjs/utils/minimalSuperJSON.d.ts.map +1 -0
  533. package/lib/typescript/commonjs/utils/persistentStorage.d.ts +45 -0
  534. package/lib/typescript/commonjs/utils/persistentStorage.d.ts.map +1 -0
  535. package/lib/typescript/commonjs/utils/safeAsyncStorage.d.ts +35 -0
  536. package/lib/typescript/commonjs/utils/safeAsyncStorage.d.ts.map +1 -0
  537. package/lib/typescript/commonjs/utils/safeStringify.d.ts +49 -0
  538. package/lib/typescript/commonjs/utils/safeStringify.d.ts.map +1 -0
  539. package/lib/typescript/commonjs/utils/time/formatRelativeTime.d.ts +8 -0
  540. package/lib/typescript/commonjs/utils/time/formatRelativeTime.d.ts.map +1 -0
  541. package/lib/typescript/commonjs/utils/time/index.d.ts +2 -0
  542. package/lib/typescript/commonjs/utils/time/index.d.ts.map +1 -0
  543. package/lib/typescript/commonjs/utils/typeHelpers.d.ts +52 -0
  544. package/lib/typescript/commonjs/utils/typeHelpers.d.ts.map +1 -0
  545. package/lib/typescript/commonjs/utils/valueFormatting.d.ts +39 -0
  546. package/lib/typescript/commonjs/utils/valueFormatting.d.ts.map +1 -0
  547. package/lib/typescript/module/JsModal.d.ts +78 -0
  548. package/lib/typescript/module/JsModal.d.ts.map +1 -0
  549. package/lib/typescript/module/clipboard/autoDetectClipboard.d.ts +31 -0
  550. package/lib/typescript/module/clipboard/autoDetectClipboard.d.ts.map +1 -0
  551. package/lib/typescript/module/clipboard/clipboard-impl.d.ts +16 -0
  552. package/lib/typescript/module/clipboard/clipboard-impl.d.ts.map +1 -0
  553. package/lib/typescript/module/clipboard/copyToClipboard.d.ts +11 -0
  554. package/lib/typescript/module/clipboard/copyToClipboard.d.ts.map +1 -0
  555. package/lib/typescript/module/clipboard/index.d.ts +4 -0
  556. package/lib/typescript/module/clipboard/index.d.ts.map +1 -0
  557. package/lib/typescript/module/context/HintsContext.d.ts +30 -0
  558. package/lib/typescript/module/context/HintsContext.d.ts.map +1 -0
  559. package/lib/typescript/module/context/index.d.ts +2 -0
  560. package/lib/typescript/module/context/index.d.ts.map +1 -0
  561. package/lib/typescript/module/dataViewer/CyberpunkInput.d.ts +13 -0
  562. package/lib/typescript/module/dataViewer/CyberpunkInput.d.ts.map +1 -0
  563. package/lib/typescript/module/dataViewer/DataViewer.d.ts +24 -0
  564. package/lib/typescript/module/dataViewer/DataViewer.d.ts.map +1 -0
  565. package/lib/typescript/module/dataViewer/DiffSummary.d.ts +26 -0
  566. package/lib/typescript/module/dataViewer/DiffSummary.d.ts.map +1 -0
  567. package/lib/typescript/module/dataViewer/IndentGuides.d.ts +16 -0
  568. package/lib/typescript/module/dataViewer/IndentGuides.d.ts.map +1 -0
  569. package/lib/typescript/module/dataViewer/IndentGuidesOverlay.d.ts +19 -0
  570. package/lib/typescript/module/dataViewer/IndentGuidesOverlay.d.ts.map +1 -0
  571. package/lib/typescript/module/dataViewer/SplitDiffViewer.d.ts +40 -0
  572. package/lib/typescript/module/dataViewer/SplitDiffViewer.d.ts.map +1 -0
  573. package/lib/typescript/module/dataViewer/TypeLegend.d.ts +18 -0
  574. package/lib/typescript/module/dataViewer/TypeLegend.d.ts.map +1 -0
  575. package/lib/typescript/module/dataViewer/VirtualizedDataExplorer.d.ts +14 -0
  576. package/lib/typescript/module/dataViewer/VirtualizedDataExplorer.d.ts.map +1 -0
  577. package/lib/typescript/module/dataViewer/diffThemes.d.ts +62 -0
  578. package/lib/typescript/module/dataViewer/diffThemes.d.ts.map +1 -0
  579. package/lib/typescript/module/dataViewer/index.d.ts +14 -0
  580. package/lib/typescript/module/dataViewer/index.d.ts.map +1 -0
  581. package/lib/typescript/module/dataViewer/lineDiff.d.ts +36 -0
  582. package/lib/typescript/module/dataViewer/lineDiff.d.ts.map +1 -0
  583. package/lib/typescript/module/dataViewer/tree/TreeDiffViewer.d.ts +24 -0
  584. package/lib/typescript/module/dataViewer/tree/TreeDiffViewer.d.ts.map +1 -0
  585. package/lib/typescript/module/env/EnvironmentIndicator.d.ts +12 -0
  586. package/lib/typescript/module/env/EnvironmentIndicator.d.ts.map +1 -0
  587. package/lib/typescript/module/env/EnvironmentSelector.d.ts +18 -0
  588. package/lib/typescript/module/env/EnvironmentSelector.d.ts.map +1 -0
  589. package/lib/typescript/module/env/EnvironmentSelectorInline.d.ts +12 -0
  590. package/lib/typescript/module/env/EnvironmentSelectorInline.d.ts.map +1 -0
  591. package/lib/typescript/module/hooks/index.d.ts +5 -0
  592. package/lib/typescript/module/hooks/index.d.ts.map +1 -0
  593. package/lib/typescript/module/hooks/safe-area-impl.d.ts +24 -0
  594. package/lib/typescript/module/hooks/safe-area-impl.d.ts.map +1 -0
  595. package/lib/typescript/module/hooks/useDeviceInfo.d.ts +125 -0
  596. package/lib/typescript/module/hooks/useDeviceInfo.d.ts.map +1 -0
  597. package/lib/typescript/module/hooks/useFilterManager.d.ts +59 -0
  598. package/lib/typescript/module/hooks/useFilterManager.d.ts.map +1 -0
  599. package/lib/typescript/module/hooks/useSafeAreaInsets.d.ts +113 -0
  600. package/lib/typescript/module/hooks/useSafeAreaInsets.d.ts.map +1 -0
  601. package/lib/typescript/module/icons/BenchmarkIcon.d.ts +14 -0
  602. package/lib/typescript/module/icons/BenchmarkIcon.d.ts.map +1 -0
  603. package/lib/typescript/module/icons/EnvLaptopIcon.d.ts +14 -0
  604. package/lib/typescript/module/icons/EnvLaptopIcon.d.ts.map +1 -0
  605. package/lib/typescript/module/icons/IconBackground.d.ts +10 -0
  606. package/lib/typescript/module/icons/IconBackground.d.ts.map +1 -0
  607. package/lib/typescript/module/icons/ReactQueryIcon.d.ts +12 -0
  608. package/lib/typescript/module/icons/ReactQueryIcon.d.ts.map +1 -0
  609. package/lib/typescript/module/icons/RenderCountIcon.d.ts +14 -0
  610. package/lib/typescript/module/icons/RenderCountIcon.d.ts.map +1 -0
  611. package/lib/typescript/module/icons/RouteMapIcon.d.ts +14 -0
  612. package/lib/typescript/module/icons/RouteMapIcon.d.ts.map +1 -0
  613. package/lib/typescript/module/icons/SentryBugIcon.d.ts +12 -0
  614. package/lib/typescript/module/icons/SentryBugIcon.d.ts.map +1 -0
  615. package/lib/typescript/module/icons/StackPulseIcon.d.ts +11 -0
  616. package/lib/typescript/module/icons/StackPulseIcon.d.ts.map +1 -0
  617. package/lib/typescript/module/icons/StorageStackIcon.d.ts +12 -0
  618. package/lib/typescript/module/icons/StorageStackIcon.d.ts.map +1 -0
  619. package/lib/typescript/module/icons/WifiCircuitIcon.d.ts +15 -0
  620. package/lib/typescript/module/icons/WifiCircuitIcon.d.ts.map +1 -0
  621. package/lib/typescript/module/icons/index.d.ts +15 -0
  622. package/lib/typescript/module/icons/index.d.ts.map +1 -0
  623. package/lib/typescript/module/icons/lucide-icons-original-full.d.ts +148 -0
  624. package/lib/typescript/module/icons/lucide-icons-original-full.d.ts.map +1 -0
  625. package/lib/typescript/module/icons/lucide-icons.d.ts +170 -0
  626. package/lib/typescript/module/icons/lucide-icons.d.ts.map +1 -0
  627. package/lib/typescript/module/icons/primitives/GlobeIcon.d.ts +15 -0
  628. package/lib/typescript/module/icons/primitives/GlobeIcon.d.ts.map +1 -0
  629. package/lib/typescript/module/icons/primitives/icon-primitives.d.ts +92 -0
  630. package/lib/typescript/module/icons/primitives/icon-primitives.d.ts.map +1 -0
  631. package/lib/typescript/module/icons/primitives/index.d.ts +9 -0
  632. package/lib/typescript/module/icons/primitives/index.d.ts.map +1 -0
  633. package/lib/typescript/module/index.d.ts +28 -0
  634. package/lib/typescript/module/index.d.ts.map +1 -0
  635. package/lib/typescript/module/license/FeatureGate.d.ts +123 -0
  636. package/lib/typescript/module/license/FeatureGate.d.ts.map +1 -0
  637. package/lib/typescript/module/license/LicenseEntryModal.d.ts +69 -0
  638. package/lib/typescript/module/license/LicenseEntryModal.d.ts.map +1 -0
  639. package/lib/typescript/module/license/ManageDevicesModal.d.ts +23 -0
  640. package/lib/typescript/module/license/ManageDevicesModal.d.ts.map +1 -0
  641. package/lib/typescript/module/license/index.d.ts +7 -0
  642. package/lib/typescript/module/license/index.d.ts.map +1 -0
  643. package/lib/typescript/module/logger/index-sentry.d.ts +68 -0
  644. package/lib/typescript/module/logger/index-sentry.d.ts.map +1 -0
  645. package/lib/typescript/module/logger/index.d.ts +5 -0
  646. package/lib/typescript/module/logger/index.d.ts.map +1 -0
  647. package/lib/typescript/module/logger/logDump.d.ts +5 -0
  648. package/lib/typescript/module/logger/logDump.d.ts.map +1 -0
  649. package/lib/typescript/module/logger/types.d.ts +100 -0
  650. package/lib/typescript/module/logger/types.d.ts.map +1 -0
  651. package/lib/typescript/module/package.json +1 -0
  652. package/lib/typescript/module/settings/components/BubbleSettingsSection.d.ts +19 -0
  653. package/lib/typescript/module/settings/components/BubbleSettingsSection.d.ts.map +1 -0
  654. package/lib/typescript/module/settings/index.d.ts +2 -0
  655. package/lib/typescript/module/settings/index.d.ts.map +1 -0
  656. package/lib/typescript/module/storage/devToolsStorageKeys.d.ts +173 -0
  657. package/lib/typescript/module/storage/devToolsStorageKeys.d.ts.map +1 -0
  658. package/lib/typescript/module/storage/index.d.ts +2 -0
  659. package/lib/typescript/module/storage/index.d.ts.map +1 -0
  660. package/lib/typescript/module/types/index.d.ts +2 -0
  661. package/lib/typescript/module/types/index.d.ts.map +1 -0
  662. package/lib/typescript/module/types/types.d.ts +8 -0
  663. package/lib/typescript/module/types/types.d.ts.map +1 -0
  664. package/lib/typescript/module/ui/components/BackButton.d.ts +10 -0
  665. package/lib/typescript/module/ui/components/BackButton.d.ts.map +1 -0
  666. package/lib/typescript/module/ui/components/Badge.d.ts +41 -0
  667. package/lib/typescript/module/ui/components/Badge.d.ts.map +1 -0
  668. package/lib/typescript/module/ui/components/ClipboardHintBanner.d.ts +17 -0
  669. package/lib/typescript/module/ui/components/ClipboardHintBanner.d.ts.map +1 -0
  670. package/lib/typescript/module/ui/components/CollapsibleSection.d.ts +35 -0
  671. package/lib/typescript/module/ui/components/CollapsibleSection.d.ts.map +1 -0
  672. package/lib/typescript/module/ui/components/CompactFilterChips.d.ts +23 -0
  673. package/lib/typescript/module/ui/components/CompactFilterChips.d.ts.map +1 -0
  674. package/lib/typescript/module/ui/components/CompactRow.d.ts +21 -0
  675. package/lib/typescript/module/ui/components/CompactRow.d.ts.map +1 -0
  676. package/lib/typescript/module/ui/components/CopyButton.d.ts +41 -0
  677. package/lib/typescript/module/ui/components/CopyButton.d.ts.map +1 -0
  678. package/lib/typescript/module/ui/components/DataInspector.d.ts +35 -0
  679. package/lib/typescript/module/ui/components/DataInspector.d.ts.map +1 -0
  680. package/lib/typescript/module/ui/components/DetailView.d.ts +68 -0
  681. package/lib/typescript/module/ui/components/DetailView.d.ts.map +1 -0
  682. package/lib/typescript/module/ui/components/Divider.d.ts +2 -0
  683. package/lib/typescript/module/ui/components/Divider.d.ts.map +1 -0
  684. package/lib/typescript/module/ui/components/DraggableHeader.d.ts +35 -0
  685. package/lib/typescript/module/ui/components/DraggableHeader.d.ts.map +1 -0
  686. package/lib/typescript/module/ui/components/DynamicFilterView.d.ts +91 -0
  687. package/lib/typescript/module/ui/components/DynamicFilterView.d.ts.map +1 -0
  688. package/lib/typescript/module/ui/components/EmptyState.d.ts +43 -0
  689. package/lib/typescript/module/ui/components/EmptyState.d.ts.map +1 -0
  690. package/lib/typescript/module/ui/components/ErrorBoundary.d.ts +18 -0
  691. package/lib/typescript/module/ui/components/ErrorBoundary.d.ts.map +1 -0
  692. package/lib/typescript/module/ui/components/EventHistoryViewer/CompareBar.d.ts +15 -0
  693. package/lib/typescript/module/ui/components/EventHistoryViewer/CompareBar.d.ts.map +1 -0
  694. package/lib/typescript/module/ui/components/EventHistoryViewer/DiffModeTabs.d.ts +15 -0
  695. package/lib/typescript/module/ui/components/EventHistoryViewer/DiffModeTabs.d.ts.map +1 -0
  696. package/lib/typescript/module/ui/components/EventHistoryViewer/EventHistoryViewer.d.ts +15 -0
  697. package/lib/typescript/module/ui/components/EventHistoryViewer/EventHistoryViewer.d.ts.map +1 -0
  698. package/lib/typescript/module/ui/components/EventHistoryViewer/EventPickerModal.d.ts +15 -0
  699. package/lib/typescript/module/ui/components/EventHistoryViewer/EventPickerModal.d.ts.map +1 -0
  700. package/lib/typescript/module/ui/components/EventHistoryViewer/ViewToggleCards.d.ts +14 -0
  701. package/lib/typescript/module/ui/components/EventHistoryViewer/ViewToggleCards.d.ts.map +1 -0
  702. package/lib/typescript/module/ui/components/EventHistoryViewer/index.d.ts +13 -0
  703. package/lib/typescript/module/ui/components/EventHistoryViewer/index.d.ts.map +1 -0
  704. package/lib/typescript/module/ui/components/EventHistoryViewer/types.d.ts +216 -0
  705. package/lib/typescript/module/ui/components/EventHistoryViewer/types.d.ts.map +1 -0
  706. package/lib/typescript/module/ui/components/EventListItem.d.ts +65 -0
  707. package/lib/typescript/module/ui/components/EventListItem.d.ts.map +1 -0
  708. package/lib/typescript/module/ui/components/EventStepperFooter.d.ts +32 -0
  709. package/lib/typescript/module/ui/components/EventStepperFooter.d.ts.map +1 -0
  710. package/lib/typescript/module/ui/components/ExpandablePopover.d.ts +34 -0
  711. package/lib/typescript/module/ui/components/ExpandablePopover.d.ts.map +1 -0
  712. package/lib/typescript/module/ui/components/ExpandableSection.d.ts +15 -0
  713. package/lib/typescript/module/ui/components/ExpandableSection.d.ts.map +1 -0
  714. package/lib/typescript/module/ui/components/ExpandableSectionHeader.d.ts +13 -0
  715. package/lib/typescript/module/ui/components/ExpandableSectionHeader.d.ts.map +1 -0
  716. package/lib/typescript/module/ui/components/ExpandableSectionWithModal.d.ts +18 -0
  717. package/lib/typescript/module/ui/components/ExpandableSectionWithModal.d.ts.map +1 -0
  718. package/lib/typescript/module/ui/components/FilterComponents.d.ts +38 -0
  719. package/lib/typescript/module/ui/components/FilterComponents.d.ts.map +1 -0
  720. package/lib/typescript/module/ui/components/FilterViewPattern.d.ts +15 -0
  721. package/lib/typescript/module/ui/components/FilterViewPattern.d.ts.map +1 -0
  722. package/lib/typescript/module/ui/components/HeaderSearchButton.d.ts +9 -0
  723. package/lib/typescript/module/ui/components/HeaderSearchButton.d.ts.map +1 -0
  724. package/lib/typescript/module/ui/components/ListItem.d.ts +49 -0
  725. package/lib/typescript/module/ui/components/ListItem.d.ts.map +1 -0
  726. package/lib/typescript/module/ui/components/ModalHeader.d.ts +34 -0
  727. package/lib/typescript/module/ui/components/ModalHeader.d.ts.map +1 -0
  728. package/lib/typescript/module/ui/components/ModalHintBanner.d.ts +15 -0
  729. package/lib/typescript/module/ui/components/ModalHintBanner.d.ts.map +1 -0
  730. package/lib/typescript/module/ui/components/SearchBar.d.ts +32 -0
  731. package/lib/typescript/module/ui/components/SearchBar.d.ts.map +1 -0
  732. package/lib/typescript/module/ui/components/SectionHeader.d.ts +33 -0
  733. package/lib/typescript/module/ui/components/SectionHeader.d.ts.map +1 -0
  734. package/lib/typescript/module/ui/components/StatsCard.d.ts +45 -0
  735. package/lib/typescript/module/ui/components/StatsCard.d.ts.map +1 -0
  736. package/lib/typescript/module/ui/components/StatusIndicator.d.ts +40 -0
  737. package/lib/typescript/module/ui/components/StatusIndicator.d.ts.map +1 -0
  738. package/lib/typescript/module/ui/components/StorageTypeBadge.d.ts +9 -0
  739. package/lib/typescript/module/ui/components/StorageTypeBadge.d.ts.map +1 -0
  740. package/lib/typescript/module/ui/components/TabSelector.d.ts +12 -0
  741. package/lib/typescript/module/ui/components/TabSelector.d.ts.map +1 -0
  742. package/lib/typescript/module/ui/components/TimeDisplay.d.ts +30 -0
  743. package/lib/typescript/module/ui/components/TimeDisplay.d.ts.map +1 -0
  744. package/lib/typescript/module/ui/components/TypeBadge.d.ts +6 -0
  745. package/lib/typescript/module/ui/components/TypeBadge.d.ts.map +1 -0
  746. package/lib/typescript/module/ui/components/ValueTypeBadge.d.ts +10 -0
  747. package/lib/typescript/module/ui/components/ValueTypeBadge.d.ts.map +1 -0
  748. package/lib/typescript/module/ui/components/WindowControls.d.ts +19 -0
  749. package/lib/typescript/module/ui/components/WindowControls.d.ts.map +1 -0
  750. package/lib/typescript/module/ui/components/index.d.ts +36 -0
  751. package/lib/typescript/module/ui/components/index.d.ts.map +1 -0
  752. package/lib/typescript/module/ui/components/types.d.ts +3 -0
  753. package/lib/typescript/module/ui/components/types.d.ts.map +1 -0
  754. package/lib/typescript/module/ui/console/BubbleSettingsModal.d.ts +11 -0
  755. package/lib/typescript/module/ui/console/BubbleSettingsModal.d.ts.map +1 -0
  756. package/lib/typescript/module/ui/console/ConsoleSection.d.ts +19 -0
  757. package/lib/typescript/module/ui/console/ConsoleSection.d.ts.map +1 -0
  758. package/lib/typescript/module/ui/console/CyberpunkButtonOutline.d.ts +12 -0
  759. package/lib/typescript/module/ui/console/CyberpunkButtonOutline.d.ts.map +1 -0
  760. package/lib/typescript/module/ui/console/CyberpunkConsoleSection.d.ts +17 -0
  761. package/lib/typescript/module/ui/console/CyberpunkConsoleSection.d.ts.map +1 -0
  762. package/lib/typescript/module/ui/console/CyberpunkIconContainer.d.ts +9 -0
  763. package/lib/typescript/module/ui/console/CyberpunkIconContainer.d.ts.map +1 -0
  764. package/lib/typescript/module/ui/console/CyberpunkSectionButton.d.ts +14 -0
  765. package/lib/typescript/module/ui/console/CyberpunkSectionButton.d.ts.map +1 -0
  766. package/lib/typescript/module/ui/console/GalaxyButton.d.ts +10 -0
  767. package/lib/typescript/module/ui/console/GalaxyButton.d.ts.map +1 -0
  768. package/lib/typescript/module/ui/console/index.d.ts +2 -0
  769. package/lib/typescript/module/ui/console/index.d.ts.map +1 -0
  770. package/lib/typescript/module/ui/gameUI/components/GameUICollapsibleSection.d.ts +24 -0
  771. package/lib/typescript/module/ui/gameUI/components/GameUICollapsibleSection.d.ts.map +1 -0
  772. package/lib/typescript/module/ui/gameUI/components/GameUICompactStats.d.ts +40 -0
  773. package/lib/typescript/module/ui/gameUI/components/GameUICompactStats.d.ts.map +1 -0
  774. package/lib/typescript/module/ui/gameUI/components/GameUIIssuesList.d.ts +29 -0
  775. package/lib/typescript/module/ui/gameUI/components/GameUIIssuesList.d.ts.map +1 -0
  776. package/lib/typescript/module/ui/gameUI/components/GameUIStatusHeader.d.ts +16 -0
  777. package/lib/typescript/module/ui/gameUI/components/GameUIStatusHeader.d.ts.map +1 -0
  778. package/lib/typescript/module/ui/gameUI/constants/gameUIColors.d.ts +103 -0
  779. package/lib/typescript/module/ui/gameUI/constants/gameUIColors.d.ts.map +1 -0
  780. package/lib/typescript/module/ui/gameUI/constants/macOSDesignSystemColors.d.ts +157 -0
  781. package/lib/typescript/module/ui/gameUI/constants/macOSDesignSystemColors.d.ts.map +1 -0
  782. package/lib/typescript/module/ui/gameUI/hooks/useGameUIAlertState.d.ts +37 -0
  783. package/lib/typescript/module/ui/gameUI/hooks/useGameUIAlertState.d.ts.map +1 -0
  784. package/lib/typescript/module/ui/gameUI/index.d.ts +18 -0
  785. package/lib/typescript/module/ui/gameUI/index.d.ts.map +1 -0
  786. package/lib/typescript/module/ui/index.d.ts +4 -0
  787. package/lib/typescript/module/ui/index.d.ts.map +1 -0
  788. package/lib/typescript/module/utils/displayValue.d.ts +16 -0
  789. package/lib/typescript/module/utils/displayValue.d.ts.map +1 -0
  790. package/lib/typescript/module/utils/formatting/dataFormatting.d.ts +31 -0
  791. package/lib/typescript/module/utils/formatting/dataFormatting.d.ts.map +1 -0
  792. package/lib/typescript/module/utils/formatting/httpFormatting.d.ts +34 -0
  793. package/lib/typescript/module/utils/formatting/httpFormatting.d.ts.map +1 -0
  794. package/lib/typescript/module/utils/formatting/index.d.ts +6 -0
  795. package/lib/typescript/module/utils/formatting/index.d.ts.map +1 -0
  796. package/lib/typescript/module/utils/getSafeAreaInsets.d.ts +14 -0
  797. package/lib/typescript/module/utils/getSafeAreaInsets.d.ts.map +1 -0
  798. package/lib/typescript/module/utils/index.d.ts +9 -0
  799. package/lib/typescript/module/utils/index.d.ts.map +1 -0
  800. package/lib/typescript/module/utils/loadOptionalModule.d.ts +27 -0
  801. package/lib/typescript/module/utils/loadOptionalModule.d.ts.map +1 -0
  802. package/lib/typescript/module/utils/minimalSuperJSON.d.ts +18 -0
  803. package/lib/typescript/module/utils/minimalSuperJSON.d.ts.map +1 -0
  804. package/lib/typescript/module/utils/persistentStorage.d.ts +45 -0
  805. package/lib/typescript/module/utils/persistentStorage.d.ts.map +1 -0
  806. package/lib/typescript/module/utils/safeAsyncStorage.d.ts +35 -0
  807. package/lib/typescript/module/utils/safeAsyncStorage.d.ts.map +1 -0
  808. package/lib/typescript/module/utils/safeStringify.d.ts +49 -0
  809. package/lib/typescript/module/utils/safeStringify.d.ts.map +1 -0
  810. package/lib/typescript/module/utils/time/formatRelativeTime.d.ts +8 -0
  811. package/lib/typescript/module/utils/time/formatRelativeTime.d.ts.map +1 -0
  812. package/lib/typescript/module/utils/time/index.d.ts +2 -0
  813. package/lib/typescript/module/utils/time/index.d.ts.map +1 -0
  814. package/lib/typescript/module/utils/typeHelpers.d.ts +52 -0
  815. package/lib/typescript/module/utils/typeHelpers.d.ts.map +1 -0
  816. package/lib/typescript/module/utils/valueFormatting.d.ts +39 -0
  817. package/lib/typescript/module/utils/valueFormatting.d.ts.map +1 -0
  818. package/package.json +172 -0
  819. package/scripts/detect-clipboard.js +137 -0
  820. package/scripts/detect-safe-area.js +130 -0
@@ -0,0 +1,1473 @@
1
+ "use strict";
2
+
3
+ Object.defineProperty(exports, "__esModule", {
4
+ value: true
5
+ });
6
+ exports.JsModal = void 0;
7
+ var _react = require("react");
8
+ var _reactNative = require("react-native");
9
+ var _useSafeAreaInsets = require("./hooks/useSafeAreaInsets.js");
10
+ var _index = require("./ui/gameUI/index.js");
11
+ var _index2 = require("./ui/components/index.js");
12
+ var _safeAsyncStorage = require("./utils/safeAsyncStorage.js");
13
+ var _devToolsStorageKeys = require("./storage/devToolsStorageKeys.js");
14
+ var _index3 = require("./context/index.js");
15
+ var _jsxRuntime = require("react/jsx-runtime");
16
+ /**
17
+ * JsModal - Ultra-optimized for true 60FPS performance
18
+ *
19
+ * Achieves 60FPS by following the principles from the dial menu:
20
+ * 1. ALWAYS use native driver (useNativeDriver: true)
21
+ * 2. Use transforms instead of layout properties (translateY instead of height)
22
+ * 3. Use interpolation for all calculations (no JS thread math)
23
+ * 4. Minimize PanResponder JS work (direct setValue, no state updates)
24
+ *
25
+ * Structure follows SRP with each function doing ONE thing only.
26
+ */
27
+
28
+ // ============================================================================
29
+ // CONSTANTS - Modal dimensions and configuration
30
+ // ============================================================================
31
+ const SCREEN = _reactNative.Dimensions.get("window");
32
+ const MIN_HEIGHT = 100;
33
+ const DEFAULT_HEIGHT = 400;
34
+ const FLOATING_WIDTH = SCREEN.width; // Full width
35
+ const FLOATING_HEIGHT = 500;
36
+ const FLOATING_MIN_WIDTH = SCREEN.width * 0.25; // 1/4 of screen width
37
+ const FLOATING_MIN_HEIGHT = 80; // Just a bit more than header height (60px header + 20px content)
38
+
39
+ // ============================================================================
40
+ // STORAGE - Modal state persistence with AsyncStorage
41
+ // ============================================================================
42
+
43
+ /**
44
+ * Utility class for persisting modal state to AsyncStorage
45
+ *
46
+ * Handles saving and loading modal state including mode, dimensions,
47
+ * and position with memory caching for performance.
48
+ */
49
+ class ModalStorage {
50
+ static memoryCache = {};
51
+
52
+ /**
53
+ * Save modal state to AsyncStorage with memory caching
54
+ *
55
+ * @param key - Storage key for the modal state
56
+ * @param value - Modal state to persist
57
+ */
58
+ static async save(key, value) {
59
+ try {
60
+ this.memoryCache[key] = value;
61
+ await (0, _safeAsyncStorage.safeSetItem)(key, JSON.stringify(value));
62
+ } catch (error) {
63
+ // Failed to save modal state
64
+ }
65
+ }
66
+
67
+ /**
68
+ * Load modal state from AsyncStorage with memory cache fallback
69
+ *
70
+ * @param key - Storage key for the modal state
71
+ * @returns Persisted modal state or null if not found
72
+ */
73
+ static async load(key) {
74
+ try {
75
+ // Try memory cache first
76
+ if (this.memoryCache[key]) {
77
+ return this.memoryCache[key];
78
+ }
79
+
80
+ // Load from storage (AsyncStorage or memory fallback)
81
+ const stored = await (0, _safeAsyncStorage.safeGetItem)(key);
82
+ if (stored) {
83
+ const parsed = JSON.parse(stored);
84
+ this.memoryCache[key] = parsed;
85
+ return parsed;
86
+ }
87
+ } catch (error) {
88
+ // Failed to load modal state
89
+ }
90
+ return null;
91
+ }
92
+ }
93
+
94
+ // ============================================================================
95
+ // TYPE DEFINITIONS - Interface contracts for the modal
96
+ // ============================================================================
97
+
98
+ /**
99
+ * Modal state that can be saved and restored when minimizing/restoring
100
+ */
101
+
102
+ // ============================================================================
103
+ // ICON COMPONENTS - Visual indicators for modal controls
104
+ // ============================================================================
105
+
106
+ /**
107
+ * DragIndicator - Visual feedback for draggable areas
108
+ */
109
+ const DragIndicator = /*#__PURE__*/(0, _react.memo)(function DragIndicator({
110
+ isResizing,
111
+ mode,
112
+ hasCustomContent = false
113
+ }) {
114
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
115
+ style: [styles.dragIndicatorContainer, hasCustomContent && styles.dragIndicatorContainerCustom],
116
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
117
+ style: [styles.dragIndicator, mode === "floating" && styles.floatingDragIndicator, isResizing && styles.dragIndicatorActive]
118
+ }), isResizing && mode === "bottomSheet" && /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
119
+ style: styles.resizeGripContainer,
120
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
121
+ style: styles.resizeGripLine
122
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
123
+ style: styles.resizeGripLine
124
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
125
+ style: styles.resizeGripLine
126
+ })]
127
+ })]
128
+ });
129
+ });
130
+
131
+ /**
132
+ * CornerHandle - Resize handle for floating mode corners
133
+ */
134
+ const CornerHandle = /*#__PURE__*/(0, _react.memo)(function CornerHandle({
135
+ position,
136
+ isActive
137
+ }) {
138
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
139
+ style: [styles.cornerHandle],
140
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
141
+ style: [styles.handler, isActive && styles.handlerActive]
142
+ })
143
+ });
144
+ });
145
+
146
+ /**
147
+ * ModalHeader - Header bar with title, controls, and drag area
148
+ */
149
+
150
+ const ModalHeader = /*#__PURE__*/(0, _react.memo)(function ModalHeader({
151
+ header,
152
+ onClose,
153
+ onToggleMode,
154
+ onMinimize,
155
+ isResizing,
156
+ mode,
157
+ panHandlers
158
+ }) {
159
+ const lastTapRef = (0, _react.useRef)(0);
160
+ const tapCountRef = (0, _react.useRef)(0);
161
+ const tapTimeoutRef = (0, _react.useRef)(null);
162
+ const handleHeaderTap = (0, _react.useCallback)(() => {
163
+ const now = Date.now();
164
+ const timeSinceLastTap = now - lastTapRef.current;
165
+
166
+ // Reset tap count if more than 500ms since last tap
167
+ if (timeSinceLastTap > 500) {
168
+ tapCountRef.current = 0;
169
+ }
170
+ tapCountRef.current++;
171
+ lastTapRef.current = now;
172
+
173
+ // Clear existing timeout
174
+ if (tapTimeoutRef.current) {
175
+ clearTimeout(tapTimeoutRef.current);
176
+ }
177
+
178
+ // Set timeout to process the tap gesture
179
+ tapTimeoutRef.current = setTimeout(() => {
180
+ if (tapCountRef.current === 2) {
181
+ // Double tap - toggle mode
182
+ onToggleMode();
183
+ } else if (tapCountRef.current >= 3) {
184
+ // Triple tap - minimize modal (if available)
185
+ if (onMinimize) {
186
+ onMinimize();
187
+ }
188
+ }
189
+ tapCountRef.current = 0;
190
+ }, 300);
191
+ }, [onToggleMode, onMinimize]);
192
+
193
+ // Clean up timeout on unmount
194
+ (0, _react.useEffect)(() => {
195
+ return () => {
196
+ if (tapTimeoutRef.current) {
197
+ clearTimeout(tapTimeoutRef.current);
198
+ }
199
+ };
200
+ }, []);
201
+ const headerProps = panHandlers ? panHandlers : {};
202
+ // Disable tap handling when no panHandlers (i.e., when using DraggableHeader in floating mode)
203
+ const shouldHandleTap = !!panHandlers;
204
+
205
+ // If custom content is provided, check if it's a complete replacement
206
+ if (header?.customContent) {
207
+ // Check if the custom content is a complete header replacement (like CyberpunkModalHeader)
208
+ // by checking if it's a React element with specific props
209
+ const isCompleteReplacement = /*#__PURE__*/(0, _react.isValidElement)(header.customContent) && typeof header.customContent.type === "function" && header.customContent.type.name === "CyberpunkModalHeader";
210
+ if (isCompleteReplacement) {
211
+ // Clone the element and pass the necessary props
212
+ return /*#__PURE__*/(0, _react.cloneElement)(header.customContent, {
213
+ onToggleMode,
214
+ onClose,
215
+ mode,
216
+ panHandlers: headerProps,
217
+ showToggleButton: header?.showToggleButton !== false,
218
+ hideCloseButton: header?.hideCloseButton
219
+ });
220
+ }
221
+
222
+ // Otherwise, render custom content within the standard header structure
223
+ // Apply pan handlers to the outer View for dragging in floating mode
224
+ // If the custom content is a React element, inject onMinimize so it can trigger minimize
225
+ let customContentWithMinimize = header.customContent;
226
+ if (/*#__PURE__*/(0, _react.isValidElement)(header.customContent) && onMinimize) {
227
+ customContentWithMinimize = /*#__PURE__*/(0, _react.cloneElement)(header.customContent, {
228
+ onMinimize
229
+ });
230
+ }
231
+ const headerContent = /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
232
+ style: styles.headerInner,
233
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(DragIndicator, {
234
+ isResizing: isResizing,
235
+ mode: mode,
236
+ hasCustomContent: true
237
+ }), customContentWithMinimize]
238
+ });
239
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
240
+ style: styles.header,
241
+ ...headerProps,
242
+ children: shouldHandleTap ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableWithoutFeedback, {
243
+ onPress: handleHeaderTap,
244
+ children: headerContent
245
+ }) : headerContent
246
+ });
247
+ }
248
+ const headerContent = /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
249
+ style: styles.headerInner,
250
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(DragIndicator, {
251
+ isResizing: isResizing,
252
+ mode: mode
253
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
254
+ style: styles.headerContent,
255
+ children: [header?.title && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
256
+ style: styles.headerTitle,
257
+ children: header.title
258
+ }), header?.subtitle && /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
259
+ style: styles.headerSubtitle,
260
+ children: header.subtitle
261
+ })]
262
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
263
+ style: styles.headerHintText,
264
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Text, {
265
+ style: styles.hintText,
266
+ children: "Double tap: Toggle \u2022 Triple tap: Close"
267
+ })
268
+ })]
269
+ });
270
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
271
+ style: [styles.header, mode === "floating" && styles.floatingModeHeader],
272
+ ...headerProps,
273
+ children: shouldHandleTap ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.TouchableWithoutFeedback, {
274
+ onPress: handleHeaderTap,
275
+ children: headerContent
276
+ }) : headerContent
277
+ });
278
+ });
279
+
280
+ // ============================================================================
281
+ // MAIN COMPONENT - Optimized for 60FPS with transforms and interpolation
282
+ // ============================================================================
283
+ /**
284
+ * JsModal - Ultra-optimized modal component for true 60FPS performance
285
+ *
286
+ * This modal component is designed for maximum performance using native driver
287
+ * animations, transforms instead of layout properties, and minimal JavaScript
288
+ * thread work. It supports two modes: bottom sheet and floating window.
289
+ *
290
+ * Key Performance Features:
291
+ * - Uses native driver for all animations (useNativeDriver: true)
292
+ * - Transform-based positioning instead of layout changes
293
+ * - Interpolation for all calculations on the native thread
294
+ * - Minimal PanResponder JavaScript work
295
+ * - State persistence with AsyncStorage
296
+ * - Drag and resize functionality in both modes
297
+ *
298
+ * @param props - Modal configuration and content
299
+ * @returns JSX.Element representing the modal
300
+ *
301
+ * @example
302
+ * ```typescript
303
+ * <JsModal
304
+ * visible={isVisible}
305
+ * onClose={() => setVisible(false)}
306
+ * header={{
307
+ * title: "Settings",
308
+ * subtitle: "Configure your preferences"
309
+ * }}
310
+ * persistenceKey="settings-modal"
311
+ * enablePersistence={true}
312
+ * >
313
+ * <SettingsContent />
314
+ * </JsModal>
315
+ * ```
316
+ *
317
+ * @performance All animations use native driver for 60FPS performance
318
+ * @performance Uses transform-based positioning for optimal rendering
319
+ * @performance Includes state persistence and restoration capabilities
320
+ */
321
+ const JsModalComponent = ({
322
+ visible,
323
+ onClose,
324
+ children,
325
+ header,
326
+ styles: customStyles = {},
327
+ minHeight = MIN_HEIGHT,
328
+ maxHeight,
329
+ initialHeight = DEFAULT_HEIGHT,
330
+ animatedHeight: externalAnimatedHeight,
331
+ initialMode = "bottomSheet",
332
+ onModeChange,
333
+ persistenceKey,
334
+ enablePersistence = true,
335
+ initialFloatingPosition,
336
+ footer,
337
+ footerHeight = 0,
338
+ onBack,
339
+ onMinimize,
340
+ minimizeTargetPosition,
341
+ initialModalState,
342
+ zIndex
343
+ }) => {
344
+ const insets = (0, _useSafeAreaInsets.useSafeAreaInsets)();
345
+ const [isStateLoaded, setIsStateLoaded] = (0, _react.useState)(!enablePersistence);
346
+ const [mode, setMode] = (0, _react.useState)(initialMode);
347
+ const [isResizing, setIsResizing] = (0, _react.useState)(false);
348
+ const [isDragging, setIsDragging] = (0, _react.useState)(false);
349
+ const [panelHeight, setPanelHeight] = (0, _react.useState)(initialHeight);
350
+ const [dimensions, setDimensions] = (0, _react.useState)({
351
+ width: FLOATING_WIDTH,
352
+ height: FLOATING_HEIGHT,
353
+ top: (SCREEN.height - FLOATING_HEIGHT) / 2,
354
+ left: 0 // Flush with left edge
355
+ });
356
+ const [containerBounds] = (0, _react.useState)({
357
+ width: SCREEN.width,
358
+ height: SCREEN.height
359
+ });
360
+ const [showHint, setShowHint] = (0, _react.useState)(false);
361
+ const [hintLoaded, setHintLoaded] = (0, _react.useState)(false);
362
+ const hintsDisabled = (0, _index3.useHintsDisabled)();
363
+
364
+ // ============================================================================
365
+ // ANIMATED VALUES - All using native driver
366
+ // ============================================================================
367
+
368
+ // Main visibility progress (0 = hidden, 1 = visible)
369
+ const visibilityProgress = (0, _react.useRef)(new _reactNative.Animated.Value(0)).current;
370
+
371
+ // Bottom sheet specific - using translateY for performance!
372
+ const bottomSheetTranslateY = (0, _react.useRef)(new _reactNative.Animated.Value(SCREEN.height)).current;
373
+ const dragOffset = (0, _react.useRef)(new _reactNative.Animated.Value(0)).current;
374
+
375
+ // Height tracking for resize - actual position from bottom
376
+ const animatedBottomPosition = (0, _react.useRef)(new _reactNative.Animated.Value(initialHeight)).current;
377
+ const currentHeightRef = (0, _react.useRef)(initialHeight);
378
+
379
+ // Save state with debounce
380
+ (0, _react.useEffect)(() => {
381
+ if (!enablePersistence || !persistenceKey || !isStateLoaded) return;
382
+ const timeoutId = setTimeout(() => {
383
+ ModalStorage.save(persistenceKey, {
384
+ mode,
385
+ panelHeight: currentHeightRef.current,
386
+ dimensions,
387
+ isVisible: visible
388
+ });
389
+ }, 500);
390
+ return () => clearTimeout(timeoutId);
391
+ }, [mode, panelHeight, dimensions, visible, persistenceKey, enablePersistence, isStateLoaded]);
392
+
393
+ // Sync with external height if provided
394
+ (0, _react.useEffect)(() => {
395
+ // Height sync effect
396
+ if (externalAnimatedHeight && !isResizing) {
397
+ currentHeightRef.current = initialHeight;
398
+ externalAnimatedHeight.setValue(initialHeight);
399
+ // Set external height
400
+ }
401
+ }, [externalAnimatedHeight, initialHeight, isResizing]);
402
+
403
+ // Update refs when dimensions change
404
+ (0, _react.useEffect)(() => {
405
+ currentDimensionsRef.current = dimensions;
406
+ }, [dimensions]);
407
+
408
+ // Floating mode animations - use initialFloatingPosition if provided
409
+ const floatingPosition = (0, _react.useRef)(new _reactNative.Animated.ValueXY({
410
+ x: initialFloatingPosition?.x ?? 0,
411
+ // Flush with left edge
412
+ y: initialFloatingPosition?.y ?? (SCREEN.height - FLOATING_HEIGHT) / 2
413
+ })).current;
414
+ const floatingScale = (0, _react.useRef)(new _reactNative.Animated.Value(0)).current;
415
+ const animatedWidth = (0, _react.useRef)(new _reactNative.Animated.Value(FLOATING_WIDTH)).current;
416
+ const animatedFloatingHeight = (0, _react.useRef)(new _reactNative.Animated.Value(FLOATING_HEIGHT)).current;
417
+
418
+ // Refs for resize handles
419
+ const currentDimensionsRef = (0, _react.useRef)(dimensions);
420
+ const startDimensionsRef = (0, _react.useRef)(dimensions);
421
+ const offsetX = (0, _react.useRef)(0);
422
+ const offsetY = (0, _react.useRef)(0);
423
+ const sHeight = (0, _react.useRef)(0);
424
+ const sWidth = (0, _react.useRef)(0);
425
+
426
+ // Load hint acknowledgment status on mount
427
+ (0, _react.useEffect)(() => {
428
+ let mounted = true;
429
+ const loadHintStatus = async () => {
430
+ try {
431
+ const hintKey = _devToolsStorageKeys.devToolsStorageKeys.modal.hintAcknowledged();
432
+ const acknowledged = await (0, _safeAsyncStorage.safeGetItem)(hintKey);
433
+ if (mounted) {
434
+ // Show hint if not acknowledged yet
435
+ setShowHint(acknowledged !== "true");
436
+ setHintLoaded(true);
437
+ }
438
+ } catch (error) {
439
+ // Failed to load hint status, default to showing hint
440
+ if (mounted) {
441
+ setShowHint(true);
442
+ setHintLoaded(true);
443
+ }
444
+ }
445
+ };
446
+ loadHintStatus();
447
+ return () => {
448
+ mounted = false;
449
+ };
450
+ }, []);
451
+
452
+ // Handle hint acknowledgment
453
+ const handleHintAcknowledge = (0, _react.useCallback)(async () => {
454
+ try {
455
+ const hintKey = _devToolsStorageKeys.devToolsStorageKeys.modal.hintAcknowledged();
456
+ await (0, _safeAsyncStorage.safeSetItem)(hintKey, "true");
457
+ setShowHint(false);
458
+ } catch (error) {
459
+ // Failed to save hint acknowledgment, just hide it locally
460
+ setShowHint(false);
461
+ }
462
+ }, []);
463
+
464
+ // Load persisted state on mount
465
+ (0, _react.useEffect)(() => {
466
+ if (!enablePersistence || !persistenceKey) {
467
+ setIsStateLoaded(true);
468
+ return;
469
+ }
470
+ let mounted = true;
471
+ const loadState = async () => {
472
+ const savedState = await ModalStorage.load(persistenceKey);
473
+ if (mounted && savedState) {
474
+ // Restore mode
475
+ if (savedState.mode) {
476
+ setMode(savedState.mode);
477
+ // Notify parent of loaded mode
478
+ onModeChange?.(savedState.mode);
479
+ }
480
+
481
+ // Restore bottom sheet height
482
+ if (savedState.panelHeight) {
483
+ setPanelHeight(savedState.panelHeight);
484
+ currentHeightRef.current = savedState.panelHeight;
485
+ animatedBottomPosition.setValue(savedState.panelHeight);
486
+ }
487
+
488
+ // Restore floating dimensions and position
489
+ if (savedState.dimensions) {
490
+ setDimensions(savedState.dimensions);
491
+ floatingPosition.setValue({
492
+ x: savedState.dimensions.left,
493
+ y: savedState.dimensions.top
494
+ });
495
+ animatedWidth.setValue(savedState.dimensions.width);
496
+ animatedFloatingHeight.setValue(savedState.dimensions.height);
497
+ }
498
+ }
499
+ if (mounted) setIsStateLoaded(true);
500
+ };
501
+ loadState();
502
+ return () => {
503
+ mounted = false;
504
+ };
505
+ }, [persistenceKey, enablePersistence, onModeChange, animatedBottomPosition, animatedFloatingHeight, animatedWidth, floatingPosition]);
506
+
507
+ // Cleanup on unmount
508
+ (0, _react.useEffect)(() => {
509
+ // Mount/Unmount effect
510
+ return () => {
511
+ // Stop all animations and reset when component unmounts
512
+ visibilityProgress.stopAnimation();
513
+ bottomSheetTranslateY.stopAnimation();
514
+ floatingScale.stopAnimation();
515
+ dragOffset.stopAnimation();
516
+ animatedBottomPosition.stopAnimation();
517
+ floatingPosition.stopAnimation();
518
+ animatedWidth.stopAnimation();
519
+ animatedFloatingHeight.stopAnimation();
520
+
521
+ // Reset to initial values
522
+ visibilityProgress.setValue(0);
523
+ bottomSheetTranslateY.setValue(SCREEN.height);
524
+ floatingScale.setValue(0);
525
+ dragOffset.setValue(0);
526
+ animatedBottomPosition.setValue(initialHeight);
527
+ currentHeightRef.current = initialHeight;
528
+ };
529
+ }, []);
530
+
531
+ // ============================================================================
532
+ // INTERPOLATIONS - All math done natively!
533
+ // ============================================================================
534
+
535
+ // Opacity interpolation for smooth fade
536
+ const modalOpacity = visibilityProgress.interpolate({
537
+ inputRange: [0, 1],
538
+ outputRange: [0, 1],
539
+ extrapolate: "clamp"
540
+ });
541
+
542
+ // ============================================================================
543
+ // REFS for values we need to track
544
+ // ============================================================================
545
+ const isExternallyControlled = !!externalAnimatedHeight;
546
+ const effectiveMaxHeight = maxHeight || SCREEN.height - insets.top;
547
+
548
+ // Mode toggle handler
549
+ /**
550
+ * Toggle between bottom sheet and floating modal modes
551
+ *
552
+ * Clears active dragging and resizing states to prevent visual artifacts
553
+ * when switching between modes with different interaction patterns.
554
+ */
555
+ const toggleMode = (0, _react.useCallback)(() => {
556
+ // Avoid carrying active styling across modes
557
+ setIsDragging(false);
558
+ setIsResizing(false);
559
+ const newMode = mode === "bottomSheet" ? "floating" : "bottomSheet";
560
+ setMode(newMode);
561
+ onModeChange?.(newMode);
562
+ }, [mode, onModeChange]);
563
+
564
+ // Belt-and-suspenders: also clear flags when mode changes
565
+ (0, _react.useEffect)(() => {
566
+ setIsDragging(false);
567
+ setIsResizing(false);
568
+ }, [mode]);
569
+
570
+ // Minimize handler - captures current state and animates out
571
+ const handleMinimize = (0, _react.useCallback)(() => {
572
+ if (!onMinimize) return;
573
+
574
+ // Capture current modal state for restoration
575
+ const currentState = {
576
+ mode,
577
+ panelHeight: currentHeightRef.current,
578
+ floatingPosition: {
579
+ x: currentDimensionsRef.current.left,
580
+ y: currentDimensionsRef.current.top
581
+ },
582
+ floatingDimensions: {
583
+ width: currentDimensionsRef.current.width,
584
+ height: currentDimensionsRef.current.height
585
+ }
586
+ };
587
+
588
+ // Animate modal shrinking toward target position
589
+ const targetX = minimizeTargetPosition?.x ?? SCREEN.width - 50;
590
+ const targetY = minimizeTargetPosition?.y ?? SCREEN.height - 150;
591
+
592
+ // Calculate animation based on current mode
593
+ if (mode === "bottomSheet") {
594
+ // Animate bottom sheet shrinking and moving toward target
595
+ _reactNative.Animated.parallel([_reactNative.Animated.timing(visibilityProgress, {
596
+ toValue: 0,
597
+ duration: 300,
598
+ useNativeDriver: true
599
+ }), _reactNative.Animated.timing(bottomSheetTranslateY, {
600
+ toValue: SCREEN.height,
601
+ duration: 300,
602
+ useNativeDriver: true
603
+ })]).start(() => {
604
+ onMinimize(currentState);
605
+ });
606
+ } else {
607
+ // Floating mode - animate scale and position toward icon
608
+ _reactNative.Animated.parallel([_reactNative.Animated.timing(floatingScale, {
609
+ toValue: 0,
610
+ duration: 300,
611
+ useNativeDriver: true
612
+ }), _reactNative.Animated.timing(visibilityProgress, {
613
+ toValue: 0,
614
+ duration: 300,
615
+ useNativeDriver: true
616
+ }), _reactNative.Animated.timing(floatingPosition, {
617
+ toValue: {
618
+ x: targetX,
619
+ y: targetY
620
+ },
621
+ duration: 300,
622
+ useNativeDriver: true
623
+ })]).start(() => {
624
+ onMinimize(currentState);
625
+ });
626
+ }
627
+ }, [mode, onMinimize, minimizeTargetPosition, visibilityProgress, bottomSheetTranslateY, floatingScale, floatingPosition]);
628
+
629
+ // Apply initial modal state when restoring from minimized
630
+ (0, _react.useEffect)(() => {
631
+ if (!initialModalState) return;
632
+
633
+ // Restore mode
634
+ if (initialModalState.mode) {
635
+ setMode(initialModalState.mode);
636
+ onModeChange?.(initialModalState.mode);
637
+ }
638
+
639
+ // Restore bottom sheet height
640
+ if (initialModalState.panelHeight) {
641
+ setPanelHeight(initialModalState.panelHeight);
642
+ currentHeightRef.current = initialModalState.panelHeight;
643
+ animatedBottomPosition.setValue(initialModalState.panelHeight);
644
+ }
645
+
646
+ // Restore floating dimensions and position
647
+ if (initialModalState.floatingDimensions && initialModalState.floatingPosition) {
648
+ const newDimensions = {
649
+ width: initialModalState.floatingDimensions.width,
650
+ height: initialModalState.floatingDimensions.height,
651
+ top: initialModalState.floatingPosition.y,
652
+ left: initialModalState.floatingPosition.x
653
+ };
654
+ setDimensions(newDimensions);
655
+ floatingPosition.setValue({
656
+ x: initialModalState.floatingPosition.x,
657
+ y: initialModalState.floatingPosition.y
658
+ });
659
+ animatedWidth.setValue(initialModalState.floatingDimensions.width);
660
+ animatedFloatingHeight.setValue(initialModalState.floatingDimensions.height);
661
+ }
662
+ }, [initialModalState]);
663
+
664
+ // ============================================================================
665
+ // EFFECT: Visibility Animations - All using native driver!
666
+ // ============================================================================
667
+ (0, _react.useEffect)(() => {
668
+ // Visibility effect
669
+ let openAnimation = null;
670
+ let closeAnimation = null;
671
+ if (visible) {
672
+ // Reset position if needed and then open
673
+ bottomSheetTranslateY.setValue(SCREEN.height);
674
+ visibilityProgress.setValue(0);
675
+
676
+ // Open animations
677
+ if (mode === "bottomSheet") {
678
+ // Parallel animations for smooth opening
679
+ openAnimation = _reactNative.Animated.parallel([
680
+ // Slide up from bottom
681
+ _reactNative.Animated.spring(bottomSheetTranslateY, {
682
+ toValue: 0,
683
+ tension: 180,
684
+ friction: 22,
685
+ useNativeDriver: true
686
+ }),
687
+ // Fade in backdrop
688
+ _reactNative.Animated.timing(visibilityProgress, {
689
+ toValue: 1,
690
+ duration: 200,
691
+ useNativeDriver: true
692
+ })]);
693
+ openAnimation.start();
694
+ } else {
695
+ // Floating mode entrance - simple fade without scale pop
696
+ floatingScale.setValue(1); // Set scale to 1 directly, no animation
697
+ openAnimation = _reactNative.Animated.timing(visibilityProgress, {
698
+ toValue: 1,
699
+ duration: 200,
700
+ useNativeDriver: true
701
+ });
702
+ openAnimation.start();
703
+ }
704
+ } else {
705
+ // Close animations
706
+ if (mode === "bottomSheet") {
707
+ closeAnimation = _reactNative.Animated.parallel([
708
+ // Slide down
709
+ _reactNative.Animated.spring(bottomSheetTranslateY, {
710
+ toValue: SCREEN.height,
711
+ tension: 180,
712
+ friction: 22,
713
+ useNativeDriver: true
714
+ }),
715
+ // Fade out backdrop
716
+ _reactNative.Animated.timing(visibilityProgress, {
717
+ toValue: 0,
718
+ duration: 200,
719
+ useNativeDriver: true
720
+ })]);
721
+ closeAnimation.start();
722
+ } else {
723
+ // Floating mode exit - simple fade without scale
724
+ closeAnimation = _reactNative.Animated.timing(visibilityProgress, {
725
+ toValue: 0,
726
+ duration: 200,
727
+ useNativeDriver: true
728
+ });
729
+ closeAnimation.start();
730
+ }
731
+ }
732
+
733
+ // Cleanup function - only stop animations, don't reset values
734
+ return () => {
735
+ // Cleanup animations
736
+ if (openAnimation) {
737
+ openAnimation.stop();
738
+ // Stopped open animation
739
+ }
740
+ if (closeAnimation) {
741
+ closeAnimation.stop();
742
+ // Stopped close animation
743
+ }
744
+ };
745
+ }, [visible, mode, visibilityProgress, bottomSheetTranslateY, floatingScale, externalAnimatedHeight]); // Removed initialHeight to prevent animation restarts on height changes
746
+
747
+ // ============================================================================
748
+ // OPTIMIZED PAN RESPONDER: Bottom Sheet Resize
749
+ // Following the documentation pattern for proper resize
750
+ // ============================================================================
751
+ const headerTouchOffsetRef = (0, _react.useRef)(0);
752
+ const bottomSheetPanResponder = (0, _react.useMemo)(() => _reactNative.PanResponder.create({
753
+ onStartShouldSetPanResponder: () => !isExternallyControlled && mode === "bottomSheet",
754
+ onMoveShouldSetPanResponder: (evt, gestureState) => !isExternallyControlled && mode === "bottomSheet" && Math.abs(gestureState.dy) > 3,
755
+ onPanResponderTerminationRequest: () => false,
756
+ onPanResponderGrant: evt => {
757
+ setIsResizing(true);
758
+
759
+ // Where inside the header the finger grabbed
760
+ headerTouchOffsetRef.current = evt.nativeEvent.locationY || 0;
761
+
762
+ // Stop any in-flight animations so we start from truth
763
+ animatedBottomPosition.stopAnimation(val => {
764
+ currentHeightRef.current = val;
765
+ });
766
+ bottomSheetTranslateY.stopAnimation();
767
+ },
768
+ onPanResponderMove: evt => {
769
+ // Absolute finger anchoring: sheet top should match finger (minus header offset)
770
+ const sheetTop = evt.nativeEvent.pageY - headerTouchOffsetRef.current;
771
+ // Height is from bottom of screen to sheetTop
772
+ let targetHeight = SCREEN.height - sheetTop;
773
+
774
+ // Clamp
775
+ targetHeight = Math.max(minHeight, Math.min(targetHeight, effectiveMaxHeight));
776
+
777
+ // Push to UI (no React state!)
778
+ animatedBottomPosition.setValue(targetHeight);
779
+ currentHeightRef.current = targetHeight;
780
+ if (externalAnimatedHeight) {
781
+ externalAnimatedHeight.setValue(targetHeight);
782
+ }
783
+ },
784
+ onPanResponderRelease: (evt, gestureState) => {
785
+ setIsResizing(false);
786
+ const finalHeight = currentHeightRef.current;
787
+
788
+ // Optional: close with fast downward swipe
789
+ const shouldClose = gestureState.vy > 0.8 && gestureState.dy > 50 || gestureState.dy > 150 && finalHeight <= minHeight;
790
+ if (shouldClose) {
791
+ _reactNative.Animated.parallel([_reactNative.Animated.timing(visibilityProgress, {
792
+ toValue: 0,
793
+ duration: 200,
794
+ useNativeDriver: true
795
+ }), _reactNative.Animated.spring(bottomSheetTranslateY, {
796
+ toValue: SCREEN.height,
797
+ tension: 180,
798
+ friction: 22,
799
+ useNativeDriver: true
800
+ })]).start(() => onClose());
801
+ return;
802
+ }
803
+
804
+ // We're already at the finger-tracked height; avoid re-animating it.
805
+ setPanelHeight(finalHeight);
806
+ if (externalAnimatedHeight) externalAnimatedHeight.setValue(finalHeight);
807
+ },
808
+ onPanResponderTerminate: () => {
809
+ setIsResizing(false);
810
+ // snap back to the last stable height if you want; otherwise no-op
811
+ }
812
+ }), [mode, isExternallyControlled, minHeight, effectiveMaxHeight, animatedBottomPosition, externalAnimatedHeight, bottomSheetTranslateY, visibilityProgress, onClose]);
813
+
814
+ // ============================================================================
815
+ // CREATE RESIZE HANDLER: For 4-corner resize in floating mode (fixed geometry)
816
+ // ============================================================================
817
+ /**
818
+ * Create a PanResponder for handling corner-based resizing in floating mode
819
+ *
820
+ * This function generates resize handlers for each corner that allow users to
821
+ * resize the floating modal by dragging from any corner. It includes boundary
822
+ * checking and minimum size constraints.
823
+ *
824
+ * @param corner - Which corner this handler is for
825
+ * @returns PanResponder configured for that corner's resize behavior
826
+ *
827
+ * @performance Uses direct animated value updates for smooth resizing
828
+ * @performance Includes safe area boundary checking for all corners
829
+ */
830
+ const createResizeHandler = (0, _react.useCallback)(corner => {
831
+ let didResize = false;
832
+ return _reactNative.PanResponder.create({
833
+ onStartShouldSetPanResponder: () => mode === "floating",
834
+ onMoveShouldSetPanResponder: () => mode === "floating",
835
+ onPanResponderGrant: () => {
836
+ didResize = false;
837
+ const currentDims = currentDimensionsRef.current;
838
+
839
+ // If any animation is in-flight, stop and capture final XY to keep math consistent
840
+ floatingPosition.stopAnimation(({
841
+ x,
842
+ y
843
+ }) => {
844
+ floatingPosition.setValue({
845
+ x,
846
+ y
847
+ });
848
+ });
849
+ setIsResizing(true);
850
+ // Snapshot starting rect
851
+ startDimensionsRef.current = {
852
+ ...currentDims
853
+ };
854
+
855
+ // Keep your existing refs up-to-date (not strictly needed now, but harmless)
856
+ sHeight.current = currentDims.height;
857
+ sWidth.current = currentDims.width;
858
+ offsetX.current = currentDims.left;
859
+ offsetY.current = currentDims.top;
860
+ },
861
+ onPanResponderMove: (_evt, gestureState) => {
862
+ const {
863
+ dx,
864
+ dy
865
+ } = gestureState;
866
+ if (Math.abs(dx) < 0.5 && Math.abs(dy) < 0.5) return;
867
+ didResize = true;
868
+ // Safe-area–aware bounds
869
+ const minLeft = Math.max(0, insets.left || 0);
870
+ const maxRight = containerBounds.width - Math.max(0, insets.right || 0);
871
+ const minTop = Math.max(0, insets.top || 0);
872
+ const maxBottom = containerBounds.height - Math.max(0, insets.bottom || 0);
873
+ const start = startDimensionsRef.current;
874
+ const startRight = start.left + start.width;
875
+ const startBottom = start.top + start.height;
876
+ let left = start.left;
877
+ let top = start.top;
878
+ let right = startRight;
879
+ let bottom = startBottom;
880
+ switch (corner) {
881
+ case "topLeft":
882
+ {
883
+ // Move left & top; anchor right & bottom
884
+ const newLeft = Math.max(minLeft, Math.min(start.left + dx, startRight - FLOATING_MIN_WIDTH));
885
+ const newTop = Math.max(minTop, Math.min(start.top + dy, startBottom - FLOATING_MIN_HEIGHT));
886
+ left = newLeft;
887
+ top = newTop;
888
+ right = startRight;
889
+ bottom = startBottom;
890
+ break;
891
+ }
892
+ case "topRight":
893
+ {
894
+ // Move right & top; anchor left & bottom
895
+ const newRight = Math.min(maxRight, Math.max(startRight + dx, start.left + FLOATING_MIN_WIDTH));
896
+ const newTop = Math.max(minTop, Math.min(start.top + dy, startBottom - FLOATING_MIN_HEIGHT));
897
+ left = start.left;
898
+ top = newTop;
899
+ right = newRight;
900
+ bottom = startBottom;
901
+ break;
902
+ }
903
+ case "bottomLeft":
904
+ {
905
+ // Move left & bottom; anchor right & top
906
+ const newLeft = Math.max(minLeft, Math.min(start.left + dx, startRight - FLOATING_MIN_WIDTH));
907
+ const newBottom = Math.min(maxBottom, Math.max(startBottom + dy, start.top + FLOATING_MIN_HEIGHT));
908
+ left = newLeft;
909
+ top = start.top;
910
+ right = startRight;
911
+ bottom = newBottom;
912
+ break;
913
+ }
914
+ case "bottomRight":
915
+ {
916
+ // Move right & bottom; anchor left & top
917
+ const newRight = Math.min(maxRight, Math.max(startRight + dx, start.left + FLOATING_MIN_WIDTH));
918
+ const newBottom = Math.min(maxBottom, Math.max(startBottom + dy, start.top + FLOATING_MIN_HEIGHT));
919
+ left = start.left;
920
+ top = start.top;
921
+ right = newRight;
922
+ bottom = newBottom;
923
+ break;
924
+ }
925
+ }
926
+
927
+ // Derive width/height from the edges
928
+ const updatedWidth = Math.max(FLOATING_MIN_WIDTH, right - left);
929
+ const updatedHeight = Math.max(FLOATING_MIN_HEIGHT, bottom - top);
930
+
931
+ // Push to UI
932
+ setDimensions({
933
+ width: updatedWidth,
934
+ height: updatedHeight,
935
+ left,
936
+ top
937
+ });
938
+
939
+ // Keep animated values in sync for your transforms
940
+ animatedWidth.setValue(updatedWidth);
941
+ animatedFloatingHeight.setValue(updatedHeight);
942
+ floatingPosition.setValue({
943
+ x: left,
944
+ y: top
945
+ });
946
+
947
+ // Cache
948
+ currentDimensionsRef.current = {
949
+ width: updatedWidth,
950
+ height: updatedHeight,
951
+ left,
952
+ top
953
+ };
954
+ },
955
+ onPanResponderRelease: () => {
956
+ setIsResizing(false);
957
+ didResize = false;
958
+ // currentDimensionsRef already holds the last values
959
+ setDimensions(currentDimensionsRef.current);
960
+ },
961
+ onPanResponderTerminate: () => {
962
+ setIsResizing(false);
963
+ didResize = false;
964
+ }
965
+ });
966
+ }, [mode, containerBounds, insets.left, insets.right, insets.top, insets.bottom, floatingPosition, animatedWidth, animatedFloatingHeight, onClose, onBack]);
967
+ const resizeHandlers = (0, _react.useMemo)(() => {
968
+ return {
969
+ topLeft: createResizeHandler("topLeft"),
970
+ topRight: createResizeHandler("topRight"),
971
+ bottomLeft: createResizeHandler("bottomLeft"),
972
+ bottomRight: createResizeHandler("bottomRight")
973
+ };
974
+ }, [createResizeHandler]);
975
+
976
+ // ============================================================================
977
+ // Floating Mode Drag Handlers for DraggableHeader
978
+ // ============================================================================
979
+ const handleFloatingDragStart = (0, _react.useCallback)(() => {
980
+ setIsDragging(true);
981
+ }, []);
982
+ const handleFloatingDragEnd = (0, _react.useCallback)(finalPosition => {
983
+ setIsDragging(false);
984
+
985
+ // Update dimensions state to match final position
986
+ const currentDims = currentDimensionsRef.current;
987
+ const newDimensions = {
988
+ ...currentDims,
989
+ left: finalPosition.x,
990
+ top: finalPosition.y
991
+ };
992
+ setDimensions(newDimensions);
993
+ }, []);
994
+
995
+ // Track taps for double/triple tap functionality
996
+ const lastTapRef = (0, _react.useRef)(0);
997
+ const tapCountRef = (0, _react.useRef)(0);
998
+ const tapTimeoutRef = (0, _react.useRef)(null);
999
+ const handleFloatingTap = (0, _react.useCallback)(() => {
1000
+ const now = Date.now();
1001
+ const timeSinceLastTap = now - lastTapRef.current;
1002
+
1003
+ // Reset tap count if more than 500ms since last tap
1004
+ if (timeSinceLastTap > 500) {
1005
+ tapCountRef.current = 0;
1006
+ }
1007
+ tapCountRef.current++;
1008
+ lastTapRef.current = now;
1009
+
1010
+ // Clear existing timeout
1011
+ if (tapTimeoutRef.current) {
1012
+ clearTimeout(tapTimeoutRef.current);
1013
+ }
1014
+
1015
+ // Set timeout to process the tap gesture
1016
+ tapTimeoutRef.current = setTimeout(() => {
1017
+ if (tapCountRef.current === 2) {
1018
+ // Double tap - toggle mode
1019
+ toggleMode();
1020
+ } else if (tapCountRef.current >= 3) {
1021
+ // Triple tap - minimize modal (if available)
1022
+ if (onMinimize) {
1023
+ handleMinimize();
1024
+ }
1025
+ }
1026
+ tapCountRef.current = 0;
1027
+ }, 300);
1028
+ }, [toggleMode, onMinimize, handleMinimize]);
1029
+
1030
+ // Clean up timeout on unmount for main component tap handler
1031
+ (0, _react.useEffect)(() => {
1032
+ return () => {
1033
+ if (tapTimeoutRef.current) {
1034
+ clearTimeout(tapTimeoutRef.current);
1035
+ }
1036
+ };
1037
+ }, []);
1038
+
1039
+ // ============================================================================
1040
+ // RENDER: Modal UI with transform-based animations
1041
+ // ============================================================================
1042
+
1043
+ // When not visible, render off-screen to keep children mounted (preserves state/listeners)
1044
+ // This is similar to how React Navigation keeps screens mounted
1045
+ if (!visible) {
1046
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
1047
+ style: styles.hiddenContainer,
1048
+ pointerEvents: "none",
1049
+ accessibilityElementsHidden: true,
1050
+ importantForAccessibility: "no-hide-descendants",
1051
+ children: children
1052
+ });
1053
+ }
1054
+
1055
+ // Render floating mode
1056
+ if (mode === "floating") {
1057
+ return /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Animated.View, {
1058
+ nativeID: "jsmodal-root",
1059
+ style: [styles.floatingModal, {
1060
+ width: dimensions.width,
1061
+ // Use state dimensions for real-time updates
1062
+ height: dimensions.height,
1063
+ opacity: modalOpacity,
1064
+ transform: [{
1065
+ translateX: floatingPosition.x
1066
+ }, {
1067
+ translateY: floatingPosition.y
1068
+ }],
1069
+ ...(zIndex !== undefined && {
1070
+ zIndex
1071
+ })
1072
+ }, (isDragging || isResizing) && styles.floatingModalDragging, customStyles.container],
1073
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_index2.DraggableHeader, {
1074
+ position: floatingPosition,
1075
+ onDragStart: handleFloatingDragStart,
1076
+ onDragEnd: handleFloatingDragEnd,
1077
+ onTap: handleFloatingTap,
1078
+ containerBounds: containerBounds,
1079
+ elementSize: dimensions,
1080
+ minPosition: {
1081
+ x: 0,
1082
+ y: insets.top
1083
+ },
1084
+ style: styles.floatingHeader,
1085
+ enabled: mode === "floating" && !isResizing,
1086
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(ModalHeader, {
1087
+ header: header,
1088
+ onClose: onClose,
1089
+ onToggleMode: toggleMode,
1090
+ onMinimize: onMinimize ? handleMinimize : undefined,
1091
+ isResizing: isDragging || isResizing,
1092
+ mode: mode
1093
+ })
1094
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
1095
+ style: styles.windowControlsContainer,
1096
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_index2.WindowControls, {
1097
+ onClose: onClose,
1098
+ onMinimize: onMinimize ? handleMinimize : undefined,
1099
+ onToggleMode: toggleMode,
1100
+ mode: mode
1101
+ })
1102
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
1103
+ style: [styles.content, customStyles.content],
1104
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ScrollView, {
1105
+ style: {
1106
+ flex: 1
1107
+ },
1108
+ contentContainerStyle: {
1109
+ flexGrow: 1,
1110
+ paddingBottom: footerHeight
1111
+ },
1112
+ showsVerticalScrollIndicator: true,
1113
+ nestedScrollEnabled: true,
1114
+ children: children
1115
+ }), footer ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
1116
+ style: footerStyles.footerContainer,
1117
+ children: footer
1118
+ }) : null]
1119
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
1120
+ ...resizeHandlers.bottomLeft.panHandlers,
1121
+ style: [styles.cornerHandleWrapper, {
1122
+ bottom: 4,
1123
+ left: 4
1124
+ }],
1125
+ hitSlop: {
1126
+ top: 2,
1127
+ left: 2,
1128
+ right: 2,
1129
+ bottom: 2
1130
+ },
1131
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(CornerHandle, {
1132
+ position: "bottomLeft",
1133
+ isActive: isDragging || isResizing
1134
+ })
1135
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
1136
+ ...resizeHandlers.bottomRight.panHandlers,
1137
+ style: [styles.cornerHandleWrapper, {
1138
+ bottom: 4,
1139
+ right: 4
1140
+ }],
1141
+ hitSlop: {
1142
+ top: 2,
1143
+ left: 2,
1144
+ right: 2,
1145
+ bottom: 2
1146
+ },
1147
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(CornerHandle, {
1148
+ position: "bottomRight",
1149
+ isActive: isDragging || isResizing
1150
+ })
1151
+ })]
1152
+ });
1153
+ }
1154
+
1155
+ // Render bottom sheet mode with proper height animation
1156
+ return /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
1157
+ style: [styles.fullScreenContainer, zIndex !== undefined && {
1158
+ zIndex
1159
+ }],
1160
+ pointerEvents: "box-none",
1161
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.Animated.View, {
1162
+ nativeID: "jsmodal-root",
1163
+ style: [styles.bottomSheetWrapper, {
1164
+ opacity: modalOpacity,
1165
+ transform: [{
1166
+ translateY: bottomSheetTranslateY
1167
+ }]
1168
+ }],
1169
+ children: /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.Animated.View, {
1170
+ style: [styles.bottomSheet, customStyles.container, {
1171
+ height: externalAnimatedHeight || animatedBottomPosition
1172
+ }],
1173
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(ModalHeader, {
1174
+ header: header,
1175
+ onClose: onClose,
1176
+ onToggleMode: toggleMode,
1177
+ onMinimize: onMinimize ? handleMinimize : undefined,
1178
+ isResizing: isResizing,
1179
+ mode: mode,
1180
+ panHandlers: bottomSheetPanResponder.panHandlers
1181
+ }), /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
1182
+ style: styles.windowControlsContainer,
1183
+ children: /*#__PURE__*/(0, _jsxRuntime.jsx)(_index2.WindowControls, {
1184
+ onClose: onClose,
1185
+ onMinimize: onMinimize ? handleMinimize : undefined,
1186
+ onToggleMode: toggleMode,
1187
+ mode: mode
1188
+ })
1189
+ }), hintLoaded && showHint && mode === "bottomSheet" && !hintsDisabled && /*#__PURE__*/(0, _jsxRuntime.jsx)(_index2.ModalHintBanner, {
1190
+ onAcknowledge: handleHintAcknowledge
1191
+ }), /*#__PURE__*/(0, _jsxRuntime.jsxs)(_reactNative.View, {
1192
+ style: [styles.content, customStyles.content],
1193
+ children: [/*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.ScrollView, {
1194
+ style: {
1195
+ flex: 1
1196
+ },
1197
+ contentContainerStyle: {
1198
+ flexGrow: 1,
1199
+ paddingBottom: footerHeight
1200
+ },
1201
+ showsVerticalScrollIndicator: true,
1202
+ nestedScrollEnabled: true,
1203
+ children: children
1204
+ }), footer ? /*#__PURE__*/(0, _jsxRuntime.jsx)(_reactNative.View, {
1205
+ style: footerStyles.footerContainer,
1206
+ children: footer
1207
+ }) : null]
1208
+ })]
1209
+ })
1210
+ })
1211
+ });
1212
+ };
1213
+
1214
+ // ============================================================================
1215
+ // STYLES - Visual styling for all modal components
1216
+ // ============================================================================
1217
+ const styles = _reactNative.StyleSheet.create({
1218
+ fullScreenContainer: {
1219
+ ..._reactNative.StyleSheet.absoluteFillObject,
1220
+ zIndex: 1000
1221
+ },
1222
+ bottomSheetWrapper: {
1223
+ position: "absolute",
1224
+ bottom: 0,
1225
+ left: 0,
1226
+ right: 0
1227
+ },
1228
+ bottomSheet: {
1229
+ backgroundColor: _index.buoyColors.card,
1230
+ // Buoy card
1231
+ borderTopLeftRadius: 6,
1232
+ borderTopRightRadius: 6,
1233
+ borderWidth: 1,
1234
+ borderColor: _index.buoyColors.border,
1235
+ shadowColor: _index.buoyColors.primary,
1236
+ shadowOffset: {
1237
+ width: 0,
1238
+ height: -4
1239
+ },
1240
+ shadowOpacity: 0.2,
1241
+ shadowRadius: 12,
1242
+ elevation: 20
1243
+ },
1244
+ hiddenContainer: {
1245
+ position: "absolute",
1246
+ left: -9999,
1247
+ top: -9999,
1248
+ opacity: 0
1249
+ },
1250
+ floatingModal: {
1251
+ position: "absolute",
1252
+ backgroundColor: _index.buoyColors.card,
1253
+ borderRadius: 6,
1254
+ borderWidth: 1,
1255
+ borderColor: _index.buoyColors.border,
1256
+ shadowColor: _index.buoyColors.primary,
1257
+ shadowOffset: {
1258
+ width: 0,
1259
+ height: 0
1260
+ },
1261
+ shadowOpacity: 0.3,
1262
+ shadowRadius: 20,
1263
+ elevation: 24,
1264
+ zIndex: 1000,
1265
+ // Default dimensions, will be overridden by animated values
1266
+ width: FLOATING_WIDTH,
1267
+ height: FLOATING_HEIGHT
1268
+ },
1269
+ floatingModalDragging: {
1270
+ borderColor: _index.buoyColors.primary,
1271
+ borderWidth: 2,
1272
+ shadowColor: _index.buoyColors.primary + "99",
1273
+ shadowOpacity: 0.8,
1274
+ shadowRadius: 12
1275
+ },
1276
+ header: {
1277
+ borderTopLeftRadius: 6,
1278
+ borderTopRightRadius: 6,
1279
+ backgroundColor: _index.buoyColors.card,
1280
+ // Buoy card color
1281
+ minHeight: 56,
1282
+ borderWidth: 1,
1283
+ borderColor: _index.buoyColors.border,
1284
+ // Buoy border
1285
+ borderBottomWidth: 1,
1286
+ borderBottomColor: _index.buoyColors.border
1287
+ },
1288
+ floatingHeader: {
1289
+ borderTopLeftRadius: 6,
1290
+ borderTopRightRadius: 6
1291
+ },
1292
+ windowControlsContainer: {
1293
+ position: "absolute",
1294
+ top: 4,
1295
+ right: 4,
1296
+ zIndex: 10
1297
+ },
1298
+ floatingModeHeader: {
1299
+ borderTopLeftRadius: 6,
1300
+ borderTopRightRadius: 6
1301
+ },
1302
+ headerInner: {
1303
+ flex: 1,
1304
+ justifyContent: "center"
1305
+ },
1306
+ dragIndicatorContainer: {
1307
+ alignItems: "center",
1308
+ paddingVertical: 8,
1309
+ backgroundColor: "transparent"
1310
+ },
1311
+ dragIndicatorContainerCustom: {
1312
+ paddingTop: 6,
1313
+ paddingBottom: 2,
1314
+ backgroundColor: "transparent"
1315
+ },
1316
+ dragIndicator: {
1317
+ width: 40,
1318
+ height: 3,
1319
+ backgroundColor: _index.buoyColors.primary,
1320
+ // Buoy primary teal
1321
+ borderRadius: 2,
1322
+ shadowColor: _index.buoyColors.primary,
1323
+ shadowOffset: {
1324
+ width: 0,
1325
+ height: 0
1326
+ },
1327
+ shadowOpacity: 0.6,
1328
+ shadowRadius: 4
1329
+ },
1330
+ floatingDragIndicator: {
1331
+ width: 50,
1332
+ height: 5,
1333
+ backgroundColor: _index.buoyColors.textMuted
1334
+ },
1335
+ dragIndicatorActive: {
1336
+ backgroundColor: _index.buoyColors.primary,
1337
+ width: 40
1338
+ },
1339
+ resizeGripContainer: {
1340
+ position: "absolute",
1341
+ flexDirection: "row",
1342
+ gap: 2,
1343
+ marginTop: 12
1344
+ },
1345
+ resizeGripLine: {
1346
+ width: 12,
1347
+ height: 1,
1348
+ backgroundColor: _index.gameUIColors.success,
1349
+ opacity: 0.6
1350
+ },
1351
+ headerContent: {
1352
+ paddingHorizontal: 16,
1353
+ alignItems: "center"
1354
+ },
1355
+ headerControls: {
1356
+ position: "absolute",
1357
+ top: 8,
1358
+ right: 16,
1359
+ flexDirection: "row",
1360
+ alignItems: "center"
1361
+ },
1362
+ headerTitle: {
1363
+ fontSize: 16,
1364
+ fontWeight: "600",
1365
+ color: _index.gameUIColors.primary
1366
+ },
1367
+ headerSubtitle: {
1368
+ fontSize: 12,
1369
+ color: _index.gameUIColors.secondary,
1370
+ paddingTop: 4
1371
+ },
1372
+ headerHintText: {
1373
+ position: "absolute",
1374
+ top: 0,
1375
+ left: 0,
1376
+ right: 0,
1377
+ bottom: 0,
1378
+ justifyContent: "center",
1379
+ alignItems: "center"
1380
+ },
1381
+ hintText: {
1382
+ fontSize: 10,
1383
+ color: _index.gameUIColors.muted,
1384
+ fontStyle: "italic"
1385
+ },
1386
+ controlButton: {
1387
+ width: 28,
1388
+ height: 28,
1389
+ borderRadius: 6,
1390
+ justifyContent: "center",
1391
+ alignItems: "center",
1392
+ marginLeft: 8
1393
+ },
1394
+ toggleButton: {
1395
+ backgroundColor: _index.gameUIColors.info + "1A",
1396
+ borderWidth: 1,
1397
+ borderColor: _index.gameUIColors.info + "33"
1398
+ },
1399
+ closeButton: {
1400
+ width: 28,
1401
+ height: 28,
1402
+ borderRadius: 6,
1403
+ justifyContent: "center",
1404
+ alignItems: "center",
1405
+ backgroundColor: _index.gameUIColors.error + "1A",
1406
+ borderWidth: 1,
1407
+ borderColor: _index.gameUIColors.error + "33",
1408
+ marginLeft: 8
1409
+ },
1410
+ iconLine: {
1411
+ position: "absolute",
1412
+ top: 7.25,
1413
+ left: 2,
1414
+ width: 12,
1415
+ height: 1.5,
1416
+ backgroundColor: _index.gameUIColors.error
1417
+ },
1418
+ content: {
1419
+ flex: 1,
1420
+ backgroundColor: _index.buoyColors.base,
1421
+ borderBottomLeftRadius: 16,
1422
+ borderBottomRightRadius: 16,
1423
+ overflow: "hidden"
1424
+ },
1425
+ cornerHandle: {
1426
+ position: "absolute",
1427
+ zIndex: 1
1428
+ },
1429
+ cornerHandleWrapper: {
1430
+ position: "absolute",
1431
+ width: 30,
1432
+ height: 30,
1433
+ zIndex: 1000
1434
+ },
1435
+ handler: {
1436
+ width: 20,
1437
+ height: 20,
1438
+ backgroundColor: "transparent",
1439
+ borderRadius: 10,
1440
+ borderWidth: 0,
1441
+ borderColor: "transparent"
1442
+ },
1443
+ handlerActive: {
1444
+ backgroundColor: _index.gameUIColors.success + "1A",
1445
+ borderColor: _index.gameUIColors.success,
1446
+ borderWidth: 2,
1447
+ shadowColor: _index.gameUIColors.success + "99",
1448
+ shadowOffset: {
1449
+ width: 0,
1450
+ height: 0
1451
+ },
1452
+ shadowOpacity: 1,
1453
+ shadowRadius: 8
1454
+ }
1455
+ });
1456
+
1457
+ // Footer container styles (absolute within modal content area)
1458
+ const footerStyles = _reactNative.StyleSheet.create({
1459
+ footerContainer: {
1460
+ position: "absolute",
1461
+ left: 0,
1462
+ right: 0,
1463
+ bottom: 0,
1464
+ backgroundColor: _index.buoyColors.base,
1465
+ borderBottomLeftRadius: 16,
1466
+ borderBottomRightRadius: 16
1467
+ }
1468
+ });
1469
+
1470
+ // ============================================================================
1471
+ // EXPORT - Memoized modal component for optimal performance
1472
+ // ============================================================================
1473
+ const JsModal = exports.JsModal = /*#__PURE__*/(0, _react.memo)(JsModalComponent);