@dxos/plugin-thread 0.8.4-main.5ea62a8 → 0.8.4-main.66e292d

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 (297) hide show
  1. package/dist/lib/browser/ChannelContainer-L7MKV7DS.mjs +17 -0
  2. package/dist/lib/browser/ChatContainer-KPY4BAUE.mjs +16 -0
  3. package/dist/lib/browser/{app-graph-builder-FHAOPO57.mjs → app-graph-builder-TWJ2UCOZ.mjs} +32 -32
  4. package/dist/lib/browser/app-graph-builder-TWJ2UCOZ.mjs.map +7 -0
  5. package/dist/lib/browser/blueprint-definition-TQ4JFMZZ.mjs +101 -0
  6. package/dist/lib/browser/blueprint-definition-TQ4JFMZZ.mjs.map +7 -0
  7. package/dist/lib/browser/{call-manager-EW2QC6Q4.mjs → call-manager-4YFT4XA6.mjs} +8 -7
  8. package/dist/lib/{node-esm/call-manager-N3KASRDQ.mjs.map → browser/call-manager-4YFT4XA6.mjs.map} +1 -1
  9. package/dist/lib/browser/{chunk-TQJYDFBU.mjs → chunk-ALZKJOZK.mjs} +40 -37
  10. package/dist/lib/browser/chunk-ALZKJOZK.mjs.map +7 -0
  11. package/dist/lib/browser/chunk-ANTFU4JB.mjs +25 -0
  12. package/dist/lib/browser/chunk-ANTFU4JB.mjs.map +7 -0
  13. package/dist/lib/browser/chunk-CFC7LEPD.mjs +18 -0
  14. package/dist/lib/browser/chunk-CFC7LEPD.mjs.map +7 -0
  15. package/dist/lib/browser/{chunk-GERVMFQW.mjs → chunk-CP7E2HRE.mjs} +2 -2
  16. package/dist/lib/browser/chunk-CP7E2HRE.mjs.map +7 -0
  17. package/dist/lib/browser/{chunk-KEXJGF2R.mjs → chunk-ISCHODBV.mjs} +53 -3
  18. package/dist/lib/browser/chunk-ISCHODBV.mjs.map +7 -0
  19. package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
  20. package/dist/lib/browser/{chunk-KTWYVC5X.mjs → chunk-JDJPMI7V.mjs} +47 -51
  21. package/dist/lib/browser/chunk-JDJPMI7V.mjs.map +7 -0
  22. package/dist/lib/browser/{chunk-2P3GVRHP.mjs → chunk-KOBXMDCI.mjs} +68 -67
  23. package/dist/lib/browser/chunk-KOBXMDCI.mjs.map +7 -0
  24. package/dist/lib/browser/{chunk-J26C57ZY.mjs → chunk-NPT5S6N4.mjs} +164 -101
  25. package/dist/lib/browser/chunk-NPT5S6N4.mjs.map +7 -0
  26. package/dist/lib/browser/chunk-QM34EZQK.mjs +20 -0
  27. package/dist/lib/browser/chunk-QM34EZQK.mjs.map +7 -0
  28. package/dist/lib/browser/{chunk-H63NDV62.mjs → chunk-TLOOZTRD.mjs} +18 -17
  29. package/dist/lib/browser/chunk-TLOOZTRD.mjs.map +7 -0
  30. package/dist/lib/browser/{chunk-TUSBPMNU.mjs → chunk-ZCW3NSDZ.mjs} +274 -374
  31. package/dist/lib/browser/chunk-ZCW3NSDZ.mjs.map +7 -0
  32. package/dist/lib/browser/index.mjs +55 -57
  33. package/dist/lib/browser/index.mjs.map +3 -3
  34. package/dist/lib/browser/{intent-resolver-IB5GYU2D.mjs → intent-resolver-G33FT3NO.mjs} +40 -113
  35. package/dist/lib/browser/intent-resolver-G33FT3NO.mjs.map +7 -0
  36. package/dist/lib/browser/{markdown-Z677YORA.mjs → markdown-WFZFYJBQ.mjs} +30 -27
  37. package/dist/lib/browser/markdown-WFZFYJBQ.mjs.map +7 -0
  38. package/dist/lib/browser/meta.json +1 -1
  39. package/dist/lib/browser/react-root-ED7PHA44.mjs +29 -0
  40. package/dist/lib/browser/react-root-ED7PHA44.mjs.map +7 -0
  41. package/dist/lib/browser/{react-surface-X2VB6P37.mjs → react-surface-AUQQSQQC.mjs} +38 -36
  42. package/dist/lib/browser/react-surface-AUQQSQQC.mjs.map +7 -0
  43. package/dist/lib/browser/repair-JFJLEM2O.mjs +35 -0
  44. package/dist/lib/browser/repair-JFJLEM2O.mjs.map +7 -0
  45. package/dist/lib/browser/{settings-GRKEID73.mjs → settings-E6IOLK46.mjs} +6 -5
  46. package/dist/lib/{node-esm/settings-F2ODVNNW.mjs.map → browser/settings-E6IOLK46.mjs.map} +1 -1
  47. package/dist/lib/browser/{state-2T4KDWBX.mjs → state-UYPLBGZJ.mjs} +6 -5
  48. package/dist/lib/{node-esm/state-62TQKQVB.mjs.map → browser/state-UYPLBGZJ.mjs.map} +1 -1
  49. package/dist/lib/browser/types/index.mjs +7 -10
  50. package/dist/lib/node-esm/ChannelContainer-FYONOOZ6.mjs +18 -0
  51. package/dist/lib/node-esm/ChatContainer-TLQG23K7.mjs +17 -0
  52. package/dist/lib/node-esm/ChatContainer-TLQG23K7.mjs.map +7 -0
  53. package/dist/lib/node-esm/{app-graph-builder-XEYWX5FC.mjs → app-graph-builder-VD6I2V5H.mjs} +32 -32
  54. package/dist/lib/node-esm/app-graph-builder-VD6I2V5H.mjs.map +7 -0
  55. package/dist/lib/node-esm/blueprint-definition-TSX5HHW7.mjs +102 -0
  56. package/dist/lib/node-esm/blueprint-definition-TSX5HHW7.mjs.map +7 -0
  57. package/dist/lib/node-esm/{call-manager-N3KASRDQ.mjs → call-manager-UMUXEYH5.mjs} +8 -7
  58. package/dist/lib/{browser/call-manager-EW2QC6Q4.mjs.map → node-esm/call-manager-UMUXEYH5.mjs.map} +1 -1
  59. package/dist/lib/node-esm/chunk-2AEIN5MI.mjs +22 -0
  60. package/dist/lib/node-esm/chunk-2AEIN5MI.mjs.map +7 -0
  61. package/dist/lib/node-esm/{chunk-JR7KESLL.mjs → chunk-7KZWZS2U.mjs} +274 -374
  62. package/dist/lib/node-esm/chunk-7KZWZS2U.mjs.map +7 -0
  63. package/dist/lib/node-esm/{chunk-CCE5LHBE.mjs → chunk-AB42KYF3.mjs} +40 -37
  64. package/dist/lib/node-esm/chunk-AB42KYF3.mjs.map +7 -0
  65. package/dist/lib/node-esm/{chunk-57XR3LEF.mjs → chunk-ABUFOZVX.mjs} +2 -2
  66. package/dist/lib/node-esm/chunk-ABUFOZVX.mjs.map +7 -0
  67. package/dist/lib/node-esm/chunk-ATNY37UV.mjs +27 -0
  68. package/dist/lib/node-esm/chunk-ATNY37UV.mjs.map +7 -0
  69. package/dist/lib/node-esm/{chunk-UHZQTPXU.mjs → chunk-E5HNHFYH.mjs} +18 -17
  70. package/dist/lib/node-esm/chunk-E5HNHFYH.mjs.map +7 -0
  71. package/dist/lib/node-esm/{chunk-NNKKNW57.mjs → chunk-FF3QVPY4.mjs} +164 -101
  72. package/dist/lib/node-esm/chunk-FF3QVPY4.mjs.map +7 -0
  73. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  74. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +7 -0
  75. package/dist/lib/node-esm/{chunk-P6E247RF.mjs → chunk-P2M364TO.mjs} +47 -51
  76. package/dist/lib/node-esm/chunk-P2M364TO.mjs.map +7 -0
  77. package/dist/lib/node-esm/{chunk-CTZ75IFK.mjs → chunk-PZH2EDU5.mjs} +68 -67
  78. package/dist/lib/node-esm/chunk-PZH2EDU5.mjs.map +7 -0
  79. package/dist/lib/node-esm/chunk-RT6NRL2I.mjs +19 -0
  80. package/dist/lib/node-esm/chunk-RT6NRL2I.mjs.map +7 -0
  81. package/dist/lib/node-esm/{chunk-S3D7DTBF.mjs → chunk-VBI32FGI.mjs} +53 -3
  82. package/dist/lib/node-esm/chunk-VBI32FGI.mjs.map +7 -0
  83. package/dist/lib/node-esm/index.mjs +55 -57
  84. package/dist/lib/node-esm/index.mjs.map +3 -3
  85. package/dist/lib/node-esm/{intent-resolver-VIMI5VLH.mjs → intent-resolver-4PX3WXQG.mjs} +40 -113
  86. package/dist/lib/node-esm/intent-resolver-4PX3WXQG.mjs.map +7 -0
  87. package/dist/lib/node-esm/{markdown-FL4IXLRP.mjs → markdown-CSR5MAPZ.mjs} +30 -27
  88. package/dist/lib/node-esm/markdown-CSR5MAPZ.mjs.map +7 -0
  89. package/dist/lib/node-esm/meta.json +1 -1
  90. package/dist/lib/node-esm/react-root-DZN324JA.mjs +30 -0
  91. package/dist/lib/node-esm/react-root-DZN324JA.mjs.map +7 -0
  92. package/dist/lib/node-esm/{react-surface-OLN3XNND.mjs → react-surface-AMVESEF4.mjs} +38 -36
  93. package/dist/lib/node-esm/react-surface-AMVESEF4.mjs.map +7 -0
  94. package/dist/lib/node-esm/repair-RMLR24YR.mjs +36 -0
  95. package/dist/lib/node-esm/repair-RMLR24YR.mjs.map +7 -0
  96. package/dist/lib/node-esm/{settings-F2ODVNNW.mjs → settings-RGZHWDSO.mjs} +6 -5
  97. package/dist/lib/{browser/settings-GRKEID73.mjs.map → node-esm/settings-RGZHWDSO.mjs.map} +1 -1
  98. package/dist/lib/node-esm/{state-62TQKQVB.mjs → state-XNWOLBNE.mjs} +6 -5
  99. package/dist/lib/{browser/state-2T4KDWBX.mjs.map → node-esm/state-XNWOLBNE.mjs.map} +1 -1
  100. package/dist/lib/node-esm/types/index.mjs +7 -10
  101. package/dist/types/src/ThreadPlugin.d.ts +1 -1
  102. package/dist/types/src/ThreadPlugin.d.ts.map +1 -1
  103. package/dist/types/src/calls/media-manager.d.ts.map +1 -1
  104. package/dist/types/src/calls/types.d.ts.map +1 -1
  105. package/dist/types/src/calls/util/calls-service.d.ts +2 -0
  106. package/dist/types/src/calls/util/calls-service.d.ts.map +1 -1
  107. package/dist/types/src/calls/util/stub-media-streams.d.ts.map +1 -1
  108. package/dist/types/src/calls-service.stories.d.ts +0 -1
  109. package/dist/types/src/calls-service.stories.d.ts.map +1 -1
  110. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  111. package/dist/types/src/capabilities/blueprint-definition.d.ts +5 -0
  112. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -0
  113. package/dist/types/src/capabilities/capabilities.d.ts +2 -2
  114. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  115. package/dist/types/src/capabilities/index.d.ts +2 -1
  116. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  117. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  118. package/dist/types/src/capabilities/markdown.d.ts.map +1 -1
  119. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  120. package/dist/types/src/capabilities/repair.d.ts +4 -0
  121. package/dist/types/src/capabilities/repair.d.ts.map +1 -0
  122. package/dist/types/src/components/Call/Toolbar.d.ts +2 -2
  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/ChannelContainer.d.ts +2 -2
  127. package/dist/types/src/components/ChannelContainer.d.ts.map +1 -1
  128. package/dist/types/src/components/ChannelContainer.stories.d.ts +79 -9
  129. package/dist/types/src/components/ChannelContainer.stories.d.ts.map +1 -1
  130. package/dist/types/src/components/Chat.stories.d.ts +79 -7
  131. package/dist/types/src/components/Chat.stories.d.ts.map +1 -1
  132. package/dist/types/src/components/ChatContainer.d.ts +6 -5
  133. package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
  134. package/dist/types/src/components/Comments.stories.d.ts +8 -3
  135. package/dist/types/src/components/Comments.stories.d.ts.map +1 -1
  136. package/dist/types/src/components/CommentsContainer.d.ts +2 -2
  137. package/dist/types/src/components/CommentsContainer.d.ts.map +1 -1
  138. package/dist/types/src/components/CommentsThreadContainer.d.ts +8 -8
  139. package/dist/types/src/components/CommentsThreadContainer.d.ts.map +1 -1
  140. package/dist/types/src/components/Media/VideoObject.d.ts +2 -2
  141. package/dist/types/src/components/Media/VideoObject.d.ts.map +1 -1
  142. package/dist/types/src/components/Media/VideoObject.stories.d.ts +5 -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 -2
  145. package/dist/types/src/components/MessageContainer.d.ts.map +1 -1
  146. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts +9 -3
  147. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts.map +1 -1
  148. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts +9 -3
  149. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts.map +1 -1
  150. package/dist/types/src/components/ResponsiveGrid/ResponsiveGridItem.d.ts.map +1 -1
  151. package/dist/types/src/components/ThreadCompanion.d.ts +5 -0
  152. package/dist/types/src/components/ThreadCompanion.d.ts.map +1 -0
  153. package/dist/types/src/components/ThreadSettings.d.ts +1 -1
  154. package/dist/types/src/components/ThreadSettings.d.ts.map +1 -1
  155. package/dist/types/src/components/index.d.ts +3 -3
  156. package/dist/types/src/components/index.d.ts.map +1 -1
  157. package/dist/types/src/components/testing.d.ts +3 -3
  158. package/dist/types/src/components/testing.d.ts.map +1 -1
  159. package/dist/types/src/extensions/threads.d.ts.map +1 -1
  160. package/dist/types/src/functions/create-proposals.d.ts +6 -0
  161. package/dist/types/src/functions/create-proposals.d.ts.map +1 -0
  162. package/dist/types/src/functions/index.d.ts +2 -0
  163. package/dist/types/src/functions/index.d.ts.map +1 -0
  164. package/dist/types/src/hooks/analytics.d.ts +2 -2
  165. package/dist/types/src/hooks/analytics.d.ts.map +1 -1
  166. package/dist/types/src/hooks/index.d.ts +2 -2
  167. package/dist/types/src/hooks/index.d.ts.map +1 -1
  168. package/dist/types/src/hooks/useVideoStreamTrack.d.ts +1 -1
  169. package/dist/types/src/hooks/useVideoStreamTrack.d.ts.map +1 -1
  170. package/dist/types/src/meta.d.ts +1 -2
  171. package/dist/types/src/meta.d.ts.map +1 -1
  172. package/dist/types/src/testing/stories.d.ts.map +1 -1
  173. package/dist/types/src/translations.d.ts +78 -7
  174. package/dist/types/src/translations.d.ts.map +1 -1
  175. package/dist/types/src/types/Channel.d.ts +16 -0
  176. package/dist/types/src/types/Channel.d.ts.map +1 -0
  177. package/dist/types/src/types/index.d.ts +1 -1
  178. package/dist/types/src/types/index.d.ts.map +1 -1
  179. package/dist/types/src/types/types.d.ts +130 -244
  180. package/dist/types/src/types/types.d.ts.map +1 -1
  181. package/dist/types/tsconfig.tsbuildinfo +1 -1
  182. package/package.json +64 -60
  183. package/src/ThreadPlugin.tsx +135 -134
  184. package/src/calls/call-manager.ts +1 -1
  185. package/src/calls/media-manager.ts +11 -7
  186. package/src/calls/types.ts +7 -3
  187. package/src/calls/util/calls-service.ts +12 -7
  188. package/src/calls/util/stub-media-streams.ts +61 -3
  189. package/src/calls-service.stories.tsx +2 -5
  190. package/src/capabilities/app-graph-builder.ts +41 -30
  191. package/src/capabilities/blueprint-definition.ts +38 -0
  192. package/src/capabilities/capabilities.ts +7 -7
  193. package/src/capabilities/index.ts +2 -1
  194. package/src/capabilities/intent-resolver.ts +29 -67
  195. package/src/capabilities/markdown.ts +5 -3
  196. package/src/capabilities/react-root.tsx +2 -2
  197. package/src/capabilities/react-surface.tsx +25 -23
  198. package/src/capabilities/repair.ts +40 -0
  199. package/src/components/Call/Call.tsx +1 -1
  200. package/src/components/Call/Toolbar.tsx +9 -9
  201. package/src/components/CallDebugPanel.tsx +112 -55
  202. package/src/components/CallSidebar.tsx +1 -1
  203. package/src/components/ChannelContainer.stories.tsx +10 -10
  204. package/src/components/ChannelContainer.tsx +19 -15
  205. package/src/components/Chat.stories.tsx +14 -19
  206. package/src/components/ChatContainer.tsx +29 -21
  207. package/src/components/Comments.stories.tsx +11 -17
  208. package/src/components/CommentsContainer.tsx +5 -7
  209. package/src/components/CommentsThreadContainer.tsx +31 -27
  210. package/src/components/Lobby/Lobby.tsx +1 -1
  211. package/src/components/Media/VideoObject.stories.tsx +12 -7
  212. package/src/components/Media/VideoObject.tsx +1 -1
  213. package/src/components/MessageContainer.tsx +11 -9
  214. package/src/components/Participant/Participant.tsx +1 -1
  215. package/src/components/ResponsiveGrid/ResponsiveContainer.stories.tsx +3 -4
  216. package/src/components/ResponsiveGrid/ResponsiveContainer.tsx +2 -2
  217. package/src/components/ResponsiveGrid/ResponsiveGrid.stories.tsx +4 -5
  218. package/src/components/ResponsiveGrid/ResponsiveGrid.tsx +5 -5
  219. package/src/components/ResponsiveGrid/ResponsiveGridItem.tsx +5 -2
  220. package/src/components/{ThreadComplementary.tsx → ThreadCompanion.tsx} +41 -34
  221. package/src/components/ThreadSettings.tsx +4 -5
  222. package/src/components/index.ts +4 -4
  223. package/src/components/testing.ts +7 -9
  224. package/src/extensions/threads.ts +30 -20
  225. package/src/functions/create-proposals.ts +56 -0
  226. package/src/functions/index.ts +5 -0
  227. package/src/hooks/analytics.ts +4 -7
  228. package/src/hooks/index.ts +3 -2
  229. package/src/hooks/useVideoStreamTrack.tsx +1 -1
  230. package/src/meta.ts +9 -5
  231. package/src/testing/stories.ts +3 -6
  232. package/src/translations.ts +8 -4
  233. package/src/types/Channel.ts +26 -0
  234. package/src/types/index.ts +1 -1
  235. package/src/types/types.ts +21 -29
  236. package/src/typings/peermetrics-webrtc-stats.d.ts +17 -1
  237. package/src/util.ts +1 -1
  238. package/dist/lib/browser/ChannelContainer-GHDNEZT2.mjs +0 -16
  239. package/dist/lib/browser/ChatContainer-42ALOWUA.mjs +0 -15
  240. package/dist/lib/browser/app-graph-builder-FHAOPO57.mjs.map +0 -7
  241. package/dist/lib/browser/chunk-2I277V52.mjs +0 -23
  242. package/dist/lib/browser/chunk-2I277V52.mjs.map +0 -7
  243. package/dist/lib/browser/chunk-2P3GVRHP.mjs.map +0 -7
  244. package/dist/lib/browser/chunk-4APCDRSH.mjs +0 -18
  245. package/dist/lib/browser/chunk-4APCDRSH.mjs.map +0 -7
  246. package/dist/lib/browser/chunk-EV4JWI7L.mjs +0 -17
  247. package/dist/lib/browser/chunk-EV4JWI7L.mjs.map +0 -7
  248. package/dist/lib/browser/chunk-GERVMFQW.mjs.map +0 -7
  249. package/dist/lib/browser/chunk-H63NDV62.mjs.map +0 -7
  250. package/dist/lib/browser/chunk-J26C57ZY.mjs.map +0 -7
  251. package/dist/lib/browser/chunk-KEXJGF2R.mjs.map +0 -7
  252. package/dist/lib/browser/chunk-KTWYVC5X.mjs.map +0 -7
  253. package/dist/lib/browser/chunk-TQJYDFBU.mjs.map +0 -7
  254. package/dist/lib/browser/chunk-TUSBPMNU.mjs.map +0 -7
  255. package/dist/lib/browser/intent-resolver-IB5GYU2D.mjs.map +0 -7
  256. package/dist/lib/browser/markdown-Z677YORA.mjs.map +0 -7
  257. package/dist/lib/browser/react-root-PTTTW2MO.mjs +0 -28
  258. package/dist/lib/browser/react-root-PTTTW2MO.mjs.map +0 -7
  259. package/dist/lib/browser/react-surface-X2VB6P37.mjs.map +0 -7
  260. package/dist/lib/browser/toolkit-KUPIIFC6.mjs +0 -80
  261. package/dist/lib/browser/toolkit-KUPIIFC6.mjs.map +0 -7
  262. package/dist/lib/node-esm/ChannelContainer-D5E2S6AI.mjs +0 -17
  263. package/dist/lib/node-esm/ChatContainer-4EGHKHIU.mjs +0 -16
  264. package/dist/lib/node-esm/app-graph-builder-XEYWX5FC.mjs.map +0 -7
  265. package/dist/lib/node-esm/chunk-57XR3LEF.mjs.map +0 -7
  266. package/dist/lib/node-esm/chunk-CCE5LHBE.mjs.map +0 -7
  267. package/dist/lib/node-esm/chunk-CTZ75IFK.mjs.map +0 -7
  268. package/dist/lib/node-esm/chunk-GRLRWTRU.mjs +0 -19
  269. package/dist/lib/node-esm/chunk-GRLRWTRU.mjs.map +0 -7
  270. package/dist/lib/node-esm/chunk-JR7KESLL.mjs.map +0 -7
  271. package/dist/lib/node-esm/chunk-NNKKNW57.mjs.map +0 -7
  272. package/dist/lib/node-esm/chunk-P6E247RF.mjs.map +0 -7
  273. package/dist/lib/node-esm/chunk-PYTVBN5J.mjs +0 -19
  274. package/dist/lib/node-esm/chunk-PYTVBN5J.mjs.map +0 -7
  275. package/dist/lib/node-esm/chunk-S3D7DTBF.mjs.map +0 -7
  276. package/dist/lib/node-esm/chunk-UHZQTPXU.mjs.map +0 -7
  277. package/dist/lib/node-esm/chunk-UJ2QNRLS.mjs +0 -25
  278. package/dist/lib/node-esm/chunk-UJ2QNRLS.mjs.map +0 -7
  279. package/dist/lib/node-esm/intent-resolver-VIMI5VLH.mjs.map +0 -7
  280. package/dist/lib/node-esm/markdown-FL4IXLRP.mjs.map +0 -7
  281. package/dist/lib/node-esm/react-root-2HHRRUME.mjs +0 -29
  282. package/dist/lib/node-esm/react-root-2HHRRUME.mjs.map +0 -7
  283. package/dist/lib/node-esm/react-surface-OLN3XNND.mjs.map +0 -7
  284. package/dist/lib/node-esm/toolkit-KZIS7G36.mjs +0 -81
  285. package/dist/lib/node-esm/toolkit-KZIS7G36.mjs.map +0 -7
  286. package/dist/types/src/capabilities/toolkit.d.ts +0 -5
  287. package/dist/types/src/capabilities/toolkit.d.ts.map +0 -1
  288. package/dist/types/src/components/ThreadComplementary.d.ts +0 -5
  289. package/dist/types/src/components/ThreadComplementary.d.ts.map +0 -1
  290. package/dist/types/src/types/schema.d.ts +0 -177
  291. package/dist/types/src/types/schema.d.ts.map +0 -1
  292. package/src/capabilities/toolkit.ts +0 -78
  293. package/src/types/schema.ts +0 -33
  294. /package/dist/lib/browser/{ChannelContainer-GHDNEZT2.mjs.map → ChannelContainer-L7MKV7DS.mjs.map} +0 -0
  295. /package/dist/lib/browser/{ChatContainer-42ALOWUA.mjs.map → ChatContainer-KPY4BAUE.mjs.map} +0 -0
  296. /package/dist/lib/{node-esm/ChannelContainer-D5E2S6AI.mjs.map → browser/chunk-J5LGTIGS.mjs.map} +0 -0
  297. /package/dist/lib/node-esm/{ChatContainer-4EGHKHIU.mjs.map → ChannelContainer-FYONOOZ6.mjs.map} +0 -0
