@dxos/plugin-thread 0.8.4-main.67995b8 → 0.8.4-main.c4373fc

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 (283) hide show
  1. package/dist/lib/browser/ChannelContainer-BGDGZHV4.mjs +16 -0
  2. package/dist/lib/browser/ChatContainer-75KJZ4XR.mjs +15 -0
  3. package/dist/lib/browser/{app-graph-builder-N7BE5TYW.mjs → app-graph-builder-ODKIAXR7.mjs} +19 -19
  4. package/dist/lib/browser/app-graph-builder-ODKIAXR7.mjs.map +7 -0
  5. package/dist/lib/browser/{call-manager-NIPDYUVD.mjs → call-manager-BCKLI4QD.mjs} +7 -7
  6. package/dist/lib/browser/call-manager-BCKLI4QD.mjs.map +7 -0
  7. package/dist/lib/browser/chunk-2MUYQOQE.mjs +23 -0
  8. package/dist/lib/browser/{chunk-FR7KJPNY.mjs.map → chunk-2MUYQOQE.mjs.map} +3 -3
  9. package/dist/lib/browser/chunk-B7YQ7QR2.mjs +376 -0
  10. package/dist/lib/browser/chunk-B7YQ7QR2.mjs.map +7 -0
  11. package/dist/lib/browser/{chunk-KWPRNHTK.mjs → chunk-CMCVHULC.mjs} +235 -233
  12. package/dist/lib/browser/chunk-CMCVHULC.mjs.map +7 -0
  13. package/dist/lib/browser/{chunk-GERVMFQW.mjs → chunk-CP7E2HRE.mjs} +2 -2
  14. package/dist/lib/browser/chunk-CP7E2HRE.mjs.map +7 -0
  15. package/dist/lib/browser/{chunk-ERWASUQK.mjs → chunk-HDEQRBOC.mjs} +38 -6
  16. package/dist/lib/{node-esm/chunk-25ABSYP2.mjs.map → browser/chunk-HDEQRBOC.mjs.map} +4 -4
  17. package/dist/lib/browser/chunk-L326LSNS.mjs +18 -0
  18. package/dist/lib/browser/chunk-L326LSNS.mjs.map +7 -0
  19. package/dist/lib/browser/{chunk-EV4JWI7L.mjs → chunk-T4KJ5JR4.mjs} +5 -7
  20. package/dist/lib/browser/chunk-T4KJ5JR4.mjs.map +7 -0
  21. package/dist/lib/browser/chunk-VJMKS4CZ.mjs +619 -0
  22. package/dist/lib/browser/chunk-VJMKS4CZ.mjs.map +7 -0
  23. package/dist/lib/browser/{chunk-GCLD5ESP.mjs → chunk-VTYX3SIM.mjs} +26 -16
  24. package/dist/lib/browser/chunk-VTYX3SIM.mjs.map +7 -0
  25. package/dist/lib/browser/{chunk-6NSMBO3B.mjs → chunk-XYUJXHYV.mjs} +55 -5
  26. package/dist/lib/browser/chunk-XYUJXHYV.mjs.map +7 -0
  27. package/dist/lib/browser/{chunk-ZE7KWN36.mjs → chunk-ZCEU5K23.mjs} +461 -240
  28. package/dist/lib/browser/chunk-ZCEU5K23.mjs.map +7 -0
  29. package/dist/lib/browser/index.mjs +23 -14
  30. package/dist/lib/browser/index.mjs.map +3 -3
  31. package/dist/lib/browser/{intent-resolver-JFGLZ6VI.mjs → intent-resolver-VOQD3TQ2.mjs} +75 -17
  32. package/dist/lib/browser/intent-resolver-VOQD3TQ2.mjs.map +7 -0
  33. package/dist/lib/browser/{markdown-M3FMR7OD.mjs → markdown-R6MGRIA6.mjs} +7 -7
  34. package/dist/lib/browser/markdown-R6MGRIA6.mjs.map +7 -0
  35. package/dist/lib/browser/meta.json +1 -1
  36. package/dist/lib/browser/react-root-UMSBTN6H.mjs +28 -0
  37. package/dist/lib/browser/react-root-UMSBTN6H.mjs.map +7 -0
  38. package/dist/lib/browser/{react-surface-XWS6GIZY.mjs → react-surface-SXMQEWKE.mjs} +22 -22
  39. package/dist/lib/browser/react-surface-SXMQEWKE.mjs.map +7 -0
  40. package/dist/lib/browser/{settings-E32MTL7A.mjs → settings-TCNF54PN.mjs} +5 -5
  41. package/dist/lib/browser/{settings-E32MTL7A.mjs.map → settings-TCNF54PN.mjs.map} +1 -1
  42. package/dist/lib/browser/{state-H6CYONWE.mjs → state-ZQ4IPOJT.mjs} +5 -5
  43. package/dist/lib/browser/state-ZQ4IPOJT.mjs.map +7 -0
  44. package/dist/lib/browser/toolkit-JF4B4QIO.mjs +84 -0
  45. package/dist/lib/browser/toolkit-JF4B4QIO.mjs.map +7 -0
  46. package/dist/lib/browser/types/index.mjs +2 -2
  47. package/dist/lib/node-esm/ChannelContainer-OXC6BTU7.mjs +17 -0
  48. package/dist/lib/node-esm/{ChatContainer-IQUWU426.mjs → ChatContainer-SH6LTFQL.mjs} +6 -6
  49. package/dist/lib/node-esm/{app-graph-builder-VCW76Z6V.mjs → app-graph-builder-DMPT3MY6.mjs} +19 -19
  50. package/dist/lib/node-esm/app-graph-builder-DMPT3MY6.mjs.map +7 -0
  51. package/dist/lib/node-esm/{call-manager-D6O5ZJJ4.mjs → call-manager-Q7RY2YP4.mjs} +7 -7
  52. package/dist/lib/node-esm/call-manager-Q7RY2YP4.mjs.map +7 -0
  53. package/dist/lib/node-esm/{chunk-C3XFMUAY.mjs → chunk-2KZ4ODHU.mjs} +235 -233
  54. package/dist/lib/node-esm/chunk-2KZ4ODHU.mjs.map +7 -0
  55. package/dist/lib/node-esm/{chunk-25ABSYP2.mjs → chunk-2MMJF7DW.mjs} +38 -6
  56. package/dist/lib/node-esm/chunk-2MMJF7DW.mjs.map +7 -0
  57. package/dist/lib/node-esm/{chunk-OU5BYIDO.mjs → chunk-2V3WSLUZ.mjs} +55 -5
  58. package/dist/lib/node-esm/chunk-2V3WSLUZ.mjs.map +7 -0
  59. package/dist/lib/node-esm/{chunk-57XR3LEF.mjs → chunk-ABUFOZVX.mjs} +2 -2
  60. package/dist/lib/node-esm/chunk-ABUFOZVX.mjs.map +7 -0
  61. package/dist/lib/node-esm/{chunk-TDFHTCZZ.mjs → chunk-BAMZXJS4.mjs} +26 -16
  62. package/dist/lib/node-esm/chunk-BAMZXJS4.mjs.map +7 -0
  63. package/dist/lib/node-esm/chunk-BTGKI5IK.mjs +377 -0
  64. package/dist/lib/node-esm/chunk-BTGKI5IK.mjs.map +7 -0
  65. package/dist/lib/node-esm/chunk-GZ4WL2IS.mjs +25 -0
  66. package/dist/lib/node-esm/{chunk-2CXOK2TD.mjs.map → chunk-GZ4WL2IS.mjs.map} +3 -3
  67. package/dist/lib/node-esm/chunk-LCHTNRK7.mjs +19 -0
  68. package/dist/lib/node-esm/chunk-LCHTNRK7.mjs.map +7 -0
  69. package/dist/lib/node-esm/chunk-NHSIAEDW.mjs +620 -0
  70. package/dist/lib/node-esm/chunk-NHSIAEDW.mjs.map +7 -0
  71. package/dist/lib/node-esm/{chunk-GRLRWTRU.mjs → chunk-OBVAURUU.mjs} +5 -7
  72. package/dist/lib/node-esm/chunk-OBVAURUU.mjs.map +7 -0
  73. package/dist/lib/node-esm/{chunk-IHDNQLLR.mjs → chunk-TIPIOH2J.mjs} +461 -240
  74. package/dist/lib/node-esm/chunk-TIPIOH2J.mjs.map +7 -0
  75. package/dist/lib/node-esm/index.mjs +23 -14
  76. package/dist/lib/node-esm/index.mjs.map +3 -3
  77. package/dist/lib/node-esm/{intent-resolver-OXGNQ44Y.mjs → intent-resolver-AKVH66PH.mjs} +75 -17
  78. package/dist/lib/node-esm/intent-resolver-AKVH66PH.mjs.map +7 -0
  79. package/dist/lib/node-esm/{markdown-INKTE4MH.mjs → markdown-MYGTDXT6.mjs} +7 -7
  80. package/dist/lib/node-esm/markdown-MYGTDXT6.mjs.map +7 -0
  81. package/dist/lib/node-esm/meta.json +1 -1
  82. package/dist/lib/node-esm/react-root-W6AVTL5M.mjs +29 -0
  83. package/dist/lib/node-esm/react-root-W6AVTL5M.mjs.map +7 -0
  84. package/dist/lib/node-esm/{react-surface-MJ33KPYE.mjs → react-surface-NLSZJGMO.mjs} +22 -22
  85. package/dist/lib/node-esm/react-surface-NLSZJGMO.mjs.map +7 -0
  86. package/dist/lib/node-esm/{settings-SJ24YG7M.mjs → settings-ZQHGVFBY.mjs} +5 -5
  87. package/dist/lib/node-esm/{settings-SJ24YG7M.mjs.map → settings-ZQHGVFBY.mjs.map} +1 -1
  88. package/dist/lib/node-esm/{state-D7WNDT3N.mjs → state-FSLLJ5TZ.mjs} +5 -5
  89. package/dist/lib/node-esm/state-FSLLJ5TZ.mjs.map +7 -0
  90. package/dist/lib/node-esm/toolkit-DHPKJITO.mjs +85 -0
  91. package/dist/lib/node-esm/toolkit-DHPKJITO.mjs.map +7 -0
  92. package/dist/lib/node-esm/types/index.mjs +2 -2
  93. package/dist/types/src/ThreadPlugin.d.ts +1 -1
  94. package/dist/types/src/ThreadPlugin.d.ts.map +1 -1
  95. package/dist/types/src/calls/call-manager.d.ts.map +1 -1
  96. package/dist/types/src/calls/call-swarm-synchronizer.d.ts.map +1 -1
  97. package/dist/types/src/calls/media-manager.d.ts +1 -1
  98. package/dist/types/src/calls/media-manager.d.ts.map +1 -1
  99. package/dist/types/src/calls/types.d.ts +1 -1
  100. package/dist/types/src/calls/types.d.ts.map +1 -1
  101. package/dist/types/src/calls/util/calls-service.d.ts +4 -2
  102. package/dist/types/src/calls/util/calls-service.d.ts.map +1 -1
  103. package/dist/types/src/calls/util/stub-media-streams.d.ts.map +1 -1
  104. package/dist/types/src/calls-service.stories.d.ts +10 -9
  105. package/dist/types/src/calls-service.stories.d.ts.map +1 -1
  106. package/dist/types/src/capabilities/app-graph-builder.d.ts +1 -1
  107. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  108. package/dist/types/src/capabilities/call-manager.d.ts +1 -1
  109. package/dist/types/src/capabilities/call-manager.d.ts.map +1 -1
  110. package/dist/types/src/capabilities/capabilities.d.ts +2 -2
  111. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  112. package/dist/types/src/capabilities/index.d.ts +11 -10
  113. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  114. package/dist/types/src/capabilities/intent-resolver.d.ts +1 -1
  115. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  116. package/dist/types/src/capabilities/markdown.d.ts +1 -1
  117. package/dist/types/src/capabilities/markdown.d.ts.map +1 -1
  118. package/dist/types/src/capabilities/react-root.d.ts +2 -2
  119. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  120. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  121. package/dist/types/src/capabilities/settings.d.ts +1 -1
  122. package/dist/types/src/capabilities/state.d.ts +2 -2
  123. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  124. package/dist/types/src/capabilities/toolkit.d.ts +6 -0
  125. package/dist/types/src/capabilities/toolkit.d.ts.map +1 -0
  126. package/dist/types/src/components/Call/Call.d.ts.map +1 -1
  127. package/dist/types/src/components/Call/Toolbar.d.ts.map +1 -1
  128. package/dist/types/src/components/CallDebugPanel.d.ts +7 -0
  129. package/dist/types/src/components/CallDebugPanel.d.ts.map +1 -1
  130. package/dist/types/src/components/CallSidebar.d.ts.map +1 -1
  131. package/dist/types/src/components/ChannelContainer.d.ts.map +1 -1
  132. package/dist/types/src/components/ChannelContainer.stories.d.ts +89 -5
  133. package/dist/types/src/components/ChannelContainer.stories.d.ts.map +1 -1
  134. package/dist/types/src/components/Chat.stories.d.ts +91 -5
  135. package/dist/types/src/components/Chat.stories.d.ts.map +1 -1
  136. package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
  137. package/dist/types/src/components/Comments.stories.d.ts +160 -4
  138. package/dist/types/src/components/Comments.stories.d.ts.map +1 -1
  139. package/dist/types/src/components/CommentsContainer.d.ts.map +1 -1
  140. package/dist/types/src/components/CommentsThreadContainer.d.ts +2 -2
  141. package/dist/types/src/components/CommentsThreadContainer.d.ts.map +1 -1
  142. package/dist/types/src/components/Lobby/Lobby.d.ts.map +1 -1
  143. package/dist/types/src/components/Media/VideoObject.d.ts +2 -2
  144. package/dist/types/src/components/Media/VideoObject.d.ts.map +1 -1
  145. package/dist/types/src/components/Media/VideoObject.stories.d.ts +18 -4
  146. package/dist/types/src/components/Media/VideoObject.stories.d.ts.map +1 -1
  147. package/dist/types/src/components/MessageContainer.d.ts +4 -1
  148. package/dist/types/src/components/MessageContainer.d.ts.map +1 -1
  149. package/dist/types/src/components/Participant/Participant.d.ts.map +1 -1
  150. package/dist/types/src/components/Participant/ParticipantGrid.d.ts.map +1 -1
  151. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts +155 -3
  152. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts.map +1 -1
  153. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts +157 -4
  154. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts.map +1 -1
  155. package/dist/types/src/components/ResponsiveGrid/ResponsiveGridItem.d.ts.map +1 -1
  156. package/dist/types/src/components/ThreadComplementary.d.ts.map +1 -1
  157. package/dist/types/src/components/ThreadSettings.d.ts +1 -1
  158. package/dist/types/src/components/ThreadSettings.d.ts.map +1 -1
  159. package/dist/types/src/components/command-extension.d.ts.map +1 -1
  160. package/dist/types/src/components/testing.d.ts +1 -0
  161. package/dist/types/src/components/testing.d.ts.map +1 -1
  162. package/dist/types/src/extensions/threads.d.ts.map +1 -1
  163. package/dist/types/src/hooks/index.d.ts +1 -0
  164. package/dist/types/src/hooks/index.d.ts.map +1 -1
  165. package/dist/types/src/hooks/useBlackCanvasStreamTrack.d.ts +2 -0
  166. package/dist/types/src/hooks/useBlackCanvasStreamTrack.d.ts.map +1 -0
  167. package/dist/types/src/hooks/useVideoStreamTrack.d.ts +1 -1
  168. package/dist/types/src/hooks/useVideoStreamTrack.d.ts.map +1 -1
  169. package/dist/types/src/meta.d.ts +1 -2
  170. package/dist/types/src/meta.d.ts.map +1 -1
  171. package/dist/types/src/translations.d.ts +3 -1
  172. package/dist/types/src/translations.d.ts.map +1 -1
  173. package/dist/types/src/types/schema.d.ts +126 -109
  174. package/dist/types/src/types/schema.d.ts.map +1 -1
  175. package/dist/types/src/types/types.d.ts +259 -172
  176. package/dist/types/src/types/types.d.ts.map +1 -1
  177. package/dist/types/tsconfig.tsbuildinfo +1 -1
  178. package/package.json +64 -62
  179. package/src/ThreadPlugin.tsx +130 -124
  180. package/src/calls/call-manager.ts +2 -2
  181. package/src/calls/call-swarm-synchronizer.ts +1 -1
  182. package/src/calls/media-manager.ts +60 -34
  183. package/src/calls/types.ts +8 -4
  184. package/src/calls/util/calls-service.ts +65 -14
  185. package/src/calls/util/stub-media-streams.ts +62 -5
  186. package/src/calls-service.stories.tsx +78 -65
  187. package/src/capabilities/app-graph-builder.ts +18 -14
  188. package/src/capabilities/call-manager.ts +3 -2
  189. package/src/capabilities/capabilities.ts +7 -7
  190. package/src/capabilities/index.ts +1 -0
  191. package/src/capabilities/intent-resolver.ts +43 -9
  192. package/src/capabilities/markdown.ts +4 -3
  193. package/src/capabilities/react-root.tsx +2 -2
  194. package/src/capabilities/react-surface.tsx +14 -13
  195. package/src/capabilities/state.ts +2 -1
  196. package/src/capabilities/toolkit.ts +82 -0
  197. package/src/components/Call/Call.tsx +3 -2
  198. package/src/components/Call/Toolbar.tsx +5 -5
  199. package/src/components/CallDebugPanel.tsx +108 -49
  200. package/src/components/CallSidebar.tsx +2 -1
  201. package/src/components/ChannelContainer.stories.tsx +11 -10
  202. package/src/components/ChannelContainer.tsx +8 -7
  203. package/src/components/Chat.stories.tsx +34 -31
  204. package/src/components/ChatContainer.tsx +8 -4
  205. package/src/components/Comments.stories.tsx +39 -38
  206. package/src/components/CommentsContainer.tsx +2 -1
  207. package/src/components/CommentsThreadContainer.tsx +9 -7
  208. package/src/components/Lobby/Lobby.tsx +1 -1
  209. package/src/components/Media/VideoObject.stories.tsx +36 -28
  210. package/src/components/MessageContainer.tsx +43 -9
  211. package/src/components/Participant/Participant.tsx +13 -7
  212. package/src/components/Participant/ParticipantGrid.tsx +2 -1
  213. package/src/components/ResponsiveGrid/ResponsiveContainer.stories.tsx +8 -8
  214. package/src/components/ResponsiveGrid/ResponsiveGrid.stories.tsx +44 -42
  215. package/src/components/ResponsiveGrid/ResponsiveGrid.tsx +1 -1
  216. package/src/components/ResponsiveGrid/ResponsiveGridItem.tsx +2 -2
  217. package/src/components/ThreadComplementary.tsx +37 -7
  218. package/src/components/ThreadSettings.tsx +6 -7
  219. package/src/components/command-extension.ts +5 -2
  220. package/src/components/testing.ts +22 -0
  221. package/src/extensions/threads.ts +3 -3
  222. package/src/hooks/index.ts +1 -0
  223. package/src/hooks/useBlackCanvasStreamTrack.tsx +27 -0
  224. package/src/hooks/useDebugMode.ts +1 -1
  225. package/src/hooks/useVideoStreamTrack.tsx +6 -3
  226. package/src/meta.ts +3 -4
  227. package/src/testing/stories.ts +3 -3
  228. package/src/translations.ts +3 -1
  229. package/src/types/schema.ts +1 -1
  230. package/src/types/types.ts +22 -13
  231. package/src/typings/peermetrics-webrtc-stats.d.ts +17 -1
  232. package/src/typings.d.ts +8 -0
  233. package/src/util.ts +1 -1
  234. package/dist/lib/browser/ChannelContainer-3GIE7ASU.mjs +0 -16
  235. package/dist/lib/browser/ChatContainer-AIGIWAUG.mjs +0 -15
  236. package/dist/lib/browser/app-graph-builder-N7BE5TYW.mjs.map +0 -7
  237. package/dist/lib/browser/call-manager-NIPDYUVD.mjs.map +0 -7
  238. package/dist/lib/browser/chunk-3SGRT4NM.mjs +0 -367
  239. package/dist/lib/browser/chunk-3SGRT4NM.mjs.map +0 -7
  240. package/dist/lib/browser/chunk-6NSMBO3B.mjs.map +0 -7
  241. package/dist/lib/browser/chunk-ERWASUQK.mjs.map +0 -7
  242. package/dist/lib/browser/chunk-EV4JWI7L.mjs.map +0 -7
  243. package/dist/lib/browser/chunk-FR7KJPNY.mjs +0 -21
  244. package/dist/lib/browser/chunk-GCLD5ESP.mjs.map +0 -7
  245. package/dist/lib/browser/chunk-GERVMFQW.mjs.map +0 -7
  246. package/dist/lib/browser/chunk-KWPRNHTK.mjs.map +0 -7
  247. package/dist/lib/browser/chunk-LGSDKXPF.mjs +0 -18
  248. package/dist/lib/browser/chunk-LGSDKXPF.mjs.map +0 -7
  249. package/dist/lib/browser/chunk-VUWC4IJM.mjs +0 -479
  250. package/dist/lib/browser/chunk-VUWC4IJM.mjs.map +0 -7
  251. package/dist/lib/browser/chunk-ZE7KWN36.mjs.map +0 -7
  252. package/dist/lib/browser/intent-resolver-JFGLZ6VI.mjs.map +0 -7
  253. package/dist/lib/browser/markdown-M3FMR7OD.mjs.map +0 -7
  254. package/dist/lib/browser/react-root-JEUSQXI6.mjs +0 -28
  255. package/dist/lib/browser/react-root-JEUSQXI6.mjs.map +0 -7
  256. package/dist/lib/browser/react-surface-XWS6GIZY.mjs.map +0 -7
  257. package/dist/lib/browser/state-H6CYONWE.mjs.map +0 -7
  258. package/dist/lib/node-esm/ChannelContainer-7FXCKO7X.mjs +0 -17
  259. package/dist/lib/node-esm/app-graph-builder-VCW76Z6V.mjs.map +0 -7
  260. package/dist/lib/node-esm/call-manager-D6O5ZJJ4.mjs.map +0 -7
  261. package/dist/lib/node-esm/chunk-2CXOK2TD.mjs +0 -23
  262. package/dist/lib/node-esm/chunk-2MFNK53T.mjs +0 -480
  263. package/dist/lib/node-esm/chunk-2MFNK53T.mjs.map +0 -7
  264. package/dist/lib/node-esm/chunk-57XR3LEF.mjs.map +0 -7
  265. package/dist/lib/node-esm/chunk-75RJ5DJI.mjs +0 -19
  266. package/dist/lib/node-esm/chunk-75RJ5DJI.mjs.map +0 -7
  267. package/dist/lib/node-esm/chunk-C3XFMUAY.mjs.map +0 -7
  268. package/dist/lib/node-esm/chunk-FLBFYGBK.mjs +0 -368
  269. package/dist/lib/node-esm/chunk-FLBFYGBK.mjs.map +0 -7
  270. package/dist/lib/node-esm/chunk-GRLRWTRU.mjs.map +0 -7
  271. package/dist/lib/node-esm/chunk-IHDNQLLR.mjs.map +0 -7
  272. package/dist/lib/node-esm/chunk-OU5BYIDO.mjs.map +0 -7
  273. package/dist/lib/node-esm/chunk-TDFHTCZZ.mjs.map +0 -7
  274. package/dist/lib/node-esm/intent-resolver-OXGNQ44Y.mjs.map +0 -7
  275. package/dist/lib/node-esm/markdown-INKTE4MH.mjs.map +0 -7
  276. package/dist/lib/node-esm/react-root-XYYY2JXZ.mjs +0 -29
  277. package/dist/lib/node-esm/react-root-XYYY2JXZ.mjs.map +0 -7
  278. package/dist/lib/node-esm/react-surface-MJ33KPYE.mjs.map +0 -7
  279. package/dist/lib/node-esm/state-D7WNDT3N.mjs.map +0 -7
  280. /package/dist/lib/browser/{ChannelContainer-3GIE7ASU.mjs.map → ChannelContainer-BGDGZHV4.mjs.map} +0 -0
  281. /package/dist/lib/browser/{ChatContainer-AIGIWAUG.mjs.map → ChatContainer-75KJZ4XR.mjs.map} +0 -0
  282. /package/dist/lib/node-esm/{ChannelContainer-7FXCKO7X.mjs.map → ChannelContainer-OXC6BTU7.mjs.map} +0 -0
  283. /package/dist/lib/node-esm/{ChatContainer-IQUWU426.mjs.map → ChatContainer-SH6LTFQL.mjs.map} +0 -0
@@ -1,16 +1,16 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
3
  ThreadCapabilities
4
- } from "./chunk-75RJ5DJI.mjs";
4
+ } from "./chunk-LCHTNRK7.mjs";
5
5
  import {
6
6
  ChatContainer_default
7
- } from "./chunk-2MFNK53T.mjs";
7
+ } from "./chunk-BTGKI5IK.mjs";
8
8
  import {
9
9
  useDebugMode
10
- } from "./chunk-25ABSYP2.mjs";
10
+ } from "./chunk-2MMJF7DW.mjs";
11
11
  import {
12
12
  meta
13
- } from "./chunk-GRLRWTRU.mjs";
13
+ } from "./chunk-OBVAURUU.mjs";
14
14
 
15
15
  // src/components/ChannelContainer.tsx
16
16
  import { useSignals as _useSignals10 } from "@preact-signals/safe-react/tracking";
@@ -23,9 +23,9 @@ import { log } from "@dxos/log";
23
23
  import { useClient } from "@dxos/react-client";
24
24
  import { fullyQualifiedId as fullyQualifiedId2, getSpace } from "@dxos/react-client/echo";
25
25
  import { useIdentity } from "@dxos/react-client/halo";
26
- import { useTranslation as useTranslation3, Input, ElevationProvider } from "@dxos/react-ui";
27
- import { ControlGroup, ControlItemInput, ControlGroupButton } from "@dxos/react-ui-form";
28
- import { ToolbarMenu, MenuProvider, createMenuAction, useMenuActions, createMenuItemGroup } from "@dxos/react-ui-menu";
26
+ import { ElevationProvider, Input, useTranslation as useTranslation3 } from "@dxos/react-ui";
27
+ import { ControlGroup, ControlGroupButton, ControlItemInput } from "@dxos/react-ui-form";
28
+ import { MenuProvider, ToolbarMenu, createMenuAction, createMenuItemGroup, useMenuActions } from "@dxos/react-ui-menu";
29
29
  import { useSoundEffect } from "@dxos/react-ui-sfx";
