@buoy-gg/shared-ui 7.0.33 → 7.0.35

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 (323) hide show
  1. package/lib/commonjs/JsModal.js +57 -22
  2. package/lib/commonjs/dataViewer/CyberpunkInput.js +3 -2
  3. package/lib/commonjs/dataViewer/DataTreeActionBar.js +3 -2
  4. package/lib/commonjs/dataViewer/DataTreeActionDock.js +2 -1
  5. package/lib/commonjs/dataViewer/DiffSummary.js +4 -3
  6. package/lib/commonjs/dataViewer/LiveExplorer.js +11 -10
  7. package/lib/commonjs/dataViewer/SplitDiffViewer.js +10 -9
  8. package/lib/commonjs/dataViewer/ThemedSplitView.js +12 -11
  9. package/lib/commonjs/dataViewer/ValueEditModal.js +6 -5
  10. package/lib/commonjs/dataViewer/VirtualizedDataExplorer.js +4 -3
  11. package/lib/commonjs/dataViewer/tree/TreeDiffViewer.js +15 -14
  12. package/lib/commonjs/hooks/index.js +26 -0
  13. package/lib/commonjs/hooks/safe-area-impl.js +1 -1
  14. package/lib/commonjs/hooks/useChangeLog.js +55 -0
  15. package/lib/commonjs/hooks/useEventStoreEvents.js +65 -0
  16. package/lib/commonjs/hooks/usePersistedState.js +45 -10
  17. package/lib/commonjs/icons/index.js +533 -1
  18. package/lib/commonjs/index.js +143 -0
  19. package/lib/commonjs/license/FreeAccountPrompt.js +2 -1
  20. package/lib/commonjs/license/LicenseEntryModal.js +2 -1
  21. package/lib/commonjs/storage/definePersistedSetting.js +67 -0
  22. package/lib/commonjs/storage/index.js +8 -1
  23. package/lib/commonjs/stores/ChangeLog.js +197 -0
  24. package/lib/commonjs/stores/createToolStore.js +175 -0
  25. package/lib/commonjs/stores/index.js +15 -1
  26. package/lib/commonjs/sync/toolSyncAdapter.js +63 -0
  27. package/lib/commonjs/sync/wireForm.js +172 -0
  28. package/lib/commonjs/tools/defineTool.js +79 -0
  29. package/lib/commonjs/ui/components/ChangeRow.js +111 -0
  30. package/lib/commonjs/ui/components/ChipStrip.js +94 -0
  31. package/lib/commonjs/ui/components/ClipboardHintBanner.js +2 -1
  32. package/lib/commonjs/ui/components/CompactRow.js +3 -2
  33. package/lib/commonjs/ui/components/DataInspector.js +3 -2
  34. package/lib/commonjs/ui/components/DetailView.js +2 -1
  35. package/lib/commonjs/ui/components/DetailViewToggle.js +130 -0
  36. package/lib/commonjs/ui/components/DevToolsCard.js +3 -1
  37. package/lib/commonjs/ui/components/DynamicFilterView.js +8 -7
  38. package/lib/commonjs/ui/components/EntityFilterView.js +355 -0
  39. package/lib/commonjs/ui/components/EventHistoryViewer/CompareBar.js +5 -4
  40. package/lib/commonjs/ui/components/EventHistoryViewer/DiffModeTabs.js +2 -1
  41. package/lib/commonjs/ui/components/EventHistoryViewer/EventPickerModal.js +5 -4
  42. package/lib/commonjs/ui/components/EventStepperFooter.js +4 -3
  43. package/lib/commonjs/ui/components/ExpandablePopover.js +12 -4
  44. package/lib/commonjs/ui/components/ExpandedInfoRow.js +3 -2
  45. package/lib/commonjs/ui/components/ExportPreview.js +174 -0
  46. package/lib/commonjs/ui/components/FilterComponents.js +2 -1
  47. package/lib/commonjs/ui/components/InfoRow.js +91 -0
  48. package/lib/commonjs/ui/components/ModalHeader.js +40 -7
  49. package/lib/commonjs/ui/components/Pill.js +115 -0
  50. package/lib/commonjs/ui/components/ToggleRow.js +116 -0
  51. package/lib/commonjs/ui/components/ToolFooter.js +205 -0
  52. package/lib/commonjs/ui/components/index.js +100 -1
  53. package/lib/commonjs/ui/console/CyberpunkSectionButton.js +3 -2
  54. package/lib/commonjs/ui/fonts.js +12 -0
  55. package/lib/commonjs/ui/gameUI/components/GameUICollapsibleSection.js +4 -3
  56. package/lib/commonjs/ui/gameUI/components/GameUICompactStats.js +12 -11
  57. package/lib/commonjs/ui/gameUI/components/GameUIIssuesList.js +9 -8
  58. package/lib/commonjs/ui/gameUI/components/GameUIStatusHeader.js +4 -3
  59. package/lib/commonjs/ui/index.js +32 -2
  60. package/lib/commonjs/ui/listPresets.js +43 -0
  61. package/lib/commonjs/ui/night/primitives.js +3 -1
  62. package/lib/commonjs/ui/toolTheme.js +4 -3
  63. package/lib/commonjs/utils/snapshotProviderKit.js +167 -0
  64. package/lib/commonjs/utils/stateTools.js +160 -0
  65. package/lib/module/JsModal.js +57 -22
  66. package/lib/module/dataViewer/CyberpunkInput.js +3 -2
  67. package/lib/module/dataViewer/DataTreeActionBar.js +3 -2
  68. package/lib/module/dataViewer/DataTreeActionDock.js +2 -1
  69. package/lib/module/dataViewer/DiffSummary.js +4 -3
  70. package/lib/module/dataViewer/LiveExplorer.js +11 -11
  71. package/lib/module/dataViewer/SplitDiffViewer.js +10 -9
  72. package/lib/module/dataViewer/ThemedSplitView.js +12 -11
  73. package/lib/module/dataViewer/ValueEditModal.js +6 -5
  74. package/lib/module/dataViewer/VirtualizedDataExplorer.js +5 -4
  75. package/lib/module/dataViewer/tree/TreeDiffViewer.js +15 -15
  76. package/lib/module/hooks/index.js +3 -1
  77. package/lib/module/hooks/safe-area-impl.js +1 -1
  78. package/lib/module/hooks/useChangeLog.js +50 -0
  79. package/lib/module/hooks/useEventStoreEvents.js +61 -0
  80. package/lib/module/hooks/usePersistedState.js +44 -10
  81. package/lib/module/icons/index.js +27 -2
  82. package/lib/module/index.js +11 -1
  83. package/lib/module/license/FreeAccountPrompt.js +2 -2
  84. package/lib/module/license/LicenseEntryModal.js +3 -3
  85. package/lib/module/storage/definePersistedSetting.js +63 -0
  86. package/lib/module/storage/index.js +2 -1
  87. package/lib/module/stores/ChangeLog.js +192 -0
  88. package/lib/module/stores/createToolStore.js +171 -0
  89. package/lib/module/stores/index.js +3 -1
  90. package/lib/module/sync/toolSyncAdapter.js +58 -0
  91. package/lib/module/sync/wireForm.js +159 -0
  92. package/lib/module/tools/defineTool.js +74 -0
  93. package/lib/module/ui/components/ChangeRow.js +106 -0
  94. package/lib/module/ui/components/ChipStrip.js +91 -0
  95. package/lib/module/ui/components/ClipboardHintBanner.js +2 -1
  96. package/lib/module/ui/components/CompactRow.js +3 -2
  97. package/lib/module/ui/components/DataInspector.js +3 -2
  98. package/lib/module/ui/components/DetailView.js +2 -1
  99. package/lib/module/ui/components/DetailViewToggle.js +125 -0
  100. package/lib/module/ui/components/DevToolsCard.js +3 -1
  101. package/lib/module/ui/components/DynamicFilterView.js +8 -7
  102. package/lib/module/ui/components/EntityFilterView.js +351 -0
  103. package/lib/module/ui/components/EventHistoryViewer/CompareBar.js +6 -5
  104. package/lib/module/ui/components/EventHistoryViewer/DiffModeTabs.js +3 -2
  105. package/lib/module/ui/components/EventHistoryViewer/EventPickerModal.js +6 -5
  106. package/lib/module/ui/components/EventStepperFooter.js +4 -3
  107. package/lib/module/ui/components/ExpandablePopover.js +12 -4
  108. package/lib/module/ui/components/ExpandedInfoRow.js +3 -2
  109. package/lib/module/ui/components/ExportPreview.js +169 -0
  110. package/lib/module/ui/components/FilterComponents.js +2 -2
  111. package/lib/module/ui/components/InfoRow.js +87 -0
  112. package/lib/module/ui/components/ModalHeader.js +40 -7
  113. package/lib/module/ui/components/Pill.js +111 -0
  114. package/lib/module/ui/components/ToggleRow.js +112 -0
  115. package/lib/module/ui/components/ToolFooter.js +197 -0
  116. package/lib/module/ui/components/index.js +10 -1
  117. package/lib/module/ui/console/CyberpunkSectionButton.js +3 -2
  118. package/lib/module/ui/fonts.js +8 -0
  119. package/lib/module/ui/gameUI/components/GameUICollapsibleSection.js +4 -3
  120. package/lib/module/ui/gameUI/components/GameUICompactStats.js +12 -11
  121. package/lib/module/ui/gameUI/components/GameUIIssuesList.js +9 -8
  122. package/lib/module/ui/gameUI/components/GameUIStatusHeader.js +4 -3
  123. package/lib/module/ui/index.js +7 -1
  124. package/lib/module/ui/listPresets.js +39 -0
  125. package/lib/module/ui/night/primitives.js +3 -1
  126. package/lib/module/ui/toolTheme.js +4 -4
  127. package/lib/module/utils/snapshotProviderKit.js +156 -0
  128. package/lib/module/utils/stateTools.js +154 -0
  129. package/lib/typescript/commonjs/JsModal.d.ts.map +1 -1
  130. package/lib/typescript/commonjs/dataViewer/CyberpunkInput.d.ts.map +1 -1
  131. package/lib/typescript/commonjs/dataViewer/DataTreeActionBar.d.ts.map +1 -1
  132. package/lib/typescript/commonjs/dataViewer/DataTreeActionDock.d.ts.map +1 -1
  133. package/lib/typescript/commonjs/dataViewer/DiffSummary.d.ts.map +1 -1
  134. package/lib/typescript/commonjs/dataViewer/LiveExplorer.d.ts.map +1 -1
  135. package/lib/typescript/commonjs/dataViewer/SplitDiffViewer.d.ts.map +1 -1
  136. package/lib/typescript/commonjs/dataViewer/ThemedSplitView.d.ts.map +1 -1
  137. package/lib/typescript/commonjs/dataViewer/ValueEditModal.d.ts.map +1 -1
  138. package/lib/typescript/commonjs/dataViewer/VirtualizedDataExplorer.d.ts.map +1 -1
  139. package/lib/typescript/commonjs/dataViewer/tree/TreeDiffViewer.d.ts.map +1 -1
  140. package/lib/typescript/commonjs/hooks/index.d.ts +3 -1
  141. package/lib/typescript/commonjs/hooks/index.d.ts.map +1 -1
  142. package/lib/typescript/commonjs/hooks/safe-area-impl.d.ts +1 -1
  143. package/lib/typescript/commonjs/hooks/useChangeLog.d.ts +38 -0
  144. package/lib/typescript/commonjs/hooks/useChangeLog.d.ts.map +1 -0
  145. package/lib/typescript/commonjs/hooks/useEventStoreEvents.d.ts +25 -0
  146. package/lib/typescript/commonjs/hooks/useEventStoreEvents.d.ts.map +1 -0
  147. package/lib/typescript/commonjs/hooks/usePersistedState.d.ts +34 -5
  148. package/lib/typescript/commonjs/hooks/usePersistedState.d.ts.map +1 -1
  149. package/lib/typescript/commonjs/icons/index.d.ts +4 -1
  150. package/lib/typescript/commonjs/icons/index.d.ts.map +1 -1
  151. package/lib/typescript/commonjs/index.d.ts +6 -1
  152. package/lib/typescript/commonjs/index.d.ts.map +1 -1
  153. package/lib/typescript/commonjs/license/FreeAccountPrompt.d.ts.map +1 -1
  154. package/lib/typescript/commonjs/license/LicenseEntryModal.d.ts.map +1 -1
  155. package/lib/typescript/commonjs/storage/definePersistedSetting.d.ts +39 -0
  156. package/lib/typescript/commonjs/storage/definePersistedSetting.d.ts.map +1 -0
  157. package/lib/typescript/commonjs/storage/index.d.ts +1 -0
  158. package/lib/typescript/commonjs/storage/index.d.ts.map +1 -1
  159. package/lib/typescript/commonjs/stores/ChangeLog.d.ts +100 -0
  160. package/lib/typescript/commonjs/stores/ChangeLog.d.ts.map +1 -0
  161. package/lib/typescript/commonjs/stores/createToolStore.d.ts +92 -0
  162. package/lib/typescript/commonjs/stores/createToolStore.d.ts.map +1 -0
  163. package/lib/typescript/commonjs/stores/index.d.ts +2 -0
  164. package/lib/typescript/commonjs/stores/index.d.ts.map +1 -1
  165. package/lib/typescript/commonjs/sync/toolSyncAdapter.d.ts +66 -0
  166. package/lib/typescript/commonjs/sync/toolSyncAdapter.d.ts.map +1 -0
  167. package/lib/typescript/commonjs/sync/wireForm.d.ts +100 -0
  168. package/lib/typescript/commonjs/sync/wireForm.d.ts.map +1 -0
  169. package/lib/typescript/commonjs/tools/defineTool.d.ts +100 -0
  170. package/lib/typescript/commonjs/tools/defineTool.d.ts.map +1 -0
  171. package/lib/typescript/commonjs/ui/components/ChangeRow.d.ts +52 -0
  172. package/lib/typescript/commonjs/ui/components/ChangeRow.d.ts.map +1 -0
  173. package/lib/typescript/commonjs/ui/components/ChipStrip.d.ts +41 -0
  174. package/lib/typescript/commonjs/ui/components/ChipStrip.d.ts.map +1 -0
  175. package/lib/typescript/commonjs/ui/components/ClipboardHintBanner.d.ts.map +1 -1
  176. package/lib/typescript/commonjs/ui/components/CompactRow.d.ts.map +1 -1
  177. package/lib/typescript/commonjs/ui/components/DataInspector.d.ts.map +1 -1
  178. package/lib/typescript/commonjs/ui/components/DetailView.d.ts.map +1 -1
  179. package/lib/typescript/commonjs/ui/components/DetailViewToggle.d.ts +36 -0
  180. package/lib/typescript/commonjs/ui/components/DetailViewToggle.d.ts.map +1 -0
  181. package/lib/typescript/commonjs/ui/components/DevToolsCard.d.ts +8 -1
  182. package/lib/typescript/commonjs/ui/components/DevToolsCard.d.ts.map +1 -1
  183. package/lib/typescript/commonjs/ui/components/DynamicFilterView.d.ts.map +1 -1
  184. package/lib/typescript/commonjs/ui/components/EntityFilterView.d.ts +51 -0
  185. package/lib/typescript/commonjs/ui/components/EntityFilterView.d.ts.map +1 -0
  186. package/lib/typescript/commonjs/ui/components/EventHistoryViewer/CompareBar.d.ts.map +1 -1
  187. package/lib/typescript/commonjs/ui/components/EventHistoryViewer/DiffModeTabs.d.ts.map +1 -1
  188. package/lib/typescript/commonjs/ui/components/EventHistoryViewer/EventPickerModal.d.ts.map +1 -1
  189. package/lib/typescript/commonjs/ui/components/EventStepperFooter.d.ts.map +1 -1
  190. package/lib/typescript/commonjs/ui/components/ExpandablePopover.d.ts +5 -1
  191. package/lib/typescript/commonjs/ui/components/ExpandablePopover.d.ts.map +1 -1
  192. package/lib/typescript/commonjs/ui/components/ExpandedInfoRow.d.ts.map +1 -1
  193. package/lib/typescript/commonjs/ui/components/ExportPreview.d.ts +48 -0
  194. package/lib/typescript/commonjs/ui/components/ExportPreview.d.ts.map +1 -0
  195. package/lib/typescript/commonjs/ui/components/FilterComponents.d.ts.map +1 -1
  196. package/lib/typescript/commonjs/ui/components/InfoRow.d.ts +33 -0
  197. package/lib/typescript/commonjs/ui/components/InfoRow.d.ts.map +1 -0
  198. package/lib/typescript/commonjs/ui/components/ModalHeader.d.ts +31 -1
  199. package/lib/typescript/commonjs/ui/components/ModalHeader.d.ts.map +1 -1
  200. package/lib/typescript/commonjs/ui/components/Pill.d.ts +38 -0
  201. package/lib/typescript/commonjs/ui/components/Pill.d.ts.map +1 -0
  202. package/lib/typescript/commonjs/ui/components/ToggleRow.d.ts +33 -0
  203. package/lib/typescript/commonjs/ui/components/ToggleRow.d.ts.map +1 -0
  204. package/lib/typescript/commonjs/ui/components/ToolFooter.d.ts +69 -0
  205. package/lib/typescript/commonjs/ui/components/ToolFooter.d.ts.map +1 -0
  206. package/lib/typescript/commonjs/ui/components/index.d.ts +9 -0
  207. package/lib/typescript/commonjs/ui/components/index.d.ts.map +1 -1
  208. package/lib/typescript/commonjs/ui/console/CyberpunkSectionButton.d.ts.map +1 -1
  209. package/lib/typescript/commonjs/ui/fonts.d.ts +7 -0
  210. package/lib/typescript/commonjs/ui/fonts.d.ts.map +1 -0
  211. package/lib/typescript/commonjs/ui/gameUI/components/GameUICollapsibleSection.d.ts.map +1 -1
  212. package/lib/typescript/commonjs/ui/gameUI/components/GameUICompactStats.d.ts.map +1 -1
  213. package/lib/typescript/commonjs/ui/gameUI/components/GameUIIssuesList.d.ts.map +1 -1
  214. package/lib/typescript/commonjs/ui/gameUI/components/GameUIStatusHeader.d.ts.map +1 -1
  215. package/lib/typescript/commonjs/ui/index.d.ts +2 -0
  216. package/lib/typescript/commonjs/ui/index.d.ts.map +1 -1
  217. package/lib/typescript/commonjs/ui/listPresets.d.ts +28 -0
  218. package/lib/typescript/commonjs/ui/listPresets.d.ts.map +1 -0
  219. package/lib/typescript/commonjs/ui/night/primitives.d.ts +3 -1
  220. package/lib/typescript/commonjs/ui/night/primitives.d.ts.map +1 -1
  221. package/lib/typescript/commonjs/ui/toolTheme.d.ts.map +1 -1
  222. package/lib/typescript/commonjs/utils/snapshotProviderKit.d.ts +81 -0
  223. package/lib/typescript/commonjs/utils/snapshotProviderKit.d.ts.map +1 -0
  224. package/lib/typescript/commonjs/utils/stateTools.d.ts +44 -0
  225. package/lib/typescript/commonjs/utils/stateTools.d.ts.map +1 -0
  226. package/lib/typescript/module/JsModal.d.ts.map +1 -1
  227. package/lib/typescript/module/dataViewer/CyberpunkInput.d.ts.map +1 -1
  228. package/lib/typescript/module/dataViewer/DataTreeActionBar.d.ts.map +1 -1
  229. package/lib/typescript/module/dataViewer/DataTreeActionDock.d.ts.map +1 -1
  230. package/lib/typescript/module/dataViewer/DiffSummary.d.ts.map +1 -1
  231. package/lib/typescript/module/dataViewer/LiveExplorer.d.ts.map +1 -1
  232. package/lib/typescript/module/dataViewer/SplitDiffViewer.d.ts.map +1 -1
  233. package/lib/typescript/module/dataViewer/ThemedSplitView.d.ts.map +1 -1
  234. package/lib/typescript/module/dataViewer/ValueEditModal.d.ts.map +1 -1
  235. package/lib/typescript/module/dataViewer/VirtualizedDataExplorer.d.ts.map +1 -1
  236. package/lib/typescript/module/dataViewer/tree/TreeDiffViewer.d.ts.map +1 -1
  237. package/lib/typescript/module/hooks/index.d.ts +3 -1
  238. package/lib/typescript/module/hooks/index.d.ts.map +1 -1
  239. package/lib/typescript/module/hooks/safe-area-impl.d.ts +1 -1
  240. package/lib/typescript/module/hooks/useChangeLog.d.ts +38 -0
  241. package/lib/typescript/module/hooks/useChangeLog.d.ts.map +1 -0
  242. package/lib/typescript/module/hooks/useEventStoreEvents.d.ts +25 -0
  243. package/lib/typescript/module/hooks/useEventStoreEvents.d.ts.map +1 -0
  244. package/lib/typescript/module/hooks/usePersistedState.d.ts +34 -5
  245. package/lib/typescript/module/hooks/usePersistedState.d.ts.map +1 -1
  246. package/lib/typescript/module/icons/index.d.ts +4 -1
  247. package/lib/typescript/module/icons/index.d.ts.map +1 -1
  248. package/lib/typescript/module/index.d.ts +6 -1
  249. package/lib/typescript/module/index.d.ts.map +1 -1
  250. package/lib/typescript/module/license/FreeAccountPrompt.d.ts.map +1 -1
  251. package/lib/typescript/module/license/LicenseEntryModal.d.ts.map +1 -1
  252. package/lib/typescript/module/storage/definePersistedSetting.d.ts +39 -0
  253. package/lib/typescript/module/storage/definePersistedSetting.d.ts.map +1 -0
  254. package/lib/typescript/module/storage/index.d.ts +1 -0
  255. package/lib/typescript/module/storage/index.d.ts.map +1 -1
  256. package/lib/typescript/module/stores/ChangeLog.d.ts +100 -0
  257. package/lib/typescript/module/stores/ChangeLog.d.ts.map +1 -0
  258. package/lib/typescript/module/stores/createToolStore.d.ts +92 -0
  259. package/lib/typescript/module/stores/createToolStore.d.ts.map +1 -0
  260. package/lib/typescript/module/stores/index.d.ts +2 -0
  261. package/lib/typescript/module/stores/index.d.ts.map +1 -1
  262. package/lib/typescript/module/sync/toolSyncAdapter.d.ts +66 -0
  263. package/lib/typescript/module/sync/toolSyncAdapter.d.ts.map +1 -0
  264. package/lib/typescript/module/sync/wireForm.d.ts +100 -0
  265. package/lib/typescript/module/sync/wireForm.d.ts.map +1 -0
  266. package/lib/typescript/module/tools/defineTool.d.ts +100 -0
  267. package/lib/typescript/module/tools/defineTool.d.ts.map +1 -0
  268. package/lib/typescript/module/ui/components/ChangeRow.d.ts +52 -0
  269. package/lib/typescript/module/ui/components/ChangeRow.d.ts.map +1 -0
  270. package/lib/typescript/module/ui/components/ChipStrip.d.ts +41 -0
  271. package/lib/typescript/module/ui/components/ChipStrip.d.ts.map +1 -0
  272. package/lib/typescript/module/ui/components/ClipboardHintBanner.d.ts.map +1 -1
  273. package/lib/typescript/module/ui/components/CompactRow.d.ts.map +1 -1
  274. package/lib/typescript/module/ui/components/DataInspector.d.ts.map +1 -1
  275. package/lib/typescript/module/ui/components/DetailView.d.ts.map +1 -1
  276. package/lib/typescript/module/ui/components/DetailViewToggle.d.ts +36 -0
  277. package/lib/typescript/module/ui/components/DetailViewToggle.d.ts.map +1 -0
  278. package/lib/typescript/module/ui/components/DevToolsCard.d.ts +8 -1
  279. package/lib/typescript/module/ui/components/DevToolsCard.d.ts.map +1 -1
  280. package/lib/typescript/module/ui/components/DynamicFilterView.d.ts.map +1 -1
  281. package/lib/typescript/module/ui/components/EntityFilterView.d.ts +51 -0
  282. package/lib/typescript/module/ui/components/EntityFilterView.d.ts.map +1 -0
  283. package/lib/typescript/module/ui/components/EventHistoryViewer/CompareBar.d.ts.map +1 -1
  284. package/lib/typescript/module/ui/components/EventHistoryViewer/DiffModeTabs.d.ts.map +1 -1
  285. package/lib/typescript/module/ui/components/EventHistoryViewer/EventPickerModal.d.ts.map +1 -1
  286. package/lib/typescript/module/ui/components/EventStepperFooter.d.ts.map +1 -1
  287. package/lib/typescript/module/ui/components/ExpandablePopover.d.ts +5 -1
  288. package/lib/typescript/module/ui/components/ExpandablePopover.d.ts.map +1 -1
  289. package/lib/typescript/module/ui/components/ExpandedInfoRow.d.ts.map +1 -1
  290. package/lib/typescript/module/ui/components/ExportPreview.d.ts +48 -0
  291. package/lib/typescript/module/ui/components/ExportPreview.d.ts.map +1 -0
  292. package/lib/typescript/module/ui/components/FilterComponents.d.ts.map +1 -1
  293. package/lib/typescript/module/ui/components/InfoRow.d.ts +33 -0
  294. package/lib/typescript/module/ui/components/InfoRow.d.ts.map +1 -0
  295. package/lib/typescript/module/ui/components/ModalHeader.d.ts +31 -1
  296. package/lib/typescript/module/ui/components/ModalHeader.d.ts.map +1 -1
  297. package/lib/typescript/module/ui/components/Pill.d.ts +38 -0
  298. package/lib/typescript/module/ui/components/Pill.d.ts.map +1 -0
  299. package/lib/typescript/module/ui/components/ToggleRow.d.ts +33 -0
  300. package/lib/typescript/module/ui/components/ToggleRow.d.ts.map +1 -0
  301. package/lib/typescript/module/ui/components/ToolFooter.d.ts +69 -0
  302. package/lib/typescript/module/ui/components/ToolFooter.d.ts.map +1 -0
  303. package/lib/typescript/module/ui/components/index.d.ts +9 -0
  304. package/lib/typescript/module/ui/components/index.d.ts.map +1 -1
  305. package/lib/typescript/module/ui/console/CyberpunkSectionButton.d.ts.map +1 -1
  306. package/lib/typescript/module/ui/fonts.d.ts +7 -0
  307. package/lib/typescript/module/ui/fonts.d.ts.map +1 -0
  308. package/lib/typescript/module/ui/gameUI/components/GameUICollapsibleSection.d.ts.map +1 -1
  309. package/lib/typescript/module/ui/gameUI/components/GameUICompactStats.d.ts.map +1 -1
  310. package/lib/typescript/module/ui/gameUI/components/GameUIIssuesList.d.ts.map +1 -1
  311. package/lib/typescript/module/ui/gameUI/components/GameUIStatusHeader.d.ts.map +1 -1
  312. package/lib/typescript/module/ui/index.d.ts +2 -0
  313. package/lib/typescript/module/ui/index.d.ts.map +1 -1
  314. package/lib/typescript/module/ui/listPresets.d.ts +28 -0
  315. package/lib/typescript/module/ui/listPresets.d.ts.map +1 -0
  316. package/lib/typescript/module/ui/night/primitives.d.ts +3 -1
  317. package/lib/typescript/module/ui/night/primitives.d.ts.map +1 -1
  318. package/lib/typescript/module/ui/toolTheme.d.ts.map +1 -1
  319. package/lib/typescript/module/utils/snapshotProviderKit.d.ts +81 -0
  320. package/lib/typescript/module/utils/snapshotProviderKit.d.ts.map +1 -0
  321. package/lib/typescript/module/utils/stateTools.d.ts +44 -0
  322. package/lib/typescript/module/utils/stateTools.d.ts.map +1 -0
  323. package/package.json +4 -4