@@ -1,56 +1,63 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
- import {
3
- ThreadAction,
4
- ThreadType
5
- } from "./chunk-P6E247RF.mjs";
6
2
  import {
7
3
  ChannelContainer
8
- } from "./chunk-CCE5LHBE.mjs";
4
+ } from "./chunk-AB42KYF3.mjs";
5
+ import {
6
+ ThreadAction
7
+ } from "./chunk-P2M364TO.mjs";
9
8
  import {
10
9
  ThreadCapabilities
11
- } from "./chunk-PYTVBN5J.mjs";
10
+ } from "./chunk-RT6NRL2I.mjs";
12
11
  import {
13
12
  MessageContainer,
14
13
  buttonClassNames,
15
14
  buttonGroupClassNames,
16
15
  command
17
- } from "./chunk-UHZQTPXU.mjs";
16
+ } from "./chunk-E5HNHFYH.mjs";
18
17
  import {
19
18
  useStatus
20
- } from "./chunk-CTZ75IFK.mjs";
19
+ } from "./chunk-PZH2EDU5.mjs";
21
20
  import {
22
21
  getMessageMetadata
23
- } from "./chunk-57XR3LEF.mjs";
22
+ } from "./chunk-ABUFOZVX.mjs";
24
23
  import {
25
24
  meta
26
- } from "./chunk-GRLRWTRU.mjs";
25
+ } from "./chunk-2AEIN5MI.mjs";
27
26
 
28
27
  // src/components/CallDebugPanel.tsx
29
28
  import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
30
29
  import { WebRTCStats } from "@peermetrics/webrtc-stats";
31
30
  import React, { useEffect, useMemo, useState } from "react";
32
- import { Panel } from "@dxos/devtools";
31
+ import { truncateKey } from "@dxos/debug";
32
+ import { JsonView, Panel } from "@dxos/devtools";
33
33
  import { log } from "@dxos/log";
34
- import { Input, useTranslation } from "@dxos/react-ui";
35
- import { Json } from "@dxos/react-ui-syntax-highlighter";
34
+ import { IconButton, Input, useTranslation } from "@dxos/react-ui";
36
35
  var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/components/CallDebugPanel.tsx";
37
36
  var CallDebugPanel = ({ state }) => {
38
37
  var _effect = _useSignals();
39
38
  try {
40
39
  const { t } = useTranslation(meta.id);
41
- const users = state?.call?.users;
42
- const self = state?.call?.self;
43
40
  const [open, setOpen] = useState(false);
44
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
+ };
45
50
  const [showDetailedWebRTCStats, setShowDetailedWebRTCStats] = useState(false);
46
51
  const handleShowDetailedWebRTCStats = () => setShowDetailedWebRTCStats(!showDetailedWebRTCStats);
47
52
  const webrtcStats = useMemo(() => new WebRTCStats({
48
53
  getStatsInterval: 1e3
49
54
  }), []);
50
- const [stats, setStats] = useState({});
55
+ const [stats, setStats] = useState();
51
56
  useEffect(() => {
52
57
  const pc = state?.media.peer?.session?.peerConnection;
53
- const handleStats = (stats2) => setStats(stats2.data);
58
+ const handleStats = (stats2) => {
59
+ setStats(stats2.data);
60
+ };
54
61
  let added = false;
55
62
  if (pc && showDetailedWebRTCStats) {
56
63
  webrtcStats.addConnection({
@@ -77,7 +84,7 @@ var CallDebugPanel = ({ state }) => {
77
84
  connectionId: "1"
78
85
  }, {
79
86
  F: __dxlog_file,
80
- L: 55,
87
+ L: 60,
81
88
  S: void 0,
82
89
  C: (f, a) => f(...a)
83
90
  });
@@ -87,65 +94,122 @@ var CallDebugPanel = ({ state }) => {
87
94
  state?.media.peer?.session?.peerConnection,
88
95
  showDetailedWebRTCStats
89
96
  ]);
97
+ const rows = useMemo(() => getCallStatusTable(state), [
98
+ state?.call.users,
99
+ state?.media.pulledAudioTracks
100
+ ]);
90
101
  return /* @__PURE__ */ React.createElement(Panel, {
91
102
  id: "meeting-status",
92
103
  icon: "ph--video-conference--regular",
93
104
  open,
94
105
  onToggle: handleToggle,
95
106
  title: t("meeting status title"),
96
- maxHeight: false,
97
107
  info: /* @__PURE__ */ React.createElement("div", {
98
108
  className: "flex items-center gap-2"
99
- }, /* @__PURE__ */ React.createElement("span", {
100
- title: "Joined"
101
- }, self?.joined ? "Active" : "Inactive"), users?.length !== void 0 && /* @__PURE__ */ React.createElement("span", {
102
- title: "Users"
103
- }, users?.length ?? 0, " User(s)"))
109
+ }, " ", state?.call.joined ? "Active" : "Inactive"),
110
+ maxHeight: 0
104
111
  }, /* @__PURE__ */ React.createElement("div", {
105
- className: "flex flex-col gap-2 overflow-y-auto"
112
+ className: "flex flex-col is-full text-xs"
106
113
  }, /* @__PURE__ */ React.createElement("div", {
107
- className: "flex items-row gap-2"
108
- }, /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.Label, {
109
- classNames: "text-sm"
110
- }, t("show webrtc stats title")), /* @__PURE__ */ React.createElement(Input.Checkbox, {
114
+ className: "flex items-center gap-2 items-center"
115
+ }, /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.Switch, {
111
116
  checked: showDetailedWebRTCStats,
112
117
  onCheckedChange: handleShowDetailedWebRTCStats
113
- }))), /* @__PURE__ */ React.createElement(Json, {
114
- classNames: "text-sm",
118
+ }), /* @__PURE__ */ React.createElement(Input.Label, null, t("show webrtc stats title")))), /* @__PURE__ */ React.createElement("div", {
119
+ className: "flex items-center gap-2 items-center"
120
+ }, /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.Switch, {
121
+ checked: showServiceHistory,
122
+ onCheckedChange: handleToggleServiceHistory
123
+ }), /* @__PURE__ */ React.createElement(Input.Label, null, t("show calls history title")))), /* @__PURE__ */ React.createElement("div", {
124
+ className: "flex items-center gap-2 items-center"
125
+ }, /* @__PURE__ */ React.createElement(IconButton, {
126
+ icon: "ph--copy--regular",
127
+ label: "copy raw",
128
+ onClick: handleCopyRaw
129
+ })), /* @__PURE__ */ React.createElement(Table, {
130
+ rows
131
+ }), showDetailedWebRTCStats && /* @__PURE__ */ React.createElement(JsonView, {
115
132
  data: {
116
- users,
117
- activities: state?.call?.activities,
118
- ...showDetailedWebRTCStats ? {
119
- webrtc: {
120
- connectionState: state?.media.peer?.session?.peerConnection.connectionState,
121
- iceConnectionState: state?.media.peer?.session?.peerConnection.iceConnectionState,
122
- stats
123
- }
124
- } : {},
125
- tracks: state?.media.peer?.session?.peerConnection.getTransceivers().map((transceiver) => {
126
- const track = transceiver.direction === "recvonly" ? transceiver.receiver.track : transceiver.sender.track;
127
- return {
128
- id: track?.id,
129
- kind: track?.kind,
130
- direction: transceiver.direction,
131
- enabled: track?.enabled,
132
- muted: track?.muted,
133
- readyState: track?.readyState,
134
- settings: track?.getSettings()
135
- };
136
- }),
137
- callsServiceHistory: state?.media.peer?.history.get()
133
+ stats
134
+ }
135
+ }), showServiceHistory && /* @__PURE__ */ React.createElement(JsonView, {
136
+ data: {
137
+ history: state?.media.peer?.history.get()
138
138
  }
139
139
  })));
140
140
  } finally {
141
141
  _effect.f();
142
142
  }
143
143
  };
144
+ var getCallStatusTable = (state) => {
145
+ if (!state || !state.call?.users) {
146
+ return [];
147
+ }
148
+ const self = state.call.self;
149
+ const users = state.call.users.filter((user) => user.id !== self.id).map((user) => {
150
+ const isOk = {
151
+ audio: user.tracks?.audio && state.media.pulledAudioTracks[user.tracks?.audio]?.ctx.disposed === false,
152
+ video: user.tracks?.video && state.media.pulledVideoStreams[user.tracks?.video]?.ctx.disposed === false,
153
+ screenshare: user.tracks?.screenshare && state.media.pulledVideoStreams[user.tracks?.screenshare]?.ctx.disposed === false
154
+ };
155
+ return {
156
+ ...user,
157
+ isOk
158
+ };
159
+ });
160
+ return [
161
+ [
162
+ "users",
163
+ state.call.users.length ?? 0
164
+ ],
165
+ [
166
+ "*self* " + (self?.name ?? truncateKey(self.id, 8)),
167
+ self?.tracks?.audio && state.media.pushedAudioTrack ? "AUD \u2705" : "AUD \u274C",
168
+ self?.tracks?.video && state.media.pushedVideoTrack ? "VID \u2705" : "VID \u274C",
169
+ self?.tracks?.screenshareEnabled ? self.tracks.screenshareEnabled && state.media.pushedScreenshareTrack ? "SCR \u2705" : "SCR \u274C" : void 0
170
+ ],
171
+ ...users.map((user) => [
172
+ user.name ?? truncateKey(user.id, 8),
173
+ user.isOk.audio ? "AUD \u2705" : "AUD \u274C",
174
+ user.isOk.video ? "VID \u2705" : "VID \u274C",
175
+ user.tracks?.screenshareEnabled ? user.isOk.screenshare ? "SCR \u2705" : "SCR \u274C" : void 0
176
+ ]),
177
+ [
178
+ "ICE",
179
+ state.media.peer?.session?.peerConnection.iceConnectionState ?? "no connection"
180
+ ]
181
+ ];
182
+ };
183
+ (function(Unit2) {
184
+ Unit2.KB = (n) => ((n ?? 0) / 1e3).toFixed(2);
185
+ })(Unit || (Unit = {}));
186
+ var Table = ({ rows }) => {
187
+ var _effect = _useSignals();
188
+ try {
189
+ return /* @__PURE__ */ React.createElement("div", {
190
+ className: "is-full text-xs font-mono"
191
+ }, rows.map(([prefix, label, value, unit], i) => /* @__PURE__ */ React.createElement("div", {
192
+ key: i,
193
+ className: "grid grid-cols-[3fr_1fr_1fr_1fr]"
194
+ }, /* @__PURE__ */ React.createElement("div", {
195
+ className: "p-1"
196
+ }, prefix), /* @__PURE__ */ React.createElement("div", {
197
+ className: "p-1"
198
+ }, label), /* @__PURE__ */ React.createElement("div", {
199
+ className: "p-1"
200
+ }, value), /* @__PURE__ */ React.createElement("div", {
201
+ className: "p-1"
202
+ }, unit))));
203
+ } finally {
204
+ _effect.f();
205
+ }
206
+ };
207
+ var Unit;
144
208
 
145
209
  // src/components/CallSidebar.tsx
146
210
  import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
147
211
  import React2 from "react";
148
- import { useCapability } from "@dxos/app-framework";
212
+ import { useCapability } from "@dxos/app-framework/react";
149
213
  var CallSidebar = () => {
150
214
  var _effect = _useSignals2();
151
215
  try {
@@ -158,19 +222,20 @@ var CallSidebar = () => {
158
222
  }
159
223
  };
160
224
 
161
- // src/components/ThreadComplementary.tsx
225
+ // src/components/ThreadCompanion.tsx
162
226
  import { useSignals as _useSignals6 } from "@preact-signals/safe-react/tracking";
163
227
  import React6, { useCallback as useCallback2, useMemo as useMemo3 } from "react";
164
- import { Capabilities, CollaborationActions, LayoutAction, createIntent, useCapabilities, useCapability as useCapability2, useIntentDispatcher } from "@dxos/app-framework";
165
- import { Filter, Obj, Query, Relation as Relation3 } from "@dxos/echo";
166
- import { Ref as Ref2, fullyQualifiedId as fullyQualifiedId3, getSpace as getSpace2, useQuery } from "@dxos/react-client/echo";
228
+ import { Capabilities, CollaborationActions, LayoutAction, createIntent } from "@dxos/app-framework";
229
+ import { useCapabilities, useCapability as useCapability2, useIntentDispatcher } from "@dxos/app-framework/react";
230
+ import { Filter, Obj as Obj3, Query, Relation as Relation3 } from "@dxos/echo";
231
+ import { Ref as Ref2, getSpace as getSpace2, useQuery } from "@dxos/react-client/echo";
167
232
  import { useIdentity as useIdentity2 } from "@dxos/react-client/halo";
168
- import { useThemeContext as useThemeContext2, useTranslation as useTranslation4 } from "@dxos/react-ui";
233
+ import { useTranslation as useTranslation5 } from "@dxos/react-ui";
169
234
  import { useAttended } from "@dxos/react-ui-attention";
170
235
  import { StackItem } from "@dxos/react-ui-stack";
171
236
  import { Tabs } from "@dxos/react-ui-tabs";
172
237
  import { mx as mx2 } from "@dxos/react-ui-theme";
173
- import { AnchoredTo } from "@dxos/schema";
238
+ import { AnchoredTo, Thread } from "@dxos/types";
174
239
 
175
240
  // src/components/index.ts
176
241
  import { lazy } from "react";
@@ -178,36 +243,34 @@ import { lazy } from "react";
178
243
  // src/components/CommentsContainer.tsx
179
244
  import { useSignals as _useSignals4 } from "@preact-signals/safe-react/tracking";
180
245
  import React4, { useEffect as useEffect2 } from "react";
181
- import { Relation as Relation2 } from "@dxos/echo";
182
- import { fullyQualifiedId as fullyQualifiedId2 } from "@dxos/react-client/echo";
246
+ import { Obj as Obj2, Relation as Relation2 } from "@dxos/echo";
183
247
  import { Callout, Icon, Trans, useTranslation as useTranslation3 } from "@dxos/react-ui";
184
248
 
185
249
  // src/components/CommentsThreadContainer.tsx
186
250
  import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
187
251
  import React3, { useCallback, useMemo as useMemo2, useRef, useState as useState2 } from "react";
188
- import { Ref, Relation } from "@dxos/echo";
189
- import { fullyQualifiedId, getSpace, useMembers } from "@dxos/react-client/echo";
252
+ import { Obj, Ref, Relation } from "@dxos/echo";
253
+ import { getSpace, useMembers } from "@dxos/react-client/echo";
190
254
  import { useIdentity } from "@dxos/react-client/halo";
191
- import { IconButton, Tag, Tooltip, useThemeContext, useTranslation as useTranslation2 } from "@dxos/react-ui";
255
+ import { IconButton as IconButton2, Tag, Tooltip, useThemeContext, useTranslation as useTranslation2 } from "@dxos/react-ui";
192
256
  import { createBasicExtensions, createThemeExtensions, listener } from "@dxos/react-ui-editor";
193
257
  import { hoverableControlItem, hoverableControls, hoverableFocusedWithinControls, mx } from "@dxos/react-ui-theme";
194
- import { MessageTextbox, Thread } from "@dxos/react-ui-thread";
258
+ import { MessageTextbox, Thread as ThreadComponent } from "@dxos/react-ui-thread";
195
259
  import { isNonNullable } from "@dxos/util";
196
260
  var CommentsThreadContainer = ({ anchor, current, onAttend, onComment, onResolve, onMessageDelete, onThreadDelete, onAcceptProposal }) => {
197
261
  var _effect = _useSignals3();
198
262
  try {
263
+ const { themeMode } = useThemeContext();
199
264
  const { t } = useTranslation2(meta.id);
200
265
  const identity = useIdentity();
201
266
  const space = getSpace(anchor);
202
267
  const members = useMembers(space?.key);
203
268
  const detached = !anchor.anchor;
204
269
  const thread = Relation.getSource(anchor);
205
- const activity = useStatus(space, fullyQualifiedId(thread));
270
+ const activity = useStatus(space, Obj.getDXN(thread).toString());
206
271
  const threadScrollRef = useRef(null);
207
- const { themeMode } = useThemeContext();
208
- const textboxMetadata = getMessageMetadata(fullyQualifiedId(thread), identity);
209
- const [_count, _setCount] = useState2(0);
210
- const rerenderEditor = () => _setCount((count) => count + 1);
272
+ const textboxMetadata = getMessageMetadata(Obj.getDXN(thread).toString(), identity);
273
+ const [state, setState] = useState2({});
211
274
  const messageRef = useRef("");
212
275
  const extensions = useMemo2(() => [
213
276
  createBasicExtensions({
@@ -217,11 +280,11 @@ var CommentsThreadContainer = ({ anchor, current, onAttend, onComment, onResolve
217
280
  themeMode
218
281
  }),
219
282
  listener({
220
- onChange: (text) => messageRef.current = text
283
+ onChange: ({ text }) => messageRef.current = text
221
284
  }),
222
285
  command
223
286
  ], [
224
- _count
287
+ state
225
288
  ]);
226
289
  const scrollToEnd = (behavior) => setTimeout(() => threadScrollRef.current?.scrollIntoView({
227
290
  behavior,
@@ -254,14 +317,14 @@ var CommentsThreadContainer = ({ anchor, current, onAttend, onComment, onResolve
254
317
  onComment?.(anchor, messageRef.current);
255
318
  messageRef.current = "";
256
319
  scrollToEnd("instant");
257
- rerenderEditor();
320
+ setState({});
258
321
  return true;
259
322
  }, [
260
323
  anchor,
261
324
  identity
262
325
  ]);
263
- return /* @__PURE__ */ React3.createElement(Thread.Root, {
264
- id: fullyQualifiedId(thread),
326
+ return /* @__PURE__ */ React3.createElement(ThreadComponent.Root, {
327
+ id: Obj.getDXN(thread).toString(),
265
328
  classNames: "pbs-2 border-be border-subduedSeparator last:border-none",
266
329
  current,
267
330
  onClickCapture: handleAttend,
@@ -273,14 +336,14 @@ var CommentsThreadContainer = ({ anchor, current, onAttend, onComment, onResolve
273
336
  asChild: true,
274
337
  content: t("detached thread label"),
275
338
  side: "top"
276
- }, /* @__PURE__ */ React3.createElement(Thread.Header, {
339
+ }, /* @__PURE__ */ React3.createElement(ThreadComponent.Header, {
277
340
  detached: true
278
- }, thread.name)) : /* @__PURE__ */ React3.createElement(Thread.Header, null, thread.name), /* @__PURE__ */ React3.createElement("div", {
341
+ }, thread.name)) : /* @__PURE__ */ React3.createElement(ThreadComponent.Header, null, thread.name), /* @__PURE__ */ React3.createElement("div", {
279
342
  role: "none",
280
343
  className: buttonGroupClassNames
281
344
  }, thread.status === "staged" && /* @__PURE__ */ React3.createElement(Tag, {
282
345
  palette: "neutral"
283
- }, t("draft button")), onResolve && !(thread?.status === "staged") && /* @__PURE__ */ React3.createElement(IconButton, {
346
+ }, t("draft button")), onResolve && !(thread?.status === "staged") && /* @__PURE__ */ React3.createElement(IconButton2, {
284
347
  "data-testid": "thread.resolve",
285
348
  variant: "ghost",
286
349
  icon: thread?.status === "resolved" ? "ph--check--fill" : "ph--check--regular",
@@ -291,7 +354,7 @@ var CommentsThreadContainer = ({ anchor, current, onAttend, onComment, onResolve
291
354
  thread?.status !== "resolved" && hoverableControlItem
292
355
  ],
293
356
  onClick: handleResolve
294
- }), onThreadDelete && /* @__PURE__ */ React3.createElement(IconButton, {
357
+ }), onThreadDelete && /* @__PURE__ */ React3.createElement(IconButton2, {
295
358
  "data-testid": "thread.delete",
296
359
  variant: "ghost",
297
360
  icon: "ph--x--regular",
@@ -313,7 +376,7 @@ var CommentsThreadContainer = ({ anchor, current, onAttend, onComment, onResolve
313
376
  extensions,
314
377
  onSend: handleComment,
315
378
  ...textboxMetadata
316
- }), /* @__PURE__ */ React3.createElement(Thread.Status, {
379
+ }), /* @__PURE__ */ React3.createElement(ThreadComponent.Status, {
317
380
  activity
318
381
  }, t("activity message")), /* @__PURE__ */ React3.createElement("div", {
319
382
  role: "none",
@@ -362,7 +425,7 @@ var CommentsContainer = ({ anchors, currentId, showResolvedThreads, ...props })
362
425
  }
363
426
  return /* @__PURE__ */ React4.createElement("div", null, filteredAnchors.map((anchor) => {
364
427
  const thread = Relation2.getSource(anchor);
365
- const threadId = fullyQualifiedId2(thread);
428
+ const threadId = Obj2.getDXN(thread).toString();
366
429
  return /* @__PURE__ */ React4.createElement(CommentsThreadContainer, {
367
430
  key: threadId,
368
431
  anchor,
@@ -378,10 +441,12 @@ var CommentsContainer = ({ anchors, currentId, showResolvedThreads, ...props })
378
441
  // src/components/ThreadSettings.tsx
379
442
  import { useSignals as _useSignals5 } from "@preact-signals/safe-react/tracking";
380
443
  import React5 from "react";
444
+ import { useTranslation as useTranslation4 } from "@dxos/react-ui";
381
445
  import { ControlPage } from "@dxos/react-ui-form";
382
- var ThreadSettings = ({ settings }) => {
446
+ var ThreadSettings = ({ settings: _settings }) => {
383
447
  var _effect = _useSignals5();
384
448
  try {
449
+ const { t: _t } = useTranslation4(meta.id);
385
450
  return /* @__PURE__ */ React5.createElement(ControlPage, null);
386
451
  } finally {
387
452
  _effect.f();
@@ -389,18 +454,17 @@ var ThreadSettings = ({ settings }) => {
389
454
  };
390
455
 
391
456
  // src/components/index.ts
392
- var ChannelContainer2 = lazy(() => import("./ChannelContainer-D5E2S6AI.mjs"));
393
- var ChatContainer = lazy(() => import("./ChatContainer-4EGHKHIU.mjs"));
457
+ var ChannelContainer2 = lazy(() => import("./ChannelContainer-FYONOOZ6.mjs"));
458
+ var ChatContainer = lazy(() => import("./ChatContainer-TLQG23K7.mjs"));
394
459
 
395
- // src/components/ThreadComplementary.tsx
396
- var ThreadComplementary = ({ subject }) => {
460
+ // src/components/ThreadCompanion.tsx
461
+ var ThreadCompanion = ({ subject }) => {
397
462
  var _effect = _useSignals6();
398
463
  try {
399
- const { t } = useTranslation4(meta.id);
464
+ const { t } = useTranslation5(meta.id);
400
465
  const { dispatchPromise: dispatch } = useIntentDispatcher();
401
466
  const identity = useIdentity2();
402
- const { tx } = useThemeContext2();
403
- const subjectId = fullyQualifiedId3(subject);
467
+ const subjectId = Obj3.getDXN(subject).toString();
404
468
  const { state, getViewState } = useCapability2(ThreadCapabilities.MutableState);
405
469
  const drafts = state.drafts[subjectId];
406
470
  const viewState = useMemo3(() => getViewState(subjectId), [
@@ -414,22 +478,22 @@ var ThreadComplementary = ({ subject }) => {
414
478
  viewState
415
479
  ]);
416
480
  const anchorSorts = useCapabilities(Capabilities.AnchorSort);
417
- const sort = useMemo3(() => anchorSorts.find(({ key }) => key === Obj.getTypename(subject))?.sort, [
481
+ const sort = useMemo3(() => anchorSorts.find(({ key }) => key === Obj3.getTypename(subject))?.sort, [
418
482
  anchorSorts,
419
483
  subject
420
484
  ]);
421
485
  const space = getSpace2(subject);
422
- const objectsAnchoredTo = useQuery(space, Query.select(Filter.ids(subject.id)).targetOf(AnchoredTo));
423
- const anchors = objectsAnchoredTo.toSorted((a, b) => sort?.(a, b) ?? 0).filter((anchor) => Obj.instanceOf(ThreadType, Relation3.getSource(anchor))).concat(drafts ?? []);
486
+ const objectsAnchoredTo = useQuery(space, Query.select(Filter.ids(subject.id)).targetOf(AnchoredTo.AnchoredTo));
487
+ const anchors = objectsAnchoredTo.toSorted((a, b) => sort?.(a, b) ?? 0).filter((anchor) => Obj3.instanceOf(Thread.Thread, Relation3.getSource(anchor))).concat(drafts ?? []);
424
488
  const attended = useAttended();
425
489
  const handleAttend = useCallback2((anchor) => {
426
490
  const thread = Relation3.getSource(anchor);
427
- const threadId = fullyQualifiedId3(thread);
491
+ const threadId = Obj3.getDXN(thread).toString();
428
492
  if (state.current !== threadId) {
429
493
  state.current = threadId;
430
494
  void dispatch(createIntent(LayoutAction.ScrollIntoView, {
431
495
  part: "current",
432
- subject: fullyQualifiedId3(subject),
496
+ subject: Obj3.getDXN(subject).toString(),
433
497
  options: {
434
498
  cursor: anchor.anchor,
435
499
  ref: threadId
@@ -451,7 +515,7 @@ var ThreadComplementary = ({ subject }) => {
451
515
  text
452
516
  }));
453
517
  const thread = Relation3.getSource(anchor);
454
- state.current = fullyQualifiedId3(thread);
518
+ state.current = Obj3.getDXN(thread).toString();
455
519
  }, [
456
520
  dispatch,
457
521
  identity,
@@ -509,8 +573,7 @@ var ThreadComplementary = ({ subject }) => {
509
573
  onAcceptProposal: handleAcceptProposal
510
574
  });
511
575
  return /* @__PURE__ */ React6.createElement(StackItem.Content, {
512
- toolbar: true,
513
- classNames: "overflow-hidden"
576
+ toolbar: true
514
577
  }, /* @__PURE__ */ React6.createElement(Tabs.Root, {
515
578
  value: showResolvedThreads ? "all" : "unresolved",
516
579
  orientation: "horizontal",
@@ -519,7 +582,7 @@ var ThreadComplementary = ({ subject }) => {
519
582
  ],
520
583
  onValueChange: onChangeViewState
521
584
  }, /* @__PURE__ */ React6.createElement(Tabs.Tablist, {
522
- classNames: mx2("bg-toolbarSurface border-b border-subduedSeparator")
585
+ classNames: mx2("bg-toolbarSurface border-be border-subduedSeparator")
523
586
  }, /* @__PURE__ */ React6.createElement(Tabs.Tab, {
524
587
  value: "unresolved",
525
588
  classNames: "text-sm"
@@ -541,9 +604,9 @@ var ThreadComplementary = ({ subject }) => {
541
604
  export {
542
605
  CallDebugPanel,
543
606
  CallSidebar,
544
- ThreadComplementary,
607
+ ThreadCompanion,
545
608
  ThreadSettings,
546
609
  ChannelContainer2 as ChannelContainer,
547
610
  ChatContainer
548
611
  };
549
- //# sourceMappingURL=chunk-NNKKNW57.mjs.map
612
+ //# sourceMappingURL=chunk-FF3QVPY4.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/CallDebugPanel.tsx", "../../../src/components/CallSidebar.tsx", "../../../src/components/ThreadCompanion.tsx", "../../../src/components/index.ts", "../../../src/components/CommentsContainer.tsx", "../../../src/components/CommentsThreadContainer.tsx", "../../../src/components/ThreadSettings.tsx"],
4
+ "sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { WebRTCStats, type WebRTCStatsEvent } from '@peermetrics/webrtc-stats';\nimport React, { useEffect, useMemo, useState } from 'react';\n\nimport { truncateKey } from '@dxos/debug';\nimport { JsonView, Panel } from '@dxos/devtools';\nimport { log } from '@dxos/log';\nimport { IconButton, Input, type ThemedClassName, useTranslation } from '@dxos/react-ui';\n\nimport { type EncodedTrackName, type GlobalState } from '../calls';\nimport { meta } from '../meta';\n\nexport type CallDebugPanelProps = ThemedClassName<{ state?: GlobalState }>;\n\nexport const CallDebugPanel = ({ state }: CallDebugPanelProps) => {\n const { t } = useTranslation(meta.id);\n\n const [open, setOpen] = useState(false);\n const handleToggle = () => setOpen(!open);\n const [showServiceHistory, setShowServiceHistory] = useState(false);\n const handleToggleServiceHistory = () => setShowServiceHistory(!showServiceHistory);\n\n const handleCopyRaw = async () => {\n await navigator.clipboard.writeText(JSON.stringify({ users: state?.call?.users, stats }, null, 2));\n };\n\n const [showDetailedWebRTCStats, setShowDetailedWebRTCStats] = useState(false);\n const handleShowDetailedWebRTCStats = () => setShowDetailedWebRTCStats(!showDetailedWebRTCStats);\n\n const webrtcStats = useMemo(\n () =>\n new WebRTCStats({\n getStatsInterval: 1000,\n }),\n [],\n );\n const [stats, setStats] = useState<WebRTCStatsEvent['data']>();\n\n useEffect(() => {\n const pc = state?.media.peer?.session?.peerConnection;\n const handleStats = (stats: WebRTCStatsEvent) => {\n setStats(stats.data);\n };\n let added = false;\n if (pc && showDetailedWebRTCStats) {\n webrtcStats.addConnection({ pc, peerId: 1, connectionId: '1' });\n webrtcStats.on('stats', handleStats as never);\n added = true;\n }\n return () => {\n try {\n if (pc && added) {\n webrtcStats.removeConnection({ pc });\n webrtcStats.removeListener('stats', handleStats as never);\n }\n } catch (error) {\n log.error('error removing webrtc stats', { error, pc, peerId: 1, connectionId: '1' });\n }\n };\n }, [state?.media.peer?.session?.peerConnection, showDetailedWebRTCStats]);\n\n const rows = useMemo(() => getCallStatusTable(state), [state?.call.users, state?.media.pulledAudioTracks]);\n\n return (\n <Panel\n id='meeting-status'\n icon='ph--video-conference--regular'\n open={open}\n onToggle={handleToggle}\n title={t('meeting status title')}\n info={<div className='flex items-center gap-2'> {state?.call.joined ? 'Active' : 'Inactive'}</div>}\n maxHeight={0}\n >\n <div className='flex flex-col is-full text-xs'>\n <div className='flex items-center gap-2 items-center'>\n <Input.Root>\n <Input.Switch checked={showDetailedWebRTCStats} onCheckedChange={handleShowDetailedWebRTCStats} />\n <Input.Label>{t('show webrtc stats title')}</Input.Label>\n </Input.Root>\n </div>\n <div className='flex items-center gap-2 items-center'>\n <Input.Root>\n <Input.Switch checked={showServiceHistory} onCheckedChange={handleToggleServiceHistory} />\n <Input.Label>{t('show calls history title')}</Input.Label>\n </Input.Root>\n </div>\n <div className='flex items-center gap-2 items-center'>\n <IconButton icon='ph--copy--regular' label={'copy raw'} onClick={handleCopyRaw} />\n </div>\n <Table rows={rows} />\n {showDetailedWebRTCStats && <JsonView data={{ stats }} />}\n {showServiceHistory && <JsonView data={{ history: state?.media.peer?.history.get() }} />}\n </div>\n </Panel>\n );\n};\n\nconst getCallStatusTable = (state?: GlobalState): TableProps['rows'] => {\n if (!state || !state.call?.users) {\n return [];\n }\n\n const self = state.call.self;\n const users = state.call.users\n .filter((user) => user.id !== self!.id)\n .map((user) => {\n const isOk = {\n audio:\n user.tracks?.audio &&\n state.media.pulledAudioTracks[user.tracks?.audio as EncodedTrackName]?.ctx.disposed === false,\n video:\n user.tracks?.video &&\n state.media.pulledVideoStreams[user.tracks?.video as EncodedTrackName]?.ctx.disposed === false,\n screenshare:\n user.tracks?.screenshare &&\n state.media.pulledVideoStreams[user.tracks?.screenshare as EncodedTrackName]?.ctx.disposed === false,\n };\n\n return {\n ...user,\n isOk,\n };\n });\n\n return [\n ['users', state.call.users.length ?? 0],\n [\n '*self* ' + (self?.name ?? truncateKey(self!.id, 8)),\n self?.tracks?.audio && state.media.pushedAudioTrack ? 'AUD ✅' : 'AUD ❌',\n self?.tracks?.video && state.media.pushedVideoTrack ? 'VID ✅' : 'VID ❌',\n self?.tracks?.screenshareEnabled\n ? self.tracks.screenshareEnabled && state.media.pushedScreenshareTrack\n ? 'SCR ✅'\n : 'SCR ❌'\n : undefined,\n ],\n\n ...users.map((user) => [\n user.name ?? truncateKey(user.id, 8),\n user.isOk.audio ? 'AUD ✅' : 'AUD ❌',\n user.isOk.video ? 'VID ✅' : 'VID ❌',\n user.tracks?.screenshareEnabled ? (user.isOk.screenshare ? 'SCR ✅' : 'SCR ❌') : undefined,\n ]),\n ['ICE', state.media.peer?.session?.peerConnection.iceConnectionState ?? 'no connection'],\n ];\n};\n\nexport namespace Unit {\n export const KB = (n?: number) => ((n ?? 0) / 1_000).toFixed(2);\n}\n\nexport type TableProps = {\n rows: (string | number | undefined)[][];\n};\n\nexport const Table = ({ rows }: TableProps) => {\n return (\n <div className='is-full text-xs font-mono'>\n {rows.map(([prefix, label, value, unit], i) => (\n <div key={i} className='grid grid-cols-[3fr_1fr_1fr_1fr]'>\n <div className='p-1'>{prefix}</div>\n <div className='p-1'>{label}</div>\n <div className='p-1'>{value}</div>\n <div className='p-1'>{unit}</div>\n </div>\n ))}\n </div>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nimport { useCapability } from '@dxos/app-framework/react';\n\nimport { ThreadCapabilities } from '../capabilities';\n\nimport { ChannelContainer } from './ChannelContainer';\n\nexport const CallSidebar = () => {\n const call = useCapability(ThreadCapabilities.CallManager);\n return <ChannelContainer roomId={call.roomId} />;\n};\n\nexport default CallSidebar;\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useCallback, useMemo } from 'react';\n\nimport { Capabilities, CollaborationActions, LayoutAction, createIntent } from '@dxos/app-framework';\nimport { useCapabilities, useCapability, useIntentDispatcher } from '@dxos/app-framework/react';\nimport { Filter, Obj, Query, Relation } from '@dxos/echo';\nimport { Ref, getSpace, useQuery } from '@dxos/react-client/echo';\nimport { useIdentity } from '@dxos/react-client/halo';\nimport { useTranslation } from '@dxos/react-ui';\nimport { useAttended } from '@dxos/react-ui-attention';\nimport { StackItem } from '@dxos/react-ui-stack';\nimport { Tabs } from '@dxos/react-ui-tabs';\nimport { mx } from '@dxos/react-ui-theme';\nimport { AnchoredTo, Thread } from '@dxos/types';\n\nimport { ThreadCapabilities } from '../capabilities';\nimport { CommentsContainer, type CommentsContainerProps } from '../components';\nimport { meta } from '../meta';\nimport { ThreadAction } from '../types';\n\nexport const ThreadCompanion = ({ subject }: { subject: any }) => {\n const { t } = useTranslation(meta.id);\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const identity = useIdentity();\n const subjectId = Obj.getDXN(subject).toString();\n\n const { state, getViewState } = useCapability(ThreadCapabilities.MutableState);\n const drafts = state.drafts[subjectId];\n const viewState = useMemo(() => getViewState(subjectId), [getViewState, subjectId]);\n const { showResolvedThreads } = viewState;\n const onChangeViewState = useCallback(\n (nextValue: string) => {\n viewState.showResolvedThreads = nextValue === 'all';\n },\n [viewState],\n );\n\n const anchorSorts = useCapabilities(Capabilities.AnchorSort);\n const sort = useMemo(\n () => anchorSorts.find(({ key }) => key === Obj.getTypename(subject))?.sort,\n [anchorSorts, subject],\n );\n\n const space = getSpace(subject);\n const objectsAnchoredTo = useQuery(space, Query.select(Filter.ids(subject.id)).targetOf(AnchoredTo.AnchoredTo));\n const anchors = objectsAnchoredTo\n .toSorted((a, b) => sort?.(a, b) ?? 0)\n .filter((anchor) => Obj.instanceOf(Thread.Thread, Relation.getSource(anchor)))\n .concat(drafts ?? []);\n\n const attended = useAttended();\n\n const handleAttend = useCallback(\n (anchor: AnchoredTo.AnchoredTo) => {\n const thread = Relation.getSource(anchor) as Thread.Thread;\n const threadId = Obj.getDXN(thread).toString();\n\n if (state.current !== threadId) {\n state.current = threadId;\n\n // TODO(wittjosiah): Should this be a thread-specific intent?\n // The layout doesn't know about threads and this working depends on other plugins conditionally handling it.\n // This may be overloading this intent or highjacking its intended purpose.\n void dispatch(\n createIntent(LayoutAction.ScrollIntoView, {\n part: 'current',\n subject: Obj.getDXN(subject).toString(),\n options: {\n cursor: anchor.anchor,\n ref: threadId,\n },\n }),\n );\n }\n },\n [state.current, dispatch, subject],\n );\n\n const handleComment = useCallback(\n async (anchor: AnchoredTo.AnchoredTo, text: string) => {\n await dispatch(\n createIntent(ThreadAction.AddMessage, {\n anchor,\n subject,\n sender: { identityDid: identity?.did },\n text,\n }),\n );\n\n const thread = Relation.getSource(anchor) as Thread.Thread;\n state.current = Obj.getDXN(thread).toString();\n },\n [dispatch, identity, subject],\n );\n\n const handleResolve = useCallback(\n (anchor: AnchoredTo.AnchoredTo) =>\n dispatch(\n createIntent(ThreadAction.ToggleResolved, {\n thread: Relation.getSource(anchor) as Thread.Thread,\n }),\n ),\n [dispatch],\n );\n\n const handleThreadDelete = useCallback(\n (anchor: AnchoredTo.AnchoredTo) => dispatch(createIntent(ThreadAction.Delete, { anchor, subject })),\n [dispatch, subject],\n );\n\n const handleMessageDelete = useCallback(\n (anchor: AnchoredTo.AnchoredTo, messageId: string) =>\n dispatch(\n createIntent(ThreadAction.DeleteMessage, {\n anchor,\n subject,\n messageId,\n }),\n ),\n [dispatch, subject],\n );\n\n const handleAcceptProposal = useCallback<NonNullable<CommentsContainerProps['onAcceptProposal']>>(\n async (anchor, messageId) => {\n const thread = Relation.getSource(anchor) as Thread.Thread;\n const messageIndex = thread.messages.findIndex(Ref.hasObjectId(messageId));\n const message = thread.messages[messageIndex]?.target;\n const proposal = message?.blocks.find((block) => block._tag === 'proposal');\n if (!proposal || !anchor.anchor) {\n return;\n }\n\n await dispatch(\n createIntent(CollaborationActions.AcceptProposal, {\n subject,\n anchor: anchor.anchor,\n proposal,\n }),\n );\n await dispatch(createIntent(ThreadAction.ToggleResolved, { thread }));\n },\n [dispatch, subject],\n );\n\n const comments = (\n <CommentsContainer\n anchors={anchors}\n currentId={attended.includes(subjectId) ? state.current : undefined}\n showResolvedThreads={showResolvedThreads}\n onAttend={handleAttend}\n onComment={handleComment}\n onResolve={handleResolve}\n onMessageDelete={handleMessageDelete}\n onThreadDelete={handleThreadDelete}\n onAcceptProposal={handleAcceptProposal}\n />\n );\n\n return (\n <StackItem.Content toolbar>\n <Tabs.Root\n value={showResolvedThreads ? 'all' : 'unresolved'}\n orientation='horizontal'\n classNames={[\n 'contents [&_[role=\"tabpanel\"]]:min-bs-0 [&_[role=\"tabpanel\"]]:overflow-y-auto [&_[role=\"tabpanel\"]]:scrollbar-thin',\n ]}\n onValueChange={onChangeViewState}\n >\n {/* TODO(burdon): Standardize (like Tollbar). */}\n <Tabs.Tablist classNames={mx('bg-toolbarSurface border-be border-subduedSeparator')}>\n <Tabs.Tab value='unresolved' classNames='text-sm'>\n {t('show unresolved label')}\n </Tabs.Tab>\n <Tabs.Tab value='all' classNames='text-sm'>\n {t('show all label')}\n </Tabs.Tab>\n </Tabs.Tablist>\n <div className='overflow-y-auto'>\n <Tabs.Tabpanel value='all'>{showResolvedThreads && comments}</Tabs.Tabpanel>\n <Tabs.Tabpanel value='unresolved'>{!showResolvedThreads && comments}</Tabs.Tabpanel>\n </div>\n </Tabs.Root>\n </StackItem.Content>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { lazy } from 'react';\n\n// TODO(wittjosiah): Suspense boundary for sidebar?\nexport * from './Call';\nexport * from './CallDebugPanel';\nexport * from './CallSidebar';\nexport * from './CommentsContainer';\nexport * from './CommentsThreadContainer';\nexport * from './MessageContainer';\nexport * from './ThreadCompanion';\nexport * from './ThreadSettings';\n\nexport const ChannelContainer = lazy(() => import('./ChannelContainer'));\nexport const ChatContainer = lazy(() => import('./ChatContainer'));\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useEffect } from 'react';\n\nimport { Obj, Relation } from '@dxos/echo';\nimport { Callout, Icon, Trans, useTranslation } from '@dxos/react-ui';\nimport { type AnchoredTo, type Thread } from '@dxos/types';\n\nimport { meta } from '../meta';\n\nimport { CommentsThreadContainer, type CommentsThreadContainerProps } from './CommentsThreadContainer';\n\nexport type CommentsContainerProps = Omit<CommentsThreadContainerProps, 'anchor' | 'current'> & {\n anchors: AnchoredTo.AnchoredTo[];\n currentId?: string;\n showResolvedThreads?: boolean;\n};\n\n/**\n * Root container for collection of comment threads.\n */\nexport const CommentsContainer = ({ anchors, currentId, showResolvedThreads, ...props }: CommentsContainerProps) => {\n const { t } = useTranslation(meta.id);\n\n // TODO(wittjosiah): There seems to be a race between thread and anchor being deleted.\n const filteredAnchors = showResolvedThreads\n ? anchors.filter((anchor) => !!Relation.getSource(anchor))\n : anchors.filter((anchor) => {\n const thread = Relation.getSource(anchor);\n return thread && thread.status !== 'resolved';\n });\n\n useEffect(() => {\n if (currentId) {\n document.getElementById(currentId)?.scrollIntoView({ behavior: 'smooth', block: 'end' });\n }\n }, [currentId]);\n\n if (filteredAnchors.length === 0) {\n return (\n <div role='none' className='plb-cardSpacingBlock pli-cardSpacingInline'>\n <Callout.Root>\n <Callout.Title>\n <Trans\n {...{\n t,\n i18nKey: 'no comments message',\n components: {\n commentIcon: <Icon icon='ph--chat-text--regular' size={4} classNames='inline-block' />,\n },\n }}\n />\n </Callout.Title>\n </Callout.Root>\n </div>\n );\n }\n\n return (\n <div>\n {filteredAnchors.map((anchor) => {\n const thread = Relation.getSource(anchor) as Thread.Thread;\n const threadId = Obj.getDXN(thread).toString();\n return <CommentsThreadContainer key={threadId} anchor={anchor} current={currentId === threadId} {...props} />;\n })}\n </div>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useCallback, useMemo, useRef, useState } from 'react';\n\nimport { Obj, Ref, Relation } from '@dxos/echo';\nimport { getSpace, useMembers } from '@dxos/react-client/echo';\nimport { useIdentity } from '@dxos/react-client/halo';\nimport { IconButton, Tag, Tooltip, useThemeContext, useTranslation } from '@dxos/react-ui';\nimport { createBasicExtensions, createThemeExtensions, listener } from '@dxos/react-ui-editor';\nimport { hoverableControlItem, hoverableControls, hoverableFocusedWithinControls, mx } from '@dxos/react-ui-theme';\nimport {\n MessageTextbox,\n type MessageTextboxProps,\n Thread as ThreadComponent,\n type ThreadRootProps,\n} from '@dxos/react-ui-thread';\nimport { type AnchoredTo, type Thread } from '@dxos/types';\nimport { isNonNullable } from '@dxos/util';\n\nimport { useStatus } from '../hooks';\nimport { meta } from '../meta';\nimport { getMessageMetadata } from '../util';\n\nimport { command } from './command-extension';\nimport { MessageContainer, buttonClassNames, buttonGroupClassNames } from './MessageContainer';\n\nexport type CommentsThreadContainerProps = {\n anchor: AnchoredTo.AnchoredTo;\n onAttend?: (anchor: AnchoredTo.AnchoredTo) => void;\n onComment?: (anchor: AnchoredTo.AnchoredTo, message: string) => void;\n onResolve?: (anchor: AnchoredTo.AnchoredTo) => void;\n onMessageDelete?: (anchor: AnchoredTo.AnchoredTo, messageId: string) => void;\n onThreadDelete?: (anchor: AnchoredTo.AnchoredTo) => void;\n onAcceptProposal?: (anchor: AnchoredTo.AnchoredTo, messageId: string) => void;\n} & Pick<ThreadRootProps, 'current'>;\n\nexport const CommentsThreadContainer = ({\n anchor,\n current,\n onAttend,\n onComment,\n onResolve,\n onMessageDelete,\n onThreadDelete,\n onAcceptProposal,\n}: CommentsThreadContainerProps) => {\n const { themeMode } = useThemeContext();\n const { t } = useTranslation(meta.id);\n const identity = useIdentity()!;\n const space = getSpace(anchor);\n const members = useMembers(space?.key);\n const detached = !anchor.anchor;\n const thread = Relation.getSource(anchor) as Thread.Thread;\n const activity = useStatus(space, Obj.getDXN(thread).toString());\n const threadScrollRef = useRef<HTMLDivElement | null>(null);\n\n const textboxMetadata = getMessageMetadata(Obj.getDXN(thread).toString(), identity);\n\n // TODO(wittjosiah): This is a hack to reset the editor after a message is sent.\n const [state, setState] = useState({});\n const messageRef = useRef('');\n const extensions = useMemo(\n () => [\n createBasicExtensions({ placeholder: t('message placeholder') }),\n createThemeExtensions({ themeMode }),\n listener({ onChange: ({ text }) => (messageRef.current = text) }),\n command,\n ],\n [state],\n );\n\n // TODO(thure): Factor out.\n const scrollToEnd = (behavior: ScrollBehavior) =>\n setTimeout(() => threadScrollRef.current?.scrollIntoView({ behavior, block: 'end' }), 10);\n\n const handleAttend = useCallback(() => onAttend?.(anchor), [onAttend, anchor]);\n const handleResolve = useCallback(() => onResolve?.(anchor), [onResolve, anchor]);\n const handleMessageDelete = useCallback((id: string) => onMessageDelete?.(anchor, id), [onMessageDelete, anchor]);\n const handleThreadDelete = useCallback(() => onThreadDelete?.(anchor), [onThreadDelete, anchor]);\n const handleAcceptProposal = useCallback((id: string) => onAcceptProposal?.(anchor, id), [onAcceptProposal, anchor]);\n\n const handleComment: MessageTextboxProps['onSend'] = useCallback(() => {\n if (!messageRef.current) {\n return false;\n }\n\n onComment?.(anchor, messageRef.current);\n messageRef.current = '';\n scrollToEnd('instant');\n setState({});\n\n return true;\n }, [anchor, identity]);\n\n return (\n <ThreadComponent.Root\n id={Obj.getDXN(thread).toString()}\n classNames='pbs-2 border-be border-subduedSeparator last:border-none'\n current={current}\n onClickCapture={handleAttend}\n onFocusCapture={handleAttend}\n >\n <div\n role='none'\n className={mx(\n 'col-span-2 grid grid-cols-[var(--rail-size)_1fr_min-content]',\n hoverableControls,\n hoverableFocusedWithinControls,\n )}\n >\n {detached ? (\n <Tooltip.Trigger asChild content={t('detached thread label')} side='top'>\n <ThreadComponent.Header detached>{thread.name}</ThreadComponent.Header>\n </Tooltip.Trigger>\n ) : (\n <ThreadComponent.Header>{thread.name}</ThreadComponent.Header>\n )}\n <div role='none' className={buttonGroupClassNames}>\n {thread.status === 'staged' && <Tag palette='neutral'>{t('draft button')}</Tag>}\n {onResolve && !(thread?.status === 'staged') && (\n <IconButton\n data-testid='thread.resolve'\n variant='ghost'\n icon={thread?.status === 'resolved' ? 'ph--check--fill' : 'ph--check--regular'}\n iconOnly\n label={t('resolve thread label')}\n classNames={[buttonClassNames, thread?.status !== 'resolved' && hoverableControlItem]}\n onClick={handleResolve}\n />\n )}\n {onThreadDelete && (\n <IconButton\n data-testid='thread.delete'\n variant='ghost'\n icon='ph--x--regular'\n iconOnly\n label={t('delete thread label')}\n classNames={[buttonClassNames, hoverableControlItem]}\n onClick={handleThreadDelete}\n />\n )}\n </div>\n </div>\n\n {/** TODO(dmaretskyi): How's `thread.messages` undefined? */}\n {Ref.Array.targets(thread.messages?.filter(isNonNullable) ?? []).map((message) => (\n <MessageContainer\n key={message.id}\n editable\n message={message}\n members={members}\n onDelete={handleMessageDelete}\n onAcceptProposal={handleAcceptProposal}\n />\n ))}\n\n {/*\n TODO(wittjosiah): Can't autofocus this generally.\n There can be multiple threads with inputs and they can't all be focused.\n Also, it steals focus from documents when first rendered.\n Need to find a way to autofocus in one scenario only: when a new thread is created.\n */}\n <MessageTextbox extensions={extensions} onSend={handleComment} {...textboxMetadata} />\n\n <ThreadComponent.Status activity={activity}>{t('activity message')}</ThreadComponent.Status>\n\n {/* NOTE(thure): This can’t also be the `overflow-anchor` because `ScrollArea` injects an interceding node that contains this necessary ref’d element. */}\n <div role='none' className='bs-px -mbs-px' ref={threadScrollRef} />\n </ThreadComponent.Root>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { useTranslation } from '@dxos/react-ui';\nimport { ControlPage } from '@dxos/react-ui-form';\n\nimport { meta } from '../meta';\nimport type { ThreadSettingsProps } from '../types';\n\nexport const ThreadSettings = ({ settings: _settings }: { settings: ThreadSettingsProps }) => {\n const { t: _t } = useTranslation(meta.id);\n return <ControlPage></ControlPage>;\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["WebRTCStats", "React", "useEffect", "useMemo", "useState", "truncateKey", "JsonView", "Panel", "log", "IconButton", "Input", "useTranslation", "CallDebugPanel", "state", "t", "useTranslation", "meta", "id", "open", "setOpen", "useState", "handleToggle", "showServiceHistory", "setShowServiceHistory", "handleToggleServiceHistory", "handleCopyRaw", "navigator", "clipboard", "writeText", "JSON", "stringify", "users", "call", "stats", "showDetailedWebRTCStats", "setShowDetailedWebRTCStats", "handleShowDetailedWebRTCStats", "webrtcStats", "useMemo", "WebRTCStats", "getStatsInterval", "setStats", "useEffect", "pc", "media", "peer", "session", "peerConnection", "handleStats", "data", "added", "addConnection", "peerId", "connectionId", "on", "removeConnection", "removeListener", "error", "log", "rows", "getCallStatusTable", "pulledAudioTracks", "Panel", "icon", "onToggle", "title", "info", "div", "className", "joined", "maxHeight", "Input", "Root", "Switch", "checked", "onCheckedChange", "Label", "IconButton", "label", "onClick", "Table", "JsonView", "history", "get", "self", "filter", "user", "map", "isOk", "audio", "tracks", "ctx", "disposed", "video", "pulledVideoStreams", "screenshare", "length", "name", "truncateKey", "pushedAudioTrack", "pushedVideoTrack", "screenshareEnabled", "pushedScreenshareTrack", "undefined", "iceConnectionState", "Unit", "KB", "n", "toFixed", "prefix", "value", "unit", "i", "key", "React", "useCapability", "CallSidebar", "call", "useCapability", "ThreadCapabilities", "CallManager", "React", "ChannelContainer", "roomId", "React", "useCallback", "useMemo", "Capabilities", "CollaborationActions", "LayoutAction", "createIntent", "useCapabilities", "useCapability", "useIntentDispatcher", "Filter", "Obj", "Query", "Relation", "Ref", "getSpace", "useQuery", "useIdentity", "useTranslation", "useAttended", "StackItem", "Tabs", "mx", "AnchoredTo", "Thread", "lazy", "React", "useEffect", "Obj", "Relation", "Callout", "Icon", "Trans", "useTranslation", "React", "useCallback", "useMemo", "useRef", "useState", "Obj", "Ref", "Relation", "getSpace", "useMembers", "useIdentity", "IconButton", "Tag", "Tooltip", "useThemeContext", "useTranslation", "createBasicExtensions", "createThemeExtensions", "listener", "hoverableControlItem", "hoverableControls", "hoverableFocusedWithinControls", "mx", "MessageTextbox", "Thread", "ThreadComponent", "isNonNullable", "CommentsThreadContainer", "anchor", "current", "onAttend", "onComment", "onResolve", "onMessageDelete", "onThreadDelete", "onAcceptProposal", "themeMode", "useThemeContext", "t", "useTranslation", "meta", "id", "identity", "useIdentity", "space", "getSpace", "members", "useMembers", "key", "detached", "thread", "Relation", "getSource", "activity", "useStatus", "Obj", "getDXN", "toString", "threadScrollRef", "useRef", "textboxMetadata", "getMessageMetadata", "state", "setState", "useState", "messageRef", "extensions", "useMemo", "createBasicExtensions", "placeholder", "createThemeExtensions", "listener", "onChange", "text", "command", "scrollToEnd", "behavior", "setTimeout", "scrollIntoView", "block", "handleAttend", "useCallback", "handleResolve", "handleMessageDelete", "handleThreadDelete", "handleAcceptProposal", "handleComment", "React", "ThreadComponent", "Root", "classNames", "onClickCapture", "onFocusCapture", "div", "role", "className", "mx", "hoverableControls", "hoverableFocusedWithinControls", "Tooltip", "Trigger", "asChild", "content", "side", "Header", "name", "buttonGroupClassNames", "status", "Tag", "palette", "IconButton", "data-testid", "variant", "icon", "iconOnly", "label", "buttonClassNames", "hoverableControlItem", "onClick", "Ref", "Array", "targets", "messages", "filter", "isNonNullable", "map", "message", "MessageContainer", "editable", "onDelete", "MessageTextbox", "onSend", "Status", "ref", "CommentsContainer", "anchors", "currentId", "showResolvedThreads", "props", "t", "useTranslation", "meta", "id", "filteredAnchors", "filter", "anchor", "Relation", "getSource", "thread", "status", "useEffect", "document", "getElementById", "scrollIntoView", "behavior", "block", "length", "React", "div", "role", "className", "Callout", "Root", "Title", "Trans", "i18nKey", "components", "commentIcon", "Icon", "icon", "size", "classNames", "map", "threadId", "Obj", "getDXN", "toString", "CommentsThreadContainer", "key", "current", "React", "useTranslation", "ControlPage", "ThreadSettings", "settings", "_settings", "t", "_t", "useTranslation", "meta", "id", "React", "ControlPage", "ChannelContainer", "lazy", "ChatContainer", "ThreadCompanion", "subject", "t", "useTranslation", "meta", "id", "dispatchPromise", "dispatch", "useIntentDispatcher", "identity", "useIdentity", "subjectId", "Obj", "getDXN", "toString", "state", "getViewState", "useCapability", "ThreadCapabilities", "MutableState", "drafts", "viewState", "useMemo", "showResolvedThreads", "onChangeViewState", "useCallback", "nextValue", "anchorSorts", "useCapabilities", "Capabilities", "AnchorSort", "sort", "find", "key", "getTypename", "space", "getSpace", "objectsAnchoredTo", "useQuery", "Query", "select", "Filter", "ids", "targetOf", "AnchoredTo", "anchors", "toSorted", "a", "b", "filter", "anchor", "instanceOf", "Thread", "Relation", "getSource", "concat", "attended", "useAttended", "handleAttend", "thread", "threadId", "current", "createIntent", "LayoutAction", "ScrollIntoView", "part", "options", "cursor", "ref", "handleComment", "text", "ThreadAction", "AddMessage", "sender", "identityDid", "did", "handleResolve", "ToggleResolved", "handleThreadDelete", "Delete", "handleMessageDelete", "messageId", "DeleteMessage", "handleAcceptProposal", "messageIndex", "messages", "findIndex", "Ref", "hasObjectId", "message", "target", "proposal", "blocks", "block", "_tag", "CollaborationActions", "AcceptProposal", "comments", "React", "CommentsContainer", "currentId", "includes", "undefined", "onAttend", "onComment", "onResolve", "onMessageDelete", "onThreadDelete", "onAcceptProposal", "StackItem", "Content", "toolbar", "Tabs", "Root", "value", "orientation", "classNames", "onValueChange", "Tablist", "mx", "Tab", "div", "className", "Tabpanel"]
7
+ }
@@ -0,0 +1,11 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+ var __defProp = Object.defineProperty;
3
+ var __export = (target, all) => {
4
+ for (var name in all)
5
+ __defProp(target, name, { get: all[name], enumerable: true });
6
+ };
7
+
8
+ export {
9
+ __export
10
+ };
11
+ //# sourceMappingURL=chunk-HSLMI22Q.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }