@peers-app/peers-ui 0.14.0 → 0.15.0

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 (438) hide show
  1. package/.github/workflows/publish.yml +8 -5
  2. package/babel.config.js +4 -4
  3. package/biome.json +191 -0
  4. package/dist/command-palette/command-palette-ui.d.ts +1 -2
  5. package/dist/command-palette/command-palette-ui.js +175 -244
  6. package/dist/command-palette/command-palette.js +65 -64
  7. package/dist/components/chat-overlay.d.ts +2 -2
  8. package/dist/components/chat-overlay.js +160 -217
  9. package/dist/components/checkbox.d.ts +5 -4
  10. package/dist/components/checkbox.js +4 -7
  11. package/dist/components/group-switcher.d.ts +1 -2
  12. package/dist/components/group-switcher.js +119 -159
  13. package/dist/components/input-date.d.ts +3 -3
  14. package/dist/components/input-date.js +6 -6
  15. package/dist/components/input-number.d.ts +7 -6
  16. package/dist/components/input-number.js +25 -20
  17. package/dist/components/input.d.ts +5 -4
  18. package/dist/components/input.js +4 -7
  19. package/dist/components/inverse-lazy-list.d.ts +3 -3
  20. package/dist/components/inverse-lazy-list.js +13 -47
  21. package/dist/components/io-schema-values.d.ts +5 -6
  22. package/dist/components/io-schema-values.js +28 -65
  23. package/dist/components/io-schema.d.ts +4 -5
  24. package/dist/components/io-schema.js +42 -79
  25. package/dist/components/lazy-list.d.ts +3 -3
  26. package/dist/components/lazy-list.js +38 -58
  27. package/dist/components/list-screen.d.ts +3 -8
  28. package/dist/components/list-screen.js +28 -23
  29. package/dist/components/loading-indicator.d.ts +1 -2
  30. package/dist/components/loading-indicator.js +2 -6
  31. package/dist/components/markdown-editor/autolink-plugin.js +5 -8
  32. package/dist/components/markdown-editor/editor-inline.d.ts +2 -3
  33. package/dist/components/markdown-editor/editor-inline.js +2 -6
  34. package/dist/components/markdown-editor/editor.d.ts +6 -6
  35. package/dist/components/markdown-editor/editor.js +9 -19
  36. package/dist/components/markdown-editor/markdown-plugin.d.ts +1 -1
  37. package/dist/components/markdown-editor/markdown-plugin.js +20 -21
  38. package/dist/components/markdown-editor/mention-node.d.ts +2 -2
  39. package/dist/components/markdown-editor/mention-node.js +24 -24
  40. package/dist/components/markdown-editor/mentions-plugin.d.ts +2 -2
  41. package/dist/components/markdown-editor/mentions-plugin.js +61 -62
  42. package/dist/components/markdown-editor/theme.js +28 -28
  43. package/dist/components/markdown-editor/toolbar.d.ts +2 -3
  44. package/dist/components/markdown-editor/toolbar.js +32 -49
  45. package/dist/components/markdown-with-mentions.d.ts +1 -1
  46. package/dist/components/markdown-with-mentions.js +43 -43
  47. package/dist/components/message-logs/message-logs.d.ts +1 -2
  48. package/dist/components/message-logs/message-logs.js +91 -116
  49. package/dist/components/messages/avatar.d.ts +3 -4
  50. package/dist/components/messages/avatar.js +37 -46
  51. package/dist/components/messages/channel-message-list.d.ts +5 -6
  52. package/dist/components/messages/channel-message-list.js +34 -34
  53. package/dist/components/messages/channel-view.d.ts +1 -2
  54. package/dist/components/messages/channel-view.js +23 -57
  55. package/dist/components/messages/message-compose.d.ts +3 -4
  56. package/dist/components/messages/message-compose.js +27 -38
  57. package/dist/components/messages/message-display.d.ts +2 -3
  58. package/dist/components/messages/message-display.js +42 -95
  59. package/dist/components/messages/thread-message-list.d.ts +4 -5
  60. package/dist/components/messages/thread-message-list.js +29 -29
  61. package/dist/components/router.d.ts +1 -2
  62. package/dist/components/router.js +58 -66
  63. package/dist/components/save-button.d.ts +3 -3
  64. package/dist/components/save-button.js +23 -33
  65. package/dist/components/sortable-list.d.ts +11 -12
  66. package/dist/components/sortable-list.js +42 -22
  67. package/dist/components/tabs.d.ts +3 -3
  68. package/dist/components/tabs.js +16 -47
  69. package/dist/components/tooltip.d.ts +4 -4
  70. package/dist/components/tooltip.js +4 -9
  71. package/dist/components/trust-level-badge.d.ts +2 -3
  72. package/dist/components/trust-level-badge.js +16 -16
  73. package/dist/components/trust-level-dropdown.d.ts +3 -4
  74. package/dist/components/trust-level-dropdown.js +32 -55
  75. package/dist/components/typeahead.d.ts +3 -3
  76. package/dist/components/typeahead.js +48 -89
  77. package/dist/components/voice-indicator.d.ts +2 -2
  78. package/dist/components/voice-indicator.js +93 -106
  79. package/dist/components/voice-subscribe-events.d.ts +32 -0
  80. package/dist/components/voice-subscribe-events.js +2 -0
  81. package/dist/globals.d.ts +3 -5
  82. package/dist/globals.js +22 -33
  83. package/dist/hooks.d.ts +5 -5
  84. package/dist/hooks.js +22 -12
  85. package/dist/hooks.test.js +129 -145
  86. package/dist/index.d.ts +9 -8
  87. package/dist/index.js +13 -12
  88. package/dist/mention-configs.d.ts +2 -2
  89. package/dist/mention-configs.js +55 -42
  90. package/dist/screens/assistants/assistant-config.d.ts +2 -3
  91. package/dist/screens/assistants/assistant-config.js +9 -22
  92. package/dist/screens/assistants/assistant-details.d.ts +1 -2
  93. package/dist/screens/assistants/assistant-details.js +13 -28
  94. package/dist/screens/assistants/assistant-info.d.ts +2 -3
  95. package/dist/screens/assistants/assistant-info.js +3 -17
  96. package/dist/screens/assistants/assistant-list.d.ts +1 -2
  97. package/dist/screens/assistants/assistant-list.js +15 -56
  98. package/dist/screens/assistants/assistant-tools.d.ts +2 -3
  99. package/dist/screens/assistants/assistant-tools.js +10 -24
  100. package/dist/screens/console-logs/console-logs-list.d.ts +1 -2
  101. package/dist/screens/console-logs/console-logs-list.js +130 -134
  102. package/dist/screens/console-logs/log-display.d.ts +2 -3
  103. package/dist/screens/console-logs/log-display.js +40 -42
  104. package/dist/screens/console-logs/log-filters.d.ts +1 -2
  105. package/dist/screens/console-logs/log-filters.js +2 -24
  106. package/dist/screens/console-logs/mobile-log-card.d.ts +2 -3
  107. package/dist/screens/console-logs/mobile-log-card.js +64 -67
  108. package/dist/screens/console-logs/resizable-table-header.d.ts +1 -2
  109. package/dist/screens/console-logs/resizable-table-header.js +31 -67
  110. package/dist/screens/contacts/contact-details.d.ts +1 -2
  111. package/dist/screens/contacts/contact-details.js +16 -46
  112. package/dist/screens/contacts/contact-list.d.ts +1 -2
  113. package/dist/screens/contacts/contact-list.js +44 -103
  114. package/dist/screens/contacts/index.d.ts +4 -4
  115. package/dist/screens/contacts/index.js +1 -1
  116. package/dist/screens/contacts/user-connect.d.ts +1 -2
  117. package/dist/screens/contacts/user-connect.js +85 -186
  118. package/dist/screens/data-explorer/data-explorer.d.ts +1 -2
  119. package/dist/screens/data-explorer/data-explorer.js +61 -181
  120. package/dist/screens/data-explorer/index.d.ts +2 -2
  121. package/dist/screens/data-explorer/query-executor.d.ts +1 -2
  122. package/dist/screens/data-explorer/query-executor.js +56 -166
  123. package/dist/screens/groups/group-details.d.ts +1 -2
  124. package/dist/screens/groups/group-details.js +27 -122
  125. package/dist/screens/groups/group-invite-listener.d.ts +2 -3
  126. package/dist/screens/groups/group-invite-listener.js +8 -104
  127. package/dist/screens/groups/group-list.d.ts +1 -2
  128. package/dist/screens/groups/group-list.js +56 -133
  129. package/dist/screens/groups/group-members.d.ts +2 -3
  130. package/dist/screens/groups/group-members.js +62 -132
  131. package/dist/screens/groups/index.d.ts +4 -4
  132. package/dist/screens/groups/index.js +1 -1
  133. package/dist/screens/join-group/index.d.ts +2 -2
  134. package/dist/screens/join-group/join-group.d.ts +1 -2
  135. package/dist/screens/join-group/join-group.js +9 -109
  136. package/dist/screens/network-viewer/connection-troubleshooter.d.ts +2 -3
  137. package/dist/screens/network-viewer/connection-troubleshooter.js +89 -193
  138. package/dist/screens/network-viewer/cpu-usage-graph.d.ts +1 -2
  139. package/dist/screens/network-viewer/cpu-usage-graph.js +60 -99
  140. package/dist/screens/network-viewer/device-details-modal.d.ts +1 -2
  141. package/dist/screens/network-viewer/device-details-modal.js +25 -177
  142. package/dist/screens/network-viewer/group-details-modal.d.ts +1 -2
  143. package/dist/screens/network-viewer/group-details-modal.js +31 -142
  144. package/dist/screens/network-viewer/index.d.ts +4 -4
  145. package/dist/screens/network-viewer/index.js +3 -3
  146. package/dist/screens/network-viewer/network-viewer-ipc.d.ts +22 -0
  147. package/dist/screens/network-viewer/network-viewer-ipc.js +6 -0
  148. package/dist/screens/network-viewer/network-viewer.d.ts +1 -2
  149. package/dist/screens/network-viewer/network-viewer.js +91 -296
  150. package/dist/screens/network-viewer/usage-graph.d.ts +1 -2
  151. package/dist/screens/network-viewer/usage-graph.js +78 -110
  152. package/dist/screens/packages/package-details.d.ts +1 -2
  153. package/dist/screens/packages/package-details.js +35 -41
  154. package/dist/screens/packages/package-info.d.ts +2 -2
  155. package/dist/screens/packages/package-info.js +33 -86
  156. package/dist/screens/packages/package-list.d.ts +1 -2
  157. package/dist/screens/packages/package-list.js +42 -106
  158. package/dist/screens/packages/package-new-local.d.ts +1 -2
  159. package/dist/screens/packages/package-new-local.js +13 -19
  160. package/dist/screens/packages/package-versions.d.ts +2 -3
  161. package/dist/screens/packages/package-versions.js +29 -96
  162. package/dist/screens/peer-types/peer-type-details.d.ts +3 -4
  163. package/dist/screens/peer-types/peer-type-details.js +26 -78
  164. package/dist/screens/peer-types/peer-type-list.d.ts +1 -2
  165. package/dist/screens/peer-types/peer-type-list.js +13 -24
  166. package/dist/screens/search/global-search.d.ts +1 -2
  167. package/dist/screens/search/global-search.js +104 -182
  168. package/dist/screens/settings/color-mode-dropdown.d.ts +3 -4
  169. package/dist/screens/settings/color-mode-dropdown.js +18 -37
  170. package/dist/screens/settings/settings-page.d.ts +1 -1
  171. package/dist/screens/settings/settings-page.js +86 -213
  172. package/dist/screens/settings/voice-settings-agent.d.ts +1 -1
  173. package/dist/screens/settings/voice-settings-agent.js +7 -44
  174. package/dist/screens/settings/voice-settings-api-keys.d.ts +2 -2
  175. package/dist/screens/settings/voice-settings-api-keys.js +2 -29
  176. package/dist/screens/settings/voice-settings-output.d.ts +2 -2
  177. package/dist/screens/settings/voice-settings-output.js +2 -40
  178. package/dist/screens/settings/voice-settings-providers.d.ts +2 -2
  179. package/dist/screens/settings/voice-settings-providers.js +2 -19
  180. package/dist/screens/settings/voice-settings-types.d.ts +4 -4
  181. package/dist/screens/settings/voice-settings-types.js +31 -31
  182. package/dist/screens/settings/voice-settings-wake-word.d.ts +2 -2
  183. package/dist/screens/settings/voice-settings-wake-word.js +2 -33
  184. package/dist/screens/settings/voice-settings.d.ts +1 -1
  185. package/dist/screens/settings/voice-settings.js +35 -112
  186. package/dist/screens/setup-user.d.ts +1 -2
  187. package/dist/screens/setup-user.js +38 -116
  188. package/dist/screens/tools/tool-code.d.ts +2 -3
  189. package/dist/screens/tools/tool-code.js +9 -13
  190. package/dist/screens/tools/tool-details.d.ts +1 -2
  191. package/dist/screens/tools/tool-details.js +26 -39
  192. package/dist/screens/tools/tool-info.d.ts +2 -3
  193. package/dist/screens/tools/tool-info.js +9 -48
  194. package/dist/screens/tools/tool-list.d.ts +1 -2
  195. package/dist/screens/tools/tool-list.js +33 -65
  196. package/dist/screens/tools/tool-schema.d.ts +2 -3
  197. package/dist/screens/tools/tool-schema.js +2 -13
  198. package/dist/screens/tools/tool-test-details.d.ts +1 -2
  199. package/dist/screens/tools/tool-test-details.js +12 -28
  200. package/dist/screens/tools/tool-test-list.d.ts +1 -2
  201. package/dist/screens/tools/tool-test-list.js +17 -56
  202. package/dist/screens/variables/variable-details.d.ts +1 -2
  203. package/dist/screens/variables/variable-details.js +19 -86
  204. package/dist/screens/variables/variable-list.d.ts +1 -2
  205. package/dist/screens/variables/variable-list.js +16 -27
  206. package/dist/screens/welcome-modal.d.ts +1 -2
  207. package/dist/screens/welcome-modal.js +44 -111
  208. package/dist/screens/workflows/workflow-details.d.ts +1 -2
  209. package/dist/screens/workflows/workflow-details.js +17 -31
  210. package/dist/screens/workflows/workflow-info.d.ts +2 -3
  211. package/dist/screens/workflows/workflow-info.js +2 -9
  212. package/dist/screens/workflows/workflow-instructions.d.ts +2 -3
  213. package/dist/screens/workflows/workflow-instructions.js +23 -55
  214. package/dist/screens/workflows/workflow-list.d.ts +1 -2
  215. package/dist/screens/workflows/workflow-list.js +23 -62
  216. package/dist/setupTests.d.ts +1 -1
  217. package/dist/setupTests.js +10 -11
  218. package/dist/system-apps/assistants.app.d.ts +1 -1
  219. package/dist/system-apps/assistants.app.js +3 -3
  220. package/dist/system-apps/console-logs.app.d.ts +1 -1
  221. package/dist/system-apps/console-logs.app.js +3 -3
  222. package/dist/system-apps/contacts.app.d.ts +1 -1
  223. package/dist/system-apps/contacts.app.js +4 -4
  224. package/dist/system-apps/data-explorer.app.d.ts +1 -1
  225. package/dist/system-apps/data-explorer.app.js +4 -4
  226. package/dist/system-apps/groups.app.d.ts +1 -1
  227. package/dist/system-apps/groups.app.js +4 -4
  228. package/dist/system-apps/index.d.ts +17 -17
  229. package/dist/system-apps/index.js +52 -52
  230. package/dist/system-apps/join-group.app.d.ts +1 -1
  231. package/dist/system-apps/join-group.app.js +4 -4
  232. package/dist/system-apps/mobile-settings.app.d.ts +1 -1
  233. package/dist/system-apps/mobile-settings.app.js +3 -3
  234. package/dist/system-apps/network-viewer.app.d.ts +1 -1
  235. package/dist/system-apps/network-viewer.app.js +4 -4
  236. package/dist/system-apps/packages.app.d.ts +1 -1
  237. package/dist/system-apps/packages.app.js +3 -3
  238. package/dist/system-apps/search.app.d.ts +1 -1
  239. package/dist/system-apps/search.app.js +4 -4
  240. package/dist/system-apps/settings.app.d.ts +1 -1
  241. package/dist/system-apps/settings.app.js +3 -3
  242. package/dist/system-apps/threads.app.d.ts +1 -1
  243. package/dist/system-apps/threads.app.js +3 -3
  244. package/dist/system-apps/tools.app.d.ts +1 -1
  245. package/dist/system-apps/tools.app.js +3 -3
  246. package/dist/system-apps/types.app.d.ts +1 -1
  247. package/dist/system-apps/types.app.js +3 -3
  248. package/dist/system-apps/variables.app.d.ts +1 -1
  249. package/dist/system-apps/variables.app.js +3 -3
  250. package/dist/system-apps/workflows.app.d.ts +1 -1
  251. package/dist/system-apps/workflows.app.js +3 -3
  252. package/dist/tabs-layout/tabs-layout.d.ts +2 -3
  253. package/dist/tabs-layout/tabs-layout.js +215 -246
  254. package/dist/tabs-layout/tabs-state.d.ts +2 -2
  255. package/dist/tabs-layout/tabs-state.js +73 -61
  256. package/dist/ui-defaults/index.d.ts +2 -2
  257. package/dist/ui-defaults/list-screen.d.ts +2 -3
  258. package/dist/ui-defaults/list-screen.js +33 -37
  259. package/dist/ui-defaults/markdown-field.js +24 -56
  260. package/dist/ui-router/routes-loader.d.ts +1 -1
  261. package/dist/ui-router/routes-loader.js +17 -13
  262. package/dist/ui-router/ui-loader.d.ts +6 -6
  263. package/dist/ui-router/ui-loader.js +172 -268
  264. package/dist/utils.js +49 -39
  265. package/jest.config.js +16 -16
  266. package/package.json +16 -14
  267. package/src/command-palette/command-palette-ui.tsx +261 -237
  268. package/src/command-palette/command-palette.ts +81 -78
  269. package/src/components/chat-overlay.tsx +366 -261
  270. package/src/components/checkbox.tsx +15 -12
  271. package/src/components/group-switcher.tsx +150 -105
  272. package/src/components/input-date.tsx +17 -16
  273. package/src/components/input-number.tsx +47 -31
  274. package/src/components/input.tsx +15 -12
  275. package/src/components/inverse-lazy-list.tsx +14 -13
  276. package/src/components/io-schema-values.tsx +51 -69
  277. package/src/components/io-schema.tsx +94 -69
  278. package/src/components/lazy-list.tsx +51 -34
  279. package/src/components/list-screen.tsx +51 -35
  280. package/src/components/loading-indicator.tsx +2 -4
  281. package/src/components/markdown-editor/autolink-plugin.tsx +4 -11
  282. package/src/components/markdown-editor/editor-inline.tsx +3 -4
  283. package/src/components/markdown-editor/editor.tsx +53 -51
  284. package/src/components/markdown-editor/markdown-plugin.tsx +48 -40
  285. package/src/components/markdown-editor/mention-node.ts +39 -38
  286. package/src/components/markdown-editor/mentions-plugin.tsx +99 -101
  287. package/src/components/markdown-editor/theme.ts +28 -29
  288. package/src/components/markdown-editor/toolbar.tsx +53 -47
  289. package/src/components/markdown-with-mentions.tsx +56 -46
  290. package/src/components/message-logs/message-logs.tsx +225 -165
  291. package/src/components/messages/avatar.tsx +70 -52
  292. package/src/components/messages/channel-message-list.tsx +80 -68
  293. package/src/components/messages/channel-view.tsx +34 -33
  294. package/src/components/messages/message-compose.tsx +84 -67
  295. package/src/components/messages/message-display.tsx +103 -89
  296. package/src/components/messages/thread-message-list.tsx +53 -44
  297. package/src/components/router.tsx +42 -43
  298. package/src/components/save-button.tsx +43 -39
  299. package/src/components/sortable-list.tsx +77 -49
  300. package/src/components/tabs.tsx +31 -31
  301. package/src/components/tooltip.tsx +21 -28
  302. package/src/components/trust-level-badge.tsx +15 -11
  303. package/src/components/trust-level-dropdown.tsx +49 -19
  304. package/src/components/typeahead.tsx +57 -59
  305. package/src/components/voice-indicator.tsx +158 -141
  306. package/src/components/voice-subscribe-events.ts +20 -0
  307. package/src/globals.tsx +42 -40
  308. package/src/hooks.test.tsx +141 -134
  309. package/src/hooks.ts +80 -48
  310. package/src/index.tsx +17 -10
  311. package/src/mention-configs.ts +122 -68
  312. package/src/screens/assistants/assistant-config.tsx +28 -18
  313. package/src/screens/assistants/assistant-details.tsx +35 -36
  314. package/src/screens/assistants/assistant-info.tsx +16 -11
  315. package/src/screens/assistants/assistant-list.tsx +37 -34
  316. package/src/screens/assistants/assistant-tools.tsx +41 -20
  317. package/src/screens/console-logs/console-logs-list.tsx +173 -140
  318. package/src/screens/console-logs/log-display.tsx +65 -38
  319. package/src/screens/console-logs/log-filters.tsx +4 -3
  320. package/src/screens/console-logs/mobile-log-card.tsx +78 -71
  321. package/src/screens/console-logs/resizable-table-header.tsx +29 -21
  322. package/src/screens/contacts/contact-details.tsx +29 -30
  323. package/src/screens/contacts/contact-list.tsx +71 -60
  324. package/src/screens/contacts/index.ts +5 -5
  325. package/src/screens/contacts/user-connect.tsx +177 -171
  326. package/src/screens/data-explorer/data-explorer.tsx +134 -98
  327. package/src/screens/data-explorer/index.ts +2 -3
  328. package/src/screens/data-explorer/query-executor.tsx +90 -80
  329. package/src/screens/groups/group-details.tsx +120 -101
  330. package/src/screens/groups/group-invite-listener.tsx +34 -37
  331. package/src/screens/groups/group-list.tsx +119 -103
  332. package/src/screens/groups/group-members.tsx +225 -164
  333. package/src/screens/groups/index.ts +5 -6
  334. package/src/screens/join-group/index.ts +2 -2
  335. package/src/screens/join-group/join-group.tsx +41 -39
  336. package/src/screens/network-viewer/connection-troubleshooter.tsx +145 -104
  337. package/src/screens/network-viewer/cpu-usage-graph.tsx +39 -43
  338. package/src/screens/network-viewer/device-details-modal.tsx +46 -59
  339. package/src/screens/network-viewer/group-details-modal.tsx +68 -49
  340. package/src/screens/network-viewer/index.ts +4 -5
  341. package/src/screens/network-viewer/network-viewer-ipc.ts +23 -0
  342. package/src/screens/network-viewer/network-viewer.tsx +261 -236
  343. package/src/screens/network-viewer/usage-graph.tsx +57 -49
  344. package/src/screens/packages/package-details.tsx +43 -35
  345. package/src/screens/packages/package-info.tsx +107 -66
  346. package/src/screens/packages/package-list.tsx +175 -98
  347. package/src/screens/packages/package-new-local.tsx +28 -26
  348. package/src/screens/packages/package-versions.tsx +102 -77
  349. package/src/screens/peer-types/peer-type-details.tsx +60 -50
  350. package/src/screens/peer-types/peer-type-list.tsx +20 -30
  351. package/src/screens/search/global-search.tsx +153 -137
  352. package/src/screens/settings/color-mode-dropdown.tsx +52 -35
  353. package/src/screens/settings/settings-page.tsx +215 -141
  354. package/src/screens/settings/voice-settings-agent.tsx +13 -12
  355. package/src/screens/settings/voice-settings-api-keys.tsx +14 -12
  356. package/src/screens/settings/voice-settings-output.tsx +12 -11
  357. package/src/screens/settings/voice-settings-providers.tsx +7 -3
  358. package/src/screens/settings/voice-settings-types.ts +52 -49
  359. package/src/screens/settings/voice-settings-wake-word.tsx +25 -9
  360. package/src/screens/settings/voice-settings.tsx +66 -43
  361. package/src/screens/setup-user.tsx +88 -41
  362. package/src/screens/tools/tool-code.tsx +12 -17
  363. package/src/screens/tools/tool-details.tsx +28 -28
  364. package/src/screens/tools/tool-info.tsx +14 -19
  365. package/src/screens/tools/tool-list.tsx +58 -40
  366. package/src/screens/tools/tool-schema.tsx +16 -9
  367. package/src/screens/tools/tool-test-details.tsx +11 -22
  368. package/src/screens/tools/tool-test-list.tsx +29 -30
  369. package/src/screens/variables/variable-details.tsx +63 -51
  370. package/src/screens/variables/variable-list.tsx +29 -30
  371. package/src/screens/welcome-modal.tsx +68 -48
  372. package/src/screens/workflows/workflow-details.tsx +40 -30
  373. package/src/screens/workflows/workflow-info.tsx +4 -11
  374. package/src/screens/workflows/workflow-instructions.tsx +35 -28
  375. package/src/screens/workflows/workflow-list.tsx +50 -40
  376. package/src/setupTests.ts +14 -13
  377. package/src/system-apps/assistants.app.ts +5 -5
  378. package/src/system-apps/console-logs.app.ts +4 -4
  379. package/src/system-apps/contacts.app.ts +6 -6
  380. package/src/system-apps/data-explorer.app.ts +5 -5
  381. package/src/system-apps/groups.app.ts +6 -6
  382. package/src/system-apps/index.ts +49 -49
  383. package/src/system-apps/join-group.app.ts +5 -5
  384. package/src/system-apps/mobile-settings.app.ts +4 -5
  385. package/src/system-apps/network-viewer.app.ts +5 -5
  386. package/src/system-apps/packages.app.ts +5 -5
  387. package/src/system-apps/search.app.ts +6 -6
  388. package/src/system-apps/settings.app.ts +5 -5
  389. package/src/system-apps/threads.app.ts +5 -5
  390. package/src/system-apps/tools.app.ts +5 -5
  391. package/src/system-apps/types.app.ts +5 -5
  392. package/src/system-apps/variables.app.ts +5 -5
  393. package/src/system-apps/workflows.app.ts +5 -5
  394. package/src/tabs-layout/tabs-layout.tsx +345 -254
  395. package/src/tabs-layout/tabs-state.ts +100 -81
  396. package/src/ui-defaults/index.ts +2 -3
  397. package/src/ui-defaults/list-screen.tsx +45 -40
  398. package/src/ui-defaults/markdown-field.tsx +22 -26
  399. package/src/ui-router/routes-loader.ts +40 -24
  400. package/src/ui-router/ui-loader.tsx +312 -214
  401. package/src/utils.ts +68 -81
  402. package/tsconfig.json +5 -10
  403. package/dist/components/input-datetime.d.ts +0 -7
  404. package/dist/components/input-datetime.js +0 -35
  405. package/dist/components/lazy-sortable-list.d.ts +0 -29
  406. package/dist/components/lazy-sortable-list.js +0 -12
  407. package/dist/components/left-bar.d.ts +0 -5
  408. package/dist/components/left-bar.js +0 -207
  409. package/dist/components/main-content-container.d.ts +0 -2
  410. package/dist/components/main-content-container.js +0 -92
  411. package/dist/components/messages/thread-view.d.ts +0 -6
  412. package/dist/components/messages/thread-view.js +0 -174
  413. package/dist/components/off-canvas.d.ts +0 -13
  414. package/dist/components/off-canvas.js +0 -89
  415. package/dist/components/text-list-editor.tsx/text-list-editor.d.ts +0 -6
  416. package/dist/components/text-list-editor.tsx/text-list-editor.js +0 -13
  417. package/dist/components/top-bar.d.ts +0 -2
  418. package/dist/components/top-bar.js +0 -51
  419. package/dist/components/typeahead/mentions-plugin.d.ts +0 -7
  420. package/dist/components/typeahead/mentions-plugin.js +0 -203
  421. package/dist/components/typeahead/typeahead-editor.d.ts +0 -15
  422. package/dist/components/typeahead/typeahead-editor.js +0 -134
  423. package/dist/components/typeahead/typeahead.d.ts +0 -12
  424. package/dist/components/typeahead/typeahead.js +0 -94
  425. package/dist/screens/profile.d.ts +0 -2
  426. package/dist/screens/profile.js +0 -76
  427. package/src/components/input-datetime.tsx +0 -41
  428. package/src/components/lazy-sortable-list.tsx +0 -51
  429. package/src/components/left-bar.tsx +0 -322
  430. package/src/components/main-content-container.tsx +0 -79
  431. package/src/components/messages/thread-view.tsx +0 -214
  432. package/src/components/off-canvas.tsx +0 -83
  433. package/src/components/text-list-editor.tsx/text-list-editor.tsx +0 -13
  434. package/src/components/top-bar.tsx +0 -119
  435. package/src/components/typeahead/mentions-plugin.tsx +0 -265
  436. package/src/components/typeahead/typeahead-editor.tsx +0 -140
  437. package/src/components/typeahead/typeahead.tsx +0 -77
  438. package/src/screens/profile.tsx +0 -75
