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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (320) hide show
  1. package/dist/lib/browser/ChannelContainer-4PYFOIDK.mjs +16 -0
  2. package/dist/lib/browser/ChatContainer-EXNNREYB.mjs +15 -0
  3. package/dist/lib/browser/{app-graph-builder-OY7R7EJP.mjs → app-graph-builder-FHAOPO57.mjs} +8 -8
  4. package/dist/lib/browser/app-graph-builder-FHAOPO57.mjs.map +7 -0
  5. package/dist/lib/browser/{call-manager-APQAZWHT.mjs → call-manager-RMPTWSTF.mjs} +6 -5
  6. package/dist/lib/browser/call-manager-RMPTWSTF.mjs.map +7 -0
  7. package/dist/lib/browser/{chunk-R5MDLUPC.mjs → chunk-4APCDRSH.mjs} +3 -3
  8. package/dist/lib/browser/{chunk-R5MDLUPC.mjs.map → chunk-4APCDRSH.mjs.map} +1 -1
  9. package/dist/lib/browser/{chunk-XZKBN3NS.mjs → chunk-7W7QK5ZP.mjs} +253 -250
  10. package/dist/lib/browser/chunk-7W7QK5ZP.mjs.map +7 -0
  11. package/dist/lib/browser/{chunk-IIUTBDVB.mjs → chunk-EV4JWI7L.mjs} +2 -2
  12. package/dist/lib/browser/chunk-G4CNILRR.mjs +23 -0
  13. package/dist/lib/browser/{chunk-6NBVNXTM.mjs.map → chunk-G4CNILRR.mjs.map} +3 -3
  14. package/dist/lib/browser/{chunk-JKQUJOTX.mjs → chunk-GERVMFQW.mjs} +2 -2
  15. package/dist/lib/browser/{chunk-AEXWNS6Z.mjs → chunk-KTWYVC5X.mjs} +34 -15
  16. package/dist/lib/browser/chunk-KTWYVC5X.mjs.map +7 -0
  17. package/dist/lib/browser/{chunk-TAFSCSUR.mjs → chunk-PBMNFG3B.mjs} +97 -72
  18. package/dist/lib/browser/chunk-PBMNFG3B.mjs.map +7 -0
  19. package/dist/lib/browser/chunk-RI3Z6MK3.mjs +181 -0
  20. package/dist/lib/browser/chunk-RI3Z6MK3.mjs.map +7 -0
  21. package/dist/lib/browser/chunk-XYUJXHYV.mjs +106 -0
  22. package/dist/lib/browser/chunk-XYUJXHYV.mjs.map +7 -0
  23. package/dist/lib/browser/{chunk-4H4A264L.mjs → chunk-ZCEU5K23.mjs} +490 -308
  24. package/dist/lib/browser/chunk-ZCEU5K23.mjs.map +7 -0
  25. package/dist/lib/browser/{chunk-PG5CTFKK.mjs → chunk-ZH2WPTNP.mjs} +226 -158
  26. package/dist/lib/browser/chunk-ZH2WPTNP.mjs.map +7 -0
  27. package/dist/lib/browser/index.mjs +49 -44
  28. package/dist/lib/browser/index.mjs.map +3 -3
  29. package/dist/lib/browser/{intent-resolver-FK2MDVDT.mjs → intent-resolver-J7OCP2P6.mjs} +90 -16
  30. package/dist/lib/browser/intent-resolver-J7OCP2P6.mjs.map +7 -0
  31. package/dist/lib/browser/{markdown-TE5SWWNJ.mjs → markdown-Z677YORA.mjs} +8 -8
  32. package/dist/lib/browser/markdown-Z677YORA.mjs.map +7 -0
  33. package/dist/lib/browser/meta.json +1 -1
  34. package/dist/lib/browser/react-root-XKOD4KRB.mjs +28 -0
  35. package/dist/lib/browser/{react-surface-VXUJKSOG.mjs → react-surface-GVGZRBDK.mjs} +12 -11
  36. package/dist/lib/browser/react-surface-GVGZRBDK.mjs.map +7 -0
  37. package/dist/lib/browser/{settings-RB2RSLXV.mjs → settings-GRKEID73.mjs} +4 -4
  38. package/dist/lib/browser/{state-RKL5MSDP.mjs → state-2T4KDWBX.mjs} +4 -4
  39. package/dist/lib/browser/{state-RKL5MSDP.mjs.map → state-2T4KDWBX.mjs.map} +2 -2
  40. package/dist/lib/browser/toolkit-KUPIIFC6.mjs +80 -0
  41. package/dist/lib/browser/toolkit-KUPIIFC6.mjs.map +7 -0
  42. package/dist/lib/browser/types/index.mjs +2 -2
  43. package/dist/lib/node-esm/ChannelContainer-KQQEZWUN.mjs +17 -0
  44. package/dist/lib/node-esm/{ChatContainer-F6CSADV7.mjs → ChatContainer-QVQKFBWA.mjs} +6 -5
  45. package/dist/lib/node-esm/{app-graph-builder-BAHBHYWI.mjs → app-graph-builder-XEYWX5FC.mjs} +8 -8
  46. package/dist/lib/node-esm/app-graph-builder-XEYWX5FC.mjs.map +7 -0
  47. package/dist/lib/node-esm/{call-manager-UUYXLF4T.mjs → call-manager-QAREJFVX.mjs} +6 -5
  48. package/dist/lib/node-esm/call-manager-QAREJFVX.mjs.map +7 -0
  49. package/dist/lib/node-esm/chunk-2V3WSLUZ.mjs +108 -0
  50. package/dist/lib/node-esm/chunk-2V3WSLUZ.mjs.map +7 -0
  51. package/dist/lib/node-esm/chunk-4T45PCKP.mjs +25 -0
  52. package/dist/lib/node-esm/{chunk-O63QJPQX.mjs.map → chunk-4T45PCKP.mjs.map} +3 -3
  53. package/dist/lib/node-esm/{chunk-PGRP3O4O.mjs → chunk-57XR3LEF.mjs} +2 -2
  54. package/dist/lib/node-esm/{chunk-P6RLFCNT.mjs → chunk-DKCQCENK.mjs} +97 -72
  55. package/dist/lib/node-esm/chunk-DKCQCENK.mjs.map +7 -0
  56. package/dist/lib/node-esm/{chunk-ESQC6SYE.mjs → chunk-GRLRWTRU.mjs} +2 -2
  57. package/dist/lib/node-esm/chunk-JNPKMT7O.mjs +182 -0
  58. package/dist/lib/node-esm/chunk-JNPKMT7O.mjs.map +7 -0
  59. package/dist/lib/node-esm/{chunk-UZWVVFT3.mjs → chunk-LE2LIYGX.mjs} +226 -158
  60. package/dist/lib/node-esm/chunk-LE2LIYGX.mjs.map +7 -0
  61. package/dist/lib/node-esm/{chunk-UJMPYKT3.mjs → chunk-P6E247RF.mjs} +34 -15
  62. package/dist/lib/node-esm/chunk-P6E247RF.mjs.map +7 -0
  63. package/dist/lib/node-esm/{chunk-K4KAUOKT.mjs → chunk-PYTVBN5J.mjs} +3 -3
  64. package/dist/lib/node-esm/{chunk-K4KAUOKT.mjs.map → chunk-PYTVBN5J.mjs.map} +1 -1
  65. package/dist/lib/node-esm/{chunk-2RNIPFDA.mjs → chunk-SNKFZQST.mjs} +253 -250
  66. package/dist/lib/node-esm/chunk-SNKFZQST.mjs.map +7 -0
  67. package/dist/lib/node-esm/{chunk-WXNPD542.mjs → chunk-TIPIOH2J.mjs} +489 -308
  68. package/dist/lib/node-esm/chunk-TIPIOH2J.mjs.map +7 -0
  69. package/dist/lib/node-esm/index.mjs +49 -44
  70. package/dist/lib/node-esm/index.mjs.map +3 -3
  71. package/dist/lib/node-esm/{intent-resolver-BU73VYW3.mjs → intent-resolver-SR2LW4HF.mjs} +90 -16
  72. package/dist/lib/node-esm/intent-resolver-SR2LW4HF.mjs.map +7 -0
  73. package/dist/lib/node-esm/{markdown-HJUWNBLS.mjs → markdown-FL4IXLRP.mjs} +8 -8
  74. package/dist/lib/node-esm/markdown-FL4IXLRP.mjs.map +7 -0
  75. package/dist/lib/node-esm/meta.json +1 -1
  76. package/dist/lib/node-esm/{react-root-RUXOAQNW.mjs → react-root-4JWDRIQB.mjs} +12 -11
  77. package/dist/lib/{browser/react-root-NK3A4VG7.mjs.map → node-esm/react-root-4JWDRIQB.mjs.map} +1 -1
  78. package/dist/lib/node-esm/{react-surface-ELXFYKP6.mjs → react-surface-WLQUVRAX.mjs} +12 -11
  79. package/dist/lib/node-esm/react-surface-WLQUVRAX.mjs.map +7 -0
  80. package/dist/lib/node-esm/{settings-EA7DFSM6.mjs → settings-F2ODVNNW.mjs} +4 -4
  81. package/dist/lib/node-esm/{state-6AUTNROZ.mjs → state-62TQKQVB.mjs} +4 -4
  82. package/dist/lib/node-esm/{state-6AUTNROZ.mjs.map → state-62TQKQVB.mjs.map} +2 -2
  83. package/dist/lib/node-esm/toolkit-KZIS7G36.mjs +81 -0
  84. package/dist/lib/node-esm/toolkit-KZIS7G36.mjs.map +7 -0
  85. package/dist/lib/node-esm/types/index.mjs +2 -2
  86. package/dist/types/src/ThreadPlugin.d.ts.map +1 -1
  87. package/dist/types/src/calls/call-manager.d.ts +1 -1
  88. package/dist/types/src/calls/call-manager.d.ts.map +1 -1
  89. package/dist/types/src/calls/call-swarm-synchronizer.d.ts.map +1 -1
  90. package/dist/types/src/calls/media-manager.d.ts +1 -1
  91. package/dist/types/src/calls/media-manager.d.ts.map +1 -1
  92. package/dist/types/src/calls/types.d.ts +1 -1
  93. package/dist/types/src/calls/types.d.ts.map +1 -1
  94. package/dist/types/src/calls/util/calls-service.d.ts +8 -3
  95. package/dist/types/src/calls/util/calls-service.d.ts.map +1 -1
  96. package/dist/types/src/calls/util/stub-media-streams.d.ts.map +1 -1
  97. package/dist/types/src/calls-service.stories.d.ts +24 -0
  98. package/dist/types/src/calls-service.stories.d.ts.map +1 -0
  99. package/dist/types/src/capabilities/app-graph-builder.d.ts +1 -1
  100. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  101. package/dist/types/src/capabilities/call-manager.d.ts +1 -1
  102. package/dist/types/src/capabilities/call-manager.d.ts.map +1 -1
  103. package/dist/types/src/capabilities/capabilities.d.ts +2 -2
  104. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  105. package/dist/types/src/capabilities/index.d.ts +11 -10
  106. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  107. package/dist/types/src/capabilities/intent-resolver.d.ts +1 -1
  108. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  109. package/dist/types/src/capabilities/markdown.d.ts +1 -1
  110. package/dist/types/src/capabilities/markdown.d.ts.map +1 -1
  111. package/dist/types/src/capabilities/react-root.d.ts +2 -2
  112. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  113. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  114. package/dist/types/src/capabilities/settings.d.ts +1 -1
  115. package/dist/types/src/capabilities/state.d.ts +2 -2
  116. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  117. package/dist/types/src/capabilities/toolkit.d.ts +5 -0
  118. package/dist/types/src/capabilities/toolkit.d.ts.map +1 -0
  119. package/dist/types/src/components/Call/Call.d.ts.map +1 -1
  120. package/dist/types/src/components/Call/Toolbar.d.ts.map +1 -1
  121. package/dist/types/src/components/CallDebugPanel.d.ts +7 -0
  122. package/dist/types/src/components/CallDebugPanel.d.ts.map +1 -1
  123. package/dist/types/src/components/CallSidebar.d.ts.map +1 -1
  124. package/dist/types/src/components/ChannelContainer.d.ts.map +1 -1
  125. package/dist/types/src/components/ChannelContainer.stories.d.ts +89 -4
  126. package/dist/types/src/components/ChannelContainer.stories.d.ts.map +1 -1
  127. package/dist/types/src/components/Chat.stories.d.ts +90 -3
  128. package/dist/types/src/components/Chat.stories.d.ts.map +1 -1
  129. package/dist/types/src/components/ChatContainer.d.ts +2 -2
  130. package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
  131. package/dist/types/src/components/Comments.stories.d.ts +156 -3
  132. package/dist/types/src/components/Comments.stories.d.ts.map +1 -1
  133. package/dist/types/src/components/CommentsContainer.d.ts +4 -4
  134. package/dist/types/src/components/CommentsContainer.d.ts.map +1 -1
  135. package/dist/types/src/components/CommentsThreadContainer.d.ts +14 -0
  136. package/dist/types/src/components/CommentsThreadContainer.d.ts.map +1 -0
  137. package/dist/types/src/components/Lobby/Lobby.d.ts.map +1 -1
  138. package/dist/types/src/components/Media/VideoObject.d.ts +1 -1
  139. package/dist/types/src/components/Media/VideoObject.stories.d.ts +15 -3
  140. package/dist/types/src/components/Media/VideoObject.stories.d.ts.map +1 -1
  141. package/dist/types/src/components/MessageContainer.d.ts +4 -1
  142. package/dist/types/src/components/MessageContainer.d.ts.map +1 -1
  143. package/dist/types/src/components/Participant/Participant.d.ts.map +1 -1
  144. package/dist/types/src/components/Participant/ParticipantGrid.d.ts.map +1 -1
  145. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts +154 -2
  146. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts.map +1 -1
  147. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts +156 -3
  148. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts.map +1 -1
  149. package/dist/types/src/components/ResponsiveGrid/ResponsiveGridItem.d.ts.map +1 -1
  150. package/dist/types/src/components/ThreadComplementary.d.ts.map +1 -1
  151. package/dist/types/src/components/command-extension.d.ts.map +1 -1
  152. package/dist/types/src/components/index.d.ts +1 -1
  153. package/dist/types/src/components/index.d.ts.map +1 -1
  154. package/dist/types/src/components/testing.d.ts +1 -0
  155. package/dist/types/src/components/testing.d.ts.map +1 -1
  156. package/dist/types/src/extensions/threads.d.ts +2 -2
  157. package/dist/types/src/extensions/threads.d.ts.map +1 -1
  158. package/dist/types/src/hooks/index.d.ts +3 -0
  159. package/dist/types/src/hooks/index.d.ts.map +1 -1
  160. package/dist/types/src/hooks/useBlackCanvasStreamTrack.d.ts +2 -0
  161. package/dist/types/src/hooks/useBlackCanvasStreamTrack.d.ts.map +1 -0
  162. package/dist/types/src/hooks/useInaudibleAudioStreamTrack.d.ts +2 -0
  163. package/dist/types/src/hooks/useInaudibleAudioStreamTrack.d.ts.map +1 -0
  164. package/dist/types/src/hooks/useVideoStreamTrack.d.ts +3 -0
  165. package/dist/types/src/hooks/useVideoStreamTrack.d.ts.map +1 -0
  166. package/dist/types/src/testing/stories.d.ts.map +1 -1
  167. package/dist/types/src/translations.d.ts +76 -194
  168. package/dist/types/src/translations.d.ts.map +1 -1
  169. package/dist/types/src/types/schema.d.ts +125 -81
  170. package/dist/types/src/types/schema.d.ts.map +1 -1
  171. package/dist/types/src/types/types.d.ts +270 -139
  172. package/dist/types/src/types/types.d.ts.map +1 -1
  173. package/dist/types/src/util.d.ts +17 -2
  174. package/dist/types/src/util.d.ts.map +1 -1
  175. package/dist/types/tsconfig.tsbuildinfo +1 -1
  176. package/package.json +56 -53
  177. package/src/ThreadPlugin.tsx +16 -24
  178. package/src/calls/call-manager.ts +8 -4
  179. package/src/calls/call-swarm-synchronizer.ts +1 -1
  180. package/src/calls/media-manager.ts +70 -37
  181. package/src/calls/types.ts +8 -4
  182. package/src/calls/util/calls-service.ts +72 -18
  183. package/src/calls/util/stub-media-streams.ts +62 -8
  184. package/src/calls-service.stories.tsx +232 -0
  185. package/src/capabilities/app-graph-builder.ts +8 -5
  186. package/src/capabilities/call-manager.ts +3 -2
  187. package/src/capabilities/capabilities.ts +2 -2
  188. package/src/capabilities/index.ts +1 -0
  189. package/src/capabilities/intent-resolver.ts +60 -8
  190. package/src/capabilities/markdown.ts +4 -3
  191. package/src/capabilities/react-surface.tsx +5 -4
  192. package/src/capabilities/state.ts +2 -1
  193. package/src/capabilities/toolkit.ts +78 -0
  194. package/src/components/Call/Call.tsx +4 -3
  195. package/src/components/Call/Toolbar.tsx +8 -8
  196. package/src/components/CallDebugPanel.tsx +110 -51
  197. package/src/components/CallSidebar.tsx +2 -1
  198. package/src/components/ChannelContainer.stories.tsx +11 -10
  199. package/src/components/ChannelContainer.tsx +13 -11
  200. package/src/components/Chat.stories.tsx +29 -27
  201. package/src/components/ChatContainer.tsx +20 -15
  202. package/src/components/Comments.stories.tsx +52 -41
  203. package/src/components/CommentsContainer.tsx +17 -11
  204. package/src/components/{CommentContainer.tsx → CommentsThreadContainer.tsx} +53 -82
  205. package/src/components/Lobby/Lobby.tsx +1 -1
  206. package/src/components/Media/VideoObject.stories.tsx +30 -27
  207. package/src/components/MessageContainer.tsx +65 -47
  208. package/src/components/Participant/Participant.tsx +13 -7
  209. package/src/components/Participant/ParticipantGrid.tsx +2 -1
  210. package/src/components/ResponsiveGrid/ResponsiveContainer.stories.tsx +7 -6
  211. package/src/components/ResponsiveGrid/ResponsiveGrid.stories.tsx +42 -39
  212. package/src/components/ResponsiveGrid/ResponsiveGrid.tsx +1 -1
  213. package/src/components/ResponsiveGrid/ResponsiveGridItem.tsx +4 -4
  214. package/src/components/ThreadComplementary.tsx +40 -10
  215. package/src/components/ThreadSettings.tsx +4 -4
  216. package/src/components/command-extension.ts +5 -2
  217. package/src/components/index.ts +1 -1
  218. package/src/components/testing.ts +24 -2
  219. package/src/extensions/threads.ts +6 -6
  220. package/src/hooks/index.ts +3 -0
  221. package/src/hooks/useBlackCanvasStreamTrack.tsx +27 -0
  222. package/src/hooks/useDebugMode.ts +1 -1
  223. package/src/hooks/useInaudibleAudioStreamTrack.tsx +27 -0
  224. package/src/hooks/useVideoStreamTrack.tsx +36 -0
  225. package/src/testing/stories.ts +7 -3
  226. package/src/translations.ts +14 -9
  227. package/src/types/types.ts +28 -11
  228. package/src/typings/peermetrics-webrtc-stats.d.ts +17 -1
  229. package/src/typings.d.ts +8 -0
  230. package/dist/lib/browser/ChannelContainer-PKFBVENP.mjs +0 -15
  231. package/dist/lib/browser/ChatContainer-RSOKYAMK.mjs +0 -14
  232. package/dist/lib/browser/app-graph-builder-OY7R7EJP.mjs.map +0 -7
  233. package/dist/lib/browser/call-manager-APQAZWHT.mjs.map +0 -7
  234. package/dist/lib/browser/chunk-4H4A264L.mjs.map +0 -7
  235. package/dist/lib/browser/chunk-5P5BH5GE.mjs +0 -88
  236. package/dist/lib/browser/chunk-5P5BH5GE.mjs.map +0 -7
  237. package/dist/lib/browser/chunk-6NBVNXTM.mjs +0 -21
  238. package/dist/lib/browser/chunk-AEXWNS6Z.mjs.map +0 -7
  239. package/dist/lib/browser/chunk-PG5CTFKK.mjs.map +0 -7
  240. package/dist/lib/browser/chunk-TAFSCSUR.mjs.map +0 -7
  241. package/dist/lib/browser/chunk-XZKBN3NS.mjs.map +0 -7
  242. package/dist/lib/browser/intent-resolver-FK2MDVDT.mjs.map +0 -7
  243. package/dist/lib/browser/markdown-TE5SWWNJ.mjs.map +0 -7
  244. package/dist/lib/browser/react-root-NK3A4VG7.mjs +0 -27
  245. package/dist/lib/browser/react-surface-VXUJKSOG.mjs.map +0 -7
  246. package/dist/lib/node/ChannelContainer-YS5YT2ML.cjs +0 -36
  247. package/dist/lib/node/ChannelContainer-YS5YT2ML.cjs.map +0 -7
  248. package/dist/lib/node/ChatContainer-GCOM3M56.cjs +0 -35
  249. package/dist/lib/node/ChatContainer-GCOM3M56.cjs.map +0 -7
  250. package/dist/lib/node/app-graph-builder-PBHJNDQY.cjs +0 -179
  251. package/dist/lib/node/app-graph-builder-PBHJNDQY.cjs.map +0 -7
  252. package/dist/lib/node/call-manager-HV2XJW5O.cjs +0 -37
  253. package/dist/lib/node/call-manager-HV2XJW5O.cjs.map +0 -7
  254. package/dist/lib/node/chunk-44I33JDT.cjs +0 -1731
  255. package/dist/lib/node/chunk-44I33JDT.cjs.map +0 -7
  256. package/dist/lib/node/chunk-4YSNVPWU.cjs +0 -37
  257. package/dist/lib/node/chunk-4YSNVPWU.cjs.map +0 -7
  258. package/dist/lib/node/chunk-E3WBZTTI.cjs +0 -371
  259. package/dist/lib/node/chunk-E3WBZTTI.cjs.map +0 -7
  260. package/dist/lib/node/chunk-ERG7G6FF.cjs +0 -59
  261. package/dist/lib/node/chunk-ERG7G6FF.cjs.map +0 -7
  262. package/dist/lib/node/chunk-FUXJAVFZ.cjs +0 -108
  263. package/dist/lib/node/chunk-FUXJAVFZ.cjs.map +0 -7
  264. package/dist/lib/node/chunk-HLMCEE5K.cjs +0 -41
  265. package/dist/lib/node/chunk-HLMCEE5K.cjs.map +0 -7
  266. package/dist/lib/node/chunk-IP533AMV.cjs +0 -554
  267. package/dist/lib/node/chunk-IP533AMV.cjs.map +0 -7
  268. package/dist/lib/node/chunk-LR5NENBE.cjs +0 -54
  269. package/dist/lib/node/chunk-LR5NENBE.cjs.map +0 -7
  270. package/dist/lib/node/chunk-UM36TPCT.cjs +0 -984
  271. package/dist/lib/node/chunk-UM36TPCT.cjs.map +0 -7
  272. package/dist/lib/node/chunk-ZGDN3XBR.cjs +0 -149
  273. package/dist/lib/node/chunk-ZGDN3XBR.cjs.map +0 -7
  274. package/dist/lib/node/index.cjs +0 -310
  275. package/dist/lib/node/index.cjs.map +0 -7
  276. package/dist/lib/node/intent-resolver-SYSJ5SJG.cjs +0 -363
  277. package/dist/lib/node/intent-resolver-SYSJ5SJG.cjs.map +0 -7
  278. package/dist/lib/node/markdown-GQIPJS2F.cjs +0 -178
  279. package/dist/lib/node/markdown-GQIPJS2F.cjs.map +0 -7
  280. package/dist/lib/node/meta.json +0 -1
  281. package/dist/lib/node/react-root-6HHDMULJ.cjs +0 -51
  282. package/dist/lib/node/react-root-6HHDMULJ.cjs.map +0 -7
  283. package/dist/lib/node/react-surface-NBH42NN2.cjs +0 -122
  284. package/dist/lib/node/react-surface-NBH42NN2.cjs.map +0 -7
  285. package/dist/lib/node/settings-4LQSFEDK.cjs +0 -36
  286. package/dist/lib/node/settings-4LQSFEDK.cjs.map +0 -7
  287. package/dist/lib/node/state-IY5XX3H2.cjs +0 -50
  288. package/dist/lib/node/state-IY5XX3H2.cjs.map +0 -7
  289. package/dist/lib/node/types/index.cjs +0 -38
  290. package/dist/lib/node/types/index.cjs.map +0 -7
  291. package/dist/lib/node-esm/ChannelContainer-O4QJII2P.mjs +0 -16
  292. package/dist/lib/node-esm/app-graph-builder-BAHBHYWI.mjs.map +0 -7
  293. package/dist/lib/node-esm/call-manager-UUYXLF4T.mjs.map +0 -7
  294. package/dist/lib/node-esm/chunk-2RNIPFDA.mjs.map +0 -7
  295. package/dist/lib/node-esm/chunk-O3V45YJP.mjs +0 -90
  296. package/dist/lib/node-esm/chunk-O3V45YJP.mjs.map +0 -7
  297. package/dist/lib/node-esm/chunk-O63QJPQX.mjs +0 -23
  298. package/dist/lib/node-esm/chunk-P6RLFCNT.mjs.map +0 -7
  299. package/dist/lib/node-esm/chunk-UJMPYKT3.mjs.map +0 -7
  300. package/dist/lib/node-esm/chunk-UZWVVFT3.mjs.map +0 -7
  301. package/dist/lib/node-esm/chunk-WXNPD542.mjs.map +0 -7
  302. package/dist/lib/node-esm/intent-resolver-BU73VYW3.mjs.map +0 -7
  303. package/dist/lib/node-esm/markdown-HJUWNBLS.mjs.map +0 -7
  304. package/dist/lib/node-esm/react-surface-ELXFYKP6.mjs.map +0 -7
  305. package/dist/types/src/components/CommentContainer.d.ts +0 -13
  306. package/dist/types/src/components/CommentContainer.d.ts.map +0 -1
  307. package/dist/types/src/peers.stories.d.ts +0 -11
  308. package/dist/types/src/peers.stories.d.ts.map +0 -1
  309. package/src/peers.stories.tsx +0 -189
  310. /package/dist/lib/browser/{ChannelContainer-PKFBVENP.mjs.map → ChannelContainer-4PYFOIDK.mjs.map} +0 -0
  311. /package/dist/lib/browser/{ChatContainer-RSOKYAMK.mjs.map → ChatContainer-EXNNREYB.mjs.map} +0 -0
  312. /package/dist/lib/browser/{chunk-IIUTBDVB.mjs.map → chunk-EV4JWI7L.mjs.map} +0 -0
  313. /package/dist/lib/browser/{chunk-JKQUJOTX.mjs.map → chunk-GERVMFQW.mjs.map} +0 -0
  314. /package/dist/lib/{node-esm/react-root-RUXOAQNW.mjs.map → browser/react-root-XKOD4KRB.mjs.map} +0 -0
  315. /package/dist/lib/browser/{settings-RB2RSLXV.mjs.map → settings-GRKEID73.mjs.map} +0 -0
  316. /package/dist/lib/node-esm/{ChannelContainer-O4QJII2P.mjs.map → ChannelContainer-KQQEZWUN.mjs.map} +0 -0
  317. /package/dist/lib/node-esm/{ChatContainer-F6CSADV7.mjs.map → ChatContainer-QVQKFBWA.mjs.map} +0 -0
  318. /package/dist/lib/node-esm/{chunk-PGRP3O4O.mjs.map → chunk-57XR3LEF.mjs.map} +0 -0
  319. /package/dist/lib/node-esm/{chunk-ESQC6SYE.mjs.map → chunk-GRLRWTRU.mjs.map} +0 -0
  320. /package/dist/lib/node-esm/{settings-EA7DFSM6.mjs.map → settings-F2ODVNNW.mjs.map} +0 -0
