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

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 (320) hide show
  1. package/dist/lib/browser/ChannelContainer-4PYFOIDK.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-FHAOPO57.mjs} +8 -8
  4. package/dist/lib/browser/app-graph-builder-FHAOPO57.mjs.map +7 -0
  5. package/dist/lib/browser/{call-manager-APQAZWHT.mjs → call-manager-RMPTWSTF.mjs} +6 -5
  6. package/dist/lib/browser/call-manager-RMPTWSTF.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-XZKBN3NS.mjs → chunk-7W7QK5ZP.mjs} +253 -250
  10. package/dist/lib/browser/chunk-7W7QK5ZP.mjs.map +7 -0
  11. package/dist/lib/browser/{chunk-IIUTBDVB.mjs → chunk-EV4JWI7L.mjs} +2 -2
  12. package/dist/lib/browser/chunk-G4CNILRR.mjs +23 -0
  13. package/dist/lib/browser/{chunk-6NBVNXTM.mjs.map → chunk-G4CNILRR.mjs.map} +3 -3
  14. package/dist/lib/browser/{chunk-JKQUJOTX.mjs → chunk-GERVMFQW.mjs} +2 -2
  15. package/dist/lib/browser/{chunk-AEXWNS6Z.mjs → chunk-KTWYVC5X.mjs} +34 -15
  16. package/dist/lib/browser/chunk-KTWYVC5X.mjs.map +7 -0
  17. package/dist/lib/browser/{chunk-TAFSCSUR.mjs → chunk-PBMNFG3B.mjs} +97 -72
  18. package/dist/lib/browser/chunk-PBMNFG3B.mjs.map +7 -0
  19. package/dist/lib/browser/chunk-RI3Z6MK3.mjs +181 -0
  20. package/dist/lib/browser/chunk-RI3Z6MK3.mjs.map +7 -0
  21. package/dist/lib/browser/chunk-XYUJXHYV.mjs +106 -0
  22. package/dist/lib/browser/chunk-XYUJXHYV.mjs.map +7 -0
  23. package/dist/lib/browser/{chunk-4H4A264L.mjs → chunk-ZCEU5K23.mjs} +490 -308
  24. package/dist/lib/browser/chunk-ZCEU5K23.mjs.map +7 -0
  25. package/dist/lib/browser/{chunk-PG5CTFKK.mjs → chunk-ZH2WPTNP.mjs} +226 -158
  26. package/dist/lib/browser/chunk-ZH2WPTNP.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-J7OCP2P6.mjs} +90 -16
  30. package/dist/lib/browser/intent-resolver-J7OCP2P6.mjs.map +7 -0
  31. package/dist/lib/browser/{markdown-TE5SWWNJ.mjs → markdown-Z677YORA.mjs} +8 -8
  32. package/dist/lib/browser/markdown-Z677YORA.mjs.map +7 -0
  33. package/dist/lib/browser/meta.json +1 -1
  34. package/dist/lib/browser/react-root-XKOD4KRB.mjs +28 -0
  35. package/dist/lib/browser/{react-surface-VXUJKSOG.mjs → react-surface-GVGZRBDK.mjs} +12 -11
  36. package/dist/lib/browser/react-surface-GVGZRBDK.mjs.map +7 -0
  37. package/dist/lib/browser/{settings-RB2RSLXV.mjs → settings-GRKEID73.mjs} +4 -4
  38. package/dist/lib/browser/{state-RKL5MSDP.mjs → state-2T4KDWBX.mjs} +4 -4
  39. package/dist/lib/browser/{state-RKL5MSDP.mjs.map → state-2T4KDWBX.mjs.map} +2 -2
  40. package/dist/lib/browser/toolkit-KUPIIFC6.mjs +80 -0
  41. package/dist/lib/browser/toolkit-KUPIIFC6.mjs.map +7 -0
  42. package/dist/lib/browser/types/index.mjs +2 -2
  43. package/dist/lib/node-esm/ChannelContainer-KQQEZWUN.mjs +17 -0
  44. package/dist/lib/node-esm/{ChatContainer-F6CSADV7.mjs → ChatContainer-QVQKFBWA.mjs} +6 -5
  45. package/dist/lib/node-esm/{app-graph-builder-BAHBHYWI.mjs → app-graph-builder-XEYWX5FC.mjs} +8 -8
  46. package/dist/lib/node-esm/app-graph-builder-XEYWX5FC.mjs.map +7 -0
  47. package/dist/lib/node-esm/{call-manager-UUYXLF4T.mjs → call-manager-QAREJFVX.mjs} +6 -5
  48. package/dist/lib/node-esm/call-manager-QAREJFVX.mjs.map +7 -0
  49. package/dist/lib/node-esm/chunk-2V3WSLUZ.mjs +108 -0
  50. package/dist/lib/node-esm/chunk-2V3WSLUZ.mjs.map +7 -0
  51. package/dist/lib/node-esm/chunk-4T45PCKP.mjs +25 -0
  52. package/dist/lib/node-esm/{chunk-O63QJPQX.mjs.map → chunk-4T45PCKP.mjs.map} +3 -3
  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-UZWVVFT3.mjs → chunk-LE2LIYGX.mjs} +226 -158
  60. package/dist/lib/node-esm/chunk-LE2LIYGX.mjs.map +7 -0
  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/index.mjs +49 -44
  70. package/dist/lib/node-esm/index.mjs.map +3 -3
  71. package/dist/lib/node-esm/{intent-resolver-BU73VYW3.mjs → intent-resolver-SR2LW4HF.mjs} +90 -16
  72. package/dist/lib/node-esm/intent-resolver-SR2LW4HF.mjs.map +7 -0
  73. package/dist/lib/node-esm/{markdown-HJUWNBLS.mjs → markdown-FL4IXLRP.mjs} +8 -8
  74. package/dist/lib/node-esm/markdown-FL4IXLRP.mjs.map +7 -0
  75. package/dist/lib/node-esm/meta.json +1 -1
  76. package/dist/lib/node-esm/{react-root-RUXOAQNW.mjs → react-root-4JWDRIQB.mjs} +12 -11
  77. package/dist/lib/{browser/react-root-NK3A4VG7.mjs.map → node-esm/react-root-4JWDRIQB.mjs.map} +1 -1
  78. package/dist/lib/node-esm/{react-surface-ELXFYKP6.mjs → react-surface-WLQUVRAX.mjs} +12 -11
  79. package/dist/lib/node-esm/react-surface-WLQUVRAX.mjs.map +7 -0
  80. package/dist/lib/node-esm/{settings-EA7DFSM6.mjs → settings-F2ODVNNW.mjs} +4 -4
  81. package/dist/lib/node-esm/{state-6AUTNROZ.mjs → state-62TQKQVB.mjs} +4 -4
  82. package/dist/lib/node-esm/{state-6AUTNROZ.mjs.map → state-62TQKQVB.mjs.map} +2 -2
  83. package/dist/lib/node-esm/toolkit-KZIS7G36.mjs +81 -0
  84. package/dist/lib/node-esm/toolkit-KZIS7G36.mjs.map +7 -0
  85. package/dist/lib/node-esm/types/index.mjs +2 -2
  86. package/dist/types/src/ThreadPlugin.d.ts.map +1 -1
  87. package/dist/types/src/calls/call-manager.d.ts +1 -1
  88. package/dist/types/src/calls/call-manager.d.ts.map +1 -1
  89. package/dist/types/src/calls/call-swarm-synchronizer.d.ts.map +1 -1
  90. package/dist/types/src/calls/media-manager.d.ts +1 -1
  91. package/dist/types/src/calls/media-manager.d.ts.map +1 -1
  92. package/dist/types/src/calls/types.d.ts +1 -1
  93. package/dist/types/src/calls/types.d.ts.map +1 -1
  94. package/dist/types/src/calls/util/calls-service.d.ts +8 -3
  95. package/dist/types/src/calls/util/calls-service.d.ts.map +1 -1
  96. package/dist/types/src/calls/util/stub-media-streams.d.ts.map +1 -1
  97. package/dist/types/src/calls-service.stories.d.ts +24 -0
  98. package/dist/types/src/calls-service.stories.d.ts.map +1 -0
  99. package/dist/types/src/capabilities/app-graph-builder.d.ts +1 -1
  100. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  101. package/dist/types/src/capabilities/call-manager.d.ts +1 -1
  102. package/dist/types/src/capabilities/call-manager.d.ts.map +1 -1
  103. package/dist/types/src/capabilities/capabilities.d.ts +2 -2
  104. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  105. package/dist/types/src/capabilities/index.d.ts +11 -10
  106. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  107. package/dist/types/src/capabilities/intent-resolver.d.ts +1 -1
  108. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  109. package/dist/types/src/capabilities/markdown.d.ts +1 -1
  110. package/dist/types/src/capabilities/markdown.d.ts.map +1 -1
  111. package/dist/types/src/capabilities/react-root.d.ts +2 -2
  112. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  113. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  114. package/dist/types/src/capabilities/settings.d.ts +1 -1
  115. package/dist/types/src/capabilities/state.d.ts +2 -2
  116. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  117. package/dist/types/src/capabilities/toolkit.d.ts +5 -0
  118. package/dist/types/src/capabilities/toolkit.d.ts.map +1 -0
  119. package/dist/types/src/components/Call/Call.d.ts.map +1 -1
  120. package/dist/types/src/components/Call/Toolbar.d.ts.map +1 -1
  121. package/dist/types/src/components/CallDebugPanel.d.ts +7 -0
  122. package/dist/types/src/components/CallDebugPanel.d.ts.map +1 -1
  123. package/dist/types/src/components/CallSidebar.d.ts.map +1 -1
  124. package/dist/types/src/components/ChannelContainer.d.ts.map +1 -1
  125. package/dist/types/src/components/ChannelContainer.stories.d.ts +89 -4
  126. package/dist/types/src/components/ChannelContainer.stories.d.ts.map +1 -1
  127. package/dist/types/src/components/Chat.stories.d.ts +90 -3
  128. package/dist/types/src/components/Chat.stories.d.ts.map +1 -1
  129. package/dist/types/src/components/ChatContainer.d.ts +2 -2
  130. package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
  131. package/dist/types/src/components/Comments.stories.d.ts +156 -3
  132. package/dist/types/src/components/Comments.stories.d.ts.map +1 -1
  133. package/dist/types/src/components/CommentsContainer.d.ts +4 -4
  134. package/dist/types/src/components/CommentsContainer.d.ts.map +1 -1
  135. package/dist/types/src/components/CommentsThreadContainer.d.ts +14 -0
  136. package/dist/types/src/components/CommentsThreadContainer.d.ts.map +1 -0
  137. package/dist/types/src/components/Lobby/Lobby.d.ts.map +1 -1
  138. package/dist/types/src/components/Media/VideoObject.d.ts +1 -1
  139. package/dist/types/src/components/Media/VideoObject.stories.d.ts +15 -3
  140. package/dist/types/src/components/Media/VideoObject.stories.d.ts.map +1 -1
  141. package/dist/types/src/components/MessageContainer.d.ts +4 -1
  142. package/dist/types/src/components/MessageContainer.d.ts.map +1 -1
  143. package/dist/types/src/components/Participant/Participant.d.ts.map +1 -1
  144. package/dist/types/src/components/Participant/ParticipantGrid.d.ts.map +1 -1
  145. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts +154 -2
  146. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts.map +1 -1
  147. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts +156 -3
  148. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts.map +1 -1
  149. package/dist/types/src/components/ResponsiveGrid/ResponsiveGridItem.d.ts.map +1 -1
  150. package/dist/types/src/components/ThreadComplementary.d.ts.map +1 -1
  151. package/dist/types/src/components/command-extension.d.ts.map +1 -1
  152. package/dist/types/src/components/index.d.ts +1 -1
  153. package/dist/types/src/components/index.d.ts.map +1 -1
  154. package/dist/types/src/components/testing.d.ts +1 -0
  155. package/dist/types/src/components/testing.d.ts.map +1 -1
  156. package/dist/types/src/extensions/threads.d.ts +2 -2
  157. package/dist/types/src/extensions/threads.d.ts.map +1 -1
  158. package/dist/types/src/hooks/index.d.ts +3 -0
  159. package/dist/types/src/hooks/index.d.ts.map +1 -1
  160. package/dist/types/src/hooks/useBlackCanvasStreamTrack.d.ts +2 -0
  161. package/dist/types/src/hooks/useBlackCanvasStreamTrack.d.ts.map +1 -0
  162. package/dist/types/src/hooks/useInaudibleAudioStreamTrack.d.ts +2 -0
  163. package/dist/types/src/hooks/useInaudibleAudioStreamTrack.d.ts.map +1 -0
  164. package/dist/types/src/hooks/useVideoStreamTrack.d.ts +3 -0
  165. package/dist/types/src/hooks/useVideoStreamTrack.d.ts.map +1 -0
  166. package/dist/types/src/testing/stories.d.ts.map +1 -1
  167. package/dist/types/src/translations.d.ts +76 -194
  168. package/dist/types/src/translations.d.ts.map +1 -1
  169. package/dist/types/src/types/schema.d.ts +125 -81
  170. package/dist/types/src/types/schema.d.ts.map +1 -1
  171. package/dist/types/src/types/types.d.ts +270 -139
  172. package/dist/types/src/types/types.d.ts.map +1 -1
  173. package/dist/types/src/util.d.ts +17 -2
  174. package/dist/types/src/util.d.ts.map +1 -1
  175. package/dist/types/tsconfig.tsbuildinfo +1 -1
  176. package/package.json +56 -53
  177. package/src/ThreadPlugin.tsx +16 -24
  178. package/src/calls/call-manager.ts +8 -4
  179. package/src/calls/call-swarm-synchronizer.ts +1 -1
  180. package/src/calls/media-manager.ts +70 -37
  181. package/src/calls/types.ts +8 -4
  182. package/src/calls/util/calls-service.ts +72 -18
  183. package/src/calls/util/stub-media-streams.ts +62 -8
  184. package/src/calls-service.stories.tsx +232 -0
  185. package/src/capabilities/app-graph-builder.ts +8 -5
  186. package/src/capabilities/call-manager.ts +3 -2
  187. package/src/capabilities/capabilities.ts +2 -2
  188. package/src/capabilities/index.ts +1 -0
  189. package/src/capabilities/intent-resolver.ts +60 -8
  190. package/src/capabilities/markdown.ts +4 -3
  191. package/src/capabilities/react-surface.tsx +5 -4
  192. package/src/capabilities/state.ts +2 -1
  193. package/src/capabilities/toolkit.ts +78 -0
  194. package/src/components/Call/Call.tsx +4 -3
  195. package/src/components/Call/Toolbar.tsx +8 -8
  196. package/src/components/CallDebugPanel.tsx +110 -51
  197. package/src/components/CallSidebar.tsx +2 -1
  198. package/src/components/ChannelContainer.stories.tsx +11 -10
  199. package/src/components/ChannelContainer.tsx +13 -11
  200. package/src/components/Chat.stories.tsx +29 -27
  201. package/src/components/ChatContainer.tsx +20 -15
  202. package/src/components/Comments.stories.tsx +52 -41
  203. package/src/components/CommentsContainer.tsx +17 -11
  204. package/src/components/{CommentContainer.tsx → CommentsThreadContainer.tsx} +53 -82
  205. package/src/components/Lobby/Lobby.tsx +1 -1
  206. package/src/components/Media/VideoObject.stories.tsx +30 -27
  207. package/src/components/MessageContainer.tsx +65 -47
  208. package/src/components/Participant/Participant.tsx +13 -7
  209. package/src/components/Participant/ParticipantGrid.tsx +2 -1
  210. package/src/components/ResponsiveGrid/ResponsiveContainer.stories.tsx +7 -6
  211. package/src/components/ResponsiveGrid/ResponsiveGrid.stories.tsx +42 -39
  212. package/src/components/ResponsiveGrid/ResponsiveGrid.tsx +1 -1
  213. package/src/components/ResponsiveGrid/ResponsiveGridItem.tsx +4 -4
  214. package/src/components/ThreadComplementary.tsx +40 -10
  215. package/src/components/ThreadSettings.tsx +4 -4
  216. package/src/components/command-extension.ts +5 -2
  217. package/src/components/index.ts +1 -1
  218. package/src/components/testing.ts +24 -2
  219. package/src/extensions/threads.ts +6 -6
  220. package/src/hooks/index.ts +3 -0
  221. package/src/hooks/useBlackCanvasStreamTrack.tsx +27 -0
  222. package/src/hooks/useDebugMode.ts +1 -1
  223. package/src/hooks/useInaudibleAudioStreamTrack.tsx +27 -0
  224. package/src/hooks/useVideoStreamTrack.tsx +36 -0
  225. package/src/testing/stories.ts +7 -3
  226. package/src/translations.ts +14 -9
  227. package/src/types/types.ts +28 -11
  228. package/src/typings/peermetrics-webrtc-stats.d.ts +17 -1
  229. package/src/typings.d.ts +8 -0
  230. package/dist/lib/browser/ChannelContainer-PKFBVENP.mjs +0 -15
  231. package/dist/lib/browser/ChatContainer-RSOKYAMK.mjs +0 -14
  232. package/dist/lib/browser/app-graph-builder-OY7R7EJP.mjs.map +0 -7
  233. package/dist/lib/browser/call-manager-APQAZWHT.mjs.map +0 -7
  234. package/dist/lib/browser/chunk-4H4A264L.mjs.map +0 -7
  235. package/dist/lib/browser/chunk-5P5BH5GE.mjs +0 -88
  236. package/dist/lib/browser/chunk-5P5BH5GE.mjs.map +0 -7
  237. package/dist/lib/browser/chunk-6NBVNXTM.mjs +0 -21
  238. package/dist/lib/browser/chunk-AEXWNS6Z.mjs.map +0 -7
  239. package/dist/lib/browser/chunk-PG5CTFKK.mjs.map +0 -7
  240. package/dist/lib/browser/chunk-TAFSCSUR.mjs.map +0 -7
  241. package/dist/lib/browser/chunk-XZKBN3NS.mjs.map +0 -7
  242. package/dist/lib/browser/intent-resolver-FK2MDVDT.mjs.map +0 -7
  243. package/dist/lib/browser/markdown-TE5SWWNJ.mjs.map +0 -7
  244. package/dist/lib/browser/react-root-NK3A4VG7.mjs +0 -27
  245. package/dist/lib/browser/react-surface-VXUJKSOG.mjs.map +0 -7
  246. package/dist/lib/node/ChannelContainer-YS5YT2ML.cjs +0 -36
  247. package/dist/lib/node/ChannelContainer-YS5YT2ML.cjs.map +0 -7
  248. package/dist/lib/node/ChatContainer-GCOM3M56.cjs +0 -35
  249. package/dist/lib/node/ChatContainer-GCOM3M56.cjs.map +0 -7
  250. package/dist/lib/node/app-graph-builder-PBHJNDQY.cjs +0 -179
  251. package/dist/lib/node/app-graph-builder-PBHJNDQY.cjs.map +0 -7
  252. package/dist/lib/node/call-manager-HV2XJW5O.cjs +0 -37
  253. package/dist/lib/node/call-manager-HV2XJW5O.cjs.map +0 -7
  254. package/dist/lib/node/chunk-44I33JDT.cjs +0 -1731
  255. package/dist/lib/node/chunk-44I33JDT.cjs.map +0 -7
  256. package/dist/lib/node/chunk-4YSNVPWU.cjs +0 -37
  257. package/dist/lib/node/chunk-4YSNVPWU.cjs.map +0 -7
  258. package/dist/lib/node/chunk-E3WBZTTI.cjs +0 -371
  259. package/dist/lib/node/chunk-E3WBZTTI.cjs.map +0 -7
  260. package/dist/lib/node/chunk-ERG7G6FF.cjs +0 -59
  261. package/dist/lib/node/chunk-ERG7G6FF.cjs.map +0 -7
  262. package/dist/lib/node/chunk-FUXJAVFZ.cjs +0 -108
  263. package/dist/lib/node/chunk-FUXJAVFZ.cjs.map +0 -7
  264. package/dist/lib/node/chunk-HLMCEE5K.cjs +0 -41
  265. package/dist/lib/node/chunk-HLMCEE5K.cjs.map +0 -7
  266. package/dist/lib/node/chunk-IP533AMV.cjs +0 -554
  267. package/dist/lib/node/chunk-IP533AMV.cjs.map +0 -7
  268. package/dist/lib/node/chunk-LR5NENBE.cjs +0 -54
  269. package/dist/lib/node/chunk-LR5NENBE.cjs.map +0 -7
  270. package/dist/lib/node/chunk-UM36TPCT.cjs +0 -984
  271. package/dist/lib/node/chunk-UM36TPCT.cjs.map +0 -7
  272. package/dist/lib/node/chunk-ZGDN3XBR.cjs +0 -149
  273. package/dist/lib/node/chunk-ZGDN3XBR.cjs.map +0 -7
  274. package/dist/lib/node/index.cjs +0 -310
  275. package/dist/lib/node/index.cjs.map +0 -7
  276. package/dist/lib/node/intent-resolver-SYSJ5SJG.cjs +0 -363
  277. package/dist/lib/node/intent-resolver-SYSJ5SJG.cjs.map +0 -7
  278. package/dist/lib/node/markdown-GQIPJS2F.cjs +0 -178
  279. package/dist/lib/node/markdown-GQIPJS2F.cjs.map +0 -7
  280. package/dist/lib/node/meta.json +0 -1
  281. package/dist/lib/node/react-root-6HHDMULJ.cjs +0 -51
  282. package/dist/lib/node/react-root-6HHDMULJ.cjs.map +0 -7
  283. package/dist/lib/node/react-surface-NBH42NN2.cjs +0 -122
  284. package/dist/lib/node/react-surface-NBH42NN2.cjs.map +0 -7
  285. package/dist/lib/node/settings-4LQSFEDK.cjs +0 -36
  286. package/dist/lib/node/settings-4LQSFEDK.cjs.map +0 -7
  287. package/dist/lib/node/state-IY5XX3H2.cjs +0 -50
  288. package/dist/lib/node/state-IY5XX3H2.cjs.map +0 -7
  289. package/dist/lib/node/types/index.cjs +0 -38
  290. package/dist/lib/node/types/index.cjs.map +0 -7
  291. package/dist/lib/node-esm/ChannelContainer-O4QJII2P.mjs +0 -16
  292. package/dist/lib/node-esm/app-graph-builder-BAHBHYWI.mjs.map +0 -7
  293. package/dist/lib/node-esm/call-manager-UUYXLF4T.mjs.map +0 -7
  294. package/dist/lib/node-esm/chunk-2RNIPFDA.mjs.map +0 -7
  295. package/dist/lib/node-esm/chunk-O3V45YJP.mjs +0 -90
  296. package/dist/lib/node-esm/chunk-O3V45YJP.mjs.map +0 -7
  297. package/dist/lib/node-esm/chunk-O63QJPQX.mjs +0 -23
  298. package/dist/lib/node-esm/chunk-P6RLFCNT.mjs.map +0 -7
  299. package/dist/lib/node-esm/chunk-UJMPYKT3.mjs.map +0 -7
  300. package/dist/lib/node-esm/chunk-UZWVVFT3.mjs.map +0 -7
  301. package/dist/lib/node-esm/chunk-WXNPD542.mjs.map +0 -7
  302. package/dist/lib/node-esm/intent-resolver-BU73VYW3.mjs.map +0 -7
  303. package/dist/lib/node-esm/markdown-HJUWNBLS.mjs.map +0 -7
  304. package/dist/lib/node-esm/react-surface-ELXFYKP6.mjs.map +0 -7
  305. package/dist/types/src/components/CommentContainer.d.ts +0 -13
  306. package/dist/types/src/components/CommentContainer.d.ts.map +0 -1
  307. package/dist/types/src/peers.stories.d.ts +0 -11
  308. package/dist/types/src/peers.stories.d.ts.map +0 -1
  309. package/src/peers.stories.tsx +0 -189
  310. /package/dist/lib/browser/{ChannelContainer-PKFBVENP.mjs.map → ChannelContainer-4PYFOIDK.mjs.map} +0 -0
  311. /package/dist/lib/browser/{ChatContainer-RSOKYAMK.mjs.map → ChatContainer-EXNNREYB.mjs.map} +0 -0
  312. /package/dist/lib/browser/{chunk-IIUTBDVB.mjs.map → chunk-EV4JWI7L.mjs.map} +0 -0
  313. /package/dist/lib/browser/{chunk-JKQUJOTX.mjs.map → chunk-GERVMFQW.mjs.map} +0 -0
  314. /package/dist/lib/{node-esm/react-root-RUXOAQNW.mjs.map → browser/react-root-XKOD4KRB.mjs.map} +0 -0
  315. /package/dist/lib/browser/{settings-RB2RSLXV.mjs.map → settings-GRKEID73.mjs.map} +0 -0
  316. /package/dist/lib/node-esm/{ChannelContainer-O4QJII2P.mjs.map → ChannelContainer-KQQEZWUN.mjs.map} +0 -0
  317. /package/dist/lib/node-esm/{ChatContainer-F6CSADV7.mjs.map → ChatContainer-QVQKFBWA.mjs.map} +0 -0
  318. /package/dist/lib/node-esm/{chunk-PGRP3O4O.mjs.map → chunk-57XR3LEF.mjs.map} +0 -0
  319. /package/dist/lib/node-esm/{chunk-ESQC6SYE.mjs.map → chunk-GRLRWTRU.mjs.map} +0 -0
  320. /package/dist/lib/node-esm/{settings-EA7DFSM6.mjs.map → settings-F2ODVNNW.mjs.map} +0 -0
