@dxos/plugin-thread 0.8.4-main.ae835ea → 0.8.4-main.bc674ce

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 (376) 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-HDEQRBOC.mjs → chunk-DLO2G3DM.mjs} +79 -76
  11. package/dist/lib/browser/chunk-DLO2G3DM.mjs.map +7 -0
  12. package/dist/lib/browser/{chunk-US5ZQYC3.mjs → chunk-ERK254BS.mjs} +78 -61
  13. package/dist/lib/browser/chunk-ERK254BS.mjs.map +7 -0
  14. package/dist/lib/browser/{chunk-XYUJXHYV.mjs → chunk-ISCHODBV.mjs} +1 -1
  15. package/dist/lib/browser/{chunk-XYUJXHYV.mjs.map → chunk-ISCHODBV.mjs.map} +2 -2
  16. package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
  17. package/dist/lib/browser/chunk-YSHXWAL3.mjs +1815 -0
  18. package/dist/lib/browser/chunk-YSHXWAL3.mjs.map +7 -0
  19. package/dist/lib/browser/chunk-ZFLSTQSE.mjs +106 -0
  20. package/dist/lib/browser/chunk-ZFLSTQSE.mjs.map +7 -0
  21. package/dist/lib/browser/index.mjs +121 -114
  22. package/dist/lib/browser/index.mjs.map +4 -4
  23. package/dist/lib/browser/markdown-QMJLRR6R.mjs +210 -0
  24. package/dist/lib/browser/markdown-QMJLRR6R.mjs.map +7 -0
  25. package/dist/lib/browser/meta.json +1 -1
  26. package/dist/lib/browser/operation-resolver-T63EP5TY.mjs +441 -0
  27. package/dist/lib/browser/operation-resolver-T63EP5TY.mjs.map +7 -0
  28. package/dist/lib/browser/react-root-56MJI77R.mjs +25 -0
  29. package/dist/lib/browser/react-root-56MJI77R.mjs.map +7 -0
  30. package/dist/lib/browser/{react-surface-IC576W2W.mjs → react-surface-DMBHQOXJ.mjs} +43 -42
  31. package/dist/lib/browser/react-surface-DMBHQOXJ.mjs.map +7 -0
  32. package/dist/lib/browser/repair-6OZ75AUU.mjs +38 -0
  33. package/dist/lib/browser/repair-6OZ75AUU.mjs.map +7 -0
  34. package/dist/lib/browser/settings-WZMJMML3.mjs +32 -0
  35. package/dist/lib/browser/settings-WZMJMML3.mjs.map +7 -0
  36. package/dist/lib/browser/state-SJR2GL5G.mjs +24 -0
  37. package/dist/lib/browser/state-SJR2GL5G.mjs.map +7 -0
  38. package/dist/lib/browser/types/index.mjs +7 -7
  39. package/dist/lib/node-esm/app-graph-builder-JCSVFRVY.mjs +189 -0
  40. package/dist/lib/node-esm/app-graph-builder-JCSVFRVY.mjs.map +7 -0
  41. package/dist/lib/node-esm/blueprint-definition-MZZXXL37.mjs +18 -0
  42. package/dist/lib/node-esm/blueprint-definition-MZZXXL37.mjs.map +7 -0
  43. package/dist/lib/node-esm/blueprints/index.mjs +9 -0
  44. package/dist/lib/node-esm/call-manager-FMLRR5S5.mjs +27 -0
  45. package/dist/lib/node-esm/call-manager-FMLRR5S5.mjs.map +7 -0
  46. package/dist/lib/node-esm/chunk-7XQLXMX7.mjs +1816 -0
  47. package/dist/lib/node-esm/chunk-7XQLXMX7.mjs.map +7 -0
  48. package/dist/lib/node-esm/chunk-AQHPP6ZX.mjs +107 -0
  49. package/dist/lib/node-esm/chunk-AQHPP6ZX.mjs.map +7 -0
  50. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  51. package/dist/lib/node-esm/{chunk-2MMJF7DW.mjs → chunk-KRBZBJRI.mjs} +79 -76
  52. package/dist/lib/node-esm/chunk-KRBZBJRI.mjs.map +7 -0
  53. package/dist/lib/node-esm/{chunk-KGYDYYKJ.mjs → chunk-QP3KQOPQ.mjs} +78 -61
  54. package/dist/lib/node-esm/chunk-QP3KQOPQ.mjs.map +7 -0
  55. package/dist/lib/node-esm/{chunk-2V3WSLUZ.mjs → chunk-VBI32FGI.mjs} +1 -1
  56. package/dist/lib/node-esm/{chunk-2V3WSLUZ.mjs.map → chunk-VBI32FGI.mjs.map} +2 -2
  57. package/dist/lib/node-esm/chunk-WMWUXWAS.mjs +294 -0
  58. package/dist/lib/node-esm/chunk-WMWUXWAS.mjs.map +7 -0
  59. package/dist/lib/node-esm/index.mjs +121 -114
  60. package/dist/lib/node-esm/index.mjs.map +4 -4
  61. package/dist/lib/node-esm/markdown-L6LLQLIN.mjs +211 -0
  62. package/dist/lib/node-esm/markdown-L6LLQLIN.mjs.map +7 -0
  63. package/dist/lib/node-esm/meta.json +1 -1
  64. package/dist/lib/node-esm/operation-resolver-G6GZPBRP.mjs +442 -0
  65. package/dist/lib/node-esm/operation-resolver-G6GZPBRP.mjs.map +7 -0
  66. package/dist/lib/node-esm/react-root-V4W4X5GL.mjs +26 -0
  67. package/dist/lib/node-esm/react-root-V4W4X5GL.mjs.map +7 -0
  68. package/dist/lib/node-esm/{react-surface-O4LGTAZ3.mjs → react-surface-ELDSTUA3.mjs} +43 -42
  69. package/dist/lib/node-esm/react-surface-ELDSTUA3.mjs.map +7 -0
  70. package/dist/lib/node-esm/repair-6777EPOM.mjs +39 -0
  71. package/dist/lib/node-esm/repair-6777EPOM.mjs.map +7 -0
  72. package/dist/lib/node-esm/settings-37CO3SNR.mjs +33 -0
  73. package/dist/lib/node-esm/settings-37CO3SNR.mjs.map +7 -0
  74. package/dist/lib/node-esm/state-5R3TZJQE.mjs +25 -0
  75. package/dist/lib/node-esm/state-5R3TZJQE.mjs.map +7 -0
  76. package/dist/lib/node-esm/types/index.mjs +7 -7
  77. package/dist/types/src/ThreadPlugin.d.ts +2 -1
  78. package/dist/types/src/ThreadPlugin.d.ts.map +1 -1
  79. package/dist/types/src/blueprints/index.d.ts +2 -0
  80. package/dist/types/src/blueprints/index.d.ts.map +1 -0
  81. package/dist/types/src/blueprints/thread-blueprint.d.ts +21 -0
  82. package/dist/types/src/blueprints/thread-blueprint.d.ts.map +1 -0
  83. package/dist/types/src/calls/call-manager.d.ts +40 -30
  84. package/dist/types/src/calls/call-manager.d.ts.map +1 -1
  85. package/dist/types/src/calls/call-swarm-synchronizer.d.ts +2 -2
  86. package/dist/types/src/calls/call-swarm-synchronizer.d.ts.map +1 -1
  87. package/dist/types/src/calls/media-manager.d.ts +1 -1
  88. package/dist/types/src/calls/media-manager.d.ts.map +1 -1
  89. package/dist/types/src/calls/util/calls-service.d.ts +1 -1
  90. package/dist/types/src/calls/util/calls-service.d.ts.map +1 -1
  91. package/dist/types/src/calls/util/task-scheduling.d.ts +2 -2
  92. package/dist/types/src/calls/util/task-scheduling.d.ts.map +1 -1
  93. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +6 -0
  94. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +1 -0
  95. package/dist/types/src/capabilities/app-graph-builder/index.d.ts +3 -0
  96. package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +1 -0
  97. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts +9 -0
  98. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts.map +1 -0
  99. package/dist/types/src/capabilities/blueprint-definition/index.d.ts +3 -0
  100. package/dist/types/src/capabilities/blueprint-definition/index.d.ts.map +1 -0
  101. package/dist/types/src/capabilities/call-manager/call-manager.d.ts +6 -0
  102. package/dist/types/src/capabilities/call-manager/call-manager.d.ts.map +1 -0
  103. package/dist/types/src/capabilities/call-manager/index.d.ts +3 -0
  104. package/dist/types/src/capabilities/call-manager/index.d.ts.map +1 -0
  105. package/dist/types/src/capabilities/index.d.ts +10 -16
  106. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  107. package/dist/types/src/capabilities/markdown/index.d.ts +3 -0
  108. package/dist/types/src/capabilities/markdown/index.d.ts.map +1 -0
  109. package/dist/types/src/capabilities/markdown/markdown.d.ts +5 -0
  110. package/dist/types/src/capabilities/markdown/markdown.d.ts.map +1 -0
  111. package/dist/types/src/capabilities/operation-resolver/index.d.ts +3 -0
  112. package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +1 -0
  113. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +5 -0
  114. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +1 -0
  115. package/dist/types/src/capabilities/react-root/index.d.ts +6 -0
  116. package/dist/types/src/capabilities/react-root/index.d.ts.map +1 -0
  117. package/dist/types/src/capabilities/react-root/react-root.d.ts +9 -0
  118. package/dist/types/src/capabilities/react-root/react-root.d.ts.map +1 -0
  119. package/dist/types/src/capabilities/react-surface/index.d.ts +3 -0
  120. package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -0
  121. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +5 -0
  122. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -0
  123. package/dist/types/src/capabilities/repair/index.d.ts +3 -0
  124. package/dist/types/src/capabilities/repair/index.d.ts.map +1 -0
  125. package/dist/types/src/capabilities/repair/repair.d.ts +6 -0
  126. package/dist/types/src/capabilities/repair/repair.d.ts.map +1 -0
  127. package/dist/types/src/capabilities/settings/index.d.ts +3 -0
  128. package/dist/types/src/capabilities/settings/index.d.ts.map +1 -0
  129. package/dist/types/src/capabilities/settings/settings.d.ts +5 -0
  130. package/dist/types/src/capabilities/settings/settings.d.ts.map +1 -0
  131. package/dist/types/src/capabilities/state/index.d.ts +3 -0
  132. package/dist/types/src/capabilities/state/index.d.ts.map +1 -0
  133. package/dist/types/src/capabilities/state/state.d.ts +7 -0
  134. package/dist/types/src/capabilities/state/state.d.ts.map +1 -0
  135. package/dist/types/src/components/Call/Call.d.ts.map +1 -1
  136. package/dist/types/src/components/Call/Toolbar.d.ts.map +1 -1
  137. package/dist/types/src/components/CallDebugPanel.d.ts.map +1 -1
  138. package/dist/types/src/components/CallSidebar.d.ts.map +1 -1
  139. package/dist/types/src/components/ChannelContainer.d.ts +4 -5
  140. package/dist/types/src/components/ChannelContainer.d.ts.map +1 -1
  141. package/dist/types/src/components/ChannelContainer.stories.d.ts +6 -2
  142. package/dist/types/src/components/ChannelContainer.stories.d.ts.map +1 -1
  143. package/dist/types/src/components/Chat.stories.d.ts +5 -1
  144. package/dist/types/src/components/Chat.stories.d.ts.map +1 -1
  145. package/dist/types/src/components/ChatContainer.d.ts +2 -2
  146. package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
  147. package/dist/types/src/components/Comments.stories.d.ts +5 -1
  148. package/dist/types/src/components/Comments.stories.d.ts.map +1 -1
  149. package/dist/types/src/components/CommentsContainer.d.ts +2 -2
  150. package/dist/types/src/components/CommentsContainer.d.ts.map +1 -1
  151. package/dist/types/src/components/CommentsThreadContainer.d.ts +8 -8
  152. package/dist/types/src/components/CommentsThreadContainer.d.ts.map +1 -1
  153. package/dist/types/src/components/Lobby/Lobby.d.ts.map +1 -1
  154. package/dist/types/src/components/Media/VideoObject.d.ts +1 -1
  155. package/dist/types/src/components/Media/VideoObject.stories.d.ts +1 -1
  156. package/dist/types/src/components/MessageContainer.d.ts +4 -3
  157. package/dist/types/src/components/MessageContainer.d.ts.map +1 -1
  158. package/dist/types/src/components/Participant/Participant.d.ts.map +1 -1
  159. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts +5 -1
  160. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts.map +1 -1
  161. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts +5 -1
  162. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts.map +1 -1
  163. package/dist/types/src/components/ResponsiveGrid/ResponsiveGridItem.d.ts.map +1 -1
  164. package/dist/types/src/components/ThreadCompanion.d.ts +5 -0
  165. package/dist/types/src/components/ThreadCompanion.d.ts.map +1 -0
  166. package/dist/types/src/components/ThreadSettings.d.ts +4 -2
  167. package/dist/types/src/components/ThreadSettings.d.ts.map +1 -1
  168. package/dist/types/src/components/index.d.ts +3 -3
  169. package/dist/types/src/components/index.d.ts.map +1 -1
  170. package/dist/types/src/components/testing.d.ts +1 -1
  171. package/dist/types/src/components/testing.d.ts.map +1 -1
  172. package/dist/types/src/extensions/threads.d.ts +7 -2
  173. package/dist/types/src/extensions/threads.d.ts.map +1 -1
  174. package/dist/types/src/functions/create-proposals.d.ts +6 -0
  175. package/dist/types/src/functions/create-proposals.d.ts.map +1 -0
  176. package/dist/types/src/functions/index.d.ts +2 -0
  177. package/dist/types/src/functions/index.d.ts.map +1 -0
  178. package/dist/types/src/hooks/analytics.d.ts +2 -3
  179. package/dist/types/src/hooks/analytics.d.ts.map +1 -1
  180. package/dist/types/src/hooks/index.d.ts +2 -2
  181. package/dist/types/src/hooks/index.d.ts.map +1 -1
  182. package/dist/types/src/index.d.ts +1 -1
  183. package/dist/types/src/index.d.ts.map +1 -1
  184. package/dist/types/src/meta.d.ts +2 -2
  185. package/dist/types/src/meta.d.ts.map +1 -1
  186. package/dist/types/src/testing/stories.d.ts +2 -1
  187. package/dist/types/src/testing/stories.d.ts.map +1 -1
  188. package/dist/types/src/translations.d.ts +5 -1
  189. package/dist/types/src/translations.d.ts.map +1 -1
  190. package/dist/types/src/types/Channel.d.ts +691 -12
  191. package/dist/types/src/types/Channel.d.ts.map +1 -1
  192. package/dist/types/src/types/capabilities.d.ts +23 -0
  193. package/dist/types/src/types/capabilities.d.ts.map +1 -0
  194. package/dist/types/src/types/index.d.ts +1 -1
  195. package/dist/types/src/types/index.d.ts.map +1 -1
  196. package/dist/types/src/types/types.d.ts +3216 -430
  197. package/dist/types/src/types/types.d.ts.map +1 -1
  198. package/dist/types/tsconfig.tsbuildinfo +1 -1
  199. package/package.json +86 -65
  200. package/src/ThreadPlugin.tsx +56 -88
  201. package/src/blueprints/index.ts +5 -0
  202. package/src/blueprints/thread-blueprint.ts +32 -0
  203. package/src/calls/call-manager.ts +76 -52
  204. package/src/calls/call-swarm-synchronizer.ts +2 -2
  205. package/src/calls/media-manager.ts +10 -7
  206. package/src/calls/util/calls-service.ts +1 -1
  207. package/src/calls/util/stub-media-streams.ts +2 -2
  208. package/src/calls/util/task-scheduling.ts +4 -4
  209. package/src/capabilities/app-graph-builder/app-graph-builder.ts +201 -0
  210. package/src/capabilities/app-graph-builder/index.ts +7 -0
  211. package/src/capabilities/blueprint-definition/blueprint-definition.ts +23 -0
  212. package/src/capabilities/blueprint-definition/index.ts +7 -0
  213. package/src/capabilities/call-manager/call-manager.ts +26 -0
  214. package/src/capabilities/call-manager/index.ts +7 -0
  215. package/src/capabilities/index.ts +10 -13
  216. package/src/capabilities/markdown/index.ts +7 -0
  217. package/src/capabilities/markdown/markdown.ts +83 -0
  218. package/src/capabilities/operation-resolver/index.ts +7 -0
  219. package/src/capabilities/operation-resolver/operation-resolver.ts +400 -0
  220. package/src/capabilities/react-root/index.ts +7 -0
  221. package/src/capabilities/react-root/react-root.tsx +20 -0
  222. package/src/capabilities/react-surface/index.ts +7 -0
  223. package/src/capabilities/react-surface/react-surface.tsx +97 -0
  224. package/src/capabilities/repair/index.ts +7 -0
  225. package/src/capabilities/repair/repair.ts +51 -0
  226. package/src/capabilities/settings/index.ts +7 -0
  227. package/src/capabilities/settings/settings.ts +33 -0
  228. package/src/capabilities/state/index.ts +7 -0
  229. package/src/capabilities/state/state.ts +22 -0
  230. package/src/components/Call/Call.tsx +8 -4
  231. package/src/components/Call/Toolbar.tsx +31 -23
  232. package/src/components/CallDebugPanel.tsx +12 -14
  233. package/src/components/CallSidebar.tsx +5 -3
  234. package/src/components/ChannelContainer.stories.tsx +12 -10
  235. package/src/components/ChannelContainer.tsx +22 -19
  236. package/src/components/Chat.stories.tsx +9 -9
  237. package/src/components/ChatContainer.tsx +22 -21
  238. package/src/components/Comments.stories.tsx +25 -23
  239. package/src/components/CommentsContainer.tsx +4 -6
  240. package/src/components/CommentsThreadContainer.tsx +21 -22
  241. package/src/components/Lobby/Lobby.tsx +9 -7
  242. package/src/components/Media/AudioStream.tsx +2 -2
  243. package/src/components/Media/VideoObject.tsx +2 -2
  244. package/src/components/MessageContainer.tsx +59 -28
  245. package/src/components/Participant/Participant.tsx +32 -19
  246. package/src/components/ResponsiveGrid/ResponsiveContainer.tsx +3 -3
  247. package/src/components/ResponsiveGrid/ResponsiveGrid.stories.tsx +1 -1
  248. package/src/components/ResponsiveGrid/ResponsiveGrid.tsx +6 -6
  249. package/src/components/ResponsiveGrid/ResponsiveGridItem.tsx +6 -3
  250. package/src/components/{ThreadComplementary.tsx → ThreadCompanion.tsx} +79 -67
  251. package/src/components/ThreadSettings.tsx +6 -1
  252. package/src/components/command-extension.ts +2 -2
  253. package/src/components/index.ts +4 -7
  254. package/src/components/testing.ts +3 -5
  255. package/src/extensions/threads.ts +82 -38
  256. package/src/functions/create-proposals.ts +57 -0
  257. package/src/functions/index.ts +5 -0
  258. package/src/hooks/analytics.ts +21 -21
  259. package/src/hooks/index.ts +3 -2
  260. package/src/index.ts +1 -1
  261. package/src/meta.ts +2 -2
  262. package/src/testing/stories.ts +15 -11
  263. package/src/translations.ts +3 -1
  264. package/src/types/Channel.ts +13 -10
  265. package/src/types/capabilities.ts +34 -0
  266. package/src/types/index.ts +1 -1
  267. package/src/types/types.ts +163 -85
  268. package/dist/lib/browser/ChannelContainer-SVV4ZX5T.mjs +0 -16
  269. package/dist/lib/browser/ChatContainer-ALFWQ65B.mjs +0 -15
  270. package/dist/lib/browser/app-graph-builder-ACBXRBOS.mjs +0 -171
  271. package/dist/lib/browser/app-graph-builder-ACBXRBOS.mjs.map +0 -7
  272. package/dist/lib/browser/call-manager-P3MYR2JS.mjs +0 -24
  273. package/dist/lib/browser/call-manager-P3MYR2JS.mjs.map +0 -7
  274. package/dist/lib/browser/chunk-6CUDBEYP.mjs +0 -377
  275. package/dist/lib/browser/chunk-6CUDBEYP.mjs.map +0 -7
  276. package/dist/lib/browser/chunk-BBTXGRIR.mjs +0 -18
  277. package/dist/lib/browser/chunk-BBTXGRIR.mjs.map +0 -7
  278. package/dist/lib/browser/chunk-DJOUMWEL.mjs +0 -988
  279. package/dist/lib/browser/chunk-DJOUMWEL.mjs.map +0 -7
  280. package/dist/lib/browser/chunk-HDEQRBOC.mjs.map +0 -7
  281. package/dist/lib/browser/chunk-IQSXEHOW.mjs +0 -618
  282. package/dist/lib/browser/chunk-IQSXEHOW.mjs.map +0 -7
  283. package/dist/lib/browser/chunk-K2DUJRFJ.mjs +0 -27
  284. package/dist/lib/browser/chunk-K2DUJRFJ.mjs.map +0 -7
  285. package/dist/lib/browser/chunk-L6F2AG6W.mjs +0 -23
  286. package/dist/lib/browser/chunk-L6F2AG6W.mjs.map +0 -7
  287. package/dist/lib/browser/chunk-US5ZQYC3.mjs.map +0 -7
  288. package/dist/lib/browser/chunk-UTSLSZED.mjs +0 -178
  289. package/dist/lib/browser/chunk-UTSLSZED.mjs.map +0 -7
  290. package/dist/lib/browser/intent-resolver-5POQTZ24.mjs +0 -419
  291. package/dist/lib/browser/intent-resolver-5POQTZ24.mjs.map +0 -7
  292. package/dist/lib/browser/markdown-L7LDNF56.mjs +0 -169
  293. package/dist/lib/browser/markdown-L7LDNF56.mjs.map +0 -7
  294. package/dist/lib/browser/react-root-RCJLK4EP.mjs +0 -28
  295. package/dist/lib/browser/react-root-RCJLK4EP.mjs.map +0 -7
  296. package/dist/lib/browser/react-surface-IC576W2W.mjs.map +0 -7
  297. package/dist/lib/browser/settings-5FYGBOGI.mjs +0 -22
  298. package/dist/lib/browser/settings-5FYGBOGI.mjs.map +0 -7
  299. package/dist/lib/browser/state-36REWXO5.mjs +0 -34
  300. package/dist/lib/browser/state-36REWXO5.mjs.map +0 -7
  301. package/dist/lib/browser/toolkit-PXASLYEQ.mjs +0 -74
  302. package/dist/lib/browser/toolkit-PXASLYEQ.mjs.map +0 -7
  303. package/dist/lib/node-esm/ChannelContainer-63GMQ753.mjs +0 -17
  304. package/dist/lib/node-esm/ChatContainer-MFKPXMIK.mjs +0 -16
  305. package/dist/lib/node-esm/app-graph-builder-JXD7KY3G.mjs +0 -172
  306. package/dist/lib/node-esm/app-graph-builder-JXD7KY3G.mjs.map +0 -7
  307. package/dist/lib/node-esm/call-manager-FCEFP7EJ.mjs +0 -25
  308. package/dist/lib/node-esm/call-manager-FCEFP7EJ.mjs.map +0 -7
  309. package/dist/lib/node-esm/chunk-2MMJF7DW.mjs.map +0 -7
  310. package/dist/lib/node-esm/chunk-AFDO2SUZ.mjs +0 -25
  311. package/dist/lib/node-esm/chunk-AFDO2SUZ.mjs.map +0 -7
  312. package/dist/lib/node-esm/chunk-KGYDYYKJ.mjs.map +0 -7
  313. package/dist/lib/node-esm/chunk-NWUUMKVQ.mjs +0 -378
  314. package/dist/lib/node-esm/chunk-NWUUMKVQ.mjs.map +0 -7
  315. package/dist/lib/node-esm/chunk-Q7AKKZNY.mjs +0 -619
  316. package/dist/lib/node-esm/chunk-Q7AKKZNY.mjs.map +0 -7
  317. package/dist/lib/node-esm/chunk-QCQAAU6J.mjs +0 -989
  318. package/dist/lib/node-esm/chunk-QCQAAU6J.mjs.map +0 -7
  319. package/dist/lib/node-esm/chunk-TYLLHI46.mjs +0 -179
  320. package/dist/lib/node-esm/chunk-TYLLHI46.mjs.map +0 -7
  321. package/dist/lib/node-esm/chunk-XI45H4IV.mjs +0 -28
  322. package/dist/lib/node-esm/chunk-XI45H4IV.mjs.map +0 -7
  323. package/dist/lib/node-esm/chunk-ZQAGII7M.mjs +0 -19
  324. package/dist/lib/node-esm/chunk-ZQAGII7M.mjs.map +0 -7
  325. package/dist/lib/node-esm/intent-resolver-63NV3XD2.mjs +0 -420
  326. package/dist/lib/node-esm/intent-resolver-63NV3XD2.mjs.map +0 -7
  327. package/dist/lib/node-esm/markdown-ZQW7MI5U.mjs +0 -170
  328. package/dist/lib/node-esm/markdown-ZQW7MI5U.mjs.map +0 -7
  329. package/dist/lib/node-esm/react-root-4IDB2SN2.mjs +0 -29
  330. package/dist/lib/node-esm/react-root-4IDB2SN2.mjs.map +0 -7
  331. package/dist/lib/node-esm/react-surface-O4LGTAZ3.mjs.map +0 -7
  332. package/dist/lib/node-esm/settings-EOBQUZSW.mjs +0 -23
  333. package/dist/lib/node-esm/settings-EOBQUZSW.mjs.map +0 -7
  334. package/dist/lib/node-esm/state-X3W67GTL.mjs +0 -35
  335. package/dist/lib/node-esm/state-X3W67GTL.mjs.map +0 -7
  336. package/dist/lib/node-esm/toolkit-X2KA4FNC.mjs +0 -75
  337. package/dist/lib/node-esm/toolkit-X2KA4FNC.mjs.map +0 -7
  338. package/dist/types/src/capabilities/app-graph-builder.d.ts +0 -4
  339. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +0 -1
  340. package/dist/types/src/capabilities/call-manager.d.ts +0 -5
  341. package/dist/types/src/capabilities/call-manager.d.ts.map +0 -1
  342. package/dist/types/src/capabilities/capabilities.d.ts +0 -27
  343. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  344. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  345. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  346. package/dist/types/src/capabilities/markdown.d.ts +0 -4
  347. package/dist/types/src/capabilities/markdown.d.ts.map +0 -1
  348. package/dist/types/src/capabilities/react-root.d.ts +0 -7
  349. package/dist/types/src/capabilities/react-root.d.ts.map +0 -1
  350. package/dist/types/src/capabilities/react-surface.d.ts +0 -4
  351. package/dist/types/src/capabilities/react-surface.d.ts.map +0 -1
  352. package/dist/types/src/capabilities/settings.d.ts +0 -4
  353. package/dist/types/src/capabilities/settings.d.ts.map +0 -1
  354. package/dist/types/src/capabilities/state.d.ts +0 -7
  355. package/dist/types/src/capabilities/state.d.ts.map +0 -1
  356. package/dist/types/src/capabilities/toolkit.d.ts +0 -24
  357. package/dist/types/src/capabilities/toolkit.d.ts.map +0 -1
  358. package/dist/types/src/components/ThreadComplementary.d.ts +0 -5
  359. package/dist/types/src/components/ThreadComplementary.d.ts.map +0 -1
  360. package/dist/types/src/types/Thread.d.ts +0 -167
  361. package/dist/types/src/types/Thread.d.ts.map +0 -1
  362. package/src/capabilities/app-graph-builder.ts +0 -186
  363. package/src/capabilities/call-manager.ts +0 -20
  364. package/src/capabilities/capabilities.ts +0 -33
  365. package/src/capabilities/intent-resolver.ts +0 -344
  366. package/src/capabilities/markdown.ts +0 -69
  367. package/src/capabilities/react-root.tsx +0 -17
  368. package/src/capabilities/react-surface.tsx +0 -89
  369. package/src/capabilities/settings.ts +0 -19
  370. package/src/capabilities/state.ts +0 -26
  371. package/src/capabilities/toolkit.ts +0 -85
  372. package/src/types/Thread.ts +0 -26
  373. /package/dist/lib/browser/{ChannelContainer-SVV4ZX5T.mjs.map → blueprints/index.mjs.map} +0 -0
  374. /package/dist/lib/browser/{ChatContainer-ALFWQ65B.mjs.map → chunk-J5LGTIGS.mjs.map} +0 -0
  375. /package/dist/lib/node-esm/{ChannelContainer-63GMQ753.mjs.map → blueprints/index.mjs.map} +0 -0
  376. /package/dist/lib/node-esm/{ChatContainer-MFKPXMIK.mjs.map → chunk-HSLMI22Q.mjs.map} +0 -0