@@ -1,184 +1,43 @@
1
1
  import {
2
2
  ThreadCapabilities
3
- } from "./chunk-R5MDLUPC.mjs";
3
+ } from "./chunk-4APCDRSH.mjs";
4
4
  import {
5
5
  ChatContainer_default
6
- } from "./chunk-TAFSCSUR.mjs";
6
+ } from "./chunk-PBMNFG3B.mjs";
7
7
  import {
8
8
  useDebugMode
9
- } from "./chunk-5P5BH5GE.mjs";
9
+ } from "./chunk-RI3Z6MK3.mjs";
10
10
  import {
11
- THREAD_PLUGIN
12
- } from "./chunk-IIUTBDVB.mjs";
11
+ meta
12
+ } from "./chunk-EV4JWI7L.mjs";
13
13
 
14
- // packages/plugins/plugin-thread/src/components/ChannelContainer.tsx
14
+ // src/components/ChannelContainer.tsx
15
15
  import { useSignals as _useSignals10 } from "@preact-signals/safe-react/tracking";
16
16
  import { Rx } from "@effect-rx/rx-react";
17
17
  import React10, { useCallback as useCallback2, useEffect as useEffect6, useMemo as useMemo4, useState as useState4 } from "react";
18
18
  import { useCapabilities, useCapability as useCapability4 } from "@dxos/app-framework";
