@dxos/plugin-thread 0.8.4-main.7ace549 → 0.8.4-main.9735255

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 (337) hide show
  1. package/dist/lib/browser/app-graph-builder-7C2QW32W.mjs +188 -0
  2. package/dist/lib/browser/app-graph-builder-7C2QW32W.mjs.map +7 -0
  3. package/dist/lib/browser/blueprint-definition-UQ63QKQG.mjs +17 -0
  4. package/dist/lib/browser/blueprint-definition-UQ63QKQG.mjs.map +7 -0
  5. package/dist/lib/browser/blueprints/index.mjs +8 -0
  6. package/dist/lib/browser/call-manager-4P536YNX.mjs +26 -0
  7. package/dist/lib/browser/call-manager-4P536YNX.mjs.map +7 -0
  8. package/dist/lib/browser/chunk-2FIHSX35.mjs +293 -0
  9. package/dist/lib/browser/chunk-2FIHSX35.mjs.map +7 -0
  10. package/dist/lib/browser/{chunk-KOBXMDCI.mjs → chunk-DLO2G3DM.mjs} +14 -12
  11. package/dist/lib/browser/chunk-DLO2G3DM.mjs.map +7 -0
  12. package/dist/lib/browser/{chunk-ZCW3NSDZ.mjs → chunk-ERK254BS.mjs} +68 -51
  13. package/dist/lib/browser/chunk-ERK254BS.mjs.map +7 -0
  14. package/dist/lib/browser/chunk-YSHXWAL3.mjs +1815 -0
  15. package/dist/lib/browser/chunk-YSHXWAL3.mjs.map +7 -0
  16. package/dist/lib/browser/{blueprint-definition-TQ4JFMZZ.mjs → chunk-ZFLSTQSE.mjs} +39 -34
  17. package/dist/lib/browser/chunk-ZFLSTQSE.mjs.map +7 -0
  18. package/dist/lib/browser/index.mjs +100 -90
  19. package/dist/lib/browser/index.mjs.map +4 -4
  20. package/dist/lib/browser/markdown-QMJLRR6R.mjs +210 -0
  21. package/dist/lib/browser/markdown-QMJLRR6R.mjs.map +7 -0
  22. package/dist/lib/browser/meta.json +1 -1
  23. package/dist/lib/browser/operation-resolver-T63EP5TY.mjs +441 -0
  24. package/dist/lib/browser/operation-resolver-T63EP5TY.mjs.map +7 -0
  25. package/dist/lib/browser/react-root-56MJI77R.mjs +25 -0
  26. package/dist/lib/browser/react-root-56MJI77R.mjs.map +7 -0
  27. package/dist/lib/browser/{react-surface-AUQQSQQC.mjs → react-surface-DMBHQOXJ.mjs} +32 -33
  28. package/dist/lib/browser/react-surface-DMBHQOXJ.mjs.map +7 -0
  29. package/dist/lib/browser/{repair-JFJLEM2O.mjs → repair-6OZ75AUU.mjs} +12 -9
  30. package/dist/lib/browser/repair-6OZ75AUU.mjs.map +7 -0
  31. package/dist/lib/browser/settings-WZMJMML3.mjs +32 -0
  32. package/dist/lib/browser/settings-WZMJMML3.mjs.map +7 -0
  33. package/dist/lib/browser/state-SJR2GL5G.mjs +24 -0
  34. package/dist/lib/browser/state-SJR2GL5G.mjs.map +7 -0
  35. package/dist/lib/browser/types/index.mjs +5 -4
  36. package/dist/lib/node-esm/app-graph-builder-JCSVFRVY.mjs +189 -0
  37. package/dist/lib/node-esm/app-graph-builder-JCSVFRVY.mjs.map +7 -0
  38. package/dist/lib/node-esm/blueprint-definition-MZZXXL37.mjs +18 -0
  39. package/dist/lib/node-esm/blueprint-definition-MZZXXL37.mjs.map +7 -0
  40. package/dist/lib/node-esm/blueprints/index.mjs +9 -0
  41. package/dist/lib/node-esm/call-manager-FMLRR5S5.mjs +27 -0
  42. package/dist/lib/node-esm/call-manager-FMLRR5S5.mjs.map +7 -0
  43. package/dist/lib/node-esm/chunk-7XQLXMX7.mjs +1816 -0
  44. package/dist/lib/node-esm/chunk-7XQLXMX7.mjs.map +7 -0
  45. package/dist/lib/node-esm/{blueprint-definition-TSX5HHW7.mjs → chunk-AQHPP6ZX.mjs} +39 -34
  46. package/dist/lib/node-esm/chunk-AQHPP6ZX.mjs.map +7 -0
  47. package/dist/lib/node-esm/{chunk-PZH2EDU5.mjs → chunk-KRBZBJRI.mjs} +14 -12
  48. package/dist/lib/node-esm/chunk-KRBZBJRI.mjs.map +7 -0
  49. package/dist/lib/node-esm/{chunk-7KZWZS2U.mjs → chunk-QP3KQOPQ.mjs} +68 -51
  50. package/dist/lib/node-esm/chunk-QP3KQOPQ.mjs.map +7 -0
  51. package/dist/lib/node-esm/chunk-WMWUXWAS.mjs +294 -0
  52. package/dist/lib/node-esm/chunk-WMWUXWAS.mjs.map +7 -0
  53. package/dist/lib/node-esm/index.mjs +100 -90
  54. package/dist/lib/node-esm/index.mjs.map +4 -4
  55. package/dist/lib/node-esm/markdown-L6LLQLIN.mjs +211 -0
  56. package/dist/lib/node-esm/markdown-L6LLQLIN.mjs.map +7 -0
  57. package/dist/lib/node-esm/meta.json +1 -1
  58. package/dist/lib/node-esm/operation-resolver-G6GZPBRP.mjs +442 -0
  59. package/dist/lib/node-esm/operation-resolver-G6GZPBRP.mjs.map +7 -0
  60. package/dist/lib/node-esm/react-root-V4W4X5GL.mjs +26 -0
  61. package/dist/lib/node-esm/react-root-V4W4X5GL.mjs.map +7 -0
  62. package/dist/lib/node-esm/{react-surface-AMVESEF4.mjs → react-surface-ELDSTUA3.mjs} +32 -33
  63. package/dist/lib/node-esm/react-surface-ELDSTUA3.mjs.map +7 -0
  64. package/dist/lib/node-esm/{repair-RMLR24YR.mjs → repair-6777EPOM.mjs} +12 -9
  65. package/dist/lib/node-esm/repair-6777EPOM.mjs.map +7 -0
  66. package/dist/lib/node-esm/settings-37CO3SNR.mjs +33 -0
  67. package/dist/lib/node-esm/settings-37CO3SNR.mjs.map +7 -0
  68. package/dist/lib/node-esm/state-5R3TZJQE.mjs +25 -0
  69. package/dist/lib/node-esm/state-5R3TZJQE.mjs.map +7 -0
  70. package/dist/lib/node-esm/types/index.mjs +5 -4
  71. package/dist/types/src/ThreadPlugin.d.ts +2 -1
  72. package/dist/types/src/ThreadPlugin.d.ts.map +1 -1
  73. package/dist/types/src/blueprints/index.d.ts +2 -0
  74. package/dist/types/src/blueprints/index.d.ts.map +1 -0
  75. package/dist/types/src/blueprints/thread-blueprint.d.ts +21 -0
  76. package/dist/types/src/blueprints/thread-blueprint.d.ts.map +1 -0
  77. package/dist/types/src/calls/call-manager.d.ts +40 -30
  78. package/dist/types/src/calls/call-manager.d.ts.map +1 -1
  79. package/dist/types/src/calls/call-swarm-synchronizer.d.ts +2 -2
  80. package/dist/types/src/calls/call-swarm-synchronizer.d.ts.map +1 -1
  81. package/dist/types/src/calls/media-manager.d.ts +1 -1
  82. package/dist/types/src/calls/media-manager.d.ts.map +1 -1
  83. package/dist/types/src/calls/util/calls-service.d.ts +1 -1
  84. package/dist/types/src/calls/util/calls-service.d.ts.map +1 -1
  85. package/dist/types/src/calls/util/task-scheduling.d.ts +2 -2
  86. package/dist/types/src/calls/util/task-scheduling.d.ts.map +1 -1
  87. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +6 -0
  88. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +1 -0
  89. package/dist/types/src/capabilities/app-graph-builder/index.d.ts +3 -0
  90. package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +1 -0
  91. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts +9 -0
  92. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts.map +1 -0
  93. package/dist/types/src/capabilities/blueprint-definition/index.d.ts +3 -0
  94. package/dist/types/src/capabilities/blueprint-definition/index.d.ts.map +1 -0
  95. package/dist/types/src/capabilities/call-manager/call-manager.d.ts +6 -0
  96. package/dist/types/src/capabilities/call-manager/call-manager.d.ts.map +1 -0
  97. package/dist/types/src/capabilities/call-manager/index.d.ts +3 -0
  98. package/dist/types/src/capabilities/call-manager/index.d.ts.map +1 -0
  99. package/dist/types/src/capabilities/index.d.ts +10 -17
  100. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  101. package/dist/types/src/capabilities/markdown/index.d.ts +3 -0
  102. package/dist/types/src/capabilities/markdown/index.d.ts.map +1 -0
  103. package/dist/types/src/capabilities/markdown/markdown.d.ts +5 -0
  104. package/dist/types/src/capabilities/markdown/markdown.d.ts.map +1 -0
  105. package/dist/types/src/capabilities/operation-resolver/index.d.ts +3 -0
  106. package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +1 -0
  107. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +5 -0
  108. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +1 -0
  109. package/dist/types/src/capabilities/react-root/index.d.ts +6 -0
  110. package/dist/types/src/capabilities/react-root/index.d.ts.map +1 -0
  111. package/dist/types/src/capabilities/react-root/react-root.d.ts +9 -0
  112. package/dist/types/src/capabilities/react-root/react-root.d.ts.map +1 -0
  113. package/dist/types/src/capabilities/react-surface/index.d.ts +3 -0
  114. package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -0
  115. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +5 -0
  116. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -0
  117. package/dist/types/src/capabilities/repair/index.d.ts +3 -0
  118. package/dist/types/src/capabilities/repair/index.d.ts.map +1 -0
  119. package/dist/types/src/capabilities/repair/repair.d.ts +6 -0
  120. package/dist/types/src/capabilities/repair/repair.d.ts.map +1 -0
  121. package/dist/types/src/capabilities/settings/index.d.ts +3 -0
  122. package/dist/types/src/capabilities/settings/index.d.ts.map +1 -0
  123. package/dist/types/src/capabilities/settings/settings.d.ts +5 -0
  124. package/dist/types/src/capabilities/settings/settings.d.ts.map +1 -0
  125. package/dist/types/src/capabilities/state/index.d.ts +3 -0
  126. package/dist/types/src/capabilities/state/index.d.ts.map +1 -0
  127. package/dist/types/src/capabilities/state/state.d.ts +7 -0
  128. package/dist/types/src/capabilities/state/state.d.ts.map +1 -0
  129. package/dist/types/src/components/Call/Call.d.ts.map +1 -1
  130. package/dist/types/src/components/Call/Toolbar.d.ts.map +1 -1
  131. package/dist/types/src/components/CallSidebar.d.ts.map +1 -1
  132. package/dist/types/src/components/ChannelContainer.d.ts +4 -5
  133. package/dist/types/src/components/ChannelContainer.d.ts.map +1 -1
  134. package/dist/types/src/components/ChannelContainer.stories.d.ts +1 -1
  135. package/dist/types/src/components/ChannelContainer.stories.d.ts.map +1 -1
  136. package/dist/types/src/components/ChatContainer.d.ts +1 -1
  137. package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
  138. package/dist/types/src/components/Comments.stories.d.ts.map +1 -1
  139. package/dist/types/src/components/CommentsThreadContainer.d.ts.map +1 -1
  140. package/dist/types/src/components/Lobby/Lobby.d.ts.map +1 -1
  141. package/dist/types/src/components/Media/VideoObject.d.ts +1 -1
  142. package/dist/types/src/components/Media/VideoObject.stories.d.ts +1 -1
  143. package/dist/types/src/components/MessageContainer.d.ts +3 -4
  144. package/dist/types/src/components/MessageContainer.d.ts.map +1 -1
  145. package/dist/types/src/components/Participant/Participant.d.ts.map +1 -1
  146. package/dist/types/src/components/ThreadCompanion.d.ts.map +1 -1
  147. package/dist/types/src/components/ThreadSettings.d.ts +4 -2
  148. package/dist/types/src/components/ThreadSettings.d.ts.map +1 -1
  149. package/dist/types/src/components/index.d.ts +2 -2
  150. package/dist/types/src/components/index.d.ts.map +1 -1
  151. package/dist/types/src/extensions/threads.d.ts +7 -2
  152. package/dist/types/src/extensions/threads.d.ts.map +1 -1
  153. package/dist/types/src/functions/create-proposals.d.ts.map +1 -1
  154. package/dist/types/src/hooks/analytics.d.ts +1 -2
  155. package/dist/types/src/hooks/analytics.d.ts.map +1 -1
  156. package/dist/types/src/index.d.ts +1 -1
  157. package/dist/types/src/index.d.ts.map +1 -1
  158. package/dist/types/src/meta.d.ts +2 -2
  159. package/dist/types/src/meta.d.ts.map +1 -1
  160. package/dist/types/src/testing/stories.d.ts +2 -1
  161. package/dist/types/src/testing/stories.d.ts.map +1 -1
  162. package/dist/types/src/types/Channel.d.ts +691 -12
  163. package/dist/types/src/types/Channel.d.ts.map +1 -1
  164. package/dist/types/src/types/capabilities.d.ts +23 -0
  165. package/dist/types/src/types/capabilities.d.ts.map +1 -0
  166. package/dist/types/src/types/index.d.ts +1 -0
  167. package/dist/types/src/types/index.d.ts.map +1 -1
  168. package/dist/types/src/types/types.d.ts +3182 -295
  169. package/dist/types/src/types/types.d.ts.map +1 -1
  170. package/dist/types/tsconfig.tsbuildinfo +1 -1
  171. package/package.json +86 -69
  172. package/src/ThreadPlugin.tsx +50 -80
  173. package/src/blueprints/index.ts +5 -0
  174. package/src/blueprints/thread-blueprint.ts +32 -0
  175. package/src/calls/call-manager.ts +76 -52
  176. package/src/calls/call-swarm-synchronizer.ts +2 -2
  177. package/src/calls/media-manager.ts +1 -1
  178. package/src/calls/util/calls-service.ts +1 -1
  179. package/src/calls/util/task-scheduling.ts +4 -4
  180. package/src/capabilities/app-graph-builder/app-graph-builder.ts +201 -0
  181. package/src/capabilities/app-graph-builder/index.ts +7 -0
  182. package/src/capabilities/blueprint-definition/blueprint-definition.ts +23 -0
  183. package/src/capabilities/blueprint-definition/index.ts +7 -0
  184. package/src/capabilities/call-manager/call-manager.ts +26 -0
  185. package/src/capabilities/call-manager/index.ts +7 -0
  186. package/src/capabilities/index.ts +10 -14
  187. package/src/capabilities/markdown/index.ts +7 -0
  188. package/src/capabilities/markdown/markdown.ts +83 -0
  189. package/src/capabilities/operation-resolver/index.ts +7 -0
  190. package/src/capabilities/operation-resolver/operation-resolver.ts +400 -0
  191. package/src/capabilities/react-root/index.ts +7 -0
  192. package/src/capabilities/react-root/react-root.tsx +20 -0
  193. package/src/capabilities/react-surface/index.ts +7 -0
  194. package/src/capabilities/react-surface/react-surface.tsx +97 -0
  195. package/src/capabilities/repair/index.ts +7 -0
  196. package/src/capabilities/{repair.ts → repair/repair.ts} +21 -10
  197. package/src/capabilities/settings/index.ts +7 -0
  198. package/src/capabilities/settings/settings.ts +33 -0
  199. package/src/capabilities/state/index.ts +7 -0
  200. package/src/capabilities/state/state.ts +22 -0
  201. package/src/components/Call/Call.tsx +7 -3
  202. package/src/components/Call/Toolbar.tsx +28 -20
  203. package/src/components/CallSidebar.tsx +4 -2
  204. package/src/components/ChannelContainer.stories.tsx +10 -8
  205. package/src/components/ChannelContainer.tsx +18 -16
  206. package/src/components/Chat.stories.tsx +6 -6
  207. package/src/components/ChatContainer.tsx +19 -17
  208. package/src/components/Comments.stories.tsx +21 -18
  209. package/src/components/CommentsThreadContainer.tsx +9 -9
  210. package/src/components/Lobby/Lobby.tsx +8 -6
  211. package/src/components/Media/AudioStream.tsx +2 -2
  212. package/src/components/Media/VideoObject.tsx +1 -1
  213. package/src/components/MessageContainer.tsx +53 -24
  214. package/src/components/Participant/Participant.tsx +31 -18
  215. package/src/components/ResponsiveGrid/ResponsiveContainer.tsx +1 -1
  216. package/src/components/ResponsiveGrid/ResponsiveGrid.tsx +1 -1
  217. package/src/components/ResponsiveGrid/ResponsiveGridItem.tsx +1 -1
  218. package/src/components/ThreadCompanion.tsx +69 -64
  219. package/src/components/ThreadSettings.tsx +6 -1
  220. package/src/components/command-extension.ts +2 -2
  221. package/src/components/index.ts +2 -5
  222. package/src/extensions/threads.ts +75 -41
  223. package/src/functions/create-proposals.ts +5 -4
  224. package/src/hooks/analytics.ts +23 -20
  225. package/src/index.ts +1 -1
  226. package/src/meta.ts +2 -2
  227. package/src/testing/stories.ts +15 -11
  228. package/src/types/Channel.ts +10 -6
  229. package/src/types/capabilities.ts +34 -0
  230. package/src/types/index.ts +1 -0
  231. package/src/types/types.ts +160 -73
  232. package/dist/lib/browser/ChannelContainer-L7MKV7DS.mjs +0 -17
  233. package/dist/lib/browser/ChatContainer-KPY4BAUE.mjs +0 -16
  234. package/dist/lib/browser/app-graph-builder-TWJ2UCOZ.mjs +0 -171
  235. package/dist/lib/browser/app-graph-builder-TWJ2UCOZ.mjs.map +0 -7
  236. package/dist/lib/browser/blueprint-definition-TQ4JFMZZ.mjs.map +0 -7
  237. package/dist/lib/browser/call-manager-4YFT4XA6.mjs +0 -25
  238. package/dist/lib/browser/call-manager-4YFT4XA6.mjs.map +0 -7
  239. package/dist/lib/browser/chunk-ALZKJOZK.mjs +0 -989
  240. package/dist/lib/browser/chunk-ALZKJOZK.mjs.map +0 -7
  241. package/dist/lib/browser/chunk-ANTFU4JB.mjs +0 -25
  242. package/dist/lib/browser/chunk-ANTFU4JB.mjs.map +0 -7
  243. package/dist/lib/browser/chunk-CFC7LEPD.mjs +0 -18
  244. package/dist/lib/browser/chunk-CFC7LEPD.mjs.map +0 -7
  245. package/dist/lib/browser/chunk-JDJPMI7V.mjs +0 -143
  246. package/dist/lib/browser/chunk-JDJPMI7V.mjs.map +0 -7
  247. package/dist/lib/browser/chunk-KOBXMDCI.mjs.map +0 -7
  248. package/dist/lib/browser/chunk-NPT5S6N4.mjs +0 -611
  249. package/dist/lib/browser/chunk-NPT5S6N4.mjs.map +0 -7
  250. package/dist/lib/browser/chunk-QM34EZQK.mjs +0 -20
  251. package/dist/lib/browser/chunk-QM34EZQK.mjs.map +0 -7
  252. package/dist/lib/browser/chunk-TLOOZTRD.mjs +0 -377
  253. package/dist/lib/browser/chunk-TLOOZTRD.mjs.map +0 -7
  254. package/dist/lib/browser/chunk-ZCW3NSDZ.mjs.map +0 -7
  255. package/dist/lib/browser/intent-resolver-G33FT3NO.mjs +0 -355
  256. package/dist/lib/browser/intent-resolver-G33FT3NO.mjs.map +0 -7
  257. package/dist/lib/browser/markdown-WFZFYJBQ.mjs +0 -172
  258. package/dist/lib/browser/markdown-WFZFYJBQ.mjs.map +0 -7
  259. package/dist/lib/browser/react-root-ED7PHA44.mjs +0 -29
  260. package/dist/lib/browser/react-root-ED7PHA44.mjs.map +0 -7
  261. package/dist/lib/browser/react-surface-AUQQSQQC.mjs.map +0 -7
  262. package/dist/lib/browser/repair-JFJLEM2O.mjs.map +0 -7
  263. package/dist/lib/browser/settings-E6IOLK46.mjs +0 -23
  264. package/dist/lib/browser/settings-E6IOLK46.mjs.map +0 -7
  265. package/dist/lib/browser/state-UYPLBGZJ.mjs +0 -35
  266. package/dist/lib/browser/state-UYPLBGZJ.mjs.map +0 -7
  267. package/dist/lib/node-esm/ChannelContainer-FYONOOZ6.mjs +0 -18
  268. package/dist/lib/node-esm/ChannelContainer-FYONOOZ6.mjs.map +0 -7
  269. package/dist/lib/node-esm/ChatContainer-TLQG23K7.mjs +0 -17
  270. package/dist/lib/node-esm/ChatContainer-TLQG23K7.mjs.map +0 -7
  271. package/dist/lib/node-esm/app-graph-builder-VD6I2V5H.mjs +0 -172
  272. package/dist/lib/node-esm/app-graph-builder-VD6I2V5H.mjs.map +0 -7
  273. package/dist/lib/node-esm/blueprint-definition-TSX5HHW7.mjs.map +0 -7
  274. package/dist/lib/node-esm/call-manager-UMUXEYH5.mjs +0 -26
  275. package/dist/lib/node-esm/call-manager-UMUXEYH5.mjs.map +0 -7
  276. package/dist/lib/node-esm/chunk-2AEIN5MI.mjs +0 -22
  277. package/dist/lib/node-esm/chunk-2AEIN5MI.mjs.map +0 -7
  278. package/dist/lib/node-esm/chunk-7KZWZS2U.mjs.map +0 -7
  279. package/dist/lib/node-esm/chunk-AB42KYF3.mjs +0 -990
  280. package/dist/lib/node-esm/chunk-AB42KYF3.mjs.map +0 -7
  281. package/dist/lib/node-esm/chunk-ATNY37UV.mjs +0 -27
  282. package/dist/lib/node-esm/chunk-ATNY37UV.mjs.map +0 -7
  283. package/dist/lib/node-esm/chunk-E5HNHFYH.mjs +0 -378
  284. package/dist/lib/node-esm/chunk-E5HNHFYH.mjs.map +0 -7
  285. package/dist/lib/node-esm/chunk-FF3QVPY4.mjs +0 -612
  286. package/dist/lib/node-esm/chunk-FF3QVPY4.mjs.map +0 -7
  287. package/dist/lib/node-esm/chunk-P2M364TO.mjs +0 -144
  288. package/dist/lib/node-esm/chunk-P2M364TO.mjs.map +0 -7
  289. package/dist/lib/node-esm/chunk-PZH2EDU5.mjs.map +0 -7
  290. package/dist/lib/node-esm/chunk-RT6NRL2I.mjs +0 -19
  291. package/dist/lib/node-esm/chunk-RT6NRL2I.mjs.map +0 -7
  292. package/dist/lib/node-esm/intent-resolver-4PX3WXQG.mjs +0 -356
  293. package/dist/lib/node-esm/intent-resolver-4PX3WXQG.mjs.map +0 -7
  294. package/dist/lib/node-esm/markdown-CSR5MAPZ.mjs +0 -173
  295. package/dist/lib/node-esm/markdown-CSR5MAPZ.mjs.map +0 -7
  296. package/dist/lib/node-esm/react-root-DZN324JA.mjs +0 -30
  297. package/dist/lib/node-esm/react-root-DZN324JA.mjs.map +0 -7
  298. package/dist/lib/node-esm/react-surface-AMVESEF4.mjs.map +0 -7
  299. package/dist/lib/node-esm/repair-RMLR24YR.mjs.map +0 -7
  300. package/dist/lib/node-esm/settings-RGZHWDSO.mjs +0 -24
  301. package/dist/lib/node-esm/settings-RGZHWDSO.mjs.map +0 -7
  302. package/dist/lib/node-esm/state-XNWOLBNE.mjs +0 -36
  303. package/dist/lib/node-esm/state-XNWOLBNE.mjs.map +0 -7
  304. package/dist/types/src/capabilities/app-graph-builder.d.ts +0 -4
  305. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +0 -1
  306. package/dist/types/src/capabilities/blueprint-definition.d.ts +0 -5
  307. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +0 -1
  308. package/dist/types/src/capabilities/call-manager.d.ts +0 -5
  309. package/dist/types/src/capabilities/call-manager.d.ts.map +0 -1
  310. package/dist/types/src/capabilities/capabilities.d.ts +0 -27
  311. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  312. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  313. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  314. package/dist/types/src/capabilities/markdown.d.ts +0 -4
  315. package/dist/types/src/capabilities/markdown.d.ts.map +0 -1
  316. package/dist/types/src/capabilities/react-root.d.ts +0 -7
  317. package/dist/types/src/capabilities/react-root.d.ts.map +0 -1
  318. package/dist/types/src/capabilities/react-surface.d.ts +0 -4
  319. package/dist/types/src/capabilities/react-surface.d.ts.map +0 -1
  320. package/dist/types/src/capabilities/repair.d.ts +0 -4
  321. package/dist/types/src/capabilities/repair.d.ts.map +0 -1
  322. package/dist/types/src/capabilities/settings.d.ts +0 -4
  323. package/dist/types/src/capabilities/settings.d.ts.map +0 -1
  324. package/dist/types/src/capabilities/state.d.ts +0 -7
  325. package/dist/types/src/capabilities/state.d.ts.map +0 -1
  326. package/src/capabilities/app-graph-builder.ts +0 -194
  327. package/src/capabilities/blueprint-definition.ts +0 -38
  328. package/src/capabilities/call-manager.ts +0 -20
  329. package/src/capabilities/capabilities.ts +0 -33
  330. package/src/capabilities/intent-resolver.ts +0 -311
  331. package/src/capabilities/markdown.ts +0 -71
  332. package/src/capabilities/react-root.tsx +0 -17
  333. package/src/capabilities/react-surface.tsx +0 -91
  334. package/src/capabilities/settings.ts +0 -19
  335. package/src/capabilities/state.ts +0 -26
  336. /package/dist/lib/browser/{ChannelContainer-L7MKV7DS.mjs.map → blueprints/index.mjs.map} +0 -0
  337. /package/dist/lib/{browser/ChatContainer-KPY4BAUE.mjs.map → node-esm/blueprints/index.mjs.map} +0 -0
@@ -3,19 +3,21 @@
3
3
  //
4
4
 
5
5
  import { EditorView } from '@codemirror/view';
6
- import type * as Schema from 'effect/Schema';
7
6
  import React, { forwardRef, useCallback, useEffect, useRef, useState } from 'react';
8
7
 
9
8
  import { Surface } from '@dxos/app-framework/react';
10
9
  import { type Obj, Ref } from '@dxos/echo';
10
+ import { useObject } from '@dxos/echo-react';
11
11
  import { PublicKey } from '@dxos/react-client';
12
12
  import { type SpaceMember } from '@dxos/react-client/echo';
13
13
  import { type Identity, useIdentity } from '@dxos/react-client/halo';
14
14
  import { IconButton, useOnTransition, useThemeContext, useTranslation } from '@dxos/react-ui';
15
- import { createBasicExtensions, createThemeExtensions, useTextEditor } from '@dxos/react-ui-editor';
16
- import { hoverableControlItem, hoverableControls, hoverableFocusedWithinControls, mx } from '@dxos/react-ui-theme';
15
+ import { useTextEditor } from '@dxos/react-ui-editor';
16
+ import { Card } from '@dxos/react-ui-mosaic';
17
17
  import { MessageHeading, MessageRoot } from '@dxos/react-ui-thread';
18
18
  import { type ContentBlock, type Message } from '@dxos/types';
19
+ import { createBasicExtensions, createThemeExtensions } from '@dxos/ui-editor';
20
+ import { hoverableControlItem, hoverableControls, hoverableFocusedWithinControls, mx } from '@dxos/ui-theme';
19
21
 
20
22
  import { useOnEditAnalytics } from '../hooks';
21
23
  import { meta } from '../meta';
@@ -27,8 +29,7 @@ export const buttonGroupClassNames = 'flex flex-row items-center gap-0.5 pie-2';
27
29
  export const buttonClassNames = '!p-1 transition-opacity';
28
30
 
29
31
  export type MessageContainerProps = {
30
- // TODO(wittjosiah): Find a simpler way to define this type.
31
- message: Obj.Obj<Schema.Schema.Type<typeof Message.Message>>;
32
+ message: Obj.Obj<Message.Message> | Ref.Ref<Obj.Obj<Message.Message>>;
32
33
  members: SpaceMember[];
33
34
  editable?: boolean;
34
35
  onDelete?: (id: string) => void;
@@ -36,30 +37,55 @@ export type MessageContainerProps = {
36
37
  };
37
38
 
38
39
  export const MessageContainer = ({
39
- message,
40
+ message: messageOrRef,
40
41
  members,
41
42
  editable = false,
42
43
  onDelete,
43
44
  onAcceptProposal,
44
45
  }: MessageContainerProps) => {
45
46
  const { t } = useTranslation(meta.id);
47
+ const [message, updateMessage] = useObject(messageOrRef);
48
+ const identity = useIdentity();
49
+ const [editing, setEditing] = useState(false);
50
+
51
+ const textBlockIndex = message?.blocks.findIndex((block) => block._tag === 'text') ?? -1;
52
+
53
+ const handleEdit = useCallback(() => setEditing((editing) => !editing), []);
54
+ const handleDelete = useCallback(() => message && onDelete?.(message.id), [message, onDelete]);
55
+ const handleAcceptProposal = useCallback(
56
+ () => message && onAcceptProposal?.(message.id),
57
+ [message, onAcceptProposal],
58
+ );
59
+ const handleTextBlockChange = useCallback(
60
+ (newText: string) => {
61
+ updateMessage((m) => {
62
+ const targetBlock = m.blocks[textBlockIndex];
63
+ if (targetBlock && targetBlock._tag === 'text') {
64
+ targetBlock.text = newText;
65
+ }
66
+ });
67
+ },
68
+ [updateMessage, textBlockIndex],
69
+ );
70
+
71
+ const textBlock =
72
+ message && textBlockIndex !== -1 ? (message.blocks[textBlockIndex] as ContentBlock.Text) : undefined;
73
+ useOnEditAnalytics(message, textBlock, !!editing);
74
+
75
+ if (!message) {
76
+ return null;
77
+ }
78
+
46
79
  const senderIdentity = members.find(
47
80
  (member) =>
48
81
  (message.sender.identityDid && member.identity.did === message.sender.identityDid) ||
49
82
  (message.sender.identityKey && PublicKey.equals(member.identity.identityKey, message.sender.identityKey)),
50
83
  )?.identity;
51
84
  const messageMetadata = getMessageMetadata(message.id, senderIdentity);
52
- const userIsAuthor = useIdentity()?.did === messageMetadata.authorId;
53
- const [editing, setEditing] = useState(false);
54
- const handleEdit = useCallback(() => setEditing((editing) => !editing), []);
55
- const handleDelete = useCallback(() => onDelete?.(message.id), [message, onDelete]);
56
- const handleAcceptProposal = useCallback(() => onAcceptProposal?.(message.id), [message, onAcceptProposal]);
57
- const textBlock = message.blocks.find((block) => block._tag === 'text');
85
+ const userIsAuthor = identity?.did === messageMetadata.authorId;
58
86
  const proposalBlock = message.blocks.find((block) => block._tag === 'proposal');
59
87
  const references = message.blocks.filter((block) => block._tag === 'reference').map((block) => block.reference);
60
88
 
61
- useOnEditAnalytics(message, textBlock, !!editing);
62
-
63
89
  return (
64
90
  <MessageRoot {...messageMetadata} classNames={[hoverableControls, hoverableFocusedWithinControls]}>
65
91
  <MessageHeading authorName={messageMetadata.authorName} timestamp={messageMetadata.timestamp}>
@@ -100,16 +126,18 @@ export const MessageContainer = ({
100
126
  )}
101
127
  </div>
102
128
  </MessageHeading>
103
- {textBlock && <TextboxBlock block={textBlock} isAuthor={userIsAuthor} editing={editing} />}
129
+ {textBlock && (
130
+ <TextboxBlock block={textBlock} isAuthor={userIsAuthor} editing={editing} onSave={handleTextBlockChange} />
131
+ )}
104
132
  {proposalBlock && <ProposalBlock block={proposalBlock} />}
105
133
  {Ref.Array.targets(references).map((reference, index) => (
106
- <MessagePart key={index} part={reference as Obj.Any} />
134
+ <MessagePart key={index} part={reference as Obj.Unknown} />
107
135
  ))}
108
136
  </MessageRoot>
109
137
  );
110
138
  };
111
139
 
112
- const MessagePart = ({ part }: { part: Obj.Any }) => {
140
+ const MessagePart = ({ part }: { part: Obj.Unknown }) => {
113
141
  return <MessageBlockObjectTile subject={part} />;
114
142
  };
115
143
 
@@ -117,11 +145,13 @@ const TextboxBlock = ({
117
145
  block,
118
146
  isAuthor,
119
147
  editing,
148
+ onSave,
120
149
  }: {
121
150
  block: ContentBlock.Text;
122
151
  editing?: boolean;
123
152
  isAuthor?: boolean;
124
153
  identity?: Identity;
154
+ onSave?: (newText: string) => void;
125
155
  }) => {
126
156
  const { themeMode } = useThemeContext();
127
157
  const inMemoryContentRef = useRef(block.text);
@@ -131,8 +161,8 @@ const TextboxBlock = ({
131
161
  }, []);
132
162
 
133
163
  const saveDocumentChange = useCallback(() => {
134
- block.text = inMemoryContentRef.current;
135
- }, [block]);
164
+ onSave?.(inMemoryContentRef.current);
165
+ }, [onSave]);
136
166
 
137
167
  useOnTransition(editing, true, false, saveDocumentChange);
138
168
 
@@ -168,7 +198,7 @@ const ProposalBlock = ({ block }: { block: ContentBlock.Proposal }) => {
168
198
  );
169
199
  };
170
200
 
171
- const MessageBlockObjectTile = forwardRef<HTMLDivElement, { subject: Obj.Any }>(({ subject }, forwardedRef) => {
201
+ const MessageBlockObjectTile = forwardRef<HTMLDivElement, { subject: Obj.Unknown }>(({ subject }, forwardedRef) => {
172
202
  // TODO(burdon): Use annotation to get title.
173
203
  let title = (subject as any).name ?? (subject as any).title ?? (subject as any).type ?? 'Object';
174
204
  if (typeof title !== 'string') {
@@ -176,12 +206,11 @@ const MessageBlockObjectTile = forwardRef<HTMLDivElement, { subject: Obj.Any }>(
176
206
  }
177
207
 
178
208
  return (
179
- <div
180
- role='group'
209
+ <Card.Root
181
210
  className={mx('grid col-span-3 plb-1 pr-4', hoverableControls, hoverableFocusedWithinControls)}
182
211
  ref={forwardedRef}
183
212
  >
184
- <Surface role='card' limit={1} data={{ subject }} fallback={title} />
185
- </div>
213
+ <Surface role='card-content' limit={1} data={{ subject }} fallback={title} />
214
+ </Card.Root>
186
215
  );
187
216
  });
@@ -2,12 +2,13 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
+ import { useAtomValue } from '@effect-atom/atom-react';
5
6
  import React, { memo, useMemo } from 'react';
6
7
 
7
8
  import { useCapability } from '@dxos/app-framework/react';
8
9
 
9
10
  import { type EncodedTrackName, type UserState } from '../../calls';
10
- import { ThreadCapabilities } from '../../capabilities';
11
+ import { ThreadCapabilities } from '../../types';
11
12
  import { VideoObject } from '../Media';
12
13
  import { ResponsiveGridItem, type ResponsiveGridItemProps } from '../ResponsiveGrid';
13
14
 
@@ -15,27 +16,39 @@ export const SCREENSHARE_SUFFIX = '_screenshare';
15
16
 
16
17
  export const Participant = memo(({ item: user, debug, ...props }: ResponsiveGridItemProps<UserState>) => {
17
18
  const call = useCapability(ThreadCapabilities.CallManager);
18
- const isSelf: boolean = call.self.id !== undefined && user.id !== undefined && user.id.startsWith(call.self.id);
19
+ const self = useAtomValue(call.selfAtom);
20
+ const media = useAtomValue(call.mediaAtom);
21
+ const isSelf: boolean = self.id !== undefined && user.id !== undefined && user.id.startsWith(self.id);
19
22
  const isScreenshare = user.id?.endsWith(SCREENSHARE_SUFFIX);
20
23
 
21
- const pulledVideoStream =
22
- !isSelf && isScreenshare && user.tracks?.screenshareEnabled
23
- ? call.getVideoStream(user.tracks?.screenshare as EncodedTrackName)
24
- : !isSelf && !isScreenshare && user.tracks?.videoEnabled
25
- ? call.getVideoStream(user.tracks?.video as EncodedTrackName)
26
- : undefined;
24
+ // Get pulled video stream for non-self users.
25
+ const pulledVideoStream = useMemo<MediaStream | undefined>(() => {
26
+ if (isSelf) {
27
+ return undefined;
28
+ }
29
+ const trackName =
30
+ isScreenshare && user.tracks?.screenshareEnabled
31
+ ? (user.tracks?.screenshare as EncodedTrackName)
32
+ : !isScreenshare && user.tracks?.videoEnabled
33
+ ? (user.tracks?.video as EncodedTrackName)
34
+ : undefined;
35
+ return trackName ? media.pulledVideoStreams[trackName]?.stream : undefined;
36
+ }, [
37
+ isSelf,
38
+ isScreenshare,
39
+ media.pulledVideoStreams,
40
+ user.tracks?.screenshare,
41
+ user.tracks?.video,
42
+ user.tracks?.screenshareEnabled,
43
+ user.tracks?.videoEnabled,
44
+ ]);
27
45
 
28
46
  const videoStream = useMemo<MediaStream | undefined>(() => {
29
47
  if (isSelf) {
30
- if (isScreenshare) {
31
- return call.media.screenshareVideoStream;
32
- } else if (!isScreenshare) {
33
- return call.media.videoStream;
34
- }
35
- } else if (!isSelf) {
36
- return pulledVideoStream;
48
+ return isScreenshare ? media.screenshareVideoStream : media.videoStream;
37
49
  }
38
- }, [isSelf, isScreenshare, call.media.videoStream, call.media.screenshareVideoStream, pulledVideoStream]);
50
+ return pulledVideoStream;
51
+ }, [isSelf, isScreenshare, media.videoStream, media.screenshareVideoStream, pulledVideoStream]);
39
52
 
40
53
  return (
41
54
  <ResponsiveGridItem
@@ -43,8 +56,8 @@ export const Participant = memo(({ item: user, debug, ...props }: ResponsiveGrid
43
56
  item={user}
44
57
  name={user.name}
45
58
  self={isSelf}
46
- screenshare={!!call.media.screenshareVideoStream}
47
- video={call.media.videoEnabled}
59
+ screenshare={!!media.screenshareVideoStream}
60
+ video={media.videoEnabled}
48
61
  mute={user ? !user.tracks?.audioEnabled : false}
49
62
  wave={user.raisedHand}
50
63
  speaking={user.speaking}
@@ -4,7 +4,7 @@
4
4
 
5
5
  import React, { type PropsWithChildren } from 'react';
6
6
 
7
- import { mx } from '@dxos/react-ui-theme';
7
+ import { mx } from '@dxos/ui-theme';
8
8
 
9
9
  /**
10
10
  * A container component that maintains the child's aspect ratio while centering its content.
@@ -8,7 +8,7 @@ import { useResizeDetector } from 'react-resize-detector';
8
8
  import { invariant } from '@dxos/invariant';
9
9
  import { type ThemedClassName } from '@dxos/react-ui';
10
10
  import { type Size } from '@dxos/react-ui-dnd';
11
- import { mx } from '@dxos/react-ui-theme';
11
+ import { mx } from '@dxos/ui-theme';
12
12
 
13
13
  import { ResponsiveContainer } from './ResponsiveContainer';
14
14
  import { type ResponsiveGridItemProps } from './ResponsiveGridItem';
@@ -6,7 +6,7 @@ import React, { type CSSProperties, type PropsWithChildren, useEffect, useState
6
6
 
7
7
  import { Icon, IconButton, type ThemedClassName, useTranslation } from '@dxos/react-ui';
8
8
  import { Waveform } from '@dxos/react-ui-sfx';
9
- import { groupHoverControlItemWithTransition, mx } from '@dxos/react-ui-theme';
9
+ import { groupHoverControlItemWithTransition, mx } from '@dxos/ui-theme';
10
10
 
11
11
  import { meta } from '../../meta';
12
12
 
@@ -2,50 +2,68 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
+ import { useAtomValue } from '@effect-atom/atom-react';
5
6
  import React, { useCallback, useMemo } from 'react';
6
7
 
7
- import { Capabilities, CollaborationActions, LayoutAction, createIntent } from '@dxos/app-framework';
8
- import { useCapabilities, useCapability, useIntentDispatcher } from '@dxos/app-framework/react';
8
+ import { Common } from '@dxos/app-framework';
9
+ import { useCapabilities, useCapability, useOperationInvoker } from '@dxos/app-framework/react';
9
10
  import { Filter, Obj, Query, Relation } from '@dxos/echo';
10
- import { Ref, getSpace, useQuery } from '@dxos/react-client/echo';
11
+ import { Ref, useQuery } from '@dxos/react-client/echo';
11
12
  import { useIdentity } from '@dxos/react-client/halo';
12
13
  import { useTranslation } from '@dxos/react-ui';
13
14
  import { useAttended } from '@dxos/react-ui-attention';
14
- import { StackItem } from '@dxos/react-ui-stack';
15
+ import { Layout } from '@dxos/react-ui-mosaic';
15
16
  import { Tabs } from '@dxos/react-ui-tabs';
16
- import { mx } from '@dxos/react-ui-theme';
17
17
  import { AnchoredTo, Thread } from '@dxos/types';
18
+ import { mx } from '@dxos/ui-theme';
18
19
 
19
- import { ThreadCapabilities } from '../capabilities';
20
20
  import { CommentsContainer, type CommentsContainerProps } from '../components';
21
21
  import { meta } from '../meta';
22
- import { ThreadAction } from '../types';
22
+ import { ThreadCapabilities, ThreadOperation, type ViewState } from '../types';
23
+
24
+ const initialViewState: ViewState = { showResolvedThreads: false };
23
25
 
24
26
  export const ThreadCompanion = ({ subject }: { subject: any }) => {
25
27
  const { t } = useTranslation(meta.id);
26
- const { dispatchPromise: dispatch } = useIntentDispatcher();
28
+ const { invokePromise } = useOperationInvoker();
27
29
  const identity = useIdentity();
28
30
  const subjectId = Obj.getDXN(subject).toString();
31
+ const registry = useCapability(Common.Capability.AtomRegistry);
29
32
 
30
- const { state, getViewState } = useCapability(ThreadCapabilities.MutableState);
33
+ const stateAtom = useCapability(ThreadCapabilities.State);
34
+ const viewStoreAtom = useCapability(ThreadCapabilities.ViewState);
35
+ const state = useAtomValue(stateAtom);
36
+ const viewStore = useAtomValue(viewStoreAtom);
31
37
  const drafts = state.drafts[subjectId];
32
- const viewState = useMemo(() => getViewState(subjectId), [getViewState, subjectId]);
38
+
39
+ // Get or initialize view state for this subject.
40
+ const viewState = useMemo(() => {
41
+ if (!viewStore[subjectId]) {
42
+ registry.set(viewStoreAtom, { ...viewStore, [subjectId]: { ...initialViewState } });
43
+ return initialViewState;
44
+ }
45
+ return viewStore[subjectId];
46
+ }, [viewStore, subjectId, registry, viewStoreAtom]);
33
47
  const { showResolvedThreads } = viewState;
48
+
34
49
  const onChangeViewState = useCallback(
35
50
  (nextValue: string) => {
36
- viewState.showResolvedThreads = nextValue === 'all';
51
+ registry.set(viewStoreAtom, {
52
+ ...registry.get(viewStoreAtom),
53
+ [subjectId]: { ...registry.get(viewStoreAtom)[subjectId], showResolvedThreads: nextValue === 'all' },
54
+ });
37
55
  },
38
- [viewState],
56
+ [registry, viewStoreAtom, subjectId],
39
57
  );
40
58
 
41
- const anchorSorts = useCapabilities(Capabilities.AnchorSort);
59
+ const anchorSorts = useCapabilities(Common.Capability.AnchorSort);
42
60
  const sort = useMemo(
43
61
  () => anchorSorts.find(({ key }) => key === Obj.getTypename(subject))?.sort,
44
62
  [anchorSorts, subject],
45
63
  );
46
64
 
47
- const space = getSpace(subject);
48
- const objectsAnchoredTo = useQuery(space, Query.select(Filter.ids(subject.id)).targetOf(AnchoredTo.AnchoredTo));
65
+ const db = Obj.getDatabase(subject);
66
+ const objectsAnchoredTo = useQuery(db, Query.select(Filter.id(subject.id)).targetOf(AnchoredTo.AnchoredTo));
49
67
  const anchors = objectsAnchoredTo
50
68
  .toSorted((a, b) => sort?.(a, b) ?? 0)
51
69
  .filter((anchor) => Obj.instanceOf(Thread.Thread, Relation.getSource(anchor)))
@@ -59,68 +77,57 @@ export const ThreadCompanion = ({ subject }: { subject: any }) => {
59
77
  const threadId = Obj.getDXN(thread).toString();
60
78
 
61
79
  if (state.current !== threadId) {
62
- state.current = threadId;
80
+ registry.set(stateAtom, { ...registry.get(stateAtom), current: threadId });
63
81
 
64
82
  // TODO(wittjosiah): Should this be a thread-specific intent?
65
83
  // The layout doesn't know about threads and this working depends on other plugins conditionally handling it.
66
84
  // This may be overloading this intent or highjacking its intended purpose.
67
- void dispatch(
68
- createIntent(LayoutAction.ScrollIntoView, {
69
- part: 'current',
70
- subject: Obj.getDXN(subject).toString(),
71
- options: {
72
- cursor: anchor.anchor,
73
- ref: threadId,
74
- },
75
- }),
76
- );
85
+ void invokePromise(Common.LayoutOperation.ScrollIntoView, {
86
+ subject: Obj.getDXN(subject).toString(),
87
+ cursor: anchor.anchor,
88
+ ref: threadId,
89
+ });
77
90
  }
78
91
  },
79
- [state.current, dispatch, subject],
92
+ [state.current, invokePromise, subject, registry, stateAtom],
80
93
  );
81
94
 
82
95
  const handleComment = useCallback(
83
96
  async (anchor: AnchoredTo.AnchoredTo, text: string) => {
84
- await dispatch(
85
- createIntent(ThreadAction.AddMessage, {
86
- anchor,
87
- subject,
88
- sender: { identityDid: identity?.did },
89
- text,
90
- }),
91
- );
97
+ await invokePromise(ThreadOperation.AddMessage, {
98
+ anchor,
99
+ subject,
100
+ sender: { identityDid: identity?.did },
101
+ text,
102
+ });
92
103
 
93
104
  const thread = Relation.getSource(anchor) as Thread.Thread;
94
- state.current = Obj.getDXN(thread).toString();
105
+ registry.set(stateAtom, { ...registry.get(stateAtom), current: Obj.getDXN(thread).toString() });
95
106
  },
96
- [dispatch, identity, subject],
107
+ [invokePromise, identity, subject, registry, stateAtom],
97
108
  );
98
109
 
99
110
  const handleResolve = useCallback(
100
111
  (anchor: AnchoredTo.AnchoredTo) =>
101
- dispatch(
102
- createIntent(ThreadAction.ToggleResolved, {
103
- thread: Relation.getSource(anchor) as Thread.Thread,
104
- }),
105
- ),
106
- [dispatch],
112
+ invokePromise(ThreadOperation.ToggleResolved, {
113
+ thread: Relation.getSource(anchor) as Thread.Thread,
114
+ }),
115
+ [invokePromise],
107
116
  );
108
117
 
109
118
  const handleThreadDelete = useCallback(
110
- (anchor: AnchoredTo.AnchoredTo) => dispatch(createIntent(ThreadAction.Delete, { anchor, subject })),
111
- [dispatch, subject],
119
+ (anchor: AnchoredTo.AnchoredTo) => invokePromise(ThreadOperation.Delete, { anchor, subject }),
120
+ [invokePromise, subject],
112
121
  );
113
122
 
114
123
  const handleMessageDelete = useCallback(
115
124
  (anchor: AnchoredTo.AnchoredTo, messageId: string) =>
116
- dispatch(
117
- createIntent(ThreadAction.DeleteMessage, {
118
- anchor,
119
- subject,
120
- messageId,
121
- }),
122
- ),
123
- [dispatch, subject],
125
+ invokePromise(ThreadOperation.DeleteMessage, {
126
+ anchor,
127
+ subject,
128
+ messageId,
129
+ }),
130
+ [invokePromise, subject],
124
131
  );
125
132
 
126
133
  const handleAcceptProposal = useCallback<NonNullable<CommentsContainerProps['onAcceptProposal']>>(
@@ -133,16 +140,14 @@ export const ThreadCompanion = ({ subject }: { subject: any }) => {
133
140
  return;
134
141
  }
135
142
 
136
- await dispatch(
137
- createIntent(CollaborationActions.AcceptProposal, {
138
- subject,
139
- anchor: anchor.anchor,
140
- proposal,
141
- }),
142
- );
143
- await dispatch(createIntent(ThreadAction.ToggleResolved, { thread }));
143
+ await invokePromise(Common.CollaborationOperation.AcceptProposal, {
144
+ subject,
145
+ anchor: anchor.anchor,
146
+ proposal,
147
+ });
148
+ await invokePromise(ThreadOperation.ToggleResolved, { thread });
144
149
  },
145
- [dispatch, subject],
150
+ [invokePromise, subject],
146
151
  );
147
152
 
148
153
  const comments = (
@@ -160,7 +165,7 @@ export const ThreadCompanion = ({ subject }: { subject: any }) => {
160
165
  );
161
166
 
162
167
  return (
163
- <StackItem.Content toolbar>
168
+ <Layout.Main toolbar>
164
169
  <Tabs.Root
165
170
  value={showResolvedThreads ? 'all' : 'unresolved'}
166
171
  orientation='horizontal'
@@ -183,6 +188,6 @@ export const ThreadCompanion = ({ subject }: { subject: any }) => {
183
188
  <Tabs.Tabpanel value='unresolved'>{!showResolvedThreads && comments}</Tabs.Tabpanel>
184
189
  </div>
185
190
  </Tabs.Root>
186
- </StackItem.Content>
191
+ </Layout.Main>
187
192
  );
188
193
  };
@@ -10,7 +10,12 @@ import { ControlPage } from '@dxos/react-ui-form';
10
10
  import { meta } from '../meta';
11
11
  import type { ThreadSettingsProps } from '../types';
12
12
 
13
- export const ThreadSettings = ({ settings: _settings }: { settings: ThreadSettingsProps }) => {
13
+ export type ThreadSettingsComponentProps = {
14
+ settings: ThreadSettingsProps;
15
+ onSettingsChange: (fn: (current: ThreadSettingsProps) => ThreadSettingsProps) => void;
16
+ };
17
+
18
+ export const ThreadSettings = ({ settings: _settings }: ThreadSettingsComponentProps) => {
14
19
  const { t: _t } = useTranslation(meta.id);
15
20
  return <ControlPage></ControlPage>;
16
21
  };
@@ -5,8 +5,8 @@
5
5
  import { HighlightStyle, StreamLanguage, syntaxHighlighting } from '@codemirror/language';
6
6
  import { type Extension } from '@codemirror/state';
7
7
 
8
- import { tags } from '@dxos/react-ui-editor';
9
- import { mx } from '@dxos/react-ui-theme';
8
+ import { tags } from '@dxos/ui-editor';
9
+ import { mx } from '@dxos/ui-theme';
10
10
 
11
11
  /**
12
12
  * https://github.com/codemirror/stream-parser/blob/main/test/test-stream-parser.ts
@@ -2,9 +2,6 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import { lazy } from 'react';
6
-
7
- // TODO(wittjosiah): Suspense boundary for sidebar?
8
5
  export * from './Call';
9
6
  export * from './CallDebugPanel';
10
7
  export * from './CallSidebar';
@@ -14,5 +11,5 @@ export * from './MessageContainer';
14
11
  export * from './ThreadCompanion';
15
12
  export * from './ThreadSettings';
16
13
 
17
- export const ChannelContainer = lazy(() => import('./ChannelContainer'));
18
- export const ChatContainer = lazy(() => import('./ChatContainer'));
14
+ export { ChannelContainer } from './ChannelContainer';
15
+ export { ChatContainer } from './ChatContainer';