30
30
  import { StackItem } from "@dxos/react-ui-stack";
31
31
 
@@ -34,153 +34,11 @@ import { useSignals as _useSignals9 } from "@preact-signals/safe-react/tracking"
34
34
  import React9 from "react";
35
35
  import { useCapability as useCapability3 } from "@dxos/app-framework";
36
36
 
37
- // src/components/Call/Toolbar.tsx
38
- import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
39
- import React from "react";
40
- import { useAppGraph, useCapability } from "@dxos/app-framework";
41
- import { useNode, useActions } from "@dxos/plugin-graph";
42
- import { fullyQualifiedId } from "@dxos/react-client/echo";
43
- import { Icon, IconButton, Toolbar as NativeToolbar, toLocalizedString, useTranslation } from "@dxos/react-ui";
44
- import { groupHoverControlItemWithTransition, mx } from "@dxos/react-ui-theme";
45
- var Toolbar = ({ classNames, channel, participants, autoHideControls = true, onJoin, onLeave }) => {
46
- var _effect = _useSignals();
47
- try {
48
- const { t } = useTranslation(meta.id);
49
- const { graph } = useAppGraph();
50
- const call = useCapability(ThreadCapabilities.CallManager);
51
- const node = useNode(graph, channel && fullyQualifiedId(channel));
52
- const actions = useActions(graph, node?.id).filter((action) => action.properties.disposition === "toolbar");
53
- const isScreensharing = call.media.screenshareTrack !== void 0;
54
- const canSharescreen = typeof navigator.mediaDevices !== "undefined" && navigator.mediaDevices.getDisplayMedia !== void 0;
55
- return /* @__PURE__ */ React.createElement("div", {
56
- className: mx("z-20 flex justify-center m-8", autoHideControls && groupHoverControlItemWithTransition)
57
- }, /* @__PURE__ */ React.createElement(NativeToolbar.Root, {
58
- classNames: [
59
- "p-2 bg-modalSurface rounded-md shadow-md",
60
- classNames
61
- ]
62
- }, /* @__PURE__ */ React.createElement(ToggleButton, {
63
- active: call.media.audioEnabled,
64
- state: {
65
- on: {
66
- icon: "ph--microphone--regular",
67
- label: t("mic off"),
68
- onClick: () => call.turnAudioOff(),
69
- classNames: "bg-callActive"
70
- },
71
- off: {
72
- icon: "ph--microphone-slash--duotone",
73
- label: t("mic on"),
74
- onClick: () => call.turnAudioOn(),
75
- classNames: [
76
- call.joined && "bg-callAlert"
77
- ]
78
- }
79
- }
80
- }), /* @__PURE__ */ React.createElement(ToggleButton, {
81
- active: call.media.videoEnabled,
82
- state: {
83
- on: {
84
- icon: "ph--video-camera--regular",
85
- label: t("camera off"),
86
- onClick: () => call.turnVideoOff()
87
- },
88
- off: {
89
- icon: "ph--video-camera-slash--duotone",
90
- label: t("camera on"),
91
- onClick: () => call.turnVideoOn()
92
- }
93
- }
94
- }), participants !== void 0 && /* @__PURE__ */ React.createElement("div", {
95
- className: "flex justify-center items-center gap-2 is-[5rem] text-xs text-subdued"
96
- }, /* @__PURE__ */ React.createElement(Icon, {
97
- icon: "ph--users--regular",
98
- size: 4
99
- }), /* @__PURE__ */ React.createElement("div", null, participants)) || /* @__PURE__ */ React.createElement(NativeToolbar.Separator, {
100
- variant: "gap"
101
- }), call.joined && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(ToggleButton, {
102
- disabled: !canSharescreen,
103
- active: isScreensharing,
104
- state: {
105
- on: {
106
- icon: "ph--monitor--regular",
107
- label: t("screenshare off"),
108
- onClick: () => call.turnScreenshareOff()
109
- },
110
- off: {
111
- icon: "ph--monitor-arrow-up--duotone",
112
- label: t("screenshare on"),
113
- onClick: () => call.turnScreenshareOn()
114
- }
115
- }
116
- }), actions.map((action) => /* @__PURE__ */ React.createElement(IconButton, {
117
- key: action.id,
118
- ...defaultButtonProps,
119
- icon: action.properties.icon,
120
- label: toLocalizedString(action.properties.label, t),
121
- classNames: action.properties.classNames,
122
- onClick: () => action.data({
123
- node
124
- })
125
- })), /* @__PURE__ */ React.createElement(ToggleButton, {
126
- active: call.raisedHand,
127
- state: {
128
- on: {
129
- icon: "ph--hand-waving--regular",
130
- label: t("lower hand"),
131
- onClick: () => call.setRaisedHand(false),
132
- classNames: [
133
- call.joined && "bg-callAlert"
134
- ]
135
- },
136
- off: {
137
- icon: "ph--hand-palm--duotone",
138
- label: t("raise hand"),
139
- onClick: () => call.setRaisedHand(true)
140
- }
141
- }
142
- })), call.joined ? /* @__PURE__ */ React.createElement(IconButton, {
143
- variant: "destructive",
144
- icon: "ph--phone-x--regular",
145
- label: t("leave call"),
146
- onClick: onLeave
147
- }) : /* @__PURE__ */ React.createElement(IconButton, {
148
- variant: "primary",
149
- icon: "ph--phone-incoming--regular",
150
- label: t("join call"),
151
- onClick: onJoin
152
- })));
153
- } finally {
154
- _effect.f();
155
- }
156
- };
157
- Toolbar.displayName = "MeetingToolbar";
158
- var defaultButtonProps = {
159
- size: 5,
160
- iconOnly: true
161
- };
162
- var ToggleButton = ({ active, state }) => {
163
- var _effect = _useSignals();
164
- try {
165
- return /* @__PURE__ */ React.createElement(IconButton, {
166
- ...defaultButtonProps,
167
- classNames: [
168
- active ? state.on.classNames ?? "bg-callActive" : state.off.classNames
169
- ],
170
- icon: active ? state.on.icon : state.off.icon,
171
- label: active ? state.on.label : state.off.label,
172
- onClick: active ? state.on.onClick : state.off.onClick
173
- });
174
- } finally {
175
- _effect.f();
176
- }
177
- };
178
-
179
37
  // src/components/Media/AudioStream.tsx