19
19
  import { Context } from "@dxos/context";
20
+ import { failUndefined } from "@dxos/debug";
20
21
  import { log } from "@dxos/log";
21
22
  import { useClient } from "@dxos/react-client";
22
23
  import { fullyQualifiedId as fullyQualifiedId2, getSpace } from "@dxos/react-client/echo";
23
24
  import { useIdentity } from "@dxos/react-client/halo";
24
- import { useTranslation as useTranslation3, Input, ElevationProvider } from "@dxos/react-ui";
25
- import { ControlGroup, ControlItemInput, ControlGroupButton } from "@dxos/react-ui-form";
26
- import { ToolbarMenu, MenuProvider, createMenuAction, useMenuActions, createMenuItemGroup } from "@dxos/react-ui-menu";
25
+ import { ElevationProvider, Input, useTranslation as useTranslation3 } from "@dxos/react-ui";
26
+ import { ControlGroup, ControlGroupButton, ControlItemInput } from "@dxos/react-ui-form";
27
+ import { MenuProvider, ToolbarMenu, createMenuAction, createMenuItemGroup, useMenuActions } from "@dxos/react-ui-menu";
27
28
  import { useSoundEffect } from "@dxos/react-ui-sfx";
28
29
  import { StackItem } from "@dxos/react-ui-stack";