@@ -2,53 +2,63 @@ import { createRequire } from 'node:module';const require = createRequire(import
2
2
  import {
3
3
  ThreadAction,
4
4
  ThreadType
5
- } from "./chunk-UJMPYKT3.mjs";
5
+ } from "./chunk-P6E247RF.mjs";
6
6
  import {
7
7
  ChannelContainer
8
- } from "./chunk-2RNIPFDA.mjs";
8
+ } from "./chunk-SNKFZQST.mjs";
9
9
  import {
10
10
  ThreadCapabilities
11
- } from "./chunk-K4KAUOKT.mjs";
11
+ } from "./chunk-PYTVBN5J.mjs";
12
12
  import {
13
13
  MessageContainer,
14
+ buttonClassNames,
15
+ buttonGroupClassNames,
14
16
  command
15
- } from "./chunk-P6RLFCNT.mjs";
17
+ } from "./chunk-DKCQCENK.mjs";
16
18
  import {
17
19
  useStatus
18
- } from "./chunk-O3V45YJP.mjs";
20
+ } from "./chunk-JNPKMT7O.mjs";
19
21
  import {
20
22
  getMessageMetadata
21
- } from "./chunk-PGRP3O4O.mjs";
23
+ } from "./chunk-57XR3LEF.mjs";
22
24
  import {
23
- THREAD_PLUGIN
24
- } from "./chunk-ESQC6SYE.mjs";
25
+ meta
26
+ } from "./chunk-GRLRWTRU.mjs";
25
27
 