180
- import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
181
- import React2, { useEffect, useRef } from "react";
38
+ import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
39
+ import React, { useEffect, useRef } from "react";
182
40
  var AudioStream = ({ tracks }) => {
183
- var _effect = _useSignals2();
41
+ var _effect = _useSignals();
184
42
  try {
185
43
  const mediaStreamRef = useRef(new MediaStream());
186
44
  const ref = useRef(null);
@@ -203,10 +61,10 @@ var AudioStream = ({ tracks }) => {
203
61
  });
204
62
  audio.srcObject = mediaStream;
205
63
  };
206
- return /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement("audio", {
64
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("audio", {
207
65
  ref,
208
66
  autoPlay: true
209
- }), tracks.map((track) => /* @__PURE__ */ React2.createElement(AudioTrack, {
67
+ }), tracks.map((track) => /* @__PURE__ */ React.createElement(AudioTrack, {
210
68
  key: track.id,
211
69
  track,
212
70
  mediaStream: mediaStreamRef.current,
@@ -233,11 +91,11 @@ var AudioTrack = ({ track, mediaStream, resetSrcObject }) => {
233
91
  };
234
92
 
235
93
  // src/components/Media/VideoObject.tsx
236
- import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
237
- import React3, { forwardRef, memo, useEffect as useEffect2, useRef as useRef2 } from "react";
238
- import { mx as mx2 } from "@dxos/react-ui-theme";
94
+ import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
95
+ import React2, { forwardRef, memo, useEffect as useEffect2, useRef as useRef2 } from "react";
96
+ import { mx } from "@dxos/react-ui-theme";
239
97
  var VideoObject = /* @__PURE__ */ memo(/* @__PURE__ */ forwardRef(({ videoStream, classNames, flip, contain, ...rest }, ref) => {
240
- var _effect = _useSignals3();
98
+ var _effect = _useSignals2();
241
99
  try {
242
100
  const internalRef = useRef2(null);
243
101
  useEffect2(() => {
@@ -251,8 +109,8 @@ var VideoObject = /* @__PURE__ */ memo(/* @__PURE__ */ forwardRef(({ videoStream
251
109
  videoStream,
252
110
  internalRef.current
253
111
  ]);
254
- return /* @__PURE__ */ React3.createElement("video", {
255
- className: mx2("w-full aspect-video", flip && "scale-x-[-1]", contain ? "object-contain" : "object-cover", classNames),
112
+ return /* @__PURE__ */ React2.createElement("video", {
113
+ className: mx("w-full aspect-video", flip && "scale-x-[-1]", contain ? "object-contain" : "object-cover", classNames),
256
114
  ref: (v) => {
257
115
  internalRef.current = v;
258
116
  if (ref === null) {
@@ -273,28 +131,28 @@ var VideoObject = /* @__PURE__ */ memo(/* @__PURE__ */ forwardRef(({ videoStream
273
131
  VideoObject.displayName = "VideoObject";
274
132
 
275
133
  // src/components/Participant/Participant.tsx
276
- import { useSignals as _useSignals7 } from "@preact-signals/safe-react/tracking";
277
- import React7, { memo as memo2, useMemo as useMemo2 } from "react";
278
- import { useCapability as useCapability2 } from "@dxos/app-framework";
134
+ import { useSignals as _useSignals6 } from "@preact-signals/safe-react/tracking";
135
+ import React6, { memo as memo2, useMemo as useMemo2 } from "react";
136
+ import { useCapability } from "@dxos/app-framework";
279
137
 
280
138
  // src/components/ResponsiveGrid/ResponsiveContainer.tsx
281
- import { useSignals as _useSignals4 } from "@preact-signals/safe-react/tracking";
282
- import React4 from "react";
283
- import { mx as mx3 } from "@dxos/react-ui-theme";
139
+ import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
140
+ import React3 from "react";
141
+ import { mx as mx2 } from "@dxos/react-ui-theme";
284
142
  var ResponsiveContainer = ({ children }) => {
285
- var _effect = _useSignals4();
143
+ var _effect = _useSignals3();
286
144
  try {
287
145
  return (
288
146
  // Outer container that takes full size of parent.
289
- /* @__PURE__ */ React4.createElement("div", {
147
+ /* @__PURE__ */ React3.createElement("div", {
290
148
  role: "none",
291
149
  className: "relative flex w-full h-full"
292
- }, /* @__PURE__ */ React4.createElement("div", {
150
+ }, /* @__PURE__ */ React3.createElement("div", {
293
151
  role: "none",
294
152
  className: "absolute inset-0 flex justify-center items-center"
295
- }, /* @__PURE__ */ React4.createElement("div", {
153
+ }, /* @__PURE__ */ React3.createElement("div", {
296
154
  role: "none",
297
- className: mx3("max-h-full max-w-full w-auto h-auto aspect-video")
155
+ className: mx2("max-h-full max-w-full w-auto h-auto aspect-video")
298
156
  }, children)))
299
157
  );
300
158
  } finally {
@@ -303,11 +161,11 @@ var ResponsiveContainer = ({ children }) => {
303
161
  };
304
162
 
305
163
  // src/components/ResponsiveGrid/ResponsiveGrid.tsx
306
- import { useSignals as _useSignals5 } from "@preact-signals/safe-react/tracking";
307
- import React5, { useLayoutEffect, useState, useEffect as useEffect3, useMemo, useCallback } from "react";
164
+ import { useSignals as _useSignals4 } from "@preact-signals/safe-react/tracking";
165
+ import React4, { useCallback, useEffect as useEffect3, useLayoutEffect, useMemo, useState } from "react";
308
166
  import { useResizeDetector } from "react-resize-detector";
309
167
  import { invariant } from "@dxos/invariant";
310
- import { mx as mx4 } from "@dxos/react-ui-theme";
168
+ import { mx as mx3 } from "@dxos/react-ui-theme";
311
169
  var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/components/ResponsiveGrid/ResponsiveGrid.tsx";
312
170
  var ASPECT_RATIO = 16 / 9;
313
171
  var MIN_GALLERY_HEIGHT = 250;
@@ -315,7 +173,7 @@ var DEFAULT_GAP = 8;
315
173
  var maxImageSize = "w-[2560px] h-[1440px]";
316
174
  var defaultGetId = (item) => item.id;
317
175
  var ResponsiveGrid = ({ classNames, Cell, gap = DEFAULT_GAP, getId: getId2 = defaultGetId, items, pinned, autoHideGallery = false, debug, onPinnedChange }) => {
318
- var _effect = _useSignals5();
176
+ var _effect = _useSignals4();
319
177
  try {
320
178
  const { width: containerWidth = 0, height: containerHeight = 0, ref: containerRef } = useResizeDetector({
321
179
  refreshRate: 100
@@ -402,47 +260,47 @@ var ResponsiveGrid = ({ classNames, Cell, gap = DEFAULT_GAP, getId: getId2 = def
402
260
  pinned,
403
261
  onPinnedChange
404
262
  ]);
405
- return /* @__PURE__ */ React5.createElement("div", {
263
+ return /* @__PURE__ */ React4.createElement("div", {
406
264
  ref: containerRef,
407
- className: mx4("relative w-full h-full", classNames)
408
- }, /* @__PURE__ */ React5.createElement("div", {
265
+ className: mx3("relative w-full h-full", classNames)
266
+ }, /* @__PURE__ */ React4.createElement("div", {
409
267
  className: "absolute inset-0 flex flex-col grow gap-2"
410
- }, pinnedItem && /* @__PURE__ */ React5.createElement("div", {
411
- className: mx4("flex grow-[2] shrink overflow-hidden justify-center items-center", hideGallery && "h-full"),
268
+ }, pinnedItem && /* @__PURE__ */ React4.createElement("div", {
269
+ className: mx3("flex grow-[2] shrink overflow-hidden justify-center items-center", hideGallery && "h-full"),
412
270
  style: hideGallery ? {} : {
413
271
  height: dividerHeight
414
272
  }
415
- }, /* @__PURE__ */ React5.createElement(SoloItem, {
273
+ }, /* @__PURE__ */ React4.createElement(SoloItem, {
416
274
  id: getId2(pinnedItem),
417
275
  debug
418
- })), !hideGallery && /* @__PURE__ */ React5.createElement("div", {
276
+ })), !hideGallery && /* @__PURE__ */ React4.createElement("div", {
419
277
  ref: gridContainerRef,
420
278
  className: "flex grow-[1] overflow-hidden justify-center items-center",
421
279
  style: hideGallery ? {} : {
422
280
  minHeight: MIN_GALLERY_HEIGHT
423
281
  }
424
- }, mainItems.length === 1 && /* @__PURE__ */ React5.createElement("div", {
282
+ }, mainItems.length === 1 && /* @__PURE__ */ React4.createElement("div", {
425
283
  style: {
426
284
  width: cellWidth
427
285
  },
428
286
  className: "flex h-full"
429
- }, /* @__PURE__ */ React5.createElement(SoloItem, {
287
+ }, /* @__PURE__ */ React4.createElement(SoloItem, {
430
288
  id: getId2(mainItems[0]),
431
289
  debug
432
- })), mainItems.length > 1 && columns > 0 && /* @__PURE__ */ React5.createElement("div", {
290
+ })), mainItems.length > 1 && columns > 0 && /* @__PURE__ */ React4.createElement("div", {
433
291
  role: "grid",
434
292
  style: {
435
293
  display: "grid",
436
294
  gridTemplateColumns: `repeat(${columns}, ${cellWidth}px)`,
437
295
  gap: `${gap}px`
438
296
  }
439
- }, mainItems.map((item) => /* @__PURE__ */ React5.createElement("div", {
297
+ }, mainItems.map((item) => /* @__PURE__ */ React4.createElement("div", {
440
298
  key: getId2(item),
441
299
  "data-grid-item": getId2(item),
442
- className: mx4("aspect-video max-h-full max-w-full w-auto h-auto", debug && "border border-primary-500")
443
- }))))), /* @__PURE__ */ React5.createElement("div", {
444
- className: mx4(debug && "opacity-10")
445
- }, bounds.map(([item, bounds2]) => /* @__PURE__ */ React5.createElement(Cell, {
300
+ className: mx3("aspect-video max-h-full max-w-full w-auto h-auto", debug && "border border-primary-500")
301
+ }))))), /* @__PURE__ */ React4.createElement("div", {
302
+ className: mx3(debug && "opacity-10")
303
+ }, bounds.map(([item, bounds2]) => /* @__PURE__ */ React4.createElement(Cell, {
446
304
  key: getId2(item),
447
305
  classNames: "absolute transition-all duration-500",
448
306
  item,
@@ -455,14 +313,14 @@ var ResponsiveGrid = ({ classNames, Cell, gap = DEFAULT_GAP, getId: getId2 = def
455
313
  }
456
314
  };
457
315
  var SoloItem = ({ debug, id }) => {
458
- var _effect = _useSignals5();
316
+ var _effect = _useSignals4();
459
317
  try {
460
- return /* @__PURE__ */ React5.createElement(ResponsiveContainer, null, /* @__PURE__ */ React5.createElement("div", {
318
+ return /* @__PURE__ */ React4.createElement(ResponsiveContainer, null, /* @__PURE__ */ React4.createElement("div", {
461
319
  "data-grid-item": id,
462
- className: mx4("aspect-video overflow-hidden", debug && "z-20 border-2 border-primary-500")
463
- }, /* @__PURE__ */ React5.createElement("img", {
320
+ className: mx3("aspect-video overflow-hidden", debug && "z-20 border-2 border-primary-500")
321
+ }, /* @__PURE__ */ React4.createElement("img", {
464
322
  alt: "placeholder video",
465
- className: mx4("opacity-0", maxImageSize)
323
+ className: mx3("opacity-0", maxImageSize)
466
324
  })));
467
325
  } finally {
468
326
  _effect.f();
@@ -532,15 +390,15 @@ var fitAspectRatio = (outerWidth, outerHeight, aspectRatio) => {
532
390
  };
533
391
 
534
392
  // src/components/ResponsiveGrid/ResponsiveGridItem.tsx
535
- import { useSignals as _useSignals6 } from "@preact-signals/safe-react/tracking";
536
- import React6, { useEffect as useEffect4, useState as useState2 } from "react";
537
- import { Icon as Icon2, IconButton as IconButton2, useTranslation as useTranslation2 } from "@dxos/react-ui";
393
+ import { useSignals as _useSignals5 } from "@preact-signals/safe-react/tracking";
394
+ import React5, { useEffect as useEffect4, useState as useState2 } from "react";
395
+ import { Icon, IconButton, useTranslation } from "@dxos/react-ui";
538
396
  import { Waveform } from "@dxos/react-ui-sfx";
539
- import { groupHoverControlItemWithTransition as groupHoverControlItemWithTransition2, mx as mx5 } from "@dxos/react-ui-theme";
397
+ import { groupHoverControlItemWithTransition, mx as mx4 } from "@dxos/react-ui-theme";
540
398
  var ResponsiveGridItem = ({ children, classNames, item, style, name, self, pinned, screenshare, video, mute, wave, speaking, onClick }) => {
541
- var _effect = _useSignals6();
399
+ var _effect = _useSignals5();
542
400
  try {
543
- const { t } = useTranslation2(meta.id);
401
+ const { t } = useTranslation(meta.id);
544
402
  const iconProps = {
545
403
  wave: {
546
404
  icon: "ph--hand-waving--duotone",
@@ -566,32 +424,32 @@ var ResponsiveGridItem = ({ children, classNames, item, style, name, self, pinne
566
424
  }, [
567
425
  speaking
568
426
  ]);
569
- return /* @__PURE__ */ React6.createElement("div", {
570
- 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),
427
+ return /* @__PURE__ */ React5.createElement("div", {
428
+ 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),
571
429
  style
572
- }, children, onClick && /* @__PURE__ */ React6.createElement("div", {
430
+ }, children, onClick && /* @__PURE__ */ React5.createElement("div", {
573
431
  className: "z-10 absolute top-1 right-1 flex"
574
- }, /* @__PURE__ */ React6.createElement(IconButton2, {
575
- classNames: mx5("p-1 min-bs-1 rounded", groupHoverControlItemWithTransition2),
432
+ }, /* @__PURE__ */ React5.createElement(IconButton, {
433
+ classNames: mx4("p-1 min-bs-1 rounded", groupHoverControlItemWithTransition),
576
434
  iconOnly: true,
577
435
  icon: pinned ? "ph--x--regular" : "ph--arrows-out--regular",
578
436
  size: pinned ? 5 : 4,
579
437
  label: pinned ? t("icon unpin") : t("icon pin"),
580
438
  onClick: () => onClick?.(item)
581
- })), name && /* @__PURE__ */ React6.createElement("div", {
439
+ })), name && /* @__PURE__ */ React5.createElement("div", {
582
440
  className: "z-10 absolute bottom-1 left-8 right-1 flex justify-end gap-1 items-center"
583
- }, screenshare && /* @__PURE__ */ React6.createElement(Icon2, {
441
+ }, screenshare && /* @__PURE__ */ React5.createElement(Icon, {
584
442
  icon: "ph--broadcast--regular",
585
443
  size: pinned ? 5 : 4
586
- }), /* @__PURE__ */ React6.createElement("div", {
587
- className: mx5("bg-neutral-800 text-neutral-100 py-0.5 truncate rounded", pinned ? "px-2" : "px-1 text-xs")
588
- }, name)), /* @__PURE__ */ React6.createElement("div", {
444
+ }), /* @__PURE__ */ React5.createElement("div", {
445
+ className: mx4("bg-neutral-800 text-neutral-100 py-0.5 truncate rounded", pinned ? "px-2" : "px-1 text-xs")
446
+ }, name)), /* @__PURE__ */ React5.createElement("div", {
589
447
  className: "z-10 absolute bottom-1 left-1 flex"
590
- }, speaking && /* @__PURE__ */ React6.createElement(Waveform, {
448
+ }, speaking && /* @__PURE__ */ React5.createElement(Waveform, {
591
449
  active: true,
592
450
  size: pinned ? 5 : 4
593
- }) || props && /* @__PURE__ */ React6.createElement(IconButton2, {
594
- classNames: mx5("p-1 min-bs-1 rounded", props?.classNames),
451
+ }) || props && /* @__PURE__ */ React5.createElement(IconButton, {
452
+ classNames: mx4("p-1 min-bs-1 rounded", props?.classNames),
595
453
  icon: props?.icon,
596
454
  label: props?.label,
597
455
  size: pinned ? 5 : 4,
@@ -605,17 +463,19 @@ var ResponsiveGridItem = ({ children, classNames, item, style, name, self, pinne
605
463
  // src/components/Participant/Participant.tsx
606
464
  var SCREENSHARE_SUFFIX = "_screenshare";
607
465
  var Participant = /* @__PURE__ */ memo2(({ item: user, debug, ...props }) => {
608
- var _effect = _useSignals7();
466
+ var _effect = _useSignals6();
609
467
  try {
610
- const call = useCapability2(ThreadCapabilities.CallManager);
468
+ const call = useCapability(ThreadCapabilities.CallManager);
611
469
  const isSelf = call.self.id !== void 0 && user.id !== void 0 && user.id.startsWith(call.self.id);
612
470
  const isScreenshare = user.id?.endsWith(SCREENSHARE_SUFFIX);
613
- const pulledVideoStream = call.getVideoStream(isScreenshare || !isSelf ? user.tracks?.video : void 0);
471
+ const pulledVideoStream = !isSelf && isScreenshare && user.tracks?.screenshareEnabled ? call.getVideoStream(user.tracks?.screenshare) : !isSelf && !isScreenshare && user.tracks?.videoEnabled ? call.getVideoStream(user.tracks?.video) : void 0;
614
472
  const videoStream = useMemo2(() => {
615
- if (isSelf && !isScreenshare) {
616
- return call.media.videoStream;
617
- } else if (isSelf && isScreenshare) {
618
- return call.media.screenshareVideoStream;
473
+ if (isSelf) {
474
+ if (isScreenshare) {
475
+ return call.media.screenshareVideoStream;
476
+ } else if (!isScreenshare) {
477
+ return call.media.videoStream;
478
+ }
619
479
  } else if (!isSelf) {
620
480
  return pulledVideoStream;
621
481
  }
@@ -626,7 +486,7 @@ var Participant = /* @__PURE__ */ memo2(({ item: user, debug, ...props }) => {
626
486
  call.media.screenshareVideoStream,
627
487
  pulledVideoStream
628
488
  ]);
629
- return /* @__PURE__ */ React7.createElement(ResponsiveGridItem, {
489
+ return /* @__PURE__ */ React6.createElement(ResponsiveGridItem, {
630
490
  ...props,
631
491
  item: user,
632
492
  name: user.name,
@@ -637,7 +497,7 @@ var Participant = /* @__PURE__ */ memo2(({ item: user, debug, ...props }) => {
637
497
  wave: user.raisedHand,
638
498
  speaking: user.speaking,
639
499
  debug
640
- }, /* @__PURE__ */ React7.createElement(VideoObject, {
500
+ }, /* @__PURE__ */ React6.createElement(VideoObject, {
641
501
  videoStream,
642
502
  flip: isSelf && !isScreenshare,
643
503
  contain: !!isScreenshare,
@@ -650,11 +510,11 @@ var Participant = /* @__PURE__ */ memo2(({ item: user, debug, ...props }) => {
650
510
  Participant.displayName = "Participant";
651
511
 
652
512
  // src/components/Participant/ParticipantGrid.tsx
653
- import { useSignals as _useSignals8 } from "@preact-signals/safe-react/tracking";
654
- import React8, { useEffect as useEffect5, useMemo as useMemo3, useState as useState3 } from "react";
513
+ import { useSignals as _useSignals7 } from "@preact-signals/safe-react/tracking";
514
+ import React7, { useEffect as useEffect5, useMemo as useMemo3, useState as useState3 } from "react";
655
515
  var getId = (user) => user.id;
656
516
  var ParticipantGrid = ({ classNames, self, users, fullscreen, debug }) => {
657
- var _effect = _useSignals8();
517
+ var _effect = _useSignals7();
658
518
  try {
659
519
  const [pinned, setPinned] = useState3();
660
520
  const allUsers = useMemo3(() => {
@@ -708,7 +568,7 @@ var ParticipantGrid = ({ classNames, self, users, fullscreen, debug }) => {
708
568
  return 0;
709
569
  }
710
570
  });
711
- return /* @__PURE__ */ React8.createElement(ResponsiveGrid, {
571
+ return /* @__PURE__ */ React7.createElement(ResponsiveGrid, {
712
572
  classNames,
713
573
  Cell: Participant,
714
574
  debug,
@@ -723,6 +583,148 @@ var ParticipantGrid = ({ classNames, self, users, fullscreen, debug }) => {
723
583
  }
724
584
  };
725
585
 
586
+ // src/components/Call/Toolbar.tsx
587
+ import { useSignals as _useSignals8 } from "@preact-signals/safe-react/tracking";
588
+ import React8 from "react";
589
+ import { useAppGraph, useCapability as useCapability2 } from "@dxos/app-framework";
590
+ import { useActions, useNode } from "@dxos/plugin-graph";
591
+ import { fullyQualifiedId } from "@dxos/react-client/echo";
592
+ import { Icon as Icon2, IconButton as IconButton2, Toolbar as NaturalToolbar, toLocalizedString, useTranslation as useTranslation2 } from "@dxos/react-ui";
593
+ import { groupHoverControlItemWithTransition as groupHoverControlItemWithTransition2, mx as mx5 } from "@dxos/react-ui-theme";
594
+ var Toolbar = ({ classNames, channel, participants, autoHideControls = true, onJoin, onLeave }) => {
595
+ var _effect = _useSignals8();
596
+ try {
597
+ const { t } = useTranslation2(meta.id);
598
+ const { graph } = useAppGraph();
599
+ const call = useCapability2(ThreadCapabilities.CallManager);
600
+ const node = useNode(graph, channel && fullyQualifiedId(channel));
601
+ const actions = useActions(graph, node?.id).filter((action) => action.properties.disposition === "toolbar");
602
+ const isScreensharing = call.media.screenshareTrack !== void 0;
603
+ const canSharescreen = typeof navigator.mediaDevices !== "undefined" && navigator.mediaDevices.getDisplayMedia !== void 0;
604
+ return /* @__PURE__ */ React8.createElement("div", {
605
+ className: mx5("z-20 flex justify-center m-8", autoHideControls && groupHoverControlItemWithTransition2)
606
+ }, /* @__PURE__ */ React8.createElement(NaturalToolbar.Root, {
607
+ classNames: [
608
+ "p-2 bg-modalSurface rounded-md shadow-md",
609
+ classNames
610
+ ]
611
+ }, /* @__PURE__ */ React8.createElement(ToggleButton, {
612
+ active: call.media.audioEnabled,
613
+ state: {
614
+ on: {
615
+ icon: "ph--microphone--regular",
616
+ label: t("mic off"),
617
+ onClick: () => call.turnAudioOff(),
618
+ classNames: "bg-callActive"
619
+ },
620
+ off: {
621
+ icon: "ph--microphone-slash--duotone",
622
+ label: t("mic on"),
623
+ onClick: () => call.turnAudioOn(),
624
+ classNames: [
625
+ call.joined && "bg-callAlert"
626
+ ]
627
+ }
628
+ }
629
+ }), /* @__PURE__ */ React8.createElement(ToggleButton, {
630
+ active: call.media.videoEnabled,
631
+ state: {
632
+ on: {
633
+ icon: "ph--video-camera--regular",
634
+ label: t("camera off"),
635
+ onClick: () => call.turnVideoOff()
636
+ },
637
+ off: {
638
+ icon: "ph--video-camera-slash--duotone",
639
+ label: t("camera on"),
640
+ onClick: () => call.turnVideoOn()
641
+ }
642
+ }
643
+ }), participants !== void 0 && /* @__PURE__ */ React8.createElement("div", {
644
+ className: "flex justify-center items-center gap-2 is-[5rem] text-xs text-subdued"
645
+ }, /* @__PURE__ */ React8.createElement(Icon2, {
646
+ icon: "ph--users--regular",
647
+ size: 4
648
+ }), /* @__PURE__ */ React8.createElement("div", null, participants)) || /* @__PURE__ */ React8.createElement(NaturalToolbar.Separator, {
649
+ variant: "gap"
650
+ }), call.joined && /* @__PURE__ */ React8.createElement(React8.Fragment, null, /* @__PURE__ */ React8.createElement(ToggleButton, {
651
+ disabled: !canSharescreen,
652
+ active: isScreensharing,
653
+ state: {
654
+ on: {
655
+ icon: "ph--monitor--regular",
656
+ label: t("screenshare off"),
657
+ onClick: () => call.turnScreenshareOff()
658
+ },
659
+ off: {
660
+ icon: "ph--monitor-arrow-up--duotone",
661
+ label: t("screenshare on"),
662
+ onClick: () => call.turnScreenshareOn()
663
+ }
664
+ }
665
+ }), actions.map((action) => /* @__PURE__ */ React8.createElement(IconButton2, {
666
+ key: action.id,
667
+ ...defaultButtonProps,
668
+ icon: action.properties.icon,
669
+ label: toLocalizedString(action.properties.label, t),
670
+ classNames: action.properties.classNames,
671
+ onClick: () => action.data({
672
+ node
673
+ })
674
+ })), /* @__PURE__ */ React8.createElement(ToggleButton, {
675
+ active: call.raisedHand,
676
+ state: {
677
+ on: {
678
+ icon: "ph--hand-waving--regular",
679
+ label: t("lower hand"),
680
+ onClick: () => call.setRaisedHand(false),
681
+ classNames: [
682
+ call.joined && "bg-callAlert"
683
+ ]
684
+ },
685
+ off: {
686
+ icon: "ph--hand-palm--duotone",
687
+ label: t("raise hand"),
688
+ onClick: () => call.setRaisedHand(true)
689
+ }
690
+ }
691
+ })), call.joined ? /* @__PURE__ */ React8.createElement(IconButton2, {
692
+ variant: "destructive",
693
+ icon: "ph--phone-x--regular",
694
+ label: t("leave call"),
695
+ onClick: onLeave
696
+ }) : /* @__PURE__ */ React8.createElement(IconButton2, {
697
+ variant: "primary",
698
+ icon: "ph--phone-incoming--regular",
699
+ label: t("join call"),
700
+ onClick: onJoin
701
+ })));
702
+ } finally {
703
+ _effect.f();
704
+ }
705
+ };
706
+ Toolbar.displayName = "MeetingToolbar";
707
+ var defaultButtonProps = {
708
+ size: 5,
709
+ iconOnly: true
710
+ };
711
+ var ToggleButton = ({ active, state }) => {
712
+ var _effect = _useSignals8();
713
+ try {
714
+ return /* @__PURE__ */ React8.createElement(IconButton2, {
715
+ ...defaultButtonProps,
716
+ classNames: [
717
+ active ? state.on.classNames ?? "bg-callActive" : state.off.classNames
718
+ ],
719
+ icon: active ? state.on.icon : state.off.icon,
720
+ label: active ? state.on.label : state.off.label,
721
+ onClick: active ? state.on.onClick : state.off.onClick
722
+ });
723
+ } finally {
724
+ _effect.f();
725
+ }
726
+ };
727
+
726
728
  // src/components/Call/Call.tsx
727
729
  var CallRoot = ({ children }) => {
728
730
  var _effect = _useSignals9();
@@ -802,7 +804,7 @@ var ChannelContainer = ({ channel, roomId: _roomId, role, fullscreen }) => {
802
804
  useEffect6(() => {
803
805
  const ctx = new Context(void 0, {
804
806
  F: __dxlog_file2,
805
- L: 48
807
+ L: 49
806
808
  });
807
809
  callManager.left.on(ctx, (roomId2) => {
808
810
  extensions.forEach((extension) => {
@@ -844,7 +846,7 @@ var ChannelContainer = ({ channel, roomId: _roomId, role, fullscreen }) => {
844
846
  } catch (err) {
845
847
  log.catch(err, void 0, {
846
848
  F: __dxlog_file2,
847
- L: 92,
849
+ L: 93,
848
850
  S: void 0,
849
851
  C: (f, a) => f(...a)
850
852
  });
@@ -860,7 +862,7 @@ var ChannelContainer = ({ channel, roomId: _roomId, role, fullscreen }) => {
860
862
  } catch (err) {
861
863
  log.catch(err, void 0, {
862
864
  F: __dxlog_file2,
863
- L: 104,
865
+ L: 105,
864
866
  S: void 0,
865
867
  C: (f, a) => f(...a)
866
868
  });
@@ -876,8 +878,8 @@ var ChannelContainer = ({ channel, roomId: _roomId, role, fullscreen }) => {
876
878
  ]);
877
879
  const isJoined = callManager.joined && callManager.roomId === roomId;
878
880
  return /* @__PURE__ */ React10.createElement(StackItem.Content, {
879
- toolbar: !isJoined,
880
- classNames: isJoined && "h-full"
881
+ classNames: isJoined && "bs-full",
882
+ toolbar: !isJoined
881
883
  }, isJoined && !isNamed && /* @__PURE__ */ React10.createElement(DisplayNameMissing, null), isJoined && isNamed && /* @__PURE__ */ React10.createElement(Call.Root, null, /* @__PURE__ */ React10.createElement(Call.Grid, {
882
884
  fullscreen
883
885
  }), /* @__PURE__ */ React10.createElement(Call.Toolbar, {
@@ -982,4 +984,4 @@ export {
982
984
  ChannelContainer,
983
985
  ChannelContainer_default
984
986
  };
985
- //# sourceMappingURL=chunk-C3XFMUAY.mjs.map
987
+ //# sourceMappingURL=chunk-2KZ4ODHU.mjs.map