29
30
 
30
- // packages/plugins/plugin-thread/src/components/Call/Call.tsx
31
+ // src/components/Call/Call.tsx
31
32
  import { useSignals as _useSignals9 } from "@preact-signals/safe-react/tracking";
32
33
  import React9 from "react";
33
34
  import { useCapability as useCapability3 } from "@dxos/app-framework";
34
35
 
35
- // packages/plugins/plugin-thread/src/components/Call/Toolbar.tsx
36
+ // src/components/Media/AudioStream.tsx
36
37
  import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
37
- import React from "react";
38
- import { useAppGraph, useCapability } from "@dxos/app-framework";
39
- import { useNode, useActions } from "@dxos/plugin-graph";
40
- import { fullyQualifiedId } from "@dxos/react-client/echo";
41
- import { Icon, IconButton, Toolbar as NativeToolbar, toLocalizedString, useTranslation } from "@dxos/react-ui";
42
- import { groupHoverControlItemWithTransition, mx } from "@dxos/react-ui-theme";
43
- var Toolbar = ({ classNames, channel, participants, autoHideControls = true, onJoin, onLeave }) => {
44
- var _effect = _useSignals();
45
- try {
46
- const { t } = useTranslation(THREAD_PLUGIN);
47
- const { graph } = useAppGraph();
48
- const call = useCapability(ThreadCapabilities.CallManager);
49
- const node = useNode(graph, channel && fullyQualifiedId(channel));
50
- const actions = useActions(graph, node?.id).filter((action) => action.properties.disposition === "toolbar");
51
- const isScreensharing = call.media.screenshareTrack !== void 0;
52
- const canSharescreen = typeof navigator.mediaDevices !== "undefined" && navigator.mediaDevices.getDisplayMedia !== void 0;
53
- return /* @__PURE__ */ React.createElement("div", {
54
- className: mx("z-20 flex justify-center m-8", autoHideControls && groupHoverControlItemWithTransition)
55
- }, /* @__PURE__ */ React.createElement(NativeToolbar.Root, {
56
- classNames: [
57
- "p-2 bg-modalSurface rounded-md shadow-md",
58
- classNames
59
- ]
60
- }, /* @__PURE__ */ React.createElement(ToggleButton, {
61
- active: call.media.audioEnabled,
62
- state: {
63
- on: {
64
- icon: "ph--microphone--regular",
65
- label: t("mic off"),
66
- onClick: () => call.turnAudioOff(),
67
- classNames: "bg-callActive"
68
- },
69
- off: {
70
- icon: "ph--microphone-slash--duotone",
71
- label: t("mic on"),
72
- onClick: () => call.turnAudioOn(),
73
- classNames: [
74
- call.joined && "bg-callAlert"
75
- ]
76
- }
77
- }
78
- }), /* @__PURE__ */ React.createElement(ToggleButton, {
79
- active: call.media.videoEnabled,
80
- state: {
81
- on: {
82
- icon: "ph--video-camera--regular",
83
- label: t("camera off"),
84
- onClick: () => call.turnVideoOff()
85
- },
86
- off: {
87
- icon: "ph--video-camera-slash--duotone",
88
- label: t("camera on"),
89
- onClick: () => call.turnVideoOn()
90
- }
91
- }
92
- }), participants !== void 0 && /* @__PURE__ */ React.createElement("div", {
93
- className: "flex justify-center items-center gap-2 is-[5rem] text-xs text-subdued"
94
- }, /* @__PURE__ */ React.createElement(Icon, {
95
- icon: "ph--users--regular",
96
- size: 4
97
- }), /* @__PURE__ */ React.createElement("div", null, participants)) || /* @__PURE__ */ React.createElement(NativeToolbar.Separator, {
98
- variant: "gap"
99
- }), call.joined && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(ToggleButton, {
100
- disabled: !canSharescreen,
101
- active: isScreensharing,
102
- state: {
103
- on: {
104
- icon: "ph--monitor--regular",
105
- label: t("screenshare off"),
106
- onClick: () => call.turnScreenshareOff()
107
- },
108
- off: {
109
- icon: "ph--monitor-arrow-up--duotone",
110
- label: t("screenshare on"),
111
- onClick: () => call.turnScreenshareOn()
112
- }
113
- }
114
- }), actions.map((action) => /* @__PURE__ */ React.createElement(IconButton, {
115
- key: action.id,
116
- ...defaultButtonProps,
117
- icon: action.properties.icon,
118
- label: toLocalizedString(action.properties.label, t),
119
- classNames: action.properties.classNames,
120
- onClick: () => action.data({
121
- node
122
- })
123
- })), /* @__PURE__ */ React.createElement(ToggleButton, {
124
- active: call.raisedHand,
125
- state: {
126
- on: {
127
- icon: "ph--hand-waving--regular",
128
- label: t("lower hand"),
129
- onClick: () => call.setRaisedHand(false),
130
- classNames: [
131
- call.joined && "bg-callAlert"
132
- ]
133
- },
134
- off: {
135
- icon: "ph--hand-palm--duotone",
136
- label: t("raise hand"),
137
- onClick: () => call.setRaisedHand(true)
138
- }
139
- }
140
- })), call.joined ? /* @__PURE__ */ React.createElement(IconButton, {
141
- variant: "destructive",
142
- icon: "ph--phone-x--regular",
143
- label: t("leave call"),
144
- onClick: onLeave
145
- }) : /* @__PURE__ */ React.createElement(IconButton, {
146
- variant: "primary",
147
- icon: "ph--phone-incoming--regular",
148
- label: t("join call"),
149
- onClick: onJoin
150
- })));
151
- } finally {
152
- _effect.f();
153
- }
154
- };
155
- Toolbar.displayName = "MeetingToolbar";
156
- var defaultButtonProps = {
157
- size: 5,
158
- iconOnly: true
159
- };
160
- var ToggleButton = ({ active, state }) => {
161
- var _effect = _useSignals();
162
- try {
163
- return /* @__PURE__ */ React.createElement(IconButton, {
164
- ...defaultButtonProps,
165
- classNames: [
166
- active ? state.on.classNames ?? "bg-callActive" : state.off.classNames
167
- ],
168
- icon: active ? state.on.icon : state.off.icon,
169
- label: active ? state.on.label : state.off.label,
170
- onClick: active ? state.on.onClick : state.off.onClick
171
- });
172
- } finally {
173
- _effect.f();
174
- }
175
- };
176
-
177
- // packages/plugins/plugin-thread/src/components/Media/AudioStream.tsx
178
- import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
179
- import React2, { useEffect, useRef } from "react";
38
+ import React, { useEffect, useRef } from "react";
180
39
  var AudioStream = ({ tracks }) => {
181
- var _effect = _useSignals2();
40
+ var _effect = _useSignals();
182
41
  try {
183
42
  const mediaStreamRef = useRef(new MediaStream());
184
43
  const ref = useRef(null);
@@ -201,10 +60,10 @@ var AudioStream = ({ tracks }) => {
201
60
  });
202
61
  audio.srcObject = mediaStream;
203
62
  };
204
- return /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement("audio", {
63
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("audio", {
205
64
  ref,
206
65
  autoPlay: true
207
- }), tracks.map((track) => /* @__PURE__ */ React2.createElement(AudioTrack, {
66
+ }), tracks.map((track) => /* @__PURE__ */ React.createElement(AudioTrack, {
208
67
  key: track.id,
209
68
  track,
210
69
  mediaStream: mediaStreamRef.current,
@@ -230,12 +89,12 @@ var AudioTrack = ({ track, mediaStream, resetSrcObject }) => {
230
89
  return null;
231
90
  };
232
91
 
233
- // packages/plugins/plugin-thread/src/components/Media/VideoObject.tsx
234
- import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
235
- import React3, { forwardRef, memo, useEffect as useEffect2, useRef as useRef2 } from "react";
236
- import { mx as mx2 } from "@dxos/react-ui-theme";
92
+ // src/components/Media/VideoObject.tsx
93
+ import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
94
+ import React2, { forwardRef, memo, useEffect as useEffect2, useRef as useRef2 } from "react";
95
+ import { mx } from "@dxos/react-ui-theme";
237
96
  var VideoObject = /* @__PURE__ */ memo(/* @__PURE__ */ forwardRef(({ videoStream, classNames, flip, contain, ...rest }, ref) => {
238
- var _effect = _useSignals3();
97
+ var _effect = _useSignals2();
239
98
  try {
240
99
  const internalRef = useRef2(null);
241
100
  useEffect2(() => {
@@ -249,8 +108,8 @@ var VideoObject = /* @__PURE__ */ memo(/* @__PURE__ */ forwardRef(({ videoStream
249
108
  videoStream,
250
109
  internalRef.current
251
110
  ]);
252
- return /* @__PURE__ */ React3.createElement("video", {
253
- className: mx2("w-full aspect-video", flip && "scale-x-[-1]", contain ? "object-contain" : "object-cover", classNames),
111
+ return /* @__PURE__ */ React2.createElement("video", {
112
+ className: mx("w-full aspect-video", flip && "scale-x-[-1]", contain ? "object-contain" : "object-cover", classNames),
254
113
  ref: (v) => {
255
114
  internalRef.current = v;
256
115
  if (ref === null) {
@@ -270,29 +129,29 @@ var VideoObject = /* @__PURE__ */ memo(/* @__PURE__ */ forwardRef(({ videoStream
270
129
  }));
271
130
  VideoObject.displayName = "VideoObject";
272
131
 
273
- // packages/plugins/plugin-thread/src/components/Participant/Participant.tsx
274
- import { useSignals as _useSignals7 } from "@preact-signals/safe-react/tracking";
275
- import React7, { memo as memo2, useMemo as useMemo2 } from "react";
276
- import { useCapability as useCapability2 } from "@dxos/app-framework";
132
+ // src/components/Participant/Participant.tsx
133
+ import { useSignals as _useSignals6 } from "@preact-signals/safe-react/tracking";
134
+ import React6, { memo as memo2, useMemo as useMemo2 } from "react";
135
+ import { useCapability } from "@dxos/app-framework";
277
136
 
278
- // packages/plugins/plugin-thread/src/components/ResponsiveGrid/ResponsiveContainer.tsx
279
- import { useSignals as _useSignals4 } from "@preact-signals/safe-react/tracking";
280
- import React4 from "react";
281
- import { mx as mx3 } from "@dxos/react-ui-theme";
137
+ // src/components/ResponsiveGrid/ResponsiveContainer.tsx
138
+ import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
139
+ import React3 from "react";
140
+ import { mx as mx2 } from "@dxos/react-ui-theme";
282
141
  var ResponsiveContainer = ({ children }) => {
283
- var _effect = _useSignals4();
142
+ var _effect = _useSignals3();
284
143
  try {
285
144
  return (
286
145
  // Outer container that takes full size of parent.
287
- /* @__PURE__ */ React4.createElement("div", {
146
+ /* @__PURE__ */ React3.createElement("div", {
288
147
  role: "none",
289
148
  className: "relative flex w-full h-full"
290
- }, /* @__PURE__ */ React4.createElement("div", {
149
+ }, /* @__PURE__ */ React3.createElement("div", {
291
150
  role: "none",
292
151
  className: "absolute inset-0 flex justify-center items-center"
293
- }, /* @__PURE__ */ React4.createElement("div", {
152
+ }, /* @__PURE__ */ React3.createElement("div", {
294
153
  role: "none",
295
- className: mx3("max-h-full max-w-full w-auto h-auto aspect-video")
154
+ className: mx2("max-h-full max-w-full w-auto h-auto aspect-video")
296
155
  }, children)))
297
156
  );
298
157
  } finally {
@@ -300,20 +159,20 @@ var ResponsiveContainer = ({ children }) => {
300
159
  }
301
160
  };
302
161
 
303
- // packages/plugins/plugin-thread/src/components/ResponsiveGrid/ResponsiveGrid.tsx
304
- import { useSignals as _useSignals5 } from "@preact-signals/safe-react/tracking";
305
- import React5, { useLayoutEffect, useState, useEffect as useEffect3, useMemo, useCallback } from "react";
162
+ // src/components/ResponsiveGrid/ResponsiveGrid.tsx
163
+ import { useSignals as _useSignals4 } from "@preact-signals/safe-react/tracking";
164
+ import React4, { useCallback, useEffect as useEffect3, useLayoutEffect, useMemo, useState } from "react";
306
165
  import { useResizeDetector } from "react-resize-detector";
307
166
  import { invariant } from "@dxos/invariant";
308
- import { mx as mx4 } from "@dxos/react-ui-theme";
309
- var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-thread/src/components/ResponsiveGrid/ResponsiveGrid.tsx";
167
+ import { mx as mx3 } from "@dxos/react-ui-theme";
168
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/components/ResponsiveGrid/ResponsiveGrid.tsx";
310
169
  var ASPECT_RATIO = 16 / 9;
311
170
  var MIN_GALLERY_HEIGHT = 250;
312
171
  var DEFAULT_GAP = 8;
313
172
  var maxImageSize = "w-[2560px] h-[1440px]";
314
173
  var defaultGetId = (item) => item.id;
315
174
  var ResponsiveGrid = ({ classNames, Cell, gap = DEFAULT_GAP, getId: getId2 = defaultGetId, items, pinned, autoHideGallery = false, debug, onPinnedChange }) => {
316
- var _effect = _useSignals5();
175
+ var _effect = _useSignals4();
317
176
  try {
318
177
  const { width: containerWidth = 0, height: containerHeight = 0, ref: containerRef } = useResizeDetector({
319
178
  refreshRate: 100
@@ -400,47 +259,47 @@ var ResponsiveGrid = ({ classNames, Cell, gap = DEFAULT_GAP, getId: getId2 = def
400
259
  pinned,
401
260
  onPinnedChange
402
261
  ]);
403
- return /* @__PURE__ */ React5.createElement("div", {
262
+ return /* @__PURE__ */ React4.createElement("div", {
404
263
  ref: containerRef,
405
- className: mx4("relative w-full h-full", classNames)
406
- }, /* @__PURE__ */ React5.createElement("div", {
264
+ className: mx3("relative w-full h-full", classNames)
265
+ }, /* @__PURE__ */ React4.createElement("div", {
407
266
  className: "absolute inset-0 flex flex-col grow gap-2"
408
- }, pinnedItem && /* @__PURE__ */ React5.createElement("div", {
409
- className: mx4("flex grow-[2] shrink overflow-hidden justify-center items-center", hideGallery && "h-full"),
267
+ }, pinnedItem && /* @__PURE__ */ React4.createElement("div", {
268
+ className: mx3("flex grow-[2] shrink overflow-hidden justify-center items-center", hideGallery && "h-full"),
410
269
  style: hideGallery ? {} : {
411
270
  height: dividerHeight
412
271
  }
413
- }, /* @__PURE__ */ React5.createElement(SoloItem, {
272
+ }, /* @__PURE__ */ React4.createElement(SoloItem, {
414
273
  id: getId2(pinnedItem),
415
274
  debug
416
- })), !hideGallery && /* @__PURE__ */ React5.createElement("div", {
275
+ })), !hideGallery && /* @__PURE__ */ React4.createElement("div", {
417
276
  ref: gridContainerRef,
418
277
  className: "flex grow-[1] overflow-hidden justify-center items-center",
419
278
  style: hideGallery ? {} : {
420
279
  minHeight: MIN_GALLERY_HEIGHT
421
280
  }
422
- }, mainItems.length === 1 && /* @__PURE__ */ React5.createElement("div", {
281
+ }, mainItems.length === 1 && /* @__PURE__ */ React4.createElement("div", {
423
282
  style: {
424
283
  width: cellWidth
425
284
  },
426
285
  className: "flex h-full"
427
- }, /* @__PURE__ */ React5.createElement(SoloItem, {
286
+ }, /* @__PURE__ */ React4.createElement(SoloItem, {
428
287
  id: getId2(mainItems[0]),
429
288
  debug
430
- })), mainItems.length > 1 && columns > 0 && /* @__PURE__ */ React5.createElement("div", {
289
+ })), mainItems.length > 1 && columns > 0 && /* @__PURE__ */ React4.createElement("div", {
431
290
  role: "grid",
432
291
  style: {
433
292
  display: "grid",
434
293
  gridTemplateColumns: `repeat(${columns}, ${cellWidth}px)`,
435
294
  gap: `${gap}px`
436
295
  }
437
- }, mainItems.map((item) => /* @__PURE__ */ React5.createElement("div", {
296
+ }, mainItems.map((item) => /* @__PURE__ */ React4.createElement("div", {
438
297
  key: getId2(item),
439
298
  "data-grid-item": getId2(item),
440
- className: mx4("aspect-video max-h-full max-w-full w-auto h-auto", debug && "border border-primary-500")
441
- }))))), /* @__PURE__ */ React5.createElement("div", {
442
- className: mx4(debug && "opacity-10")
443
- }, bounds.map(([item, bounds2]) => /* @__PURE__ */ React5.createElement(Cell, {
299
+ className: mx3("aspect-video max-h-full max-w-full w-auto h-auto", debug && "border border-primary-500")
300
+ }))))), /* @__PURE__ */ React4.createElement("div", {
301
+ className: mx3(debug && "opacity-10")
302
+ }, bounds.map(([item, bounds2]) => /* @__PURE__ */ React4.createElement(Cell, {
444
303
  key: getId2(item),
445
304
  classNames: "absolute transition-all duration-500",
446
305
  item,
@@ -453,14 +312,14 @@ var ResponsiveGrid = ({ classNames, Cell, gap = DEFAULT_GAP, getId: getId2 = def
453
312
  }
454
313
  };
455
314
  var SoloItem = ({ debug, id }) => {
456
- var _effect = _useSignals5();
315
+ var _effect = _useSignals4();
457
316
  try {
458
- return /* @__PURE__ */ React5.createElement(ResponsiveContainer, null, /* @__PURE__ */ React5.createElement("div", {
317
+ return /* @__PURE__ */ React4.createElement(ResponsiveContainer, null, /* @__PURE__ */ React4.createElement("div", {
459
318
  "data-grid-item": id,
460
- className: mx4("aspect-video overflow-hidden", debug && "z-20 border-2 border-primary-500")
461
- }, /* @__PURE__ */ React5.createElement("img", {
319
+ className: mx3("aspect-video overflow-hidden", debug && "z-20 border-2 border-primary-500")
320
+ }, /* @__PURE__ */ React4.createElement("img", {
462
321
  alt: "placeholder video",
463
- className: mx4("opacity-0", maxImageSize)
322
+ className: mx3("opacity-0", maxImageSize)
464
323
  })));
465
324
  } finally {
466
325
  _effect.f();
@@ -529,16 +388,16 @@ var fitAspectRatio = (outerWidth, outerHeight, aspectRatio) => {
529
388
  };
530
389
  };
531
390
 
532
- // packages/plugins/plugin-thread/src/components/ResponsiveGrid/ResponsiveGridItem.tsx
533
- import { useSignals as _useSignals6 } from "@preact-signals/safe-react/tracking";
534
- import React6, { useEffect as useEffect4, useState as useState2 } from "react";
535
- import { Icon as Icon2, IconButton as IconButton2, useTranslation as useTranslation2 } from "@dxos/react-ui";
391
+ // src/components/ResponsiveGrid/ResponsiveGridItem.tsx
392
+ import { useSignals as _useSignals5 } from "@preact-signals/safe-react/tracking";
393
+ import React5, { useEffect as useEffect4, useState as useState2 } from "react";
394
+ import { Icon, IconButton, useTranslation } from "@dxos/react-ui";
536
395
  import { Waveform } from "@dxos/react-ui-sfx";
537
- import { groupHoverControlItemWithTransition as groupHoverControlItemWithTransition2, mx as mx5 } from "@dxos/react-ui-theme";
396
+ import { groupHoverControlItemWithTransition, mx as mx4 } from "@dxos/react-ui-theme";
538
397
  var ResponsiveGridItem = ({ children, classNames, item, style, name, self, pinned, screenshare, video, mute, wave, speaking, onClick }) => {
539
- var _effect = _useSignals6();
398
+ var _effect = _useSignals5();
540
399
  try {
541
- const { t } = useTranslation2(THREAD_PLUGIN);
400
+ const { t } = useTranslation(meta.id);
542
401
  const iconProps = {
543
402
  wave: {
544
403
  icon: "ph--hand-waving--duotone",
@@ -564,32 +423,32 @@ var ResponsiveGridItem = ({ children, classNames, item, style, name, self, pinne
564
423
  }, [
565
424
  speaking
566
425
  ]);
567
- return /* @__PURE__ */ React6.createElement("div", {
568
- className: mx5("relative w-full h-full group", "rounded-md outline outline-2 outline-neutral-900 transition-[outline-color] duration-500", speakingIndicator ? "outline-green-500" : !video && "outline-separator", classNames),
426
+ return /* @__PURE__ */ React5.createElement("div", {
427
+ className: mx4("relative w-full h-full group", "rounded-md outline outline-2 outline-neutral-900 transition-[outline-color] duration-500", speakingIndicator ? "outline-green-500" : !video && "outline-separator", classNames),
569
428
  style
570
- }, children, onClick && /* @__PURE__ */ React6.createElement("div", {
429
+ }, children, onClick && /* @__PURE__ */ React5.createElement("div", {
571
430
  className: "z-10 absolute top-1 right-1 flex"
572
- }, /* @__PURE__ */ React6.createElement(IconButton2, {
573
- classNames: mx5("p-1 min-bs-1 rounded", groupHoverControlItemWithTransition2),
431
+ }, /* @__PURE__ */ React5.createElement(IconButton, {
432
+ classNames: mx4("p-1 min-bs-1 rounded", groupHoverControlItemWithTransition),
574
433
  iconOnly: true,
575
434
  icon: pinned ? "ph--x--regular" : "ph--arrows-out--regular",
576
435
  size: pinned ? 5 : 4,
577
436
  label: pinned ? t("icon unpin") : t("icon pin"),
578
437
  onClick: () => onClick?.(item)
579
- })), name && /* @__PURE__ */ React6.createElement("div", {
438
+ })), name && /* @__PURE__ */ React5.createElement("div", {
580
439
  className: "z-10 absolute bottom-1 left-8 right-1 flex justify-end gap-1 items-center"
581
- }, screenshare && /* @__PURE__ */ React6.createElement(Icon2, {
440
+ }, screenshare && /* @__PURE__ */ React5.createElement(Icon, {
582
441
  icon: "ph--broadcast--regular",
583
442
  size: pinned ? 5 : 4
584
- }), /* @__PURE__ */ React6.createElement("div", {
585
- className: mx5("bg-neutral-800 text-neutral-100 py-0.5 truncate rounded", pinned ? "px-2" : "px-1 text-xs")
586
- }, name)), /* @__PURE__ */ React6.createElement("div", {
443
+ }), /* @__PURE__ */ React5.createElement("div", {
444
+ className: mx4("bg-neutral-800 text-neutral-100 py-0.5 truncate rounded", pinned ? "px-2" : "px-1 text-xs")
445
+ }, name)), /* @__PURE__ */ React5.createElement("div", {
587
446
  className: "z-10 absolute bottom-1 left-1 flex"
588
- }, speaking && /* @__PURE__ */ React6.createElement(Waveform, {
447
+ }, speaking && /* @__PURE__ */ React5.createElement(Waveform, {
589
448
  active: true,
590
449
  size: pinned ? 5 : 4
591
- }) || props && /* @__PURE__ */ React6.createElement(IconButton2, {
592
- classNames: mx5("p-1 min-bs-1 rounded", props?.classNames),
450
+ }) || props && /* @__PURE__ */ React5.createElement(IconButton, {
451
+ classNames: mx4("p-1 min-bs-1 rounded", props?.classNames),
593
452
  icon: props?.icon,
594
453
  label: props?.label,
595
454
  size: pinned ? 5 : 4,
@@ -600,20 +459,22 @@ var ResponsiveGridItem = ({ children, classNames, item, style, name, self, pinne
600
459
  }
601
460
  };
602
461
 
603
- // packages/plugins/plugin-thread/src/components/Participant/Participant.tsx
462
+ // src/components/Participant/Participant.tsx
604
463
  var SCREENSHARE_SUFFIX = "_screenshare";
605
464
  var Participant = /* @__PURE__ */ memo2(({ item: user, debug, ...props }) => {
606
- var _effect = _useSignals7();
465
+ var _effect = _useSignals6();
607
466
  try {
608
- const call = useCapability2(ThreadCapabilities.CallManager);
467
+ const call = useCapability(ThreadCapabilities.CallManager);
609
468
  const isSelf = call.self.id !== void 0 && user.id !== void 0 && user.id.startsWith(call.self.id);
610
469
  const isScreenshare = user.id?.endsWith(SCREENSHARE_SUFFIX);
611
- const pulledVideoStream = call.getVideoStream(isScreenshare || !isSelf ? user.tracks?.video : void 0);
470
+ const pulledVideoStream = !isSelf && isScreenshare && user.tracks?.screenshareEnabled ? call.getVideoStream(user.tracks?.screenshare) : !isSelf && !isScreenshare && user.tracks?.videoEnabled ? call.getVideoStream(user.tracks?.video) : void 0;
612
471
  const videoStream = useMemo2(() => {
613
- if (isSelf && !isScreenshare) {
614
- return call.media.videoStream;
615
- } else if (isSelf && isScreenshare) {
616
- return call.media.screenshareVideoStream;
472
+ if (isSelf) {
473
+ if (isScreenshare) {
474
+ return call.media.screenshareVideoStream;
475
+ } else if (!isScreenshare) {
476
+ return call.media.videoStream;
477
+ }
617
478
  } else if (!isSelf) {
618
479
  return pulledVideoStream;
619
480
  }
@@ -624,7 +485,7 @@ var Participant = /* @__PURE__ */ memo2(({ item: user, debug, ...props }) => {
624
485
  call.media.screenshareVideoStream,
625
486
  pulledVideoStream
626
487
  ]);
627
- return /* @__PURE__ */ React7.createElement(ResponsiveGridItem, {
488
+ return /* @__PURE__ */ React6.createElement(ResponsiveGridItem, {
628
489
  ...props,
629
490
  item: user,
630
491
  name: user.name,
@@ -635,7 +496,7 @@ var Participant = /* @__PURE__ */ memo2(({ item: user, debug, ...props }) => {
635
496
  wave: user.raisedHand,
636
497
  speaking: user.speaking,
637
498
  debug
638
- }, /* @__PURE__ */ React7.createElement(VideoObject, {
499
+ }, /* @__PURE__ */ React6.createElement(VideoObject, {
639
500
  videoStream,
640
501
  flip: isSelf && !isScreenshare,
641
502
  contain: !!isScreenshare,
@@ -647,12 +508,12 @@ var Participant = /* @__PURE__ */ memo2(({ item: user, debug, ...props }) => {
647
508
  });
648
509
  Participant.displayName = "Participant";
649
510
 
650
- // packages/plugins/plugin-thread/src/components/Participant/ParticipantGrid.tsx
651
- import { useSignals as _useSignals8 } from "@preact-signals/safe-react/tracking";
652
- import React8, { useEffect as useEffect5, useMemo as useMemo3, useState as useState3 } from "react";
511
+ // src/components/Participant/ParticipantGrid.tsx
512
+ import { useSignals as _useSignals7 } from "@preact-signals/safe-react/tracking";
513
+ import React7, { useEffect as useEffect5, useMemo as useMemo3, useState as useState3 } from "react";
653
514
  var getId = (user) => user.id;
654
515
  var ParticipantGrid = ({ classNames, self, users, fullscreen, debug }) => {
655
- var _effect = _useSignals8();
516
+ var _effect = _useSignals7();
656
517
  try {
657
518
  const [pinned, setPinned] = useState3();
658
519
  const allUsers = useMemo3(() => {
@@ -706,7 +567,7 @@ var ParticipantGrid = ({ classNames, self, users, fullscreen, debug }) => {
706
567
  return 0;
707
568
  }
708
569
  });
709
- return /* @__PURE__ */ React8.createElement(ResponsiveGrid, {
570
+ return /* @__PURE__ */ React7.createElement(ResponsiveGrid, {
710
571
  classNames,
711
572
  Cell: Participant,
712
573
  debug,
@@ -721,7 +582,149 @@ var ParticipantGrid = ({ classNames, self, users, fullscreen, debug }) => {
721
582
  }
722
583
  };
723
584
 
724
- // packages/plugins/plugin-thread/src/components/Call/Call.tsx
585
+ // src/components/Call/Toolbar.tsx
586
+ import { useSignals as _useSignals8 } from "@preact-signals/safe-react/tracking";
587
+ import React8 from "react";
588
+ import { useAppGraph, useCapability as useCapability2 } from "@dxos/app-framework";
589
+ import { useActions, useNode } from "@dxos/plugin-graph";
590
+ import { fullyQualifiedId } from "@dxos/react-client/echo";
591
+ import { Icon as Icon2, IconButton as IconButton2, Toolbar as NaturalToolbar, toLocalizedString, useTranslation as useTranslation2 } from "@dxos/react-ui";
592
+ import { groupHoverControlItemWithTransition as groupHoverControlItemWithTransition2, mx as mx5 } from "@dxos/react-ui-theme";
593
+ var Toolbar = ({ classNames, channel, participants, autoHideControls = true, onJoin, onLeave }) => {
594
+ var _effect = _useSignals8();
595
+ try {
596
+ const { t } = useTranslation2(meta.id);
597
+ const { graph } = useAppGraph();
598
+ const call = useCapability2(ThreadCapabilities.CallManager);
599
+ const node = useNode(graph, channel && fullyQualifiedId(channel));
600
+ const actions = useActions(graph, node?.id).filter((action) => action.properties.disposition === "toolbar");
601
+ const isScreensharing = call.media.screenshareTrack !== void 0;
602
+ const canSharescreen = typeof navigator.mediaDevices !== "undefined" && navigator.mediaDevices.getDisplayMedia !== void 0;
603
+ return /* @__PURE__ */ React8.createElement("div", {
604
+ className: mx5("z-20 flex justify-center m-8", autoHideControls && groupHoverControlItemWithTransition2)
605
+ }, /* @__PURE__ */ React8.createElement(NaturalToolbar.Root, {
606
+ classNames: [
607
+ "p-2 bg-modalSurface rounded-md shadow-md",
608
+ classNames
609
+ ]
610
+ }, /* @__PURE__ */ React8.createElement(ToggleButton, {
611
+ active: call.media.audioEnabled,
612
+ state: {
613
+ on: {
614
+ icon: "ph--microphone--regular",
615
+ label: t("mic off"),
616
+ onClick: () => call.turnAudioOff(),
617
+ classNames: "bg-callActive"
618
+ },
619
+ off: {
620
+ icon: "ph--microphone-slash--duotone",
621
+ label: t("mic on"),
622
+ onClick: () => call.turnAudioOn(),
623
+ classNames: [
624
+ call.joined && "bg-callAlert"
625
+ ]
626
+ }
627
+ }
628
+ }), /* @__PURE__ */ React8.createElement(ToggleButton, {
629
+ active: call.media.videoEnabled,
630
+ state: {
631
+ on: {
632
+ icon: "ph--video-camera--regular",
633
+ label: t("camera off"),
634
+ onClick: () => call.turnVideoOff()
635
+ },
636
+ off: {
637
+ icon: "ph--video-camera-slash--duotone",
638
+ label: t("camera on"),
639
+ onClick: () => call.turnVideoOn()
640
+ }
641
+ }
642
+ }), participants !== void 0 && /* @__PURE__ */ React8.createElement("div", {
643
+ className: "flex justify-center items-center gap-2 is-[5rem] text-xs text-subdued"
644
+ }, /* @__PURE__ */ React8.createElement(Icon2, {
645
+ icon: "ph--users--regular",
646
+ size: 4
647
+ }), /* @__PURE__ */ React8.createElement("div", null, participants)) || /* @__PURE__ */ React8.createElement(NaturalToolbar.Separator, {
648
+ variant: "gap"
649
+ }), call.joined && /* @__PURE__ */ React8.createElement(React8.Fragment, null, /* @__PURE__ */ React8.createElement(ToggleButton, {
650
+ disabled: !canSharescreen,
651
+ active: isScreensharing,
652
+ state: {
653
+ on: {
654
+ icon: "ph--monitor--regular",
655
+ label: t("screenshare off"),
656
+ onClick: () => call.turnScreenshareOff()
657
+ },
658
+ off: {
659
+ icon: "ph--monitor-arrow-up--duotone",
660
+ label: t("screenshare on"),
661
+ onClick: () => call.turnScreenshareOn()
662
+ }
663
+ }
664
+ }), actions.map((action) => /* @__PURE__ */ React8.createElement(IconButton2, {
665
+ key: action.id,
666
+ ...defaultButtonProps,
667
+ icon: action.properties.icon,
668
+ label: toLocalizedString(action.properties.label, t),
669
+ classNames: action.properties.classNames,
670
+ onClick: () => action.data({
671
+ node
672
+ })
673
+ })), /* @__PURE__ */ React8.createElement(ToggleButton, {
674
+ active: call.raisedHand,
675
+ state: {
676
+ on: {
677
+ icon: "ph--hand-waving--regular",
678
+ label: t("lower hand"),
679
+ onClick: () => call.setRaisedHand(false),
680
+ classNames: [
681
+ call.joined && "bg-callAlert"
682
+ ]
683
+ },
684
+ off: {
685
+ icon: "ph--hand-palm--duotone",
686
+ label: t("raise hand"),
687
+ onClick: () => call.setRaisedHand(true)
688
+ }
689
+ }
690
+ })), call.joined ? /* @__PURE__ */ React8.createElement(IconButton2, {
691
+ variant: "destructive",
692
+ icon: "ph--phone-x--regular",
693
+ label: t("leave call"),
694
+ onClick: onLeave
695
+ }) : /* @__PURE__ */ React8.createElement(IconButton2, {
696
+ variant: "primary",
697
+ icon: "ph--phone-incoming--regular",
698
+ label: t("join call"),
699
+ onClick: onJoin
700
+ })));
701
+ } finally {
702
+ _effect.f();
703
+ }
704
+ };
705
+ Toolbar.displayName = "MeetingToolbar";
706
+ var defaultButtonProps = {
707
+ size: 5,
708
+ iconOnly: true
709
+ };
710
+ var ToggleButton = ({ active, state }) => {
711
+ var _effect = _useSignals8();
712
+ try {
713
+ return /* @__PURE__ */ React8.createElement(IconButton2, {
714
+ ...defaultButtonProps,
715
+ classNames: [
716
+ active ? state.on.classNames ?? "bg-callActive" : state.off.classNames
717
+ ],
718
+ icon: active ? state.on.icon : state.off.icon,
719
+ label: active ? state.on.label : state.off.label,
720
+ onClick: active ? state.on.onClick : state.off.onClick
721
+ });
722
+ } finally {
723
+ _effect.f();
724
+ }
725
+ };
726
+
727
+ // src/components/Call/Call.tsx
725
728
  var CallRoot = ({ children }) => {
726
729
  var _effect = _useSignals9();
727
730
  try {
@@ -738,7 +741,7 @@ var CallAudio = () => {
738
741
  try {
739
742
  const call = useCapability3(ThreadCapabilities.CallManager);
740
743
  return /* @__PURE__ */ React9.createElement(AudioStream, {
741
- tracks: call.pulledAudioTracks
744
+ tracks: call.audioTracksToPlay
742
745
  });
743
746
  } finally {
744
747
  _effect.f();
@@ -784,14 +787,14 @@ var Call = {
784
787
  Toolbar: CallToolbar
785
788
  };
786
789
 
787
- // packages/plugins/plugin-thread/src/components/ChannelContainer.tsx
788
- var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-thread/src/components/ChannelContainer.tsx";
790
+ // src/components/ChannelContainer.tsx
791
+ var __dxlog_file2 = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/components/ChannelContainer.tsx";
789
792
  var ChannelContainer = ({ channel, roomId: _roomId, role, fullscreen }) => {
790
793
  var _effect = _useSignals10();
791
794
  try {
792
795
  const space = getSpace(channel);
793
796
  const callManager = useCapability4(ThreadCapabilities.CallManager);
794
- const roomId = channel ? fullyQualifiedId2(channel) : _roomId;
797
+ const roomId = _roomId ?? (channel ? fullyQualifiedId2(channel) : failUndefined());
795
798
  const identity = useIdentity();
796
799
  const isNamed = !!identity?.profile?.displayName;
797
800
  const joinSound = useSoundEffect("JoinCall");
@@ -800,7 +803,7 @@ var ChannelContainer = ({ channel, roomId: _roomId, role, fullscreen }) => {
800
803
  useEffect6(() => {
801
804
  const ctx = new Context(void 0, {
802
805
  F: __dxlog_file2,
803
- L: 47
806
+ L: 49
804
807
  });
805
808
  callManager.left.on(ctx, (roomId2) => {
806
809
  extensions.forEach((extension) => {
@@ -842,7 +845,7 @@ var ChannelContainer = ({ channel, roomId: _roomId, role, fullscreen }) => {
842
845
  } catch (err) {
843
846
  log.catch(err, void 0, {
844
847
  F: __dxlog_file2,
845
- L: 91,
848
+ L: 93,
846
849
  S: void 0,
847
850
  C: (f, a) => f(...a)
848
851
  });
@@ -858,7 +861,7 @@ var ChannelContainer = ({ channel, roomId: _roomId, role, fullscreen }) => {
858
861
  } catch (err) {
859
862
  log.catch(err, void 0, {
860
863
  F: __dxlog_file2,
861
- L: 103,
864
+ L: 105,
862
865
  S: void 0,
863
866
  C: (f, a) => f(...a)
864
867
  });
@@ -897,7 +900,7 @@ var ChannelContainer_default = ChannelContainer;
897
900
  var DisplayNameMissing = () => {
898
901
  var _effect = _useSignals10();
899
902
  try {
900
- const { t } = useTranslation3(THREAD_PLUGIN);
903
+ const { t } = useTranslation3(meta.id);
901
904
  const client = useClient();
902
905
  const [displayName, setDisplayName] = useState4("");
903
906
  const handleChange = useCallback2((event) => setDisplayName(event.target.value), []);
@@ -933,7 +936,7 @@ var useChannelToolbarActions = (onJoinCall) => {
933
936
  label: [
934
937
  "channel toolbar title",
935
938
  {
936
- ns: THREAD_PLUGIN
939
+ ns: meta.id
937
940
  }
938
941
  ]
939
942
  }),
@@ -941,7 +944,7 @@ var useChannelToolbarActions = (onJoinCall) => {
941
944
  label: [
942
945
  "start video call label",
943
946
  {
944
- ns: THREAD_PLUGIN
947
+ ns: meta.id
945
948
  }
946
949
  ],
947
950
  icon: "ph--video-camera--regular",
@@ -980,4 +983,4 @@ export {
980
983
  ChannelContainer,
981
984
  ChannelContainer_default
982
985
  };
983
- //# sourceMappingURL=chunk-XZKBN3NS.mjs.map
986
+ //# sourceMappingURL=chunk-7W7QK5ZP.mjs.map