@@ -9,6 +9,7 @@
9
9
 
10
10
  import React, { memo } from "react";
11
11
  import { View, Text, StyleSheet } from "react-native";
12
+ import { monoFont } from "../ui/fonts.js";
12
13
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
13
14
  /**
14
15
  * DiffSummary displays a summary bar showing diff statistics.
@@ -112,17 +113,17 @@ const styles = StyleSheet.create({
112
113
  },
113
114
  icon: {
114
115
  fontSize: 11,
115
- fontFamily: "monospace",
116
+ fontFamily: monoFont,
116
117
  fontWeight: "700"
117
118
  },
118
119
  count: {
119
120
  fontSize: 10,
120
- fontFamily: "monospace",
121
+ fontFamily: monoFont,
121
122
  fontWeight: "600"
122
123
  },
123
124
  label: {
124
125
  fontSize: 9,
125
- fontFamily: "monospace",
126
+ fontFamily: monoFont,
126
127
  opacity: 0.9
127
128
  }
128
129
  });
@@ -35,7 +35,7 @@ import { CopyButton as SharedCopyButton } from "../ui/components/CopyButton.js";
35
35
  import { ChevronRight, ChevronDown, Trash } from "../icons/index.js";
36
36
  import { CyberpunkInput } from "./CyberpunkInput.js";
37
37
  import { updateNestedDataByPath, deleteNestedDataByPath } from "./nestedPath.js";
38
-
38
+ import { monoFont } from "../ui/fonts.js";
39
39
  /**
40
40
  * How the explorer writes into whatever owns the data. The tree never mutates
41
41
  * anything itself — every edit is handed to the host through this.
@@ -654,7 +654,7 @@ const styles = StyleSheet.create({
654
654
  clearButtonText: {
655
655
  fontSize: 12,
656
656
  fontWeight: "700",
657
- fontFamily: "monospace"
657
+ fontFamily: monoFont
658
658
  },
659
659
  expanderIcon: {
660
660
  width: 18,
@@ -741,7 +741,7 @@ const styles = StyleSheet.create({
741
741
  fontSize: 10,
742
742
  fontWeight: "600",
743
743
  marginRight: 4,
744
- fontFamily: "monospace",
744
+ fontFamily: monoFont,
745
745
  letterSpacing: 0.4
746
746
  },
747
747
  labelTextFocused: {
@@ -757,14 +757,14 @@ const styles = StyleSheet.create({
757
757
  color: night.color.textTertiary,
758
758
  fontSize: 10,
759
759
  fontWeight: "400",
760
- fontFamily: "monospace",
760
+ fontFamily: monoFont,
761
761
  opacity: 0.7
762
762
  },
763
763
  pageRangeText: {
764
764
  color: night.color.textSecondary,
765
765
  fontSize: 10,
766
766
  fontWeight: "600",
767
- fontFamily: "monospace"
767
+ fontFamily: monoFont
768
768
  },
769
769
  flexRowGapItemsCenter: {
770
770
  flexDirection: "row",
@@ -817,11 +817,11 @@ const styles = StyleSheet.create({
817
817
  textNumber: {
818
818
  color: night.color.text,
819
819
  fontWeight: "600",
820
- fontFamily: "monospace"
820
+ fontFamily: monoFont
821
821
  },
822
822
  textString: {
823
823
  color: night.color.text,
824
- fontFamily: "monospace"
824
+ fontFamily: monoFont
825
825
  },
826
826
  flexRowGapFullWidth: {
827
827
  flexDirection: "row",
@@ -838,7 +838,7 @@ const styles = StyleSheet.create({
838
838
  fontWeight: "600",
839
839
  fontSize: 9,
840
840
  minWidth: 50,
841
- fontFamily: "monospace",
841
+ fontFamily: monoFont,
842
842
  letterSpacing: 0.4,
843
843
  opacity: 0.8
844
844
  },
@@ -851,7 +851,7 @@ const styles = StyleSheet.create({
851
851
  flex: 1,
852
852
  color: night.color.text,
853
853
  fontWeight: "400",
854
- fontFamily: "monospace",
854
+ fontFamily: monoFont,
855
855
  fontSize: 12,
856
856
  paddingVertical: 6,
857
857
  paddingHorizontal: 10,
@@ -885,7 +885,7 @@ const styles = StyleSheet.create({
885
885
  fontWeight: "700",
886
886
  textTransform: "uppercase",
887
887
  letterSpacing: 0.8,
888
- fontFamily: "monospace"
888
+ fontFamily: monoFont
889
889
  },
890
890
  toggleBadgeTrue: {
891
891
  backgroundColor: night.color.accent + "1A",
@@ -914,7 +914,7 @@ const styles = StyleSheet.create({
914
914
  color: night.color.textSecondary,
915
915
  fontSize: 10,
916
916
  fontWeight: "600",
917
- fontFamily: "monospace",
917
+ fontFamily: monoFont,
918
918
  letterSpacing: 0.4,
919
919
  minWidth: 60,
920
920
  flexShrink: 0
@@ -13,6 +13,7 @@ import { View, Text, ScrollView, StyleSheet } from "react-native";
13
13
  import { computeLineDiff, DiffType } from "./lineDiff.js";
14
14
  import { DiffSummary } from "./DiffSummary.js";
15
15
  import { devToolsDefaultTheme } from "./diffThemes.js";
16
+ import { monoFont } from "../ui/fonts.js";
16
17
  import { jsx as _jsx, Fragment as _Fragment, jsxs as _jsxs } from "react/jsx-runtime";
17
18
  /**
18
19
  * SplitDiffViewer displays a side-by-side diff comparison.
@@ -281,13 +282,13 @@ function createDynamicStyles(theme, height) {
281
282
  fontSize: 12,
282
283
  fontWeight: "700",
283
284
  color: theme.accentColor || theme.unchangedText,
284
- fontFamily: "monospace",
285
+ fontFamily: monoFont,
285
286
  letterSpacing: 0.5
286
287
  },
287
288
  themeDescription: {
288
289
  fontSize: 10,
289
290
  color: theme.unchangedText,
290
- fontFamily: "monospace",
291
+ fontFamily: monoFont,
291
292
  marginTop: 2,
292
293
  opacity: 0.8
293
294
  },
@@ -311,7 +312,7 @@ function createDynamicStyles(theme, height) {
311
312
  fontSize: 10,
312
313
  fontWeight: "700",
313
314
  color: theme.accentColor || theme.unchangedText,
314
- fontFamily: "monospace",
315
+ fontFamily: monoFont,
315
316
  letterSpacing: 0.5,
316
317
  textTransform: "uppercase"
317
318
  },
@@ -355,7 +356,7 @@ function createDynamicStyles(theme, height) {
355
356
  },
356
357
  lineNumber: {
357
358
  fontSize: 9,
358
- fontFamily: "monospace",
359
+ fontFamily: monoFont,
359
360
  color: theme.lineNumberText
360
361
  },
361
362
  marker: {
@@ -368,7 +369,7 @@ function createDynamicStyles(theme, height) {
368
369
  },
369
370
  markerText: {
370
371
  fontSize: 10,
371
- fontFamily: "monospace",
372
+ fontFamily: monoFont,
372
373
  fontWeight: "600"
373
374
  },
374
375
  contentCell: {
@@ -381,12 +382,12 @@ function createDynamicStyles(theme, height) {
381
382
  },
382
383
  content: {
383
384
  fontSize: 10,
384
- fontFamily: "monospace",
385
+ fontFamily: monoFont,
385
386
  lineHeight: 16
386
387
  },
387
388
  wordDiff: {
388
389
  fontSize: 10,
389
- fontFamily: "monospace"
390
+ fontFamily: monoFont
390
391
  },
391
392
  separator: {
392
393
  height: 20,
@@ -397,7 +398,7 @@ function createDynamicStyles(theme, height) {
397
398
  separatorText: {
398
399
  fontSize: 8,
399
400
  color: theme.separatorText,
400
- fontFamily: "monospace",
401
+ fontFamily: monoFont,
401
402
  letterSpacing: 2
402
403
  },
403
404
  emptyState: {
@@ -409,7 +410,7 @@ function createDynamicStyles(theme, height) {
409
410
  fontSize: 11,
410
411
  color: theme.emptyStateText,
411
412
  fontStyle: "italic",
412
- fontFamily: "monospace"
413
+ fontFamily: monoFont
413
414
  }
414
415
  });
415
416
  }
@@ -18,6 +18,7 @@ import { TimestampDeltaBar } from "./TimestampDeltaBar.js";
18
18
  import { describeTimestampDeltas } from "./timestampDiff.js";
19
19
  import { JsonStringNotice } from "./JsonStringNotice.js";
20
20
  import { decodeJsonStringPair } from "./jsonStringValue.js";
21
+ import { monoFont } from "../ui/fonts.js";
21
22
 
22
23
  /** Rendering options (the shape storage's DiffOptionsPanel edits). */