@@ -1,56 +1,22 @@
1
1
  "use strict";
2
- var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
- if (k2 === undefined) k2 = k;
4
- var desc = Object.getOwnPropertyDescriptor(m, k);
5
- if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
- desc = { enumerable: true, get: function() { return m[k]; } };
7
- }
8
- Object.defineProperty(o, k2, desc);
9
- }) : (function(o, m, k, k2) {
10
- if (k2 === undefined) k2 = k;
11
- o[k2] = m[k];
12
- }));
13
- var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
- Object.defineProperty(o, "default", { enumerable: true, value: v });
15
- }) : function(o, v) {
16
- o["default"] = v;
17
- });
18
- var __importStar = (this && this.__importStar) || (function () {
19
- var ownKeys = function(o) {
20
- ownKeys = Object.getOwnPropertyNames || function (o) {
21
- var ar = [];
22
- for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
- return ar;
24
- };
25
- return ownKeys(o);
26
- };
27
- return function (mod) {
28
- if (mod && mod.__esModule) return mod;
29
- var result = {};
30
- if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
- __setModuleDefault(result, mod);
32
- return result;
33
- };
34
- })();
35
2
  var __importDefault = (this && this.__importDefault) || function (mod) {
36
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
37
4
  };
38
5
  Object.defineProperty(exports, "__esModule", { value: true });