26
- // packages/plugins/plugin-thread/src/components/CallDebugPanel.tsx
28
+ // src/components/CallDebugPanel.tsx
27
29
  import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
28
30
  import { WebRTCStats } from "@peermetrics/webrtc-stats";
29
31
  import React, { useEffect, useMemo, useState } from "react";
30
- import { Panel } from "@dxos/devtools";
32
+ import { truncateKey } from "@dxos/debug";
33
+ import { JsonView, Panel } from "@dxos/devtools";
31
34
  import { log } from "@dxos/log";
32
- import { Input, useTranslation } from "@dxos/react-ui";
33
- import { Json } from "@dxos/react-ui-syntax-highlighter";
34
- var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-thread/src/components/CallDebugPanel.tsx";
35
+ import { IconButton, Input, useTranslation } from "@dxos/react-ui";
36
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/components/CallDebugPanel.tsx";
35
37
  var CallDebugPanel = ({ state }) => {
36
38
  var _effect = _useSignals();
37
39
  try {
38
- const users = state?.call?.users;
39
- const self = state?.call?.self;
40
- const { t } = useTranslation(THREAD_PLUGIN);
40
+ const { t } = useTranslation(meta.id);
41
41
  const [open, setOpen] = useState(false);
42
42
  const handleToggle = () => setOpen(!open);
43
+ const [showServiceHistory, setShowServiceHistory] = useState(false);
44
+ const handleToggleServiceHistory = () => setShowServiceHistory(!showServiceHistory);
45
+ const handleCopyRaw = async () => {
46
+ await navigator.clipboard.writeText(JSON.stringify({
47
+ users: state?.call?.users,
48
+ stats
49
+ }, null, 2));
50
+ };
43
51
  const [showDetailedWebRTCStats, setShowDetailedWebRTCStats] = useState(false);
44
52
  const handleShowDetailedWebRTCStats = () => setShowDetailedWebRTCStats(!showDetailedWebRTCStats);
45
53
  const webrtcStats = useMemo(() => new WebRTCStats({
46
54
  getStatsInterval: 1e3
47
55
  }), []);
48
- const [stats, setStats] = useState({});
56
+ const [stats, setStats] = useState();
49
57
  useEffect(() => {
50
58
  const pc = state?.media.peer?.session?.peerConnection;
51
- const handleStats = (stats2) => setStats(stats2.data);
59
+ const handleStats = (stats2) => {
60
+ setStats(stats2.data);
61
+ };
52
62
  let added = false;
53
63
  if (pc && showDetailedWebRTCStats) {
54
64
  webrtcStats.addConnection({
@@ -75,7 +85,7 @@ var CallDebugPanel = ({ state }) => {
75
85
  connectionId: "1"
76
86
  }, {
77
87
  F: __dxlog_file,
78
- L: 55,
88
+ L: 62,
79
89
  S: void 0,
80
90
  C: (f, a) => f(...a)
81
91
  });
@@ -85,6 +95,10 @@ var CallDebugPanel = ({ state }) => {
85
95
  state?.media.peer?.session?.peerConnection,
86
96
  showDetailedWebRTCStats
87
97
  ]);
98
+ const rows = useMemo(() => getCallStatusTable(state), [
99
+ state?.call.users,
100
+ state?.media.pulledAudioTracks
101
+ ]);
88
102
  return /* @__PURE__ */ React.createElement(Panel, {
89
103
  id: "meeting-status",
90
104
  icon: "ph--video-conference--regular",
@@ -94,53 +108,111 @@ var CallDebugPanel = ({ state }) => {
94
108
  maxHeight: false,
95
109
  info: /* @__PURE__ */ React.createElement("div", {
96
110
  className: "flex items-center gap-2"
97
- }, /* @__PURE__ */ React.createElement("span", {
98
- title: "Joined"
99
- }, self?.joined ? "Active" : "Inactive"), users?.length !== void 0 && /* @__PURE__ */ React.createElement("span", {
100
- title: "Users"
101
- }, users?.length ?? 0, " User(s)"))
111
+ }, " ", state?.call.joined ? "Active" : "Inactive")
102
112
  }, /* @__PURE__ */ React.createElement("div", {
103
- className: "flex flex-col gap-2 overflow-y-auto"
113
+ className: "flex flex-col w-full gap-2 text-xs"
104
114
  }, /* @__PURE__ */ React.createElement("div", {
105
- className: "flex items-row gap-2"
115
+ className: "flex items-center gap-2"
106
116
  }, /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.Label, {
107
117
  classNames: "text-sm"
108
118
  }, t("show webrtc stats title")), /* @__PURE__ */ React.createElement(Input.Checkbox, {
109
119
  checked: showDetailedWebRTCStats,
110
120
  onCheckedChange: handleShowDetailedWebRTCStats
111
- }))), /* @__PURE__ */ React.createElement(Json, {
121
+ }))), /* @__PURE__ */ React.createElement("div", {
122
+ className: "flex items-center gap-2"
123
+ }, /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.Label, {
124
+ classNames: "text-sm"
125
+ }, t("show calls history title")), /* @__PURE__ */ React.createElement(Input.Checkbox, {
126
+ checked: showServiceHistory,
127
+ onCheckedChange: handleToggleServiceHistory
128
+ }))), /* @__PURE__ */ React.createElement("div", {
129
+ className: "flex items-center gap-2"
130
+ }, /* @__PURE__ */ React.createElement(IconButton, {
112
131
  classNames: "text-sm",
132
+ icon: "ph--copy--regular",
133
+ label: "copy raw",
134
+ onClick: handleCopyRaw
135
+ })), /* @__PURE__ */ React.createElement(Table, {
136
+ rows
137
+ }), showDetailedWebRTCStats && /* @__PURE__ */ React.createElement(JsonView, {
113
138
  data: {
114
- users,
115
- activities: state?.call?.activities,
116
- ...showDetailedWebRTCStats ? {
117
- webrtc: {
118
- connectionState: state?.media.peer?.session?.peerConnection.connectionState,
119
- iceConnectionState: state?.media.peer?.session?.peerConnection.iceConnectionState,
120
- stats
121
- }
122
- } : {},
123
- tracks: state?.media.peer?.session?.peerConnection.getTransceivers().map((transceiver) => {
124
- const track = transceiver.direction === "recvonly" ? transceiver.receiver.track : transceiver.sender.track;
125
- return {
126
- id: track?.id,
127
- kind: track?.kind,
128
- direction: transceiver.direction,
129
- enabled: track?.enabled,
130
- muted: track?.muted,
131
- readyState: track?.readyState,
132
- settings: track?.getSettings()
133
- };
134
- }),
135
- callsServiceHistory: state?.media.peer?.history.get()
139
+ stats
140
+ }
141
+ }), showServiceHistory && /* @__PURE__ */ React.createElement(JsonView, {
142
+ data: {
143
+ history: state?.media.peer?.history.get()
136
144
  }
137
145
  })));
