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