39
6
  exports.MessageDisplay = void 0;
40
- const react_1 = __importStar(require("react"));
41
- const avatar_1 = require("./avatar");
7
+ const jsx_runtime_1 = require("react/jsx-runtime");
42
8
  // import { FileListDisplay } from './file-list-display';
43
9
  const peers_sdk_1 = require("@peers-app/peers-sdk");
44
10
  const moment_1 = __importDefault(require("moment"));
11
+ const react_1 = require("react");
45
12
  const globals_1 = require("../../globals");
46
13
  const hooks_1 = require("../../hooks");
47
14
  const markdown_with_mentions_1 = require("../markdown-with-mentions");
48
15
  const message_logs_1 = require("../message-logs/message-logs");
16
+ const avatar_1 = require("./avatar");
49
17
  const MessageDisplay = (props) => {
50
18
  const { message, messageAbove, isThreadParent } = props;
51
19
  const [messageId, setMessageId] = (0, react_1.useState)(message.messageId);
52
- (0, hooks_1.useSubscription)(globals_1.openThreads, () => {
53
- });
54
20
  const [user, setUser] = (0, react_1.useState)();
55
21
  const [messageChangedTime, setMessageChangedTime] = (0, react_1.useState)(0);
56
22
  const assistant = (0, hooks_1.usePromise)(async () => {
@@ -58,7 +24,11 @@ const MessageDisplay = (props) => {
58
24
  return (0, peers_sdk_1.Assistants)().get(message.assistantId);
59
25
  }
60
26
  }, undefined, [message.assistantId]);
61
- const countReplies = (0, hooks_1.usePromise)(() => (0, peers_sdk_1.Messages)().count({ messageParentId: messageId }), 1, [messageId, messageChangedTime]);
27
+ const countReplies = (0, hooks_1.usePromise)(() => (0, peers_sdk_1.Messages)().count({ messageParentId: messageId }), 0, [
28
+ messageId,
29
+ messageChangedTime,
30
+ ]);
31
+ const replyCount = countReplies ?? 0;
62
32
  const [showMenu] = (0, react_1.useState)(() => (0, peers_sdk_1.observable)(false));
63
33
  (0, react_1.useEffect)(() => {
64
34
  setMessageId(message.messageId);
@@ -71,11 +41,11 @@ const MessageDisplay = (props) => {
71
41
  return () => {
72
42
  sub.unsubscribe();
73
43
  };
74
- }, [message]);
44
+ }, [message, messageId]);
75
45
  // calculate short time string