138
146
  } finally {
139
147
  _effect.f();
140
148
  }
141
149
  };
150
+ var getCallStatusTable = (state) => {
151
+ if (!state || !state.call?.users) {
152
+ return [];
153
+ }
154
+ const self = state.call.self;
155
+ const users = state.call.users.filter((user) => user.id !== self.id).map((user) => {
156
+ const isOk = {
157
+ audio: user.tracks?.audio && state.media.pulledAudioTracks[user.tracks?.audio]?.ctx.disposed === false,
158
+ video: user.tracks?.video && state.media.pulledVideoStreams[user.tracks?.video]?.ctx.disposed === false,
159
+ screenshare: user.tracks?.screenshare && state.media.pulledVideoStreams[user.tracks?.screenshare]?.ctx.disposed === false
160
+ };
161
+ return {
162
+ ...user,
163
+ isOk
164
+ };
165
+ });
166
+ return [
167
+ [
168
+ "users",
169
+ state.call.users.length ?? 0
170
+ ],
171
+ [
172
+ "*self* " + (self?.name ?? truncateKey(self.id, 8)),
173
+ self?.tracks?.audio && state.media.pushedAudioTrack ? "AUD \u2705" : "AUD \u274C",
174
+ self?.tracks?.video && state.media.pushedVideoTrack ? "VID \u2705" : "VID \u274C",
175
+ self?.tracks?.screenshareEnabled ? self.tracks.screenshareEnabled && state.media.pushedScreenshareTrack ? "SCR \u2705" : "SCR \u274C" : void 0
176
+ ],
177
+ ...users.map((user) => [
178
+ user.name ?? truncateKey(user.id, 8),
179
+ user.isOk.audio ? "AUD \u2705" : "AUD \u274C",
180
+ user.isOk.video ? "VID \u2705" : "VID \u274C",
181
+ user.tracks?.screenshareEnabled ? user.isOk.screenshare ? "SCR \u2705" : "SCR \u274C" : void 0
182
+ ]),
183
+ [
184
+ "ICE",
185
+ state.media.peer?.session?.peerConnection.iceConnectionState ?? "no connection"
186
+ ]
187
+ ];
188
+ };
189
+ (function(Unit2) {
190
+ Unit2.KB = (n) => ((n ?? 0) / 1e3).toFixed(2);
191
+ })(Unit || (Unit = {}));
192
+ var Table = ({ rows }) => {
193
+ var _effect = _useSignals();
194
+ try {
195
+ return /* @__PURE__ */ React.createElement("div", {
196
+ className: "w-full text-xs font-mono"
197
+ }, rows.map(([prefix, label, value, unit], i) => /* @__PURE__ */ React.createElement("div", {
198
+ key: i,
199
+ className: "grid grid-cols-[3fr_1fr_1fr_1fr]"
200
+ }, /* @__PURE__ */ React.createElement("div", {
201
+ className: "p-1"
202
+ }, prefix), /* @__PURE__ */ React.createElement("div", {
203
+ className: "p-1"
204
+ }, label), /* @__PURE__ */ React.createElement("div", {
205
+ className: "p-1"
206
+ }, value), /* @__PURE__ */ React.createElement("div", {
207
+ className: "p-1"
208
+ }, unit))));
209
+ } finally {
210
+ _effect.f();
211
+ }
212
+ };
213
+ var Unit;
142
214
 