@@ -4,18 +4,16 @@
4
4
 
5
5
  import React, { useEffect } from 'react';
6
6
 
7
- import { Relation } from '@dxos/echo';
8
- import { fullyQualifiedId } from '@dxos/react-client/echo';
7
+ import { Obj, Relation } from '@dxos/echo';
9
8
  import { Callout, Icon, Trans, useTranslation } from '@dxos/react-ui';
10
- import { type AnchoredTo } from '@dxos/schema';
9
+ import { type AnchoredTo, type Thread } from '@dxos/types';
11
10
 
12
11
  import { meta } from '../meta';
13
- import { type Thread } from '../types';
14
12
 
15
13
  import { CommentsThreadContainer, type CommentsThreadContainerProps } from './CommentsThreadContainer';
16
14
 
17
15
  export type CommentsContainerProps = Omit<CommentsThreadContainerProps, 'anchor' | 'current'> & {
18
- anchors: AnchoredTo[];
16
+ anchors: AnchoredTo.AnchoredTo[];
19
17
  currentId?: string;
20
18
  showResolvedThreads?: boolean;
21
19
  };
@@ -64,7 +62,7 @@ export const CommentsContainer = ({ anchors, currentId, showResolvedThreads, ...
64
62
  <div>
65
63
  {filteredAnchors.map((anchor) => {
66
64
  const thread = Relation.getSource(anchor) as Thread.Thread;
67
- const threadId = fullyQualifiedId(thread);
65
+ const threadId = Obj.getDXN(thread).toString();
68
66
  return <CommentsThreadContainer key={threadId} anchor={anchor} current={currentId === threadId} {...props} />;
69
67
  })}
70
68
  </div>
@@ -4,37 +4,36 @@
4
4
 
5
5
  import React, { useCallback, useMemo, useRef, useState } from 'react';
6
6
 
7
- import { Ref, Relation } from '@dxos/echo';
8
- import { fullyQualifiedId, getSpace, useMembers } from '@dxos/react-client/echo';
7
+ import { Obj, Relation } from '@dxos/echo';
8
+ import { useObject } from '@dxos/echo-react';
9
+ import { getSpace, useMembers } from '@dxos/react-client/echo';
9
10
  import { useIdentity } from '@dxos/react-client/halo';
10
11
  import { IconButton, Tag, Tooltip, useThemeContext, useTranslation } from '@dxos/react-ui';
11
- import { createBasicExtensions, createThemeExtensions, listener } from '@dxos/react-ui-editor';
12
- import { hoverableControlItem, hoverableControls, hoverableFocusedWithinControls, mx } from '@dxos/react-ui-theme';
13
12
  import {
14
13
  MessageTextbox,
15
14
  type MessageTextboxProps,
16
15
  Thread as ThreadComponent,
17
16
  type ThreadRootProps,
18
17
  } from '@dxos/react-ui-thread';
19
- import { type AnchoredTo } from '@dxos/schema';
20
- import { isNonNullable } from '@dxos/util';
18
+ import { type AnchoredTo, type Thread } from '@dxos/types';
19
+ import { createBasicExtensions, createThemeExtensions, listener } from '@dxos/ui-editor';
20
+ import { hoverableControlItem, hoverableControls, hoverableFocusedWithinControls, mx } from '@dxos/ui-theme';
21
21
 
22
22
  import { useStatus } from '../hooks';
23
23
  import { meta } from '../meta';
24
- import { type Thread } from '../types';
25
24
  import { getMessageMetadata } from '../util';
26
25
 
27
26
  import { command } from './command-extension';
28
27
  import { MessageContainer, buttonClassNames, buttonGroupClassNames } from './MessageContainer';
29
28
 
30
29
  export type CommentsThreadContainerProps = {
31
- anchor: AnchoredTo;
32
- onAttend?: (anchor: AnchoredTo) => void;
33
- onComment?: (anchor: AnchoredTo, message: string) => void;
34
- onResolve?: (anchor: AnchoredTo) => void;
35
- onMessageDelete?: (anchor: AnchoredTo, messageId: string) => void;
36
- onThreadDelete?: (anchor: AnchoredTo) => void;
37
- onAcceptProposal?: (anchor: AnchoredTo, messageId: string) => void;
30
+ anchor: AnchoredTo.AnchoredTo;
31
+ onAttend?: (anchor: AnchoredTo.AnchoredTo) => void;
32
+ onComment?: (anchor: AnchoredTo.AnchoredTo, message: string) => void;
33
+ onResolve?: (anchor: AnchoredTo.AnchoredTo) => void;
34
+ onMessageDelete?: (anchor: AnchoredTo.AnchoredTo, messageId: string) => void;
35
+ onThreadDelete?: (anchor: AnchoredTo.AnchoredTo) => void;
36
+ onAcceptProposal?: (anchor: AnchoredTo.AnchoredTo, messageId: string) => void;
38
37
  } & Pick<ThreadRootProps, 'current'>;
39
38
 
40
39
  export const CommentsThreadContainer = ({
@@ -51,13 +50,14 @@ export const CommentsThreadContainer = ({
51
50
  const { t } = useTranslation(meta.id);
52
51
  const identity = useIdentity()!;
53
52
  const space = getSpace(anchor);
54
- const members = useMembers(space?.key);
53
+ const members = useMembers(space?.id);
55
54
  const detached = !anchor.anchor;
56
55
  const thread = Relation.getSource(anchor) as Thread.Thread;
57
- const activity = useStatus(space, fullyQualifiedId(thread));
56
+ const [messages] = useObject(thread, 'messages');
57
+ const activity = useStatus(space, Obj.getDXN(thread).toString());
58
58
  const threadScrollRef = useRef<HTMLDivElement | null>(null);
59
59
 
60
- const textboxMetadata = getMessageMetadata(fullyQualifiedId(thread), identity);
60
+ const textboxMetadata = getMessageMetadata(Obj.getDXN(thread).toString(), identity);
61
61
 
62
62
  // TODO(wittjosiah): This is a hack to reset the editor after a message is sent.
63
63
  const [state, setState] = useState({});
@@ -97,7 +97,7 @@ export const CommentsThreadContainer = ({
97
97
 
98
98
  return (
99
99
  <ThreadComponent.Root
100
- id={fullyQualifiedId(thread)}
100
+ id={Obj.getDXN(thread).toString()}
101
101
  classNames='pbs-2 border-be border-subduedSeparator last:border-none'
102
102
  current={current}
103
103
  onClickCapture={handleAttend}
@@ -145,12 +145,11 @@ export const CommentsThreadContainer = ({
145
145
  </div>
146
146
  </div>
147
147
 
148
- {/** TODO(dmaretskyi): How's `thread.messages` undefined? */}
149
- {Ref.Array.targets(thread.messages?.filter(isNonNullable) ?? []).map((message) => (
148
+ {messages?.map((ref) => (
150
149
  <MessageContainer
151
- key={message.id}
150
+ key={ref.dxn.toString()}
152
151
  editable
153
- message={message}
152
+ message={ref}
154
153
  members={members}
155
154
  onDelete={handleMessageDelete}
156
155
  onAcceptProposal={handleAcceptProposal}
@@ -2,14 +2,15 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
+ import { useAtomValue } from '@effect-atom/atom-react';
5
6
  import React, { type FC, type PropsWithChildren, useEffect, useState } from 'react';
6
7
 
7
- import { useCapability } from '@dxos/app-framework';
8
+ import { useCapability } from '@dxos/app-framework/react';
8
9
  import { type ThemedClassName, useTranslation } from '@dxos/react-ui';
9
- import { mx } from '@dxos/react-ui-theme';
10
+ import { mx } from '@dxos/ui-theme';
10
11
 
11
- import { ThreadCapabilities } from '../../capabilities';
12
12
  import { meta } from '../../meta';
13
+ import { ThreadCapabilities } from '../../types';
13
14
  import { Toolbar, type ToolbarProps } from '../Call';
14
15
  import { VideoObject } from '../Media';
15
16
  import { ResponsiveContainer } from '../ResponsiveGrid';
@@ -39,9 +40,10 @@ type LobbyPreviewProps = {};
39
40
  const LobbyPreview: FC<LobbyPreviewProps> = () => {
40
41
  const { t } = useTranslation(meta.id);
41
42
  const call = useCapability(ThreadCapabilities.CallManager);
43
+ const media = useAtomValue(call.mediaAtom);
42
44
  const [classNames, setClassNames] = useState('');
43
45
  useEffect(() => {
44
- if (!call.media.videoEnabled) {
46
+ if (!media.videoEnabled) {
45
47
  setClassNames('');
46
48
  return;
47
49
  }
@@ -52,14 +54,14 @@ const LobbyPreview: FC<LobbyPreviewProps> = () => {
52
54
  }, 500);
53
55
 
54
56
  return () => clearTimeout(timeout);
55
- }, [call.media.videoEnabled]);
57
+ }, [media.videoEnabled]);
56
58
 
57
59
  return (
58
60
  <div className='grid grow p-4'>
59
61
  <ResponsiveContainer>
60
- {(call.media.videoEnabled && (
62
+ {(media.videoEnabled && (
61
63
  <VideoObject
62
- videoStream={call.media.videoStream}
64
+ videoStream={media.videoStream}
63
65
  flip
64
66
  muted
65
67
  classNames={mx(
@@ -46,13 +46,13 @@ export const AudioStream: FC<AudioStreamProps> = ({ tracks }) => {
46
46
  );
47
47
  };
48
48
 
49
- type AudioTrackProps = {
49
+ type AudioTrackParams = {
50
50
  track: MediaStreamTrack;
51
51
  mediaStream: MediaStream;
52
52
  resetSrcObject: () => void;
53
53
  };
54
54
 
55
- const AudioTrack = ({ track, mediaStream, resetSrcObject }: AudioTrackProps) => {
55
+ const AudioTrack = ({ track, mediaStream, resetSrcObject }: AudioTrackParams) => {
56
56
  useEffect(() => {
57
57
  const currentTrack = track;
58
58
  mediaStream.addTrack(currentTrack);
@@ -5,7 +5,7 @@
5
5
  import React, { type JSX, forwardRef, memo, useEffect, useRef } from 'react';
6
6
 
7
7
  import { type ThemedClassName } from '@dxos/react-ui';
8
- import { mx } from '@dxos/react-ui-theme';
8
+ import { mx } from '@dxos/ui-theme';
9
9
 
10
10
  export type VideoObjectProps = Omit<JSX.IntrinsicElements['video'], 'className' | 'ref'> &
11
11
  ThemedClassName<{
@@ -32,7 +32,7 @@ export const VideoObject = memo(
32
32
  return (
33
33
  <video
34
34
  className={mx(
35
- 'w-full aspect-video',
35
+ 'is-full aspect-video',
36
36
  flip && 'scale-x-[-1]',
37
37
  contain ? 'object-contain' : 'object-cover',
38
38
  classNames,
@@ -5,16 +5,19 @@
5
5
  import { EditorView } from '@codemirror/view';
6
6
  import React, { forwardRef, useCallback, useEffect, useRef, useState } from 'react';
7
7
 
8
- import { Surface } from '@dxos/app-framework';
9
- import { type Obj, Ref, type Type } from '@dxos/echo';
8
+ import { Surface } from '@dxos/app-framework/react';
9
+ import { type Obj, Ref } from '@dxos/echo';
10
+ import { useObject } from '@dxos/echo-react';
10
11
  import { PublicKey } from '@dxos/react-client';
11
12
  import { type SpaceMember } from '@dxos/react-client/echo';
12
13
  import { type Identity, useIdentity } from '@dxos/react-client/halo';
13
14
  import { IconButton, useOnTransition, useThemeContext, useTranslation } from '@dxos/react-ui';
14
- import { createBasicExtensions, createThemeExtensions, useTextEditor } from '@dxos/react-ui-editor';
15
- 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';
16
17
  import { MessageHeading, MessageRoot } from '@dxos/react-ui-thread';
17
- import { type DataType } from '@dxos/schema';
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';
18
21
 
19
22
  import { useOnEditAnalytics } from '../hooks';
20
23
  import { meta } from '../meta';
@@ -26,7 +29,7 @@ export const buttonGroupClassNames = 'flex flex-row items-center gap-0.5 pie-2';
26
29
  export const buttonClassNames = '!p-1 transition-opacity';
27
30
 
28
31
  export type MessageContainerProps = {
29
- message: DataType.Message;
32
+ message: Obj.Obj<Message.Message> | Ref.Ref<Obj.Obj<Message.Message>>;
30
33
  members: SpaceMember[];
31
34
  editable?: boolean;
32
35
  onDelete?: (id: string) => void;
@@ -34,30 +37,55 @@ export type MessageContainerProps = {
34
37
  };
35
38
 
36
39
  export const MessageContainer = ({
37
- message,
40
+ message: messageOrRef,
38
41
  members,
39
42
  editable = false,
40
43
  onDelete,
41
44
  onAcceptProposal,
42
45
  }: MessageContainerProps) => {
43
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
+
44
79
  const senderIdentity = members.find(
45
80
  (member) =>
46
81
  (message.sender.identityDid && member.identity.did === message.sender.identityDid) ||
47
82
  (message.sender.identityKey && PublicKey.equals(member.identity.identityKey, message.sender.identityKey)),
48
83
  )?.identity;
49
84
  const messageMetadata = getMessageMetadata(message.id, senderIdentity);
50
- const userIsAuthor = useIdentity()?.did === messageMetadata.authorId;
51
- const [editing, setEditing] = useState(false);
52
- const handleEdit = useCallback(() => setEditing((editing) => !editing), []);
53
- const handleDelete = useCallback(() => onDelete?.(message.id), [message, onDelete]);
54
- const handleAcceptProposal = useCallback(() => onAcceptProposal?.(message.id), [message, onAcceptProposal]);
55
- const textBlock = message.blocks.find((block) => block._tag === 'text');
85
+ const userIsAuthor = identity?.did === messageMetadata.authorId;
56
86
  const proposalBlock = message.blocks.find((block) => block._tag === 'proposal');
57
87
  const references = message.blocks.filter((block) => block._tag === 'reference').map((block) => block.reference);
58
88
 
59
- useOnEditAnalytics(message, textBlock, !!editing);
60
-
61
89
  return (
62
90
  <MessageRoot {...messageMetadata} classNames={[hoverableControls, hoverableFocusedWithinControls]}>
63
91
  <MessageHeading authorName={messageMetadata.authorName} timestamp={messageMetadata.timestamp}>
@@ -98,16 +126,18 @@ export const MessageContainer = ({
98
126
  )}
99
127
  </div>
100
128
  </MessageHeading>
101
- {textBlock && <TextboxBlock block={textBlock} isAuthor={userIsAuthor} editing={editing} />}
129
+ {textBlock && (
130
+ <TextboxBlock block={textBlock} isAuthor={userIsAuthor} editing={editing} onSave={handleTextBlockChange} />
131
+ )}
102
132
  {proposalBlock && <ProposalBlock block={proposalBlock} />}
103
133
  {Ref.Array.targets(references).map((reference, index) => (
104
- <MessagePart key={index} part={reference} />
134
+ <MessagePart key={index} part={reference as Obj.Unknown} />
105
135
  ))}
106
136
  </MessageRoot>
107
137
  );
108
138
  };
109
139
 
110
- const MessagePart = ({ part }: { part: Type.Expando }) => {
140
+ const MessagePart = ({ part }: { part: Obj.Unknown }) => {
111
141
  return <MessageBlockObjectTile subject={part} />;
112
142
  };
113
143
 
@@ -115,11 +145,13 @@ const TextboxBlock = ({
115
145
  block,
116
146
  isAuthor,
117
147
  editing,
148
+ onSave,
118
149
  }: {
119
- block: DataType.MessageBlock.Text;
150
+ block: ContentBlock.Text;
120
151
  editing?: boolean;
121
152
  isAuthor?: boolean;
122
153
  identity?: Identity;
154
+ onSave?: (newText: string) => void;
123
155
  }) => {
124
156
  const { themeMode } = useThemeContext();
125
157
  const inMemoryContentRef = useRef(block.text);
@@ -129,8 +161,8 @@ const TextboxBlock = ({
129
161
  }, []);
130
162
 
131
163
  const saveDocumentChange = useCallback(() => {
132
- block.text = inMemoryContentRef.current;
133
- }, [block]);
164
+ onSave?.(inMemoryContentRef.current);
165
+ }, [onSave]);
134
166
 
135
167
  useOnTransition(editing, true, false, saveDocumentChange);
136
168
 
@@ -158,7 +190,7 @@ const TextboxBlock = ({
158
190
  return <div role='none' ref={parentRef} className='mie-4' {...focusAttributes} />;
159
191
  };
160
192
 
161
- const ProposalBlock = ({ block }: { block: DataType.MessageBlock.Proposal }) => {
193
+ const ProposalBlock = ({ block }: { block: ContentBlock.Proposal }) => {
162
194
  return (
163
195
  <div role='none' className='mie-4 italic'>
164
196
  {block.text}
@@ -166,7 +198,7 @@ const ProposalBlock = ({ block }: { block: DataType.MessageBlock.Proposal }) =>
166
198
  );
167
199
  };
168
200
 
169
- const MessageBlockObjectTile = forwardRef<HTMLDivElement, { subject: Obj.Any }>(({ subject }, forwardedRef) => {
201
+ const MessageBlockObjectTile = forwardRef<HTMLDivElement, { subject: Obj.Unknown }>(({ subject }, forwardedRef) => {
170
202
  // TODO(burdon): Use annotation to get title.
171
203
  let title = (subject as any).name ?? (subject as any).title ?? (subject as any).type ?? 'Object';
172
204
  if (typeof title !== 'string') {
@@ -174,12 +206,11 @@ const MessageBlockObjectTile = forwardRef<HTMLDivElement, { subject: Obj.Any }>(
174
206
  }
175
207
 
176
208
  return (
177
- <div
178
- role='group'
179
- className={mx('grid col-span-3 py-1 pr-4', hoverableControls, hoverableFocusedWithinControls)}
209
+ <Card.Root
210
+ className={mx('grid col-span-3 plb-1 pr-4', hoverableControls, hoverableFocusedWithinControls)}
180
211
  ref={forwardedRef}
181
212
  >
182
- <Surface role='card' limit={1} data={{ subject }} fallback={title} />
183
- </div>
213
+ <Surface role='card-content' limit={1} data={{ subject }} fallback={title} />
214
+ </Card.Root>
184
215
  );
185
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
- import { useCapability } from '@dxos/app-framework';
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.
@@ -18,11 +18,11 @@ import { mx } from '@dxos/react-ui-theme';
18
18
  export const ResponsiveContainer = ({ children }: PropsWithChildren) => {
19
19
  return (
20
20
  // Outer container that takes full size of parent.
21
- <div role='none' className='relative flex w-full h-full'>
21
+ <div role='none' className='relative flex is-full bs-full'>
22
22
  {/* Absolute positioning layer for centering content. */}
23
23
  <div role='none' className='absolute inset-0 flex justify-center items-center'>
24
24
  {/* Content container that maintains given aspect ratio and proper scaling. */}
25
- <div role='none' className={mx('max-h-full max-w-full w-auto h-auto aspect-video')}>
25
+ <div role='none' className={mx('max-bs-full max-is-full is-auto bs-auto aspect-video')}>
26
26
  {children}
27
27
  </div>
28
28
  </div>
@@ -41,7 +41,7 @@ const TestCell = ({ item, ...props }: ResponsiveGridItemProps<TestItem>) => {
41
41
  {item.type === 'image' && <img className='aspect-video object-contain' src={item.imageUrl} />}
42
42
  {item.type === 'video' && (
43
43
  <video
44
- className='w-full aspect-video object-cover rounded-md'
44
+ className='is-full aspect-video object-cover rounded-md'
45
45
  src={item.videoUrl}
46
46
  playsInline
47
47
  autoPlay
@@ -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';
@@ -18,7 +18,7 @@ const MIN_GALLERY_HEIGHT = 250;
18
18
 
19
19
  const DEFAULT_GAP = 8;
20
20
 
21
- const maxImageSize = 'w-[2560px] h-[1440px]';
21
+ const maxImageSize = 'is-[2560px] bs-[1440px]';
22
22
 
23
23
  /**
24
24
  * Props for the ResponsiveGrid component.
@@ -136,13 +136,13 @@ export const ResponsiveGrid = <T extends object = any>({
136
136
  );
137
137
 
138
138
  return (
139
- <div ref={containerRef} className={mx('relative w-full h-full', classNames)}>
139
+ <div ref={containerRef} className={mx('relative is-full bs-full', classNames)}>
140
140
  {/* Placeholder elements to calculate layout. */}
141
141
  <div className='absolute inset-0 flex flex-col grow gap-2'>
142
142
  {/* Pinned item. */}
143
143
  {pinnedItem && (
144
144
  <div
145
- className={mx('flex grow-[2] shrink overflow-hidden justify-center items-center', hideGallery && 'h-full')}
145
+ className={mx('flex grow-[2] shrink overflow-hidden justify-center items-center', hideGallery && 'bs-full')}
146
146
  style={hideGallery ? {} : { height: dividerHeight }}
147
147
  >
148
148
  <SoloItem id={getId(pinnedItem)} debug={debug} />
@@ -157,7 +157,7 @@ export const ResponsiveGrid = <T extends object = any>({
157
157
  style={hideGallery ? {} : { minHeight: MIN_GALLERY_HEIGHT }}
158
158
  >
159
159
  {mainItems.length === 1 && (
160
- <div style={{ width: cellWidth }} className='flex h-full'>
160
+ <div style={{ width: cellWidth }} className='flex bs-full'>
161
161
  <SoloItem id={getId(mainItems[0])} debug={debug} />
162
162
  </div>
163
163
  )}
@@ -176,7 +176,7 @@ export const ResponsiveGrid = <T extends object = any>({
176
176
  key={getId(item)}
177
177
  {...{ 'data-grid-item': getId(item) }}
178
178
  className={mx(
179
- 'aspect-video max-h-full max-w-full w-auto h-auto',
179
+ 'aspect-video max-bs-full max-is-full is-auto bs-auto',
180
180
  debug && 'border border-primary-500',
181
181
  )}
182
182
  />
@@ -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
 
@@ -76,7 +76,7 @@ export const ResponsiveGridItem = <T extends object = any>({
76
76
  return (
77
77
  <div
78
78
  className={mx(
79
- 'relative w-full h-full group',
79
+ 'relative is-full bs-full group',
80
80
  'rounded-md outline outline-2 outline-neutral-900 transition-[outline-color] duration-500',
81
81
  speakingIndicator ? 'outline-green-500' : !video && 'outline-separator',
82
82
  classNames,
@@ -106,7 +106,10 @@ export const ResponsiveGridItem = <T extends object = any>({
106
106
  {/* {self && <Icon icon='ph--asterisk--regular' size={pinned ? 5 : 4} />} */}
107
107
  {screenshare && <Icon icon='ph--broadcast--regular' size={pinned ? 5 : 4} />}
108
108
  <div
109
- className={mx('bg-neutral-800 text-neutral-100 py-0.5 truncate rounded', pinned ? 'px-2' : 'px-1 text-xs')}
109
+ className={mx(
110
+ 'bg-neutral-800 text-neutral-100 plb-0.5 truncate rounded',
111
+ pinned ? 'pli-2' : 'pli-1 text-xs',
112
+ )}
110
113
  >
111
114
  {name}
112
115
  </div>