@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
@@ -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
- import { useThemeContext as useThemeContext2, useTranslation as useTranslation4 } from "@dxos/react-ui";
238
+ import { useThemeContext as useThemeContext2, useTranslation as useTranslation5 } 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,47 @@ 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";
410
- var ThreadSettings = ({ settings }) => {
451
+ import { useTranslation as useTranslation4 } from "@dxos/react-ui";
452
+ import { ControlPage } from "@dxos/react-ui-form";
453
+ var ThreadSettings = ({ settings: _settings }) => {
411
454
  var _effect = _useSignals5();
412
455
  try {
413
- return /* @__PURE__ */ React5.createElement(DeprecatedFormContainer, null);
456
+ const { t: _t } = useTranslation4(meta.id);
457
+ return /* @__PURE__ */ React5.createElement(ControlPage, null);
414
458
  } finally {
415
459
  _effect.f();
416
460
  }
417
461
  };
418
462
 
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"));
463
+ // src/components/index.ts
464
+ var ChannelContainer2 = lazy(() => import("./ChannelContainer-FLZZCFBA.mjs"));
465
+ var ChatContainer = lazy(() => import("./ChatContainer-QVQKFBWA.mjs"));
422
466
 
423
- // packages/plugins/plugin-thread/src/components/ThreadComplementary.tsx
467
+ // src/components/ThreadComplementary.tsx
424
468
  var ThreadComplementary = ({ subject }) => {
425
469
  var _effect = _useSignals6();
426
470
  try {
471
+ const { t } = useTranslation5(meta.id);
427
472
  const { dispatchPromise: dispatch } = useIntentDispatcher();
428
473
  const identity = useIdentity2();
429
- const { t } = useTranslation4(THREAD_PLUGIN);
430
474
  const { tx } = useThemeContext2();
431
475
  const subjectId = fullyQualifiedId3(subject);
432
476
  const { state, getViewState } = useCapability2(ThreadCapabilities.MutableState);
@@ -505,6 +549,26 @@ var ThreadComplementary = ({ subject }) => {
505
549
  dispatch,
506
550
  subject
507
551
  ]);
552
+ const handleAcceptProposal = useCallback2(async (anchor, messageId) => {
553
+ const thread = Relation3.getSource(anchor);
554
+ const messageIndex = thread.messages.findIndex(Ref2.hasObjectId(messageId));
555
+ const message = thread.messages[messageIndex]?.target;
556
+ const proposal = message?.blocks.find((block) => block._tag === "proposal");
557
+ if (!proposal || !anchor.anchor) {
558
+ return;
559
+ }
560
+ await dispatch(createIntent(CollaborationActions.AcceptProposal, {
561
+ subject,
562
+ anchor: anchor.anchor,
563
+ proposal
564
+ }));
565
+ await dispatch(createIntent(ThreadAction.ToggleResolved, {
566
+ thread
567
+ }));
568
+ }, [
569
+ dispatch,
570
+ subject
571
+ ]);
508
572
  const comments = /* @__PURE__ */ React6.createElement(CommentsContainer, {
509
573
  anchors,
510
574
  currentId: attended.includes(subjectId) ? state.current : void 0,
@@ -513,28 +577,34 @@ var ThreadComplementary = ({ subject }) => {
513
577
  onComment: handleComment,
514
578
  onResolve: handleResolve,
515
579
  onMessageDelete: handleMessageDelete,
516
- onThreadDelete: handleThreadDelete
580
+ onThreadDelete: handleThreadDelete,
581
+ onAcceptProposal: handleAcceptProposal
517
582
  });
518
583
  return /* @__PURE__ */ React6.createElement(StackItem.Content, {
519
- toolbar: true
584
+ toolbar: true,
585
+ classNames: "overflow-hidden"
520
586
  }, /* @__PURE__ */ React6.createElement(Tabs.Root, {
521
587
  value: showResolvedThreads ? "all" : "unresolved",
522
588
  orientation: "horizontal",
523
- classNames: 'contents [&_[role="tabpanel"]]:min-bs-0 [&_[role="tabpanel"]]:overflow-y-auto [&_[role="tabpanel"]]:scrollbar-thin',
589
+ classNames: [
590
+ 'contents [&_[role="tabpanel"]]:min-bs-0 [&_[role="tabpanel"]]:overflow-y-auto [&_[role="tabpanel"]]:scrollbar-thin'
591
+ ],
524
592
  onValueChange: onChangeViewState
525
593
  }, /* @__PURE__ */ React6.createElement(Tabs.Tablist, {
526
- classNames: tx("toolbar.root", "toolbar", {})
594
+ classNames: mx2("bg-toolbarSurface border-b border-subduedSeparator")
527
595
  }, /* @__PURE__ */ React6.createElement(Tabs.Tab, {
528
596
  value: "unresolved",
529
597
  classNames: "text-sm"
530
598
  }, t("show unresolved label")), /* @__PURE__ */ React6.createElement(Tabs.Tab, {
531
599
  value: "all",
532
600
  classNames: "text-sm"
533
- }, t("show all label"))), /* @__PURE__ */ React6.createElement(Tabs.Tabpanel, {
601
+ }, t("show all label"))), /* @__PURE__ */ React6.createElement("div", {
602
+ className: "overflow-y-auto"
603
+ }, /* @__PURE__ */ React6.createElement(Tabs.Tabpanel, {
534
604
  value: "all"
535
605
  }, showResolvedThreads && comments), /* @__PURE__ */ React6.createElement(Tabs.Tabpanel, {
536
606
  value: "unresolved"
537
- }, !showResolvedThreads && comments)));
607
+ }, !showResolvedThreads && comments))));
538
608
  } finally {
539
609
  _effect.f();
540
610
  }
@@ -548,4 +618,4 @@ export {
548
618
  ChannelContainer2 as ChannelContainer,
549
619
  ChatContainer
550
620
  };
551
- //# sourceMappingURL=chunk-UZWVVFT3.mjs.map
621
+ //# sourceMappingURL=chunk-XXMQULU7.mjs.map