143
- // packages/plugins/plugin-thread/src/components/CallSidebar.tsx
215
+ // src/components/CallSidebar.tsx
144
216
  import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
145
217
  import React2 from "react";
146
218
  import { useCapability } from "@dxos/app-framework";
@@ -156,100 +228,51 @@ var CallSidebar = () => {
156
228
  }
157
229
  };
158
230
 
159
- // packages/plugins/plugin-thread/src/components/ThreadComplementary.tsx
231
+ // src/components/ThreadComplementary.tsx
160
232
  import { useSignals as _useSignals6 } from "@preact-signals/safe-react/tracking";
161
233
  import React6, { useCallback as useCallback2, useMemo as useMemo3 } from "react";
162
- import { Capabilities, LayoutAction, createIntent, useCapability as useCapability2, useCapabilities, useIntentDispatcher } from "@dxos/app-framework";
234
+ import { Capabilities, CollaborationActions, LayoutAction, createIntent, useCapabilities, useCapability as useCapability2, useIntentDispatcher } from "@dxos/app-framework";
163
235
  import { Filter, Obj, Query, Relation as Relation3 } from "@dxos/echo";
164
- import { fullyQualifiedId as fullyQualifiedId3, getSpace as getSpace2, useQuery } from "@dxos/react-client/echo";
236
+ import { Ref as Ref2, fullyQualifiedId as fullyQualifiedId3, getSpace as getSpace2, useQuery } from "@dxos/react-client/echo";
165
237
  import { useIdentity as useIdentity2 } from "@dxos/react-client/halo";
166
238
  import { useThemeContext as useThemeContext2, useTranslation as useTranslation4 } from "@dxos/react-ui";
167
239
  import { useAttended } from "@dxos/react-ui-attention";
168
240
  import { StackItem } from "@dxos/react-ui-stack";
169
241
  import { Tabs } from "@dxos/react-ui-tabs";
242
+ import { mx as mx2 } from "@dxos/react-ui-theme";
170
243
  import { AnchoredTo } from "@dxos/schema";
171
244
 
172
- // packages/plugins/plugin-thread/src/components/index.ts
245
+ // src/components/index.ts
173
246
  import { lazy } from "react";
174
247
 
175
- // packages/plugins/plugin-thread/src/components/CommentContainer.tsx
248
+ // src/components/CommentsContainer.tsx
249
+ import { useSignals as _useSignals4 } from "@preact-signals/safe-react/tracking";
250
+ import React4, { useEffect as useEffect2 } from "react";
251
+ import { Relation as Relation2 } from "@dxos/echo";
252
+ import { fullyQualifiedId as fullyQualifiedId2 } from "@dxos/react-client/echo";
253
+ import { Callout, Icon, Trans, useTranslation as useTranslation3 } from "@dxos/react-ui";
254
+
255
+ // src/components/CommentsThreadContainer.tsx
176
256
  import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
177
- import { CheckCircle, X } from "@phosphor-icons/react";
178
257
  import React3, { useCallback, useMemo as useMemo2, useRef, useState as useState2 } from "react";
179
- import { Relation } from "@dxos/echo";
180
- import { RefArray } from "@dxos/live-object";
258
+ import { Ref, Relation } from "@dxos/echo";
181
259
  import { fullyQualifiedId, getSpace, useMembers } from "@dxos/react-client/echo";
182
260
  import { useIdentity } from "@dxos/react-client/halo";
183
- import { Button, Tag, Tooltip, useThemeContext, useTranslation as useTranslation2 } from "@dxos/react-ui";
261
+ import { IconButton as IconButton2, Tag, Tooltip, useThemeContext, useTranslation as useTranslation2 } from "@dxos/react-ui";
184
262
  import { createBasicExtensions, createThemeExtensions, listener } from "@dxos/react-ui-editor";
185
- import { getSize, hoverableControlItem, hoverableControls, hoverableFocusedWithinControls, mx } from "@dxos/react-ui-theme";
186
- import { MessageTextbox, Thread, ThreadFooter, ThreadHeading } from "@dxos/react-ui-thread";
263
+ import { hoverableControlItem, hoverableControls, hoverableFocusedWithinControls, mx } from "@dxos/react-ui-theme";
264
+ import { MessageTextbox, Thread } from "@dxos/react-ui-thread";
187
265
  import { isNonNullable } from "@dxos/util";