76
46
  const messageDate = new Date(message.createdAt);
77
47
  let hour = messageDate.getHours();
78
- const minute = messageDate.getMinutes().toString().padStart(2, '0');
48
+ const minute = messageDate.getMinutes().toString().padStart(2, "0");
79
49
  let ampm = "AM";
80
50
  if (hour > 11) {
81
51
  ampm = "PM";
@@ -84,69 +54,46 @@ const MessageDisplay = (props) => {
84
54
  hour = hour - 12;
85
55
  }
86
56
  let timeStr = `${hour || 12}:${minute} ${ampm}`;
87
- const showDateDivider = messageAbove
88
- && messageDate.toDateString() !== (new Date(messageAbove.createdAt)).toDateString();
89
- const showUserInfo = showDateDivider
90
- || !messageAbove || !message
91
- || messageAbove.userId !== message.userId
92
- || messageAbove.assistantId !== message.assistantId
93
- || messageDate.getHours() !== (new Date(messageAbove.createdAt)).getHours()
94
- || countReplies > 0;
57
+ const showDateDivider = messageAbove && messageDate.toDateString() !== new Date(messageAbove.createdAt).toDateString();
58
+ const showUserInfo = showDateDivider ||
59
+ !messageAbove ||
60
+ !message ||
61
+ messageAbove.userId !== message.userId ||
62
+ messageAbove.assistantId !== message.assistantId ||
63
+ messageDate.getHours() !== new Date(messageAbove.createdAt).getHours() ||
64
+ replyCount > 0;
95
65
  // // show time of this message if hour is different than last message
96
- // const showTime = !showUserInfo
97
- // && messageDate.getHours() !== (new Date(messageAbove.modified)).getHours();
66
+ // const showTime = !showUserInfo
67
+ // && messageDate.getHours() !== (new Date(messageAbove.modified)).getHours();
98
68
  const isThreadView = isThreadParent || message.messageParentId;
99
- const dateTimeStr = (0, moment_1.default)(message.createdAt).calendar().split(' at ')[0] + ' ' + timeStr;
69
+ const dateTimeStr = `${(0, moment_1.default)(message.createdAt).calendar().split(" at ")[0]} ${timeStr}`;
100
70
  if (isThreadParent) {
101
71
  timeStr = dateTimeStr;
102
72
  }
103
- let messageParsed = message.message.trim();
104
- return (react_1.default.createElement("div", { className: isThreadParent ? '' : `peers-message-container`, onMouseEnter: () => showMenu(true), onMouseLeave: () => showMenu(false) },
105
- react_1.default.createElement(MessageMenu, { message: message, showMenu: showMenu, isThreadView: !!isThreadView }),
106
- showDateDivider && (react_1.default.createElement("div", { style: { marginTop: `20px` } },
107
- react_1.default.createElement("hr", null),
108
- react_1.default.createElement("div", { className: "d-flex justify-content-center" },
109
- react_1.default.createElement("span", { className: 'message-display-list-date', style: {
110
- position: 'relative',
111
- top: '-29px',
112
- paddingLeft: '11px',
113
- paddingRight: '11px',
114
- fontSize: '16px',
115
- borderRadius: '20px',
116
- } },
117
- react_1.default.createElement("strong", null, (0, moment_1.default)(message.createdAt).calendar().split(' at ')[0].replace('Last', '')))))),
118
- showUserInfo && (react_1.default.createElement("div", { style: { marginTop: '15px' } })),
119
- react_1.default.createElement("div", { className: "d-flex" },
120
- react_1.default.createElement("div", { className: "p-0 flex-shrink-0 justify-content-center align-items-center", style: {
121
- width: '46px',
122
- height: '20px',
123
- overflow: 'visible',
124
- // zIndex: message.modified,
125
- position: 'relative',
126
- top: '4px',
127
- left: '3px',
128
- } }, showUserInfo && react_1.default.createElement(avatar_1.Avatar, { userId: message.userId, assistantId: message.assistantId, setUser: setUser })),
129
- react_1.default.createElement("div", { className: "p-1 flex-grow-1 justify-content-start text-break", style: {
130
- maxWidth: 'calc(100% - 50px)',
131
- } },
132
- showUserInfo && (react_1.default.createElement("div", { className: "peers-message" },
133
- react_1.default.createElement("span", { style: { fontSize: '9pt' } },
134
- react_1.default.createElement("b", null, assistant?.name || message?.assistantId || user?.name || message.userId)),
135
- react_1.default.createElement("span", { className: "text-muted sub-sup-font-size", style: { fontSize: '8pt' }, title: dateTimeStr },
136
- "\u00A0\u00A0",
137
- timeStr))),
138
- messageParsed.length > 0 && (react_1.default.createElement("div", { className: "peers-message" },
139
- react_1.default.createElement(markdown_with_mentions_1.MarkdownWithMentions, { content: messageParsed }))),
140
- react_1.default.createElement(message_logs_1.MessageLogs, { key: messageId, messageId: messageId }),
141
- !isThreadView && countReplies > 0 && (react_1.default.createElement("div", { className: "d-inline" },
142
- "\u00A0",
143
- react_1.default.createElement("button", { className: "btn btn-sm btn-link m-1", onClick: () => (0, globals_1.openThread)(message.messageParentId || messageId), tabIndex: props.index }, countReplies === 1 ? '1 reply' : countReplies + ' replies'))))),
144
- message?.fileIds?.length && (react_1.default.createElement("div", { style: { marginLeft: '46px' } })) || undefined));
73
+ const messageParsed = message.message.trim();
74
+ return ((0, jsx_runtime_1.jsxs)("div", { className: isThreadParent ? "" : `peers-message-container`, onMouseEnter: () => showMenu(true), onMouseLeave: () => showMenu(false), children: [(0, jsx_runtime_1.jsx)(MessageMenu, { message: message, showMenu: showMenu, isThreadView: !!isThreadView }), showDateDivider && ((0, jsx_runtime_1.jsxs)("div", { style: { marginTop: `20px` }, children: [(0, jsx_runtime_1.jsx)("hr", {}), (0, jsx_runtime_1.jsx)("div", { className: "d-flex justify-content-center", children: (0, jsx_runtime_1.jsx)("span", { className: "message-display-list-date", style: {
75
+ position: "relative",
76
+ top: "-29px",
77
+ paddingLeft: "11px",
78
+ paddingRight: "11px",
79
+ fontSize: "16px",
80
+ borderRadius: "20px",
81
+ }, children: (0, jsx_runtime_1.jsx)("strong", { children: (0, moment_1.default)(message.createdAt).calendar().split(" at ")[0].replace("Last", "") }) }) })] })), showUserInfo && (0, jsx_runtime_1.jsx)("div", { style: { marginTop: "15px" } }), (0, jsx_runtime_1.jsxs)("div", { className: "d-flex", children: [(0, jsx_runtime_1.jsx)("div", { className: "p-0 flex-shrink-0 justify-content-center align-items-center", style: {
82
+ width: "46px",
83
+ height: "20px",
84
+ overflow: "visible",
85
+ // zIndex: message.modified,
86
+ position: "relative",
87
+ top: "4px",
88
+ left: "3px",
89
+ }, children: showUserInfo && ((0, jsx_runtime_1.jsx)(avatar_1.Avatar, { userId: message.userId, assistantId: message.assistantId, setUser: setUser })) }), (0, jsx_runtime_1.jsxs)("div", { className: "p-1 flex-grow-1 justify-content-start text-break", style: {
90
+ maxWidth: "calc(100% - 50px)",
91
+ }, children: [showUserInfo && ((0, jsx_runtime_1.jsxs)("div", { className: "peers-message", children: [(0, jsx_runtime_1.jsx)("span", { style: { fontSize: "9pt" }, children: (0, jsx_runtime_1.jsx)("b", { children: assistant?.name || message?.assistantId || user?.name || message.userId }) }), (0, jsx_runtime_1.jsxs)("span", { className: "text-muted sub-sup-font-size", style: { fontSize: "8pt" }, title: dateTimeStr, children: ["\u00A0\u00A0", timeStr] })] })), messageParsed.length > 0 && ((0, jsx_runtime_1.jsx)("div", { className: "peers-message", children: (0, jsx_runtime_1.jsx)(markdown_with_mentions_1.MarkdownWithMentions, { content: messageParsed }) })), (0, jsx_runtime_1.jsx)(message_logs_1.MessageLogs, { messageId: messageId }, messageId), !isThreadView && replyCount > 0 && ((0, jsx_runtime_1.jsxs)("div", { className: "d-inline", children: ["\u00A0", (0, jsx_runtime_1.jsx)("button", { className: "btn btn-sm btn-link m-1", onClick: () => (0, globals_1.openThread)(message.messageParentId || messageId), tabIndex: props.index, children: replyCount === 1 ? "1 reply" : `${replyCount} replies` })] }))] })] }), (message?.fileIds?.length && ((0, jsx_runtime_1.jsx)("div", { style: { marginLeft: "46px" } }))) ||
92
+ undefined] }));
145
93
  };