23
24
  import { jsx as _jsx, jsxs as _jsxs } from "react/jsx-runtime";
@@ -469,13 +470,13 @@ function createDynamicStyles(theme, scrollEnabled) {
469
470
  fontSize: 12,
470
471
  fontWeight: "700",
471
472
  color: theme.accentColor || theme.unchangedText,
472
- fontFamily: "monospace",
473
+ fontFamily: monoFont,
473
474
  letterSpacing: 0.5
474
475
  },
475
476
  themeDescription: {
476
477
  fontSize: 10,
477
478
  color: theme.unchangedText,
478
- fontFamily: "monospace",
479
+ fontFamily: monoFont,
479
480
  marginTop: 2,
480
481
  opacity: 0.8
481
482
  },
@@ -499,7 +500,7 @@ function createDynamicStyles(theme, scrollEnabled) {
499
500
  fontSize: 10,
500
501
  fontWeight: "700",
501
502
  color: theme.accentColor || theme.unchangedText,
502
- fontFamily: "monospace",
503
+ fontFamily: monoFont,
503
504
  letterSpacing: 0.5,
504
505
  textTransform: "uppercase"
505
506
  },
@@ -543,7 +544,7 @@ function createDynamicStyles(theme, scrollEnabled) {
543
544
  },
544
545
  lineNumber: {
545
546
  fontSize: 9,
546
- fontFamily: "monospace",
547
+ fontFamily: monoFont,
547
548
  color: theme.lineNumberText
548
549
  },