188
- var sizeClass = getSize(4);
189
- var commentControlClassNames = "!p-1 !min-bs-0 transition-opacity";
190
- var ToggleResolvedButton = ({ isResolved, onResolve }) => {
191
- var _effect = _useSignals3();
192
- try {
193
- const { t } = useTranslation2(THREAD_PLUGIN);
194
- const label = t(isResolved ? "mark as unresolved label" : "mark as resolved label");
195
- return /* @__PURE__ */ React3.createElement(Tooltip.Trigger, {
196
- asChild: true,
197
- content: label
198
- }, /* @__PURE__ */ React3.createElement(Button, {
199
- variant: "ghost",
200
- "data-testid": "thread.toggle-resolved",
201
- onClick: onResolve,
202
- classNames: [
203
- commentControlClassNames,
204
- !isResolved && hoverableControlItem
205
- ]
206
- }, /* @__PURE__ */ React3.createElement("span", {
207
- className: "sr-only"
208
- }, label), isResolved ? /* @__PURE__ */ React3.createElement(CheckCircle, {
209
- className: sizeClass,
210
- weight: "fill"
211
- }) : /* @__PURE__ */ React3.createElement(CheckCircle, {
212
- className: sizeClass
213
- })));
214
- } finally {
215
- _effect.f();
216
- }
217
- };
218
- var DeleteThreadButton = ({ onDelete }) => {
219
- var _effect = _useSignals3();
220
- try {
221
- const { t } = useTranslation2(THREAD_PLUGIN);
222
- const label = t("delete thread label");
223
- return /* @__PURE__ */ React3.createElement(Tooltip.Trigger, {
224
- asChild: true,
225
- content: label
226
- }, /* @__PURE__ */ React3.createElement(Button, {
227
- variant: "ghost",
228
- "data-testid": "thread.delete",
229
- onClick: onDelete,
230
- classNames: [
231
- commentControlClassNames,
232
- hoverableControlItem
233
- ]
234
- }, /* @__PURE__ */ React3.createElement("span", {
235
- className: "sr-only"
236
- }, label), /* @__PURE__ */ React3.createElement(X, {
237
- className: sizeClass
238
- })));
239
- } finally {
240
- _effect.f();
241
- }
242
- };
243
- var CommentContainer = ({ anchor, current, onAttend, onComment, onResolve, onMessageDelete, onThreadDelete }) => {
266
+ var CommentsThreadContainer = ({ anchor, current, onAttend, onComment, onResolve, onMessageDelete, onThreadDelete, onAcceptProposal }) => {
244
267
  var _effect = _useSignals3();
245
268
  try {
269
+ const { t } = useTranslation2(meta.id);
246
270
  const identity = useIdentity();
247
271
  const space = getSpace(anchor);
248
272
  const members = useMembers(space?.key);
249
273
  const detached = !anchor.anchor;
250
274
  const thread = Relation.getSource(anchor);
251
275
  const activity = useStatus(space, fullyQualifiedId(thread));
252
- const { t } = useTranslation2(THREAD_PLUGIN);
253
276
  const threadScrollRef = useRef(null);
254
277
  const { themeMode } = useThemeContext();
255
278
  const textboxMetadata = getMessageMetadata(fullyQualifiedId(thread), identity);
@@ -290,6 +313,10 @@ var CommentContainer = ({ anchor, current, onAttend, onComment, onResolve, onMes
290
313
  onThreadDelete,
291
314
  anchor
292
315
  ]);
316
+ const handleAcceptProposal = useCallback((id) => onAcceptProposal?.(anchor, id), [
317
+ onAcceptProposal,
318
+ anchor
319
+ ]);
293
320
  const handleComment = useCallback(() => {
294
321
  if (!messageRef.current) {
295
322
  return false;
@@ -303,11 +330,12 @@ var CommentContainer = ({ anchor, current, onAttend, onComment, onResolve, onMes
303
330
  anchor,
304
331
  identity
305
332
  ]);
306
- return /* @__PURE__ */ React3.createElement(Thread, {
307
- onClickCapture: handleAttend,
308
- onFocusCapture: handleAttend,
333
+ return /* @__PURE__ */ React3.createElement(Thread.Root, {
334
+ id: fullyQualifiedId(thread),
335
+ classNames: "pbs-2 border-be border-subduedSeparator last:border-none",
309
336
  current,
310
- id: fullyQualifiedId(thread)
337
+ onClickCapture: handleAttend,
338
+ onFocusCapture: handleAttend
311
339
  }, /* @__PURE__ */ React3.createElement("div", {
312
340
  role: "none",
313
341
  className: mx("col-span-2 grid grid-cols-[var(--rail-size)_1fr_min-content]", hoverableControls, hoverableFocusedWithinControls)
@@ -315,28 +343,47 @@ var CommentContainer = ({ anchor, current, onAttend, onComment, onResolve, onMes
315
343
  asChild: true,
316
344
  content: t("detached thread label"),
317
345
  side: "top"
318
- }, /* @__PURE__ */ React3.createElement(ThreadHeading, {
346
+ }, /* @__PURE__ */ React3.createElement(Thread.Header, {
319
347
  detached: true
320
- }, thread.name)) : /* @__PURE__ */ React3.createElement(ThreadHeading, null, thread.name), /* @__PURE__ */ React3.createElement("div", {
321
- className: "flex flex-row items-center pli-1"
348
+ }, thread.name)) : /* @__PURE__ */ React3.createElement(Thread.Header, null, thread.name), /* @__PURE__ */ React3.createElement("div", {
349
+ role: "none",
350
+ className: buttonGroupClassNames
322
351
  }, thread.status === "staged" && /* @__PURE__ */ React3.createElement(Tag, {
323
352
  palette: "neutral"
324
- }, t("draft button")), onResolve && !(thread?.status === "staged") && /* @__PURE__ */ React3.createElement(ToggleResolvedButton, {
325
- isResolved: thread?.status === "resolved",
326
- onResolve: handleResolve
327
- }), onThreadDelete && /* @__PURE__ */ React3.createElement(DeleteThreadButton, {
328
- onDelete: handleThreadDelete
329
- }))), RefArray.targets(thread.messages?.filter(isNonNullable) ?? []).map((message) => /* @__PURE__ */ React3.createElement(MessageContainer, {
353
+ }, t("draft button")), onResolve && !(thread?.status === "staged") && /* @__PURE__ */ React3.createElement(IconButton2, {
354
+ "data-testid": "thread.resolve",
355
+ variant: "ghost",
356
+ icon: thread?.status === "resolved" ? "ph--check--fill" : "ph--check--regular",
357
+ iconOnly: true,
358
+ label: t("resolve thread label"),
359
+ classNames: [
360
+ buttonClassNames,
361
+ thread?.status !== "resolved" && hoverableControlItem
362
+ ],
363
+ onClick: handleResolve
364
+ }), onThreadDelete && /* @__PURE__ */ React3.createElement(IconButton2, {
365
+ "data-testid": "thread.delete",
366
+ variant: "ghost",
367
+ icon: "ph--x--regular",
368
+ iconOnly: true,
369
+ label: t("delete thread label"),
370
+ classNames: [
371
+ buttonClassNames,
372
+ hoverableControlItem
373
+ ],
374
+ onClick: handleThreadDelete
375
+ }))), Ref.Array.targets(thread.messages?.filter(isNonNullable) ?? []).map((message) => /* @__PURE__ */ React3.createElement(MessageContainer, {
330
376
  key: message.id,
331
377
  editable: true,
332
378
  message,
333
379
  members,
334
- onDelete: handleMessageDelete
380
+ onDelete: handleMessageDelete,
381
+ onAcceptProposal: handleAcceptProposal
335
382
  })), /* @__PURE__ */ React3.createElement(MessageTextbox, {
336
383
  extensions,
337
384
  onSend: handleComment,
338
385
  ...textboxMetadata
339
- }), /* @__PURE__ */ React3.createElement(ThreadFooter, {
386
+ }), /* @__PURE__ */ React3.createElement(Thread.Status, {
340
387
  activity
341
388
  }, t("activity message")), /* @__PURE__ */ React3.createElement("div", {
342
389
  role: "none",
@@ -348,16 +395,11 @@ var CommentContainer = ({ anchor, current, onAttend, onComment, onResolve, onMes
348
395
  }
349
396
  };
350
397
 
351
- // packages/plugins/plugin-thread/src/components/CommentsContainer.tsx
352
- import { useSignals as _useSignals4 } from "@preact-signals/safe-react/tracking";
353
- import React4, { useEffect as useEffect2 } from "react";
354
- import { Relation as Relation2 } from "@dxos/echo";
355
- import { fullyQualifiedId as fullyQualifiedId2 } from "@dxos/react-client/echo";
356
- import { Callout, Icon, Trans, useTranslation as useTranslation3 } from "@dxos/react-ui";
398
+ // src/components/CommentsContainer.tsx
357
399
  var CommentsContainer = ({ anchors, currentId, showResolvedThreads, ...props }) => {
358
400
  var _effect = _useSignals4();
359
401
  try {
360
- const { t } = useTranslation3(THREAD_PLUGIN);
402
+ const { t } = useTranslation3(meta.id);
361
403
  const filteredAnchors = showResolvedThreads ? anchors.filter((anchor) => !!Relation2.getSource(anchor)) : anchors.filter((anchor) => {
362
404
  const thread = Relation2.getSource(anchor);
363
405
  return thread && thread.status !== "resolved";
@@ -388,45 +430,45 @@ var CommentsContainer = ({ anchors, currentId, showResolvedThreads, ...props })
388
430
  }
389
431
  }))));
390
432
  }
391
- return filteredAnchors.map((anchor) => {
433
+ return /* @__PURE__ */ React4.createElement("div", null, filteredAnchors.map((anchor) => {
392
434
  const thread = Relation2.getSource(anchor);
393
435
  const threadId = fullyQualifiedId2(thread);
394
- return /* @__PURE__ */ React4.createElement(CommentContainer, {
436
+ return /* @__PURE__ */ React4.createElement(CommentsThreadContainer, {
395
437
  key: threadId,
396
438
  anchor,
397
439
  current: currentId === threadId,
398
440
  ...props
399
441
  });
400
- });
442
+ }));
401
443
  } finally {
402
444
  _effect.f();
403
445
  }
404
446
  };
405
447
 
406
- // packages/plugins/plugin-thread/src/components/ThreadSettings.tsx
448
+ // src/components/ThreadSettings.tsx
407
449
  import { useSignals as _useSignals5 } from "@preact-signals/safe-react/tracking";
408
450
  import React5 from "react";
409
- import { DeprecatedFormContainer } from "@dxos/react-ui-form";
451
+ import { ControlPage } from "@dxos/react-ui-form";
410
452
  var ThreadSettings = ({ settings }) => {
411
453
  var _effect = _useSignals5();
412
454
  try {
413
- return /* @__PURE__ */ React5.createElement(DeprecatedFormContainer, null);
455
+ return /* @__PURE__ */ React5.createElement(ControlPage, null);
414
456
  } finally {
415
457
  _effect.f();
416
458
  }
417
459
  };
418
460
 
419
- // packages/plugins/plugin-thread/src/components/index.ts
420
- var ChannelContainer2 = lazy(() => import("./ChannelContainer-O4QJII2P.mjs"));
421
- var ChatContainer = lazy(() => import("./ChatContainer-F6CSADV7.mjs"));
461
+ // src/components/index.ts
462
+ var ChannelContainer2 = lazy(() => import("./ChannelContainer-KQQEZWUN.mjs"));
463
+ var ChatContainer = lazy(() => import("./ChatContainer-QVQKFBWA.mjs"));
422
464
 
423
- // packages/plugins/plugin-thread/src/components/ThreadComplementary.tsx
465
+ // src/components/ThreadComplementary.tsx
424
466
  var ThreadComplementary = ({ subject }) => {
425
467
  var _effect = _useSignals6();
426
468
  try {
469
+ const { t } = useTranslation4(meta.id);
427
470
  const { dispatchPromise: dispatch } = useIntentDispatcher();
428
471
  const identity = useIdentity2();
429
- const { t } = useTranslation4(THREAD_PLUGIN);
430
472
  const { tx } = useThemeContext2();
431
473
  const subjectId = fullyQualifiedId3(subject);
432
474
  const { state, getViewState } = useCapability2(ThreadCapabilities.MutableState);
@@ -505,6 +547,26 @@ var ThreadComplementary = ({ subject }) => {
505
547
  dispatch,
506
548
  subject
507
549
  ]);
550
+ const handleAcceptProposal = useCallback2(async (anchor, messageId) => {
551
+ const thread = Relation3.getSource(anchor);
552
+ const messageIndex = thread.messages.findIndex(Ref2.hasObjectId(messageId));
553
+ const message = thread.messages[messageIndex]?.target;
554
+ const proposal = message?.blocks.find((block) => block._tag === "proposal");
555
+ if (!proposal || !anchor.anchor) {
556
+ return;
557
+ }
558
+ await dispatch(createIntent(CollaborationActions.AcceptProposal, {
559
+ subject,
560
+ anchor: anchor.anchor,
561
+ proposal
562
+ }));
563
+ await dispatch(createIntent(ThreadAction.ToggleResolved, {
564
+ thread
565
+ }));
566
+ }, [
567
+ dispatch,
568
+ subject
569
+ ]);
508
570
  const comments = /* @__PURE__ */ React6.createElement(CommentsContainer, {
509
571
  anchors,
510
572
  currentId: attended.includes(subjectId) ? state.current : void 0,
@@ -513,28 +575,34 @@ var ThreadComplementary = ({ subject }) => {
513
575
  onComment: handleComment,
514
576
  onResolve: handleResolve,
515
577
  onMessageDelete: handleMessageDelete,
516
- onThreadDelete: handleThreadDelete
578
+ onThreadDelete: handleThreadDelete,
579
+ onAcceptProposal: handleAcceptProposal
517
580
  });
518
581
  return /* @__PURE__ */ React6.createElement(StackItem.Content, {
519
- toolbar: true
582
+ toolbar: true,
583
+ classNames: "overflow-hidden"
520
584
  }, /* @__PURE__ */ React6.createElement(Tabs.Root, {
521
585
  value: showResolvedThreads ? "all" : "unresolved",
522
586
  orientation: "horizontal",
523
- classNames: 'contents [&_[role="tabpanel"]]:min-bs-0 [&_[role="tabpanel"]]:overflow-y-auto [&_[role="tabpanel"]]:scrollbar-thin',
587
+ classNames: [
588
+ 'contents [&_[role="tabpanel"]]:min-bs-0 [&_[role="tabpanel"]]:overflow-y-auto [&_[role="tabpanel"]]:scrollbar-thin'
589
+ ],
524
590
  onValueChange: onChangeViewState
525
591
  }, /* @__PURE__ */ React6.createElement(Tabs.Tablist, {
526
- classNames: tx("toolbar.root", "toolbar", {})
592
+ classNames: mx2("bg-toolbarSurface border-b border-subduedSeparator")
527
593
  }, /* @__PURE__ */ React6.createElement(Tabs.Tab, {
528
594
  value: "unresolved",
529
595
  classNames: "text-sm"
530
596
  }, t("show unresolved label")), /* @__PURE__ */ React6.createElement(Tabs.Tab, {
531
597
  value: "all",
532
598
  classNames: "text-sm"
533
- }, t("show all label"))), /* @__PURE__ */ React6.createElement(Tabs.Tabpanel, {
599
+ }, t("show all label"))), /* @__PURE__ */ React6.createElement("div", {
600
+ className: "overflow-y-auto"
601
+ }, /* @__PURE__ */ React6.createElement(Tabs.Tabpanel, {
534
602
  value: "all"
535
603
  }, showResolvedThreads && comments), /* @__PURE__ */ React6.createElement(Tabs.Tabpanel, {
536
604
  value: "unresolved"
537
- }, !showResolvedThreads && comments)));
605
+ }, !showResolvedThreads && comments))));
538
606
  } finally {
539
607
  _effect.f();
540
608
  }
@@ -548,4 +616,4 @@ export {
548
616
  ChannelContainer2 as ChannelContainer,
549
617
  ChatContainer
550
618
  };
551
- //# sourceMappingURL=chunk-UZWVVFT3.mjs.map
619
+ //# sourceMappingURL=chunk-LE2LIYGX.mjs.map