146
94
  exports.MessageDisplay = MessageDisplay;
147
95
  const MessageMenu = (props) => {
148
96
  const { message, isThreadView, showMenu } = props;
149
97
  (0, hooks_1.useObservable)(showMenu);
150
- return (react_1.default.createElement(react_1.default.Fragment, null, showMenu() && !isThreadView && (react_1.default.createElement("div", { className: "message-hover-menu" },
151
- react_1.default.createElement("button", { className: "btn btn-sm btn-link m-1", onClick: () => (0, globals_1.openThread)(message.messageParentId || message.messageId) }, "Reply")))));
98
+ return ((0, jsx_runtime_1.jsx)(jsx_runtime_1.Fragment, { children: showMenu() && !isThreadView && ((0, jsx_runtime_1.jsx)("div", { className: "message-hover-menu", children: (0, jsx_runtime_1.jsx)("button", { className: "btn btn-sm btn-link m-1", onClick: () => (0, globals_1.openThread)(message.messageParentId || message.messageId), children: "Reply" }) })) }));
152
99
  };
@@ -1,11 +1,10 @@
1
- import React from 'react';
2
- import { IMessage } from "@peers-app/peers-sdk";
1
+ import { type IMessage } from "@peers-app/peers-sdk";
3
2
  interface IProps {
4
3
  threadId: string;
5
4
  effects?: {
6
- pushMessage: (message: IMessage) => any;
5
+ pushMessage: (message: IMessage) => void;
7
6
  };
8
- scrollChanged?: (isBottomInView: boolean) => any;
7
+ scrollChanged?: (isBottomInView: boolean) => void;
9
8
  }
10
- export declare const ThreadMessageList: (props: IProps) => false | React.JSX.Element;
9
+ export declare const ThreadMessageList: (props: IProps) => false | import("react/jsx-runtime").JSX.Element;
11
10
  export {};
@@ -34,46 +34,50 @@ var __importStar = (this && this.__importStar) || (function () {
34
34
  })();
35
35
  Object.defineProperty(exports, "__esModule", { value: true });
36
36
  exports.ThreadMessageList = void 0;
37
+ const jsx_runtime_1 = require("react/jsx-runtime");
38
+ const peers_sdk_1 = require("@peers-app/peers-sdk");
37
39
  const lodash_1 = require("lodash");
38
40
  const react_1 = __importStar(require("react"));
39
- const peers_sdk_1 = require("@peers-app/peers-sdk");
40
41
  const globals_1 = require("../../globals");
42
+ const hooks_1 = require("../../hooks");
41
43
  const message_compose_1 = require("./message-compose");
42
44
  const message_display_1 = require("./message-display");
43
- const hooks_1 = require("../../hooks");
44
45
  const ThreadMessageList = (props) => {
45
46
  const { threadId: messageParentId } = props;
46
47
  const [messages, setMessages] = (0, react_1.useState)([]);
47
48
  const messagesEndRef = react_1.default.useRef(null);
48
- const messageParent = (0, hooks_1.usePromise)(() => (0, peers_sdk_1.Messages)().get(messageParentId), undefined, [messageParentId]);
49
- function scrollToBottom(behavior, delay = 100) {
49
+ const messageParent = (0, hooks_1.usePromise)(() => (0, peers_sdk_1.Messages)().get(messageParentId), undefined, [
50
+ messageParentId,
51
+ ]);
52
+ const scrollToBottom = (0, react_1.useCallback)((behavior, delay = 100) => {
50
53
  setTimeout(() => {
51
54
  messagesEndRef.current?.scrollIntoView({ behavior });
52
55
  }, delay);
53
- }
54
- async function loadMessages() {
55
- const messages = await (0, peers_sdk_1.Messages)().list({ messageParentId }, {
56
- sortBy: ['createdAt', 'messageId'],
56
+ }, []);
57
+ const loadMessages = (0, react_1.useCallback)(async () => {
58
+ const loaded = await (0, peers_sdk_1.Messages)().list({ messageParentId }, {
59
+ sortBy: ["createdAt", "messageId"],
57
60
  });
58
- setMessages(messages);
59
- scrollToBottom('instant', 1);
60
- }
61
+ setMessages(loaded);
62
+ scrollToBottom("instant", 1);
63
+ }, [messageParentId, scrollToBottom]);
61
64
  // first load
62
65
  (0, react_1.useEffect)(() => {
63
66
  loadMessages();
64
- }, [messageParentId]);
67
+ }, [loadMessages]);
65
68
  // reload when messages change
66
69
  (0, react_1.useEffect)(() => {
67
70
  // subscribe to message changes
68
71
  const sub = (0, peers_sdk_1.Messages)().dataChanged.subscribe((evt) => {
69
- if (evt.dataObject.messageParentId == messageParentId || evt.dataObject.messageId === messageParentId) {
72
+ if (evt.dataObject.messageParentId === messageParentId ||
73
+ evt.dataObject.messageId === messageParentId) {
70
74
  loadMessages();
71
75
  }
72
76
  });
73
77
  return () => {
74
78
  sub.unsubscribe();
75
79
  };
76
- }, [messageParentId]);
80
+ }, [messageParentId, loadMessages]);
77
81
  (0, react_1.useEffect)(() => {
78
82
  const observer = new IntersectionObserver(([entry]) => {
79
83
  props?.scrollChanged?.(entry.isIntersecting);
@@ -86,19 +90,22 @@ const ThreadMessageList = (props) => {
86
90
  observer.unobserve(messagesEndRef.current);
87
91
  }
88
92
  };
89
- }, []);
93
+ }, [props?.scrollChanged]);
94
+ // Shared-ref pattern: if a parent passes `effects`, we mutate `pushMessage` on that SAME
95
+ // reference so the parent can invoke it. Do NOT spread/clone (`{...props.effects}`).
96
+ // biome-ignore lint/style/noNonNullAssertion: initial `{}` is populated on this same render; the `!` placates TS for the optional `IProps["effects"]` shape.
90
97
  const [effects] = (0, react_1.useState)(() => props.effects || {});
91
98
  effects.pushMessage = (newMessage) => {
92
- if (messages.find(m => m.messageId === newMessage.messageId)) {
99
+ if (messages.find((m) => m.messageId === newMessage.messageId)) {
93
100
  return;
94
101
  }
95
- let _messages = (0, lodash_1.sortBy)([newMessage, ...messages], 'createdAt');
102
+ const _messages = (0, lodash_1.sortBy)([newMessage, ...messages], "createdAt");
96
103
  setMessages(_messages);
97
104
  if (newMessage.userId === globals_1.me.userId && !newMessage.assistantId) {
98
- scrollToBottom('instant', 1);
105
+ scrollToBottom("instant", 1);
99
106
  }
100
107
  else {
101
- scrollToBottom('smooth');
108
+ scrollToBottom("smooth");
102
109
  }
103
110
  };
104
111
  const sendMessage = (userMessage) => {
@@ -108,15 +115,8 @@ const ThreadMessageList = (props) => {
108
115
  if (!messageParent) {
109
116
  return false;
110
117
  }
111
- return (react_1.default.createElement(react_1.default.Fragment, null,
112
- messageParent &&
113
- react_1.default.createElement(message_display_1.MessageDisplay, { message: messageParent, isThreadParent: true }),
114
- react_1.default.createElement("hr", null),
115
- messages.map((message, index) => {
116
- return react_1.default.createElement(message_display_1.MessageDisplay, { key: message.messageId, message: message, messageAbove: messages[index - 1] });
117
- }),
118
- react_1.default.createElement("div", { className: 'p-2' },
119
- react_1.default.createElement(message_compose_1.MessageCompose, { channelId: messageParent.channelId, threadId: messageParentId, onMessageSubmit: sendMessage })),
120
- react_1.default.createElement("div", { ref: messagesEndRef })));
118
+ return ((0, jsx_runtime_1.jsxs)(jsx_runtime_1.Fragment, { children: [messageParent && (0, jsx_runtime_1.jsx)(message_display_1.MessageDisplay, { message: messageParent, isThreadParent: true }), (0, jsx_runtime_1.jsx)("hr", {}), messages.map((message, index) => {
119
+ return ((0, jsx_runtime_1.jsx)(message_display_1.MessageDisplay, { message: message, messageAbove: messages[index - 1] }, message.messageId));
120
+ }), (0, jsx_runtime_1.jsx)("div", { className: "p-2", children: (0, jsx_runtime_1.jsx)(message_compose_1.MessageCompose, { channelId: messageParent.channelId ?? "", threadId: messageParentId, onMessageSubmit: sendMessage }) }), (0, jsx_runtime_1.jsx)("div", { ref: messagesEndRef })] }));
121
121
  };
122
122
  exports.ThreadMessageList = ThreadMessageList;
@@ -1,4 +1,3 @@
1
- import React from "react";
2
1
  import "../screens/console-logs/console-logs-list";
3
2
  import "../screens/groups";
4
3
  import "../screens/contacts";
@@ -7,4 +6,4 @@ import "../screens/network-viewer";
7
6
  import "../screens/data-explorer";
8
7
  export declare function Router({ path: providedPath }?: {
9
8
  path?: string;
10
- }): React.JSX.Element;
9
+ }): import("react/jsx-runtime").JSX.Element;
@@ -32,35 +32,32 @@ var __importStar = (this && this.__importStar) || (function () {
32
32
  return result;
33
33
  };
34
34
  })();
35
- var __importDefault = (this && this.__importDefault) || function (mod) {
36
- return (mod && mod.__esModule) ? mod : { "default": mod };
37
- };
38
35
  Object.defineProperty(exports, "__esModule", { value: true });
39
36
  exports.Router = Router;
40
- const react_1 = __importDefault(require("react"));
37
+ const jsx_runtime_1 = require("react/jsx-runtime");
41
38
  const globals = __importStar(require("../globals"));
39
+ const hooks_1 = require("../hooks");
42
40
  const assistant_details_1 = require("../screens/assistants/assistant-details");
43
41
  const assistant_list_1 = require("../screens/assistants/assistant-list");
42
+ const package_details_1 = require("../screens/packages/package-details");
43
+ const package_list_1 = require("../screens/packages/package-list");
44
+ const package_new_local_1 = require("../screens/packages/package-new-local");
45
+ const peer_type_details_1 = require("../screens/peer-types/peer-type-details");
46
+ const peer_type_list_1 = require("../screens/peer-types/peer-type-list");
47
+ const global_search_1 = require("../screens/search/global-search");
48
+ const settings_page_1 = require("../screens/settings/settings-page");
44
49
  // import { TaskDetails } from "../screens/tasks/task-details";
45
50
  // import { TaskList } from "../screens/tasks/task-list";
46
51
  const tool_details_1 = require("../screens/tools/tool-details");
47
52
  const tool_list_1 = require("../screens/tools/tool-list");
48
53
  const tool_test_details_1 = require("../screens/tools/tool-test-details");
54
+ const variable_details_1 = require("../screens/variables/variable-details");
55
+ const variable_list_1 = require("../screens/variables/variable-list");
49
56
  const workflow_details_1 = require("../screens/workflows/workflow-details");
50
57
  const workflow_list_1 = require("../screens/workflows/workflow-list");
51
- const channel_view_1 = require("./messages/channel-view");
52
- const settings_page_1 = require("../screens/settings/settings-page");
53
- const package_details_1 = require("../screens/packages/package-details");
54
- const package_list_1 = require("../screens/packages/package-list");
55
- const package_new_local_1 = require("../screens/packages/package-new-local");
56
- const variable_list_1 = require("../screens/variables/variable-list");
57
- const variable_details_1 = require("../screens/variables/variable-details");
58
- const peer_type_list_1 = require("../screens/peer-types/peer-type-list");
59
- const peer_type_details_1 = require("../screens/peer-types/peer-type-details");
60
58
  const ui_loader_1 = require("../ui-router/ui-loader");
61
- const hooks_1 = require("../hooks");
59
+ const channel_view_1 = require("./messages/channel-view");
62
60
  const thread_message_list_1 = require("./messages/thread-message-list");
63
- const global_search_1 = require("../screens/search/global-search");
64
61
  require("../screens/console-logs/console-logs-list");
65
62
  require("../screens/groups");
66
63
  require("../screens/contacts");
@@ -68,49 +65,50 @@ require("../screens/join-group");
68
65
  require("../screens/network-viewer");
69
66
  require("../screens/data-explorer");
70
67
  function Router({ path: providedPath } = {}) {
68
+ // Hooks must run unconditionally (same order every render)
69
+ const [globalPath] = (0, hooks_1.useObservable)(globals.mainContentPath);
71
70
  try {
72
71
  // Use provided path or fall back to global mainContentPath
73
- const [globalPath] = (0, hooks_1.useObservable)(globals.mainContentPath);
74
72
  let path = providedPath ?? globalPath;
75
73
  const originalPath = path;
76
74
  path = path.toLowerCase().trim();
77
- path = path.split('?')[0]; // remove query string
75
+ path = path.split("?")[0]; // remove query string
78
76
  // remove leading '/'
79
- if (path.startsWith('/')) {
77
+ if (path.startsWith("/")) {
80
78
  path = path.substring(1);
81
79
  }
82
80
  // remove trailing '/'
83
- if (path.endsWith('/')) {
81
+ if (path.endsWith("/")) {
84
82
  path = path.substring(0, path.length - 1);
85
83
  }
86
- if (path === 'search') {
87
- return react_1.default.createElement(global_search_1.GlobalSearch, null);
84
+ if (path === "search") {
85
+ return (0, jsx_runtime_1.jsx)(global_search_1.GlobalSearch, {});
88
86
  }
89
- if (path === 'settings' || path === 'profile') {
90
- return react_1.default.createElement(settings_page_1.SettingsPage, null);
87
+ if (path === "settings" || path === "profile") {
88
+ return (0, jsx_runtime_1.jsx)(settings_page_1.SettingsPage, {});
91
89
  }
92
- if (path === 'threads' || path === '') {
93
- return react_1.default.createElement(channel_view_1.ChannelMessages, null);
90
+ if (path === "threads" || path === "") {
91
+ return (0, jsx_runtime_1.jsx)(channel_view_1.ChannelMessages, {});
94
92
  }
95
- const ui = (0, ui_loader_1.UIRouter)({ path, props: {}, uiCategory: 'screen' });
93
+ const ui = (0, ui_loader_1.UIRouter)({ path, props: {}, uiCategory: "screen" });
96
94
  if (ui) {
97
95
  return ui;
98
96
  }
99
97
  if (path.match(/^channel\//)) {
100
- const parts = path.split('/');
98
+ const parts = path.split("/");
101
99
  parts.shift();
102
100
  const channelId = parts[0];
103
101
  // todo add additional params as props if they exist
104
- return react_1.default.createElement(channel_view_1.ChannelMessages, { channelId: channelId });
102
+ return (0, jsx_runtime_1.jsx)(channel_view_1.ChannelMessages, { channelId: channelId });
105
103
  }
106
- if (path === 'assistants') {
107
- return react_1.default.createElement(assistant_list_1.AssistantList, null);
104
+ if (path === "assistants") {
105
+ return (0, jsx_runtime_1.jsx)(assistant_list_1.AssistantList, {});
108
106
  }
109
107
  if (path.match(/^assistants\//)) {
110
- const parts = path.split('/');
108
+ const parts = path.split("/");
111
109
  parts.shift();
112
110
  const id = parts[0];
113
- return react_1.default.createElement(assistant_details_1.AssistantDetails, { assistantId: id });
111
+ return (0, jsx_runtime_1.jsx)(assistant_details_1.AssistantDetails, { assistantId: id });
114
112
  }
115
113
  // if (path === 'tasks') {
116
114
  // return <TaskList />;
@@ -121,76 +119,70 @@ function Router({ path: providedPath } = {}) {
121
119
  // const taskId = parts[0];
122
120
  // return <TaskDetails taskId={taskId} />;
123
121
  // }
124
- if (path === 'workflows') {
125
- return react_1.default.createElement(workflow_list_1.WorkflowList, null);
122
+ if (path === "workflows") {
123
+ return (0, jsx_runtime_1.jsx)(workflow_list_1.WorkflowList, {});
126
124
  }
127
125
  if (path.match(/^workflows\//)) {
128
- const parts = path.split('/');
126
+ const parts = path.split("/");
129
127
  parts.shift();
130
128
  const workflowId = parts[0];
131
- return react_1.default.createElement(workflow_details_1.WorkflowDetails, { workflowId: workflowId });
129
+ return (0, jsx_runtime_1.jsx)(workflow_details_1.WorkflowDetails, { workflowId: workflowId });
132
130
  }
133
- if (path === 'tools') {
134
- return react_1.default.createElement(tool_list_1.ToolList, null);
131
+ if (path === "tools") {
132
+ return (0, jsx_runtime_1.jsx)(tool_list_1.ToolList, {});
135
133
  }
136
134
  if (path.match(/^tools\/tests\//)) {
137
- const parts = path.split('/');
135
+ const parts = path.split("/");
138
136
  parts.shift();
139
137
  parts.shift();
140
138
  const toolTestId = parts[0];
141
- return react_1.default.createElement(tool_test_details_1.ToolTestDetails, { toolTestId: toolTestId });
139
+ return (0, jsx_runtime_1.jsx)(tool_test_details_1.ToolTestDetails, { toolTestId: toolTestId });
142
140
  }
143
141
  if (path.match(/^tools\//)) {
144
- const parts = path.split('/');
142
+ const parts = path.split("/");
145
143
  parts.shift();
146
144
  const toolId = parts[0];
147
- return react_1.default.createElement(tool_details_1.ToolDetails, { toolId: toolId });
145
+ return (0, jsx_runtime_1.jsx)(tool_details_1.ToolDetails, { toolId: toolId });
148
146
  }
149
- if (path === 'packages') {
150
- return react_1.default.createElement(package_list_1.PackageList, null);
147
+ if (path === "packages") {
148
+ return (0, jsx_runtime_1.jsx)(package_list_1.PackageList, {});
151
149
  }
152
150
  if (path.match(/^packages\//)) {
153
- const parts = path.split('/');
151
+ const parts = path.split("/");
154
152
  parts.shift();
155
153
  const id = parts[0];
156
- if (id.toLowerCase() === 'newlocal') {
157
- return react_1.default.createElement(package_new_local_1.PackageNewLocal, null);
154
+ if (id.toLowerCase() === "newlocal") {
155
+ return (0, jsx_runtime_1.jsx)(package_new_local_1.PackageNewLocal, {});
158
156
  }
159
- return react_1.default.createElement(package_details_1.PackageDetails, { packageId: id });
157
+ return (0, jsx_runtime_1.jsx)(package_details_1.PackageDetails, { packageId: id });
160
158
  }
161
- if (path === 'variables') {
162
- return react_1.default.createElement(variable_list_1.VariableList, null);
159
+ if (path === "variables") {
160
+ return (0, jsx_runtime_1.jsx)(variable_list_1.VariableList, {});
163
161
  }
164
162
  if (path.match(/^variables\//)) {
165
- const parts = path.split('/');
163
+ const parts = path.split("/");
166
164
  parts.shift();
167
165
  const id = parts[0];
168
- return react_1.default.createElement(variable_details_1.VariableDetails, { persistentVarId: id });
166
+ return (0, jsx_runtime_1.jsx)(variable_details_1.VariableDetails, { persistentVarId: id });
169
167
  }
170
- if (path === 'peer-types') {
171
- return react_1.default.createElement(peer_type_list_1.PeerTypeLists, null);
168
+ if (path === "peer-types") {
169
+ return (0, jsx_runtime_1.jsx)(peer_type_list_1.PeerTypeLists, {});
172
170
  }
173
171
  if (path.match(/^peer-types\//)) {
174
- const parts = path.split('/');
172
+ const parts = path.split("/");
175
173
  parts.shift();
176
174
  const id = parts[0];
177
- return react_1.default.createElement(peer_type_details_1.PeerTypeDetails, { peerTypeId: id });
175
+ return (0, jsx_runtime_1.jsx)(peer_type_details_1.PeerTypeDetails, { peerTypeId: id });
178
176
  }
179
177
  if (path.match(/^threads\//)) {
180
- const parts = path.split('/');
178
+ const parts = path.split("/");
181
179
  parts.shift();
182
180
  const threadId = parts[0];
183
- return react_1.default.createElement(thread_message_list_1.ThreadMessageList, { threadId: threadId });
181
+ return (0, jsx_runtime_1.jsx)(thread_message_list_1.ThreadMessageList, { threadId: threadId });
184
182
  }
185
- throw new Error('Unrecognized route: ' + originalPath);
183
+ throw new Error(`Unrecognized route: ${originalPath}`);
186
184
  }
187
185
  catch (err) {
188
- return (react_1.default.createElement("div", { className: "p-3" },
189
- react_1.default.createElement("a", { href: '#threads' }, "Home"),
190
- react_1.default.createElement("h3", null, "Error loading route"),
191
- react_1.default.createElement("pre", null,
192
- "route: ",
193
- globals.mainContentPath() + '\n',
194
- String(err))));
186
+ return ((0, jsx_runtime_1.jsxs)("div", { className: "p-3", children: [(0, jsx_runtime_1.jsx)("a", { href: "#threads", children: "Home" }), (0, jsx_runtime_1.jsx)("h3", { children: "Error loading route" }), (0, jsx_runtime_1.jsxs)("pre", { children: ["route: ", `${globals.mainContentPath()}\n`, String(err)] })] }));
195
187
  }
196
188
  }
@@ -1,5 +1,5 @@
1
- import React from "react";
2
- import { IDoc } from "@peers-app/peers-sdk";
1
+ import type { IDoc } from "@peers-app/peers-sdk";
2
+ import type React from "react";
3
3
  export interface ISaveButtonProps {
4
4
  doc: IDoc<any>;
5
5
  onClick?: () => void | Promise<void>;
@@ -10,4 +10,4 @@ export interface ISaveButtonProps {
10
10
  } | React.ReactNode)[];
11
11
  noBuiltInActions?: boolean;
12
12
  }
13
- export declare const SaveButton: (props: ISaveButtonProps) => React.JSX.Element;
13
+ export declare const SaveButton: (props: ISaveButtonProps) => import("react/jsx-runtime").JSX.Element;