@dxos/plugin-thread 0.8.3 → 0.8.4-main.1da679c

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 (325) hide show
  1. package/dist/lib/browser/ChannelContainer-EICZI7H6.mjs +16 -0
  2. package/dist/lib/browser/ChatContainer-EXNNREYB.mjs +15 -0
  3. package/dist/lib/browser/{app-graph-builder-OY7R7EJP.mjs → app-graph-builder-B5GYUSJ2.mjs} +10 -10
  4. package/dist/lib/browser/app-graph-builder-B5GYUSJ2.mjs.map +7 -0
  5. package/dist/lib/browser/{call-manager-APQAZWHT.mjs → call-manager-ZXNHLSXU.mjs} +8 -7
  6. package/dist/lib/browser/call-manager-ZXNHLSXU.mjs.map +7 -0
  7. package/dist/lib/browser/{chunk-R5MDLUPC.mjs → chunk-4APCDRSH.mjs} +3 -3
  8. package/dist/lib/browser/{chunk-R5MDLUPC.mjs.map → chunk-4APCDRSH.mjs.map} +1 -1
  9. package/dist/lib/browser/{chunk-PG5CTFKK.mjs → chunk-5GOEKXWF.mjs} +230 -160
  10. package/dist/lib/browser/chunk-5GOEKXWF.mjs.map +7 -0
  11. package/dist/lib/browser/chunk-6L5JSXLF.mjs +23 -0
  12. package/dist/lib/browser/{chunk-6NBVNXTM.mjs.map → chunk-6L5JSXLF.mjs.map} +3 -3
  13. package/dist/lib/browser/{chunk-XZKBN3NS.mjs → chunk-7W7QK5ZP.mjs} +253 -250
  14. package/dist/lib/browser/chunk-7W7QK5ZP.mjs.map +7 -0
  15. package/dist/lib/browser/{chunk-IIUTBDVB.mjs → chunk-EV4JWI7L.mjs} +2 -2
  16. package/dist/lib/browser/{chunk-JKQUJOTX.mjs → chunk-GERVMFQW.mjs} +2 -2
  17. package/dist/lib/browser/{chunk-AEXWNS6Z.mjs → chunk-KTWYVC5X.mjs} +34 -15
  18. package/dist/lib/browser/chunk-KTWYVC5X.mjs.map +7 -0
  19. package/dist/lib/browser/{chunk-TAFSCSUR.mjs → chunk-PBMNFG3B.mjs} +97 -72
  20. package/dist/lib/browser/chunk-PBMNFG3B.mjs.map +7 -0
  21. package/dist/lib/browser/chunk-RI3Z6MK3.mjs +181 -0
  22. package/dist/lib/browser/chunk-RI3Z6MK3.mjs.map +7 -0
  23. package/dist/lib/browser/chunk-XYUJXHYV.mjs +106 -0
  24. package/dist/lib/browser/chunk-XYUJXHYV.mjs.map +7 -0
  25. package/dist/lib/browser/{chunk-4H4A264L.mjs → chunk-ZCEU5K23.mjs} +490 -308
  26. package/dist/lib/browser/chunk-ZCEU5K23.mjs.map +7 -0
  27. package/dist/lib/browser/index.mjs +49 -44
  28. package/dist/lib/browser/index.mjs.map +3 -3
  29. package/dist/lib/browser/{intent-resolver-FK2MDVDT.mjs → intent-resolver-UZNJ2YDK.mjs} +92 -18
  30. package/dist/lib/browser/intent-resolver-UZNJ2YDK.mjs.map +7 -0
  31. package/dist/lib/browser/{markdown-TE5SWWNJ.mjs → markdown-II2YTQDX.mjs} +10 -10
  32. package/dist/lib/browser/markdown-II2YTQDX.mjs.map +7 -0
  33. package/dist/lib/browser/meta.json +1 -1
  34. package/dist/lib/browser/react-root-5SOWYI62.mjs +28 -0
  35. package/dist/lib/{node-esm/react-root-RUXOAQNW.mjs.map → browser/react-root-5SOWYI62.mjs.map} +1 -1
  36. package/dist/lib/browser/{react-surface-VXUJKSOG.mjs → react-surface-3Z3WJYVP.mjs} +14 -13
  37. package/dist/lib/browser/react-surface-3Z3WJYVP.mjs.map +7 -0
  38. package/dist/lib/browser/{settings-RB2RSLXV.mjs → settings-OR2QP3OU.mjs} +6 -6
  39. package/dist/lib/browser/{settings-RB2RSLXV.mjs.map → settings-OR2QP3OU.mjs.map} +1 -1
  40. package/dist/lib/browser/{state-RKL5MSDP.mjs → state-JAWCHYCK.mjs} +6 -6
  41. package/dist/lib/browser/state-JAWCHYCK.mjs.map +7 -0
  42. package/dist/lib/browser/toolkit-AU6POUKA.mjs +80 -0
  43. package/dist/lib/browser/toolkit-AU6POUKA.mjs.map +7 -0
  44. package/dist/lib/browser/types/index.mjs +2 -2
  45. package/dist/lib/node-esm/ChannelContainer-FLZZCFBA.mjs +17 -0
  46. package/dist/lib/node-esm/{ChatContainer-F6CSADV7.mjs → ChatContainer-QVQKFBWA.mjs} +6 -5
  47. package/dist/lib/node-esm/{app-graph-builder-BAHBHYWI.mjs → app-graph-builder-MQ6T5HPO.mjs} +10 -10
  48. package/dist/lib/node-esm/app-graph-builder-MQ6T5HPO.mjs.map +7 -0
  49. package/dist/lib/node-esm/{call-manager-UUYXLF4T.mjs → call-manager-KUWBOOOE.mjs} +8 -7
  50. package/dist/lib/node-esm/call-manager-KUWBOOOE.mjs.map +7 -0
  51. package/dist/lib/node-esm/chunk-2V3WSLUZ.mjs +108 -0
  52. package/dist/lib/node-esm/chunk-2V3WSLUZ.mjs.map +7 -0
  53. package/dist/lib/node-esm/{chunk-PGRP3O4O.mjs → chunk-57XR3LEF.mjs} +2 -2
  54. package/dist/lib/node-esm/{chunk-P6RLFCNT.mjs → chunk-DKCQCENK.mjs} +97 -72
  55. package/dist/lib/node-esm/chunk-DKCQCENK.mjs.map +7 -0
  56. package/dist/lib/node-esm/{chunk-ESQC6SYE.mjs → chunk-GRLRWTRU.mjs} +2 -2
  57. package/dist/lib/node-esm/chunk-JNPKMT7O.mjs +182 -0
  58. package/dist/lib/node-esm/chunk-JNPKMT7O.mjs.map +7 -0
  59. package/dist/lib/node-esm/chunk-LKQE2HID.mjs +25 -0
  60. package/dist/lib/node-esm/{chunk-O63QJPQX.mjs.map → chunk-LKQE2HID.mjs.map} +3 -3
  61. package/dist/lib/node-esm/{chunk-UJMPYKT3.mjs → chunk-P6E247RF.mjs} +34 -15
  62. package/dist/lib/node-esm/chunk-P6E247RF.mjs.map +7 -0
  63. package/dist/lib/node-esm/{chunk-K4KAUOKT.mjs → chunk-PYTVBN5J.mjs} +3 -3
  64. package/dist/lib/node-esm/{chunk-K4KAUOKT.mjs.map → chunk-PYTVBN5J.mjs.map} +1 -1
  65. package/dist/lib/node-esm/{chunk-2RNIPFDA.mjs → chunk-SNKFZQST.mjs} +253 -250
  66. package/dist/lib/node-esm/chunk-SNKFZQST.mjs.map +7 -0
  67. package/dist/lib/node-esm/{chunk-WXNPD542.mjs → chunk-TIPIOH2J.mjs} +489 -308
  68. package/dist/lib/node-esm/chunk-TIPIOH2J.mjs.map +7 -0
  69. package/dist/lib/node-esm/{chunk-UZWVVFT3.mjs → chunk-XXMQULU7.mjs} +230 -160
  70. package/dist/lib/node-esm/chunk-XXMQULU7.mjs.map +7 -0
  71. package/dist/lib/node-esm/index.mjs +49 -44
  72. package/dist/lib/node-esm/index.mjs.map +3 -3
  73. package/dist/lib/node-esm/{intent-resolver-BU73VYW3.mjs → intent-resolver-HFCMCWWL.mjs} +92 -18
  74. package/dist/lib/node-esm/intent-resolver-HFCMCWWL.mjs.map +7 -0
  75. package/dist/lib/node-esm/{markdown-HJUWNBLS.mjs → markdown-5ULETN3T.mjs} +10 -10
  76. package/dist/lib/node-esm/markdown-5ULETN3T.mjs.map +7 -0
  77. package/dist/lib/node-esm/meta.json +1 -1
  78. package/dist/lib/node-esm/react-root-YNTMWDXR.mjs +29 -0
  79. package/dist/lib/{browser/react-root-NK3A4VG7.mjs.map → node-esm/react-root-YNTMWDXR.mjs.map} +1 -1
  80. package/dist/lib/node-esm/{react-surface-ELXFYKP6.mjs → react-surface-QMNLDBFM.mjs} +14 -13
  81. package/dist/lib/node-esm/react-surface-QMNLDBFM.mjs.map +7 -0
  82. package/dist/lib/node-esm/{settings-EA7DFSM6.mjs → settings-WGHLJ37H.mjs} +6 -6
  83. package/dist/lib/node-esm/{settings-EA7DFSM6.mjs.map → settings-WGHLJ37H.mjs.map} +1 -1
  84. package/dist/lib/node-esm/{state-6AUTNROZ.mjs → state-VN6GE5MY.mjs} +6 -6
  85. package/dist/lib/node-esm/state-VN6GE5MY.mjs.map +7 -0
  86. package/dist/lib/node-esm/toolkit-TLMJIYXI.mjs +81 -0
  87. package/dist/lib/node-esm/toolkit-TLMJIYXI.mjs.map +7 -0
  88. package/dist/lib/node-esm/types/index.mjs +2 -2
  89. package/dist/types/src/ThreadPlugin.d.ts.map +1 -1
  90. package/dist/types/src/calls/call-manager.d.ts +1 -1
  91. package/dist/types/src/calls/call-manager.d.ts.map +1 -1
  92. package/dist/types/src/calls/call-swarm-synchronizer.d.ts.map +1 -1
  93. package/dist/types/src/calls/media-manager.d.ts +1 -1
  94. package/dist/types/src/calls/media-manager.d.ts.map +1 -1
  95. package/dist/types/src/calls/types.d.ts +1 -1
  96. package/dist/types/src/calls/types.d.ts.map +1 -1
  97. package/dist/types/src/calls/util/calls-service.d.ts +8 -3
  98. package/dist/types/src/calls/util/calls-service.d.ts.map +1 -1
  99. package/dist/types/src/calls/util/stub-media-streams.d.ts.map +1 -1
  100. package/dist/types/src/calls-service.stories.d.ts +24 -0
  101. package/dist/types/src/calls-service.stories.d.ts.map +1 -0
  102. package/dist/types/src/capabilities/app-graph-builder.d.ts +1 -1
  103. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  104. package/dist/types/src/capabilities/call-manager.d.ts +1 -1
  105. package/dist/types/src/capabilities/call-manager.d.ts.map +1 -1
  106. package/dist/types/src/capabilities/capabilities.d.ts +2 -2
  107. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  108. package/dist/types/src/capabilities/index.d.ts +11 -10
  109. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  110. package/dist/types/src/capabilities/intent-resolver.d.ts +1 -1
  111. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  112. package/dist/types/src/capabilities/markdown.d.ts +1 -1
  113. package/dist/types/src/capabilities/markdown.d.ts.map +1 -1
  114. package/dist/types/src/capabilities/react-root.d.ts +2 -2
  115. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  116. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  117. package/dist/types/src/capabilities/settings.d.ts +1 -1
  118. package/dist/types/src/capabilities/state.d.ts +2 -2
  119. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  120. package/dist/types/src/capabilities/toolkit.d.ts +5 -0
  121. package/dist/types/src/capabilities/toolkit.d.ts.map +1 -0
  122. package/dist/types/src/components/Call/Call.d.ts.map +1 -1
  123. package/dist/types/src/components/Call/Toolbar.d.ts.map +1 -1
  124. package/dist/types/src/components/CallDebugPanel.d.ts +7 -0
  125. package/dist/types/src/components/CallDebugPanel.d.ts.map +1 -1
  126. package/dist/types/src/components/CallSidebar.d.ts.map +1 -1
  127. package/dist/types/src/components/ChannelContainer.d.ts.map +1 -1
  128. package/dist/types/src/components/ChannelContainer.stories.d.ts +89 -4
  129. package/dist/types/src/components/ChannelContainer.stories.d.ts.map +1 -1
  130. package/dist/types/src/components/Chat.stories.d.ts +90 -3
  131. package/dist/types/src/components/Chat.stories.d.ts.map +1 -1
  132. package/dist/types/src/components/ChatContainer.d.ts +2 -2
  133. package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
  134. package/dist/types/src/components/Comments.stories.d.ts +156 -3
  135. package/dist/types/src/components/Comments.stories.d.ts.map +1 -1
  136. package/dist/types/src/components/CommentsContainer.d.ts +4 -4
  137. package/dist/types/src/components/CommentsContainer.d.ts.map +1 -1
  138. package/dist/types/src/components/CommentsThreadContainer.d.ts +14 -0
  139. package/dist/types/src/components/CommentsThreadContainer.d.ts.map +1 -0
  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 +15 -3
  143. package/dist/types/src/components/Media/VideoObject.stories.d.ts.map +1 -1
  144. package/dist/types/src/components/MessageContainer.d.ts +4 -1
  145. package/dist/types/src/components/MessageContainer.d.ts.map +1 -1
  146. package/dist/types/src/components/Participant/Participant.d.ts.map +1 -1
  147. package/dist/types/src/components/Participant/ParticipantGrid.d.ts.map +1 -1
  148. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts +154 -2
  149. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts.map +1 -1
  150. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts +156 -3
  151. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts.map +1 -1
  152. package/dist/types/src/components/ResponsiveGrid/ResponsiveGridItem.d.ts.map +1 -1
  153. package/dist/types/src/components/ThreadComplementary.d.ts.map +1 -1
  154. package/dist/types/src/components/ThreadSettings.d.ts +1 -1
  155. package/dist/types/src/components/ThreadSettings.d.ts.map +1 -1
  156. package/dist/types/src/components/command-extension.d.ts.map +1 -1
  157. package/dist/types/src/components/index.d.ts +1 -1
  158. package/dist/types/src/components/index.d.ts.map +1 -1
  159. package/dist/types/src/components/testing.d.ts +1 -0
  160. package/dist/types/src/components/testing.d.ts.map +1 -1
  161. package/dist/types/src/extensions/threads.d.ts +2 -2
  162. package/dist/types/src/extensions/threads.d.ts.map +1 -1
  163. package/dist/types/src/hooks/index.d.ts +3 -0
  164. package/dist/types/src/hooks/index.d.ts.map +1 -1
  165. package/dist/types/src/hooks/useBlackCanvasStreamTrack.d.ts +2 -0
  166. package/dist/types/src/hooks/useBlackCanvasStreamTrack.d.ts.map +1 -0
  167. package/dist/types/src/hooks/useInaudibleAudioStreamTrack.d.ts +2 -0
  168. package/dist/types/src/hooks/useInaudibleAudioStreamTrack.d.ts.map +1 -0
  169. package/dist/types/src/hooks/useVideoStreamTrack.d.ts +3 -0
  170. package/dist/types/src/hooks/useVideoStreamTrack.d.ts.map +1 -0
  171. package/dist/types/src/testing/stories.d.ts.map +1 -1
  172. package/dist/types/src/translations.d.ts +76 -194
  173. package/dist/types/src/translations.d.ts.map +1 -1
  174. package/dist/types/src/types/schema.d.ts +125 -81
  175. package/dist/types/src/types/schema.d.ts.map +1 -1
  176. package/dist/types/src/types/types.d.ts +270 -139
  177. package/dist/types/src/types/types.d.ts.map +1 -1
  178. package/dist/types/src/util.d.ts +17 -2
  179. package/dist/types/src/util.d.ts.map +1 -1
  180. package/dist/types/tsconfig.tsbuildinfo +1 -1
  181. package/package.json +56 -53
  182. package/src/ThreadPlugin.tsx +16 -24
  183. package/src/calls/call-manager.ts +8 -4
  184. package/src/calls/call-swarm-synchronizer.ts +1 -1
  185. package/src/calls/media-manager.ts +70 -37
  186. package/src/calls/types.ts +8 -4
  187. package/src/calls/util/calls-service.ts +72 -18
  188. package/src/calls/util/stub-media-streams.ts +62 -8
  189. package/src/calls-service.stories.tsx +232 -0
  190. package/src/capabilities/app-graph-builder.ts +8 -5
  191. package/src/capabilities/call-manager.ts +3 -2
  192. package/src/capabilities/capabilities.ts +2 -2
  193. package/src/capabilities/index.ts +1 -0
  194. package/src/capabilities/intent-resolver.ts +60 -8
  195. package/src/capabilities/markdown.ts +4 -3
  196. package/src/capabilities/react-surface.tsx +5 -4
  197. package/src/capabilities/state.ts +2 -1
  198. package/src/capabilities/toolkit.ts +78 -0
  199. package/src/components/Call/Call.tsx +4 -3
  200. package/src/components/Call/Toolbar.tsx +8 -8
  201. package/src/components/CallDebugPanel.tsx +110 -51
  202. package/src/components/CallSidebar.tsx +2 -1
  203. package/src/components/ChannelContainer.stories.tsx +11 -10
  204. package/src/components/ChannelContainer.tsx +13 -11
  205. package/src/components/Chat.stories.tsx +29 -27
  206. package/src/components/ChatContainer.tsx +20 -15
  207. package/src/components/Comments.stories.tsx +52 -41
  208. package/src/components/CommentsContainer.tsx +17 -11
  209. package/src/components/{CommentContainer.tsx → CommentsThreadContainer.tsx} +53 -82
  210. package/src/components/Lobby/Lobby.tsx +1 -1
  211. package/src/components/Media/VideoObject.stories.tsx +30 -27
  212. package/src/components/MessageContainer.tsx +65 -47
  213. package/src/components/Participant/Participant.tsx +13 -7
  214. package/src/components/Participant/ParticipantGrid.tsx +2 -1
  215. package/src/components/ResponsiveGrid/ResponsiveContainer.stories.tsx +7 -6
  216. package/src/components/ResponsiveGrid/ResponsiveGrid.stories.tsx +42 -39
  217. package/src/components/ResponsiveGrid/ResponsiveGrid.tsx +1 -1
  218. package/src/components/ResponsiveGrid/ResponsiveGridItem.tsx +4 -4
  219. package/src/components/ThreadComplementary.tsx +40 -10
  220. package/src/components/ThreadSettings.tsx +6 -7
  221. package/src/components/command-extension.ts +5 -2
  222. package/src/components/index.ts +1 -1
  223. package/src/components/testing.ts +24 -2
  224. package/src/extensions/threads.ts +6 -6
  225. package/src/hooks/index.ts +3 -0
  226. package/src/hooks/useBlackCanvasStreamTrack.tsx +27 -0
  227. package/src/hooks/useDebugMode.ts +1 -1
  228. package/src/hooks/useInaudibleAudioStreamTrack.tsx +27 -0
  229. package/src/hooks/useVideoStreamTrack.tsx +36 -0
  230. package/src/testing/stories.ts +7 -3
  231. package/src/translations.ts +14 -9
  232. package/src/types/types.ts +28 -11
  233. package/src/typings/peermetrics-webrtc-stats.d.ts +17 -1
  234. package/src/typings.d.ts +8 -0
  235. package/dist/lib/browser/ChannelContainer-PKFBVENP.mjs +0 -15
  236. package/dist/lib/browser/ChatContainer-RSOKYAMK.mjs +0 -14
  237. package/dist/lib/browser/app-graph-builder-OY7R7EJP.mjs.map +0 -7
  238. package/dist/lib/browser/call-manager-APQAZWHT.mjs.map +0 -7
  239. package/dist/lib/browser/chunk-4H4A264L.mjs.map +0 -7
  240. package/dist/lib/browser/chunk-5P5BH5GE.mjs +0 -88
  241. package/dist/lib/browser/chunk-5P5BH5GE.mjs.map +0 -7
  242. package/dist/lib/browser/chunk-6NBVNXTM.mjs +0 -21
  243. package/dist/lib/browser/chunk-AEXWNS6Z.mjs.map +0 -7
  244. package/dist/lib/browser/chunk-PG5CTFKK.mjs.map +0 -7
  245. package/dist/lib/browser/chunk-TAFSCSUR.mjs.map +0 -7
  246. package/dist/lib/browser/chunk-XZKBN3NS.mjs.map +0 -7
  247. package/dist/lib/browser/intent-resolver-FK2MDVDT.mjs.map +0 -7
  248. package/dist/lib/browser/markdown-TE5SWWNJ.mjs.map +0 -7
  249. package/dist/lib/browser/react-root-NK3A4VG7.mjs +0 -27
  250. package/dist/lib/browser/react-surface-VXUJKSOG.mjs.map +0 -7
  251. package/dist/lib/browser/state-RKL5MSDP.mjs.map +0 -7
  252. package/dist/lib/node/ChannelContainer-YS5YT2ML.cjs +0 -36
  253. package/dist/lib/node/ChannelContainer-YS5YT2ML.cjs.map +0 -7
  254. package/dist/lib/node/ChatContainer-GCOM3M56.cjs +0 -35
  255. package/dist/lib/node/ChatContainer-GCOM3M56.cjs.map +0 -7
  256. package/dist/lib/node/app-graph-builder-PBHJNDQY.cjs +0 -179
  257. package/dist/lib/node/app-graph-builder-PBHJNDQY.cjs.map +0 -7
  258. package/dist/lib/node/call-manager-HV2XJW5O.cjs +0 -37
  259. package/dist/lib/node/call-manager-HV2XJW5O.cjs.map +0 -7
  260. package/dist/lib/node/chunk-44I33JDT.cjs +0 -1731
  261. package/dist/lib/node/chunk-44I33JDT.cjs.map +0 -7
  262. package/dist/lib/node/chunk-4YSNVPWU.cjs +0 -37
  263. package/dist/lib/node/chunk-4YSNVPWU.cjs.map +0 -7
  264. package/dist/lib/node/chunk-E3WBZTTI.cjs +0 -371
  265. package/dist/lib/node/chunk-E3WBZTTI.cjs.map +0 -7
  266. package/dist/lib/node/chunk-ERG7G6FF.cjs +0 -59
  267. package/dist/lib/node/chunk-ERG7G6FF.cjs.map +0 -7
  268. package/dist/lib/node/chunk-FUXJAVFZ.cjs +0 -108
  269. package/dist/lib/node/chunk-FUXJAVFZ.cjs.map +0 -7
  270. package/dist/lib/node/chunk-HLMCEE5K.cjs +0 -41
  271. package/dist/lib/node/chunk-HLMCEE5K.cjs.map +0 -7
  272. package/dist/lib/node/chunk-IP533AMV.cjs +0 -554
  273. package/dist/lib/node/chunk-IP533AMV.cjs.map +0 -7
  274. package/dist/lib/node/chunk-LR5NENBE.cjs +0 -54
  275. package/dist/lib/node/chunk-LR5NENBE.cjs.map +0 -7
  276. package/dist/lib/node/chunk-UM36TPCT.cjs +0 -984
  277. package/dist/lib/node/chunk-UM36TPCT.cjs.map +0 -7
  278. package/dist/lib/node/chunk-ZGDN3XBR.cjs +0 -149
  279. package/dist/lib/node/chunk-ZGDN3XBR.cjs.map +0 -7
  280. package/dist/lib/node/index.cjs +0 -310
  281. package/dist/lib/node/index.cjs.map +0 -7
  282. package/dist/lib/node/intent-resolver-SYSJ5SJG.cjs +0 -363
  283. package/dist/lib/node/intent-resolver-SYSJ5SJG.cjs.map +0 -7
  284. package/dist/lib/node/markdown-GQIPJS2F.cjs +0 -178
  285. package/dist/lib/node/markdown-GQIPJS2F.cjs.map +0 -7
  286. package/dist/lib/node/meta.json +0 -1
  287. package/dist/lib/node/react-root-6HHDMULJ.cjs +0 -51
  288. package/dist/lib/node/react-root-6HHDMULJ.cjs.map +0 -7
  289. package/dist/lib/node/react-surface-NBH42NN2.cjs +0 -122
  290. package/dist/lib/node/react-surface-NBH42NN2.cjs.map +0 -7
  291. package/dist/lib/node/settings-4LQSFEDK.cjs +0 -36
  292. package/dist/lib/node/settings-4LQSFEDK.cjs.map +0 -7
  293. package/dist/lib/node/state-IY5XX3H2.cjs +0 -50
  294. package/dist/lib/node/state-IY5XX3H2.cjs.map +0 -7
  295. package/dist/lib/node/types/index.cjs +0 -38
  296. package/dist/lib/node/types/index.cjs.map +0 -7
  297. package/dist/lib/node-esm/ChannelContainer-O4QJII2P.mjs +0 -16
  298. package/dist/lib/node-esm/app-graph-builder-BAHBHYWI.mjs.map +0 -7
  299. package/dist/lib/node-esm/call-manager-UUYXLF4T.mjs.map +0 -7
  300. package/dist/lib/node-esm/chunk-2RNIPFDA.mjs.map +0 -7
  301. package/dist/lib/node-esm/chunk-O3V45YJP.mjs +0 -90
  302. package/dist/lib/node-esm/chunk-O3V45YJP.mjs.map +0 -7
  303. package/dist/lib/node-esm/chunk-O63QJPQX.mjs +0 -23
  304. package/dist/lib/node-esm/chunk-P6RLFCNT.mjs.map +0 -7
  305. package/dist/lib/node-esm/chunk-UJMPYKT3.mjs.map +0 -7
  306. package/dist/lib/node-esm/chunk-UZWVVFT3.mjs.map +0 -7
  307. package/dist/lib/node-esm/chunk-WXNPD542.mjs.map +0 -7
  308. package/dist/lib/node-esm/intent-resolver-BU73VYW3.mjs.map +0 -7
  309. package/dist/lib/node-esm/markdown-HJUWNBLS.mjs.map +0 -7
  310. package/dist/lib/node-esm/react-root-RUXOAQNW.mjs +0 -28
  311. package/dist/lib/node-esm/react-surface-ELXFYKP6.mjs.map +0 -7
  312. package/dist/lib/node-esm/state-6AUTNROZ.mjs.map +0 -7
  313. package/dist/types/src/components/CommentContainer.d.ts +0 -13
  314. package/dist/types/src/components/CommentContainer.d.ts.map +0 -1
  315. package/dist/types/src/peers.stories.d.ts +0 -11
  316. package/dist/types/src/peers.stories.d.ts.map +0 -1
  317. package/src/peers.stories.tsx +0 -189
  318. /package/dist/lib/browser/{ChannelContainer-PKFBVENP.mjs.map → ChannelContainer-EICZI7H6.mjs.map} +0 -0
  319. /package/dist/lib/browser/{ChatContainer-RSOKYAMK.mjs.map → ChatContainer-EXNNREYB.mjs.map} +0 -0
  320. /package/dist/lib/browser/{chunk-IIUTBDVB.mjs.map → chunk-EV4JWI7L.mjs.map} +0 -0
  321. /package/dist/lib/browser/{chunk-JKQUJOTX.mjs.map → chunk-GERVMFQW.mjs.map} +0 -0
  322. /package/dist/lib/node-esm/{ChannelContainer-O4QJII2P.mjs.map → ChannelContainer-FLZZCFBA.mjs.map} +0 -0
  323. /package/dist/lib/node-esm/{ChatContainer-F6CSADV7.mjs.map → ChatContainer-QVQKFBWA.mjs.map} +0 -0
  324. /package/dist/lib/node-esm/{chunk-PGRP3O4O.mjs.map → chunk-57XR3LEF.mjs.map} +0 -0
  325. /package/dist/lib/node-esm/{chunk-ESQC6SYE.mjs.map → chunk-GRLRWTRU.mjs.map} +0 -0
@@ -3,26 +3,28 @@
3
3
  //
4
4
 
5
5
  import { Rx } from '@effect-rx/rx-react';
6
- import React, { useCallback, useEffect, useMemo, useState, type ChangeEvent } from 'react';
6
+ import React, { type ChangeEvent, useCallback, useEffect, useMemo, useState } from 'react';
7
7
 
8
8
  import { useCapabilities, useCapability } from '@dxos/app-framework';
9
9
  import { Context } from '@dxos/context';
10
+ import { failUndefined } from '@dxos/debug';
10
11
  import { log } from '@dxos/log';
11
12
  import { useClient } from '@dxos/react-client';
12
13
  import { fullyQualifiedId, getSpace } from '@dxos/react-client/echo';
13
14
  import { useIdentity } from '@dxos/react-client/halo';
14
- import { useTranslation, Input, ElevationProvider, type ThemedClassName } from '@dxos/react-ui';
15
- import { ControlGroup, ControlItemInput, ControlGroupButton } from '@dxos/react-ui-form';
16
- import { ToolbarMenu, MenuProvider, createMenuAction, useMenuActions, createMenuItemGroup } from '@dxos/react-ui-menu';
15
+ import { ElevationProvider, Input, type ThemedClassName, useTranslation } from '@dxos/react-ui';
16
+ import { ControlGroup, ControlGroupButton, ControlItemInput } from '@dxos/react-ui-form';
17
+ import { MenuProvider, ToolbarMenu, createMenuAction, createMenuItemGroup, useMenuActions } from '@dxos/react-ui-menu';
17
18
  import { useSoundEffect } from '@dxos/react-ui-sfx';
18
19
  import { StackItem } from '@dxos/react-ui-stack';
19
20
 
20
- import { Call } from './Call';
21
- import ChatContainer from './ChatContainer';
22
21
  import { ThreadCapabilities } from '../capabilities';
23
- import { THREAD_PLUGIN } from '../meta';
22
+ import { meta } from '../meta';
24
23
  import { type ChannelType } from '../types';
25
24
 
25
+ import { Call } from './Call';
26
+ import ChatContainer from './ChatContainer';
27
+
26
28
  export type ChannelContainerProps = {
27
29
  channel?: ChannelType;
28
30
  roomId?: string;
@@ -36,7 +38,7 @@ export type ChannelContainerProps = {
36
38
  export const ChannelContainer = ({ channel, roomId: _roomId, role, fullscreen }: ChannelContainerProps) => {
37
39
  const space = getSpace(channel);
38
40
  const callManager = useCapability(ThreadCapabilities.CallManager);
39
- const roomId = channel ? fullyQualifiedId(channel) : _roomId;
41
+ const roomId = _roomId ?? (channel ? fullyQualifiedId(channel) : failUndefined());
40
42
  const identity = useIdentity();
41
43
  const isNamed = !!identity?.profile?.displayName;
42
44
  const joinSound = useSoundEffect('JoinCall');
@@ -133,7 +135,7 @@ export const ChannelContainer = ({ channel, roomId: _roomId, role, fullscreen }:
133
135
  export default ChannelContainer;
134
136
 
135
137
  const DisplayNameMissing = () => {
136
- const { t } = useTranslation(THREAD_PLUGIN);
138
+ const { t } = useTranslation(meta.id);
137
139
  const client = useClient();
138
140
  const [displayName, setDisplayName] = useState('');
139
141
  const handleChange = useCallback((event: ChangeEvent<HTMLInputElement>) => setDisplayName(event.target.value), []);
@@ -163,10 +165,10 @@ const useChannelToolbarActions = (onJoinCall?: () => void) => {
163
165
  return {
164
166
  nodes: [
165
167
  createMenuItemGroup('root', {
166
- label: ['channel toolbar title', { ns: THREAD_PLUGIN }],
168
+ label: ['channel toolbar title', { ns: meta.id }],
167
169
  }),
168
170
  createMenuAction('video-call', () => onJoinCall?.(), {
169
- label: ['start video call label', { ns: THREAD_PLUGIN }],
171
+ label: ['start video call label', { ns: meta.id }],
170
172
  icon: 'ph--video-camera--regular',
171
173
  type: 'video-call',
172
174
  }),
@@ -4,10 +4,10 @@
4
4
 
5
5
  import '@dxos-theme';
6
6
 
7
- import { type Meta } from '@storybook/react';
8
- import React, { useEffect, useState } from 'react';
7
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
8
+ import React, { useState } from 'react';
9
9
 
10
- import { Capabilities, contributes, createSurface, IntentPlugin } from '@dxos/app-framework';
10
+ import { Capabilities, IntentPlugin, contributes, createSurface } from '@dxos/app-framework';
11
11
  import { withPluginManager } from '@dxos/app-framework/testing';
12
12
  import { Obj, Ref } from '@dxos/echo';
13
13
  import { faker } from '@dxos/random';
@@ -15,35 +15,35 @@ import { useClient } from '@dxos/react-client';
15
15
  import { type Space } from '@dxos/react-client/echo';
16
16
  import { useIdentity } from '@dxos/react-client/halo';
17
17
  import { withClientProvider } from '@dxos/react-client/testing';
18
+ import { useAsyncEffect } from '@dxos/react-ui';
18
19
  import { Thread } from '@dxos/react-ui-thread';
19
20
  import { DataType } from '@dxos/schema';
20
- import { withLayout, withTheme } from '@dxos/storybook-utils';
21
+ import { render, withLayout, withTheme } from '@dxos/storybook-utils';
21
22
 
22
- import { ChatContainer } from './ChatContainer';
23
- import translations from '../translations';
23
+ import { translations } from '../translations';
24
24
  import { ChannelType, ThreadType } from '../types';
25
25
 
26
+ import { ChatContainer } from './ChatContainer';
27
+
26
28
  faker.seed(1);
27
29
 
28
- const Story = () => {
30
+ const DefaultStory = () => {
29
31
  const client = useClient();
30
32
  const identity = useIdentity();
31
33
  const [space, setSpace] = useState<Space>();
32
34
  const [channel, setChannel] = useState<ChannelType | null>();
33
35
 
34
- useEffect(() => {
36
+ useAsyncEffect(async () => {
35
37
  if (identity) {
36
- setTimeout(async () => {
37
- const space = await client.spaces.create();
38
- const channel = space.db.add(
39
- Obj.make(ChannelType, {
40
- defaultThread: Ref.make(Obj.make(ThreadType, { messages: [], status: 'active' })),
41
- threads: [],
42
- }),
43
- );
44
- setSpace(space);
45
- setChannel(channel);
46
- });
38
+ const space = await client.spaces.create();
39
+ const channel = space.db.add(
40
+ Obj.make(ChannelType, {
41
+ defaultThread: Ref.make(Obj.make(ThreadType, { messages: [], status: 'active' })),
42
+ threads: [],
43
+ }),
44
+ );
45
+ setSpace(space);
46
+ setChannel(channel);
47
47
  }
48
48
  }, [identity]);
49
49
 
@@ -52,18 +52,16 @@ const Story = () => {
52
52
  }
53
53
 
54
54
  return (
55
- <main className='max-is-prose mli-auto bs-dvh overflow-hidden'>
55
+ <main className='is-full max-is-prose mli-auto bs-dvh overflow-hidden'>
56
56
  <ChatContainer space={space} thread={channel.defaultThread.target} />
57
57
  </main>
58
58
  );
59
59
  };
60
60
 
61
- export const Default = {};
62
-
63
- const meta: Meta = {
61
+ const meta = {
64
62
  title: 'plugins/plugin-thread/Chat',
65
- component: Thread,
66
- render: () => <Story />,
63
+ component: Thread.Root as any,
64
+ render: render(DefaultStory),
67
65
  decorators: [
68
66
  withPluginManager({
69
67
  plugins: [IntentPlugin()],
@@ -80,9 +78,13 @@ const meta: Meta = {
80
78
  }),
81
79
  withTheme,
82
80
  withLayout({ fullscreen: true }),
83
- withClientProvider({ createSpace: true, types: [ThreadType, DataType.Message] }),
81
+ withClientProvider({ createSpace: true, types: [ThreadType, ChannelType, DataType.Message] }),
84
82
  ],
85
83
  parameters: { translations },
86
- };
84
+ } satisfies Meta<typeof DefaultStory>;
87
85
 
88
86
  export default meta;
87
+
88
+ type Story = StoryObj<typeof meta>;
89
+
90
+ export const Default: Story = {};
@@ -5,7 +5,7 @@
5
5
  import React, { useLayoutEffect, useMemo, useRef, useState } from 'react';
6
6
 
7
7
  import { Obj, Ref } from '@dxos/echo';
8
- import { fullyQualifiedId, type Space, useMembers } from '@dxos/react-client/echo';
8
+ import { type Space, fullyQualifiedId, useMembers } from '@dxos/react-client/echo';
9
9
  import { useIdentity } from '@dxos/react-client/halo';
10
10
  import { Icon, ScrollArea, useThemeContext, useTranslation } from '@dxos/react-ui';
11
11
  import { createBasicExtensions, createThemeExtensions, listener } from '@dxos/react-ui-editor';
@@ -15,22 +15,22 @@ import {
15
15
  MessageTextbox,
16
16
  type MessageTextboxProps,
17
17
  Thread,
18
- ThreadFooter,
18
+ type ThreadRootProps,
19
19
  threadLayout,
20
- type ThreadProps,
21
20
  } from '@dxos/react-ui-thread';
22
21
  import { DataType } from '@dxos/schema';
23
22
  import { isNonNullable } from '@dxos/util';
24
23
 
25
- import { MessageContainer } from './MessageContainer';
26
- import { command } from './command-extension';
27
24
  import { useStatus } from '../hooks';
28
- import { THREAD_PLUGIN } from '../meta';
25
+ import { meta } from '../meta';
29
26
  import { type ThreadType } from '../types';
30
27
  import { getMessageMetadata } from '../util';
31
28
 
29
+ import { command } from './command-extension';
30
+ import { MessageContainer } from './MessageContainer';
31
+
32
32
  export const ChatHeading = ({ attendableId }: { attendableId?: string }) => {
33
- const { t } = useTranslation(THREAD_PLUGIN);
33
+ const { t } = useTranslation(meta.id);
34
34
  return (
35
35
  <div role='none' className='flex items-center'>
36
36
  <StackItem.SigilButton attendableId={attendableId}>
@@ -46,14 +46,14 @@ export type ChatContainerProps = {
46
46
  thread: ThreadType;
47
47
  context?: Obj.Any;
48
48
  autoFocusTextbox?: boolean;
49
- } & Pick<ThreadProps, 'current'>;
49
+ } & Pick<ThreadRootProps, 'current'>;
50
50
 
51
51
  export const ChatContainer = ({ space, thread, context, current, autoFocusTextbox }: ChatContainerProps) => {
52
+ const { t } = useTranslation(meta.id);
52
53
  const id = fullyQualifiedId(thread);
53
54
  const identity = useIdentity()!;
54
55
  const members = useMembers(space?.key);
55
56
  const activity = useStatus(space, id);
56
- const { t } = useTranslation(THREAD_PLUGIN);
57
57
  // TODO(wittjosiah): This is a hack to reset the editor after a message is sent.
58
58
  const [_count, _setCount] = useState(0);
59
59
  const rerenderEditor = () => _setCount((count) => count + 1);
@@ -93,9 +93,9 @@ export const ChatContainer = ({ space, thread, context, current, autoFocusTextbo
93
93
  thread.messages.push(
94
94
  Ref.make(
95
95
  Obj.make(DataType.Message, {
96
- sender: { identityDid: identity.did },
97
96
  created: new Date().toISOString(),
98
- blocks: [{ type: 'text', text: messageRef.current }],
97
+ sender: { identityDid: identity.did },
98
+ blocks: [{ _tag: 'text', text: messageRef.current }],
99
99
  properties: context ? { context: Ref.make(context) } : undefined,
100
100
  }),
101
101
  ),
@@ -109,10 +109,13 @@ export const ChatContainer = ({ space, thread, context, current, autoFocusTextbo
109
109
  };
110
110
 
111
111
  return (
112
- <Thread
112
+ <Thread.Root
113
113
  current={current}
114
114
  id={id}
115
- classNames='bs-full grid-rows-[1fr_min-content_min-content] overflow-hidden transition-[padding-block-end] [[data-sidebar-inline-start-state=open]_&]:lg:pbe-0'
115
+ classNames={[
116
+ 'bs-full is-full max-is-prose mli-auto grid-rows-[1fr_min-content_min-content] overflow-hidden',
117
+ 'transition-[padding-block-end] [[data-sidebar-inline-start-state=open]_&]:lg:pbe-0',
118
+ ]}
116
119
  >
117
120
  <ScrollArea.Root classNames='col-span-2'>
118
121
  <ScrollArea.Viewport classNames='overflow-anchored after:overflow-anchor after:block after:bs-px after:-mbs-px [&>div]:min-bs-full [&>div]:!grid [&>div]:grid-rows-[1fr_0]'>
@@ -131,9 +134,11 @@ export const ChatContainer = ({ space, thread, context, current, autoFocusTextbo
131
134
  </ScrollArea.Scrollbar>
132
135
  </ScrollArea.Viewport>
133
136
  </ScrollArea.Root>
137
+
134
138
  <MessageTextbox extensions={extensions} autoFocus={autoFocus} onSend={handleCreate} {...textboxMetadata} />
135
- <ThreadFooter activity={activity}>{t('activity message')}</ThreadFooter>
136
- </Thread>
139
+
140
+ <Thread.Status activity={activity}>{t('activity message')}</Thread.Status>
141
+ </Thread.Root>
137
142
  );
138
143
  };
139
144
 
@@ -4,52 +4,52 @@
4
4
 
5
5
  import '@dxos-theme';
6
6
 
7
- import { type Meta } from '@storybook/react';
8
- import React, { useEffect } from 'react';
7
+ import { type Meta, type StoryObj } from '@storybook/react-vite';
8
+ import React from 'react';
9
9
 
10
10
  import { IntentPlugin } from '@dxos/app-framework';
11
11
  import { withPluginManager } from '@dxos/app-framework/testing';
12
12
  import { Obj, Query, Relation, Type } from '@dxos/echo';
13
+ import { ClientPlugin } from '@dxos/plugin-client';
13
14
  import { faker } from '@dxos/random';
14
15
  import { useQuery, useSpace } from '@dxos/react-client/echo';
15
16
  import { useIdentity } from '@dxos/react-client/halo';
16
- import { type ClientRepeatedComponentProps, ClientRepeater } from '@dxos/react-client/testing';
17
+ import { useAsyncEffect } from '@dxos/react-ui';
17
18
  import { AnchoredTo, DataType } from '@dxos/schema';
18
- import { withLayout, withTheme } from '@dxos/storybook-utils';
19
+ import { layoutCentered, render, withLayout, withTheme } from '@dxos/storybook-utils';
19
20
 
20
- import { CommentsContainer } from './CommentsContainer';
21
- import { createCommentThread } from './testing';
22
- import translations from '../translations';
21
+ import { translations } from '../translations';
23
22
  import { ThreadType } from '../types';
24
23
 
24
+ import { CommentsContainer } from './CommentsContainer';
25
+ import { createCommentThread, createProposalThread } from './testing';
26
+
25
27
  faker.seed(1);
26
28
 
27
- const Story = ({ spaceKey }: ClientRepeatedComponentProps) => {
29
+ const DefaultStory = () => {
28
30
  const identity = useIdentity();
29
- const space = useSpace(spaceKey);
31
+ const space = useSpace();
30
32
  const anchors = useQuery(space, Query.type(AnchoredTo));
31
33
 
32
- useEffect(() => {
34
+ useAsyncEffect(async () => {
33
35
  if (identity && space) {
34
- const t = setTimeout(async () => {
35
- const object = space.db.add(Obj.make(Type.Expando, {}));
36
- const thread1 = space.db.add(createCommentThread(identity));
37
- const thread2 = space.db.add(createCommentThread(identity));
38
- space.db.add(
39
- Relation.make(AnchoredTo, {
40
- [Relation.Source]: thread1,
41
- [Relation.Target]: object,
42
- }),
43
- );
44
- space.db.add(
45
- Relation.make(AnchoredTo, {
46
- [Relation.Source]: thread2,
47
- [Relation.Target]: object,
48
- }),
49
- );
50
- });
51
-
52
- return () => clearTimeout(t);
36
+ const object = space.db.add(Obj.make(Type.Expando, {}));
37
+ const thread1 = space.db.add(createCommentThread(identity));
38
+ const thread2 = space.db.add(createProposalThread(identity));
39
+ space.db.add(
40
+ Relation.make(AnchoredTo, {
41
+ [Relation.Source]: thread1,
42
+ [Relation.Target]: object,
43
+ anchor: 'test',
44
+ }),
45
+ );
46
+ space.db.add(
47
+ Relation.make(AnchoredTo, {
48
+ [Relation.Source]: thread2,
49
+ [Relation.Target]: object,
50
+ anchor: 'test',
51
+ }),
52
+ );
53
53
  }
54
54
  }, [identity, space]);
55
55
 
@@ -58,28 +58,39 @@ const Story = ({ spaceKey }: ClientRepeatedComponentProps) => {
58
58
  }
59
59
 
60
60
  return (
61
- <div className='flex justify-center overflow-y-auto bg-white dark:bg-black'>
62
- <div className='flex flex-col w-[30rem]'>
63
- <CommentsContainer anchors={anchors} onThreadDelete={console.log} />
64
- </div>
61
+ <div className='w-[30rem] overflow-y-auto bg-baseSurface'>
62
+ <CommentsContainer anchors={anchors} onThreadDelete={console.log} onAcceptProposal={console.log} />
65
63
  </div>
66
64
  );
67
65
  };
68
66
 
69
- const meta: Meta = {
67
+ const meta = {
70
68
  title: 'plugins/plugin-thread/Comments',
71
- // TODO(wittjosiah): Use decorator.
72
- render: () => <ClientRepeater component={Story} createIdentity createSpace types={[ThreadType, DataType.Message]} />,
69
+ render: render(DefaultStory),
73
70
  decorators: [
74
71
  withTheme,
75
- withLayout({ fullscreen: true }),
72
+ withLayout({ fullscreen: true, classNames: layoutCentered }),
73
+ // TODO(wittjosiah): This shouldn't depend on app framework. Should use withClientProvider instead.
74
+ // Currently this is required due to useOnEditAnalytics.
76
75
  withPluginManager({
77
- plugins: [IntentPlugin()],
76
+ plugins: [
77
+ IntentPlugin(),
78
+ ClientPlugin({
79
+ types: [DataType.Message, ThreadType, AnchoredTo],
80
+ onClientInitialized: async ({ client }) => {
81
+ await client.halo.createIdentity();
82
+ },
83
+ }),
84
+ ],
78
85
  }),
79
86
  ],
80
- parameters: { translations },
81
- };
87
+ parameters: {
88
+ translations,
89
+ },
90
+ } satisfies Meta<typeof DefaultStory>;
82
91
 
83
92
  export default meta;
84
93
 
85
- export const Default = {};
94
+ type Story = StoryObj<typeof meta>;
95
+
96
+ export const Default: Story = {};
@@ -9,21 +9,23 @@ import { fullyQualifiedId } from '@dxos/react-client/echo';
9
9
  import { Callout, Icon, Trans, useTranslation } from '@dxos/react-ui';
10
10
  import { type AnchoredTo } from '@dxos/schema';
11
11
 
12
- import { CommentContainer, type CommentContainerProps } from './CommentContainer';
13
- import { THREAD_PLUGIN } from '../meta';
12
+ import { meta } from '../meta';
14
13
  import { type ThreadType } from '../types';
15
14
 
16
- export type ThreadsContainerProps = Omit<CommentContainerProps, 'anchor' | 'current'> & {
15
+ import { CommentsThreadContainer, type CommentsThreadContainerProps } from './CommentsThreadContainer';
16
+
17
+ export type CommentsContainerProps = Omit<CommentsThreadContainerProps, 'anchor' | 'current'> & {
17
18
  anchors: AnchoredTo[];
18
19
  currentId?: string;
19
20
  showResolvedThreads?: boolean;
20
21
  };
21
22
 
22
23
  /**
23
- * Comment threads.
24
+ * Root container for collection of comment threads.
24
25
  */
25
- export const CommentsContainer = ({ anchors, currentId, showResolvedThreads, ...props }: ThreadsContainerProps) => {
26
- const { t } = useTranslation(THREAD_PLUGIN);
26
+ export const CommentsContainer = ({ anchors, currentId, showResolvedThreads, ...props }: CommentsContainerProps) => {
27
+ const { t } = useTranslation(meta.id);
28
+
27
29
  // TODO(wittjosiah): There seems to be a race between thread and anchor being deleted.
28
30
  const filteredAnchors = showResolvedThreads
29
31
  ? anchors.filter((anchor) => !!Relation.getSource(anchor))
@@ -58,9 +60,13 @@ export const CommentsContainer = ({ anchors, currentId, showResolvedThreads, ...
58
60
  );
59
61
  }
60
62
 
61
- return filteredAnchors.map((anchor) => {
62
- const thread = Relation.getSource(anchor) as ThreadType;
63
- const threadId = fullyQualifiedId(thread);
64
- return <CommentContainer key={threadId} anchor={anchor} current={currentId === threadId} {...props} />;
65
- });
63
+ return (
64
+ <div>
65
+ {filteredAnchors.map((anchor) => {
66
+ const thread = Relation.getSource(anchor) as ThreadType;
67
+ const threadId = fullyQualifiedId(thread);
68
+ return <CommentsThreadContainer key={threadId} anchor={anchor} current={currentId === threadId} {...props} />;
69
+ })}
70
+ </div>
71
+ );
66
72
  };