549
550
  marker: {
@@ -556,7 +557,7 @@ function createDynamicStyles(theme, scrollEnabled) {
556
557
  },
557
558
  markerText: {
558
559
  fontSize: 10,
559
- fontFamily: "monospace",
560
+ fontFamily: monoFont,
560
561
  fontWeight: "600"
561
562
  },
562
563
  contentCell: {
@@ -569,12 +570,12 @@ function createDynamicStyles(theme, scrollEnabled) {
569
570
  },
570
571
  content: {
571
572
  fontSize: 10,
572
- fontFamily: "monospace",
573
+ fontFamily: monoFont,
573
574
  lineHeight: 16
574
575
  },
575
576
  wordDiff: {
576
577
  fontSize: 10,
577
- fontFamily: "monospace"
578
+ fontFamily: monoFont
578
579
  },
579
580
  summaryBar: {
580
581
  flexDirection: "row",
@@ -592,7 +593,7 @@ function createDynamicStyles(theme, scrollEnabled) {
592
593
  },
593
594
  summaryText: {
594
595
  fontSize: 10,
595
- fontFamily: "monospace",
596
+ fontFamily: monoFont,
596
597
  fontWeight: "700"
597
598
  },
598
599
  separator: {
@@ -604,7 +605,7 @@ function createDynamicStyles(theme, scrollEnabled) {
604
605
  separatorText: {
605
606
  fontSize: 8,
606
607
  color: theme.separatorText,
607
- fontFamily: "monospace",
608
+ fontFamily: monoFont,
608
609
  letterSpacing: 2
609
610
  },
610
611
  foldHeader: {
@@ -618,7 +619,7 @@ function createDynamicStyles(theme, scrollEnabled) {
618
619
  },
619
620
  foldHeaderText: {
620
621
  fontSize: 10,
621
- fontFamily: "monospace",
622
+ fontFamily: monoFont,
622
623
  letterSpacing: 0.5
623
624
  },
624
625
  emptyState: {
@@ -630,7 +631,7 @@ function createDynamicStyles(theme, scrollEnabled) {
630
631
  fontSize: 11,
631
632
  color: theme.emptyStateText,
632
633
  fontStyle: "italic",
633
- fontFamily: "monospace"
634
+ fontFamily: monoFont
634
635
  }
635
636
  });
636
637
  }
@@ -32,6 +32,7 @@ import { absoluteFill } from "../utils/absoluteFill.js";
32
32
  import { macOSColors } from "../ui/gameUI/index.js";
33
33
  import { night } from "../ui/night/nightTheme.js";
34
34
  import { breadcrumb, typeLabel } from "./treeActions.js";
35
+ import { monoFont } from "../ui/fonts.js";
35
36
 
36
37
  /**
37
38
  * How this value gets edited. Driven by the value's own type, which is also
@@ -270,12 +271,12 @@ const styles = StyleSheet.create({
270
271
  color: macOSColors.semantic.warning,
271
272
  fontSize: 10,
272
273
  fontWeight: "700",
273
- fontFamily: "monospace"
274
+ fontFamily: monoFont
274
275
  },
275
276
  path: {
276
277
  color: night.color.textTertiary,
277
278
  fontSize: 11,
278
- fontFamily: "monospace"
279
+ fontFamily: monoFont
279
280
  },
280
281
  /** Caps the panel's height so a huge blob can't push the buttons off-screen. */
281
282
  fieldScroll: {
@@ -290,7 +291,7 @@ const styles = StyleSheet.create({
290
291
  paddingHorizontal: 12,
291
292
  paddingVertical: 10,
292
293
  fontSize: 14,
293
- fontFamily: "monospace"
294
+ fontFamily: monoFont
294
295
  },
295
296
  inputMultiline: {
296
297
  minHeight: 110,
@@ -314,7 +315,7 @@ const styles = StyleSheet.create({
314
315
  color: night.color.danger,
315
316
  fontSize: 11,
316
317
  lineHeight: 16,
317
- fontFamily: "monospace"
318
+ fontFamily: monoFont
318
319
  },
319
320
  actions: {
320
321
  flexDirection: "row",
@@ -373,7 +374,7 @@ const styles = StyleSheet.create({
373
374
  color: night.color.textTertiary,
374
375
  fontSize: 16,
375
376
  fontWeight: "700",
376
- fontFamily: "monospace"
377
+ fontFamily: monoFont
377
378
  },
378
379
  boolTextActive: {
379
380
  color: macOSColors.semantic.warning
@@ -8,8 +8,9 @@ import { night } from "../ui/night/nightTheme.js";
8
8
  import { CopyButton } from "../ui/components/CopyButton.js";
9
9
  import { ChevronRight } from "../icons/index.js";
10
10
  import { IndentGuidesOverlay } from "./IndentGuidesOverlay.js";
11
- import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
11
+ import { monoFont } from "../ui/fonts.js";
12
12
  // Stable constants to prevent re-renders [[memory:4875251]]
13
+ import { jsx as _jsx, jsxs as _jsxs, Fragment as _Fragment } from "react/jsx-runtime";
13
14
  const HIT_SLOP_10 = {
14
15
  top: 10,
15
16
  bottom: 10,
@@ -174,7 +175,7 @@ const STABLE_STYLES = StyleSheet.create({
174
175
  fontSize: 12,
175
176
  fontWeight: "500",
176
177
  // font-medium
177
- fontFamily: "monospace",
178
+ fontFamily: monoFont,
178
179
  marginRight: 8,
179
180
  flexShrink: 1
180
181
  },
@@ -184,12 +185,12 @@ const STABLE_STYLES = StyleSheet.create({
184
185
  fontSize: 12,
185
186
  fontWeight: "500",
186
187
  // font-medium
187
- fontFamily: "monospace",
188
+ fontFamily: monoFont,
188
189
  flexShrink: 1
189
190
  },
190
191
  valueText: {
191
192
  fontSize: 12,
192
- fontFamily: "monospace",
193
+ fontFamily: monoFont,
193
194
  flex: 1,
194
195
  color: gameUIColors.primaryLight // text-gray-300
195
196
  },
@@ -19,7 +19,7 @@ import React, { useMemo, useState, useEffect, useRef } from "react";
19
19
  import { View, Text, ScrollView, StyleSheet, TouchableOpacity } from "react-native";
20
20
  import { gameUIColors, night } from "@buoy-gg/shared-ui";
21
21
  import { isAbsent } from "../lineDiff.js";
22
-
22
+ import { monoFont } from "../../ui/fonts.js";
23
23
  // ============================================
24
24
  // TYPES & INTERFACES
25
25
  // ============================================
@@ -785,16 +785,16 @@ const styles = StyleSheet.create({
785
785
  summaryIcon: {
786
786
  fontSize: 14,
787
787
  fontWeight: "700",
788
- fontFamily: "monospace"
788
+ fontFamily: monoFont
789
789
  },
790
790
  summaryCount: {
791
791
  fontSize: 13,
792
792
  fontWeight: "600",
793
- fontFamily: "monospace"
793
+ fontFamily: monoFont
794
794
  },
795
795
  summaryLabel: {
796
796
  fontSize: 11,
797
- fontFamily: "monospace",
797
+ fontFamily: monoFont,
798
798
  opacity: 0.9
799
799
  },
800
800
  scrollView: {
@@ -818,7 +818,7 @@ const styles = StyleSheet.create({
818
818
  },
819
819
  lineNumberText: {
820
820
  fontSize: 11,
821
- fontFamily: "monospace",
821
+ fontFamily: monoFont,
822
822
  textAlign: "right"
823
823
  },
824
824
  marker: {
@@ -830,7 +830,7 @@ const styles = StyleSheet.create({
830
830
  },
831
831
  markerText: {
832
832
  fontSize: 12,
833
- fontFamily: "monospace",
833
+ fontFamily: monoFont,
834
834
  fontWeight: "600"
835
835
  },
836
836
  content: {
@@ -851,33 +851,33 @@ const styles = StyleSheet.create({
851
851
  },
852
852
  expandIcon: {
853
853
  fontSize: 11,
854
- fontFamily: "monospace",
854
+ fontFamily: monoFont,
855
855
  fontWeight: "600"
856
856
  },
857
857
  colon: {
858
858
  fontSize: 12,
859
- fontFamily: "monospace",
859
+ fontFamily: monoFont,
860
860
  marginHorizontal: 4
861
861
  },
862
862
  key: {
863
863
  fontSize: 11,
864
- fontFamily: "monospace",
864
+ fontFamily: monoFont,
865
865
  fontWeight: "500",
866
866
  opacity: 0.9
867
867
  },
868
868
  value: {
869
869
  fontSize: 11,
870
- fontFamily: "monospace",
870
+ fontFamily: monoFont,
871
871
  maxWidth: "80%"
872
872
  },
873
873
  arrow: {
874
874
  fontSize: 12,
875
- fontFamily: "monospace",
875
+ fontFamily: monoFont,
876
876
  fontWeight: "600"
877
877
  },
878
878
  badge: {
879
879
  fontSize: 11,
880
- fontFamily: "monospace",
880
+ fontFamily: monoFont,
881
881
  fontWeight: "600",
882
882
  marginLeft: 8
883
883
  },
@@ -889,19 +889,19 @@ const styles = StyleSheet.create({
889
889
  },
890
890
  emptyIcon: {
891
891
  fontSize: 48,
892
- fontFamily: "monospace",
892
+ fontFamily: monoFont,
893
893
  opacity: 0.2,
894
894
  marginBottom: 12
895
895
  },
896
896
  emptyTitle: {
897
897
  fontSize: 14,
898
- fontFamily: "monospace",
898
+ fontFamily: monoFont,
899
899
  fontWeight: "600",
900
900
  marginBottom: 4
901
901
  },
902
902
  emptySubtitle: {
903
903
  fontSize: 12,
904
- fontFamily: "monospace",
904
+ fontFamily: monoFont,
905
905
  opacity: 0.6
906
906
  }
907
907
  });
@@ -1,7 +1,9 @@
1
1
  "use strict";
2
2
 
3
3
  export { useFilterManager } from "./useFilterManager.js";
4
- export { usePersistedState } from "./usePersistedState.js";
4
+ export { usePersistedState, resetPersistedStateCache } from "./usePersistedState.js";
5
+ export { useChangeLog, useSubscribedValue } from "./useChangeLog.js";
6
+ export { useEventStoreEvents } from "./useEventStoreEvents.js";
5
7
  export { useSafeAreaInsets } from "./useSafeAreaInsets.js";
6
8
  export { getSafeAreaInsets } from "./useSafeAreaInsets.js";
7
9
  export { useDeviceInfo, getDeviceInfo, logDeviceInfo } from "./useDeviceInfo.js";
@@ -3,7 +3,7 @@
3
3
  /**
4
4
  * Auto-generated safe area implementation
5
5
  * Detected: none
6
- * Generated at: 2026-09-02T23:25:39.783Z
6
+ * Generated at: 2026-09-04T23:36:20.710Z
7
7
  *
8
8
  * DO NOT EDIT - This file is generated by scripts/detect-safe-area.js
9
9
  *
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * React bindings for `ChangeLog` — what useReduxActions, useZustandStateChanges
5
+ * and useJotaiAtomChanges each re-derived: seed state from the log, subscribe
6
+ * for the lifetime of the component, hold a filter, memoize the filtered
7
+ * list, and expose clear / pause / lookup.
8
+ *
9
+ * Tool-specific stats and registries (stores, atoms) compose on top — see
10
+ * `useSubscribedValue` for the registry half.
11
+ */
12
+
13
+ import { useCallback, useEffect, useMemo, useState } from "react";
14
+ export function useChangeLog(log, options = {}) {
15
+ const [items, setItems] = useState(() => log.getAll());
16
+ const [filter, setFilter] = useState(() => options.initialFilter ?? {});
17
+ const [isEnabled, setIsEnabled] = useState(() => log.getEnabled());
18
+ useEffect(() => log.subscribe(setItems), [log]);
19
+ const filterItems = options.filterItems;
20
+ const filteredItems = useMemo(() => filterItems ? filterItems(items, filter) : items, [items, filter, filterItems]);
21
+ const clear = useCallback(() => {
22
+ log.clear();
23
+ }, [log]);
24
+ const toggleCapture = useCallback(() => {
25
+ const next = !isEnabled;
26
+ log.setEnabled(next);
27
+ setIsEnabled(next);
28
+ }, [log, isEnabled]);
29
+ const getById = useCallback(id => log.getById(id), [log]);
30
+ return {
31
+ items,
32
+ filteredItems,
33
+ filter,
34
+ setFilter,
35
+ isEnabled,
36
+ toggleCapture,
37
+ clear,
38
+ getById
39
+ };
40
+ }
41
+
42
+ /**
43
+ * Hold a value that a store pushes through a `(value) => void` listener —
44
+ * a registry of stores, atoms, sources. Seeded synchronously from `read`.
45
+ */
46
+ export function useSubscribedValue(read, subscribe) {
47
+ const [value, setValue] = useState(read);
48
+ useEffect(() => subscribe(setValue), [subscribe]);
49
+ return value;
50
+ }
@@ -0,0 +1,61 @@
1
+ "use strict";
2
+
3
+ /**
4
+ * React bindings for a `BaseEventStore` — what useRouteEvents and
5
+ * useStorageEvents each hand-rolled: subscribe while enabled (which
6
+ * auto-starts the store's capture), coalesce bursts onto one animation
7
+ * frame so a storm of writes is one commit instead of one per emission,
8
+ * select/limit the list, and report whether capture is live.
9
+ */
10
+
11
+ import { useCallback, useEffect, useState } from "react";
12
+ export function useEventStoreEvents(store, options = {}) {
13
+ const {
14
+ enabled = true,
15
+ maxEvents = 500,
16
+ select
17
+ } = options;
18
+ const [events, setEvents] = useState([]);
19
+ // Tracked locally so it updates reactively with the subscription.
20
+ const [isActive, setIsActive] = useState(enabled);
21
+ useEffect(() => {
22
+ if (!enabled) {
23
+ setIsActive(false);
24
+ return;
25
+ }
26
+
27
+ // Frame-coalesced: bursts land as ONE commit per frame instead of one
28
+ // per emission — the dominant live-churn cost measured on the network
29
+ // tool (tool-bench 2026-07-06).
30
+ let rafId = null;
31
+ let pending = null;
32
+ const unsubscribe = store.subscribeToEvents(all => {
33
+ pending = all;
34
+ if (rafId != null) return;
35
+ rafId = requestAnimationFrame(() => {
36
+ rafId = null;
37
+ if (!pending) return;
38
+ let next = pending;
39
+ pending = null;
40
+ if (select) next = select(next);
41
+ if (next.length > maxEvents) next = next.slice(0, maxEvents);
42
+ setEvents(next);
43
+ });
44
+ });
45
+ setIsActive(true);
46
+ return () => {
47
+ unsubscribe();
48
+ if (rafId != null) cancelAnimationFrame(rafId);
49
+ // Not setting isActive=false here: a dependency change re-subscribes
50
+ // immediately, and that is not "stopped".
51
+ };
52
+ }, [store, enabled, maxEvents, select]);
53
+ const clearEvents = useCallback(() => {
54
+ store.clearEvents();
55
+ }, [store]);
56
+ return {
57
+ events,
58
+ clearEvents,
59
+ isActive
60
+ };
61
+ }