@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,185 +1,44 @@
1
1
  import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
2
  import {
3
3
  ThreadCapabilities
4
- } from "./chunk-K4KAUOKT.mjs";
4
+ } from "./chunk-PYTVBN5J.mjs";
5
5
  import {
6
6
  ChatContainer_default
7
- } from "./chunk-P6RLFCNT.mjs";
7
+ } from "./chunk-DKCQCENK.mjs";
8
8
  import {
9
9
  useDebugMode
10
- } from "./chunk-O3V45YJP.mjs";
10
+ } from "./chunk-JNPKMT7O.mjs";
11
11
  import {
12
- THREAD_PLUGIN
13
- } from "./chunk-ESQC6SYE.mjs";
12
+ meta
13
+ } from "./chunk-GRLRWTRU.mjs";
14
14
 
15
- // packages/plugins/plugin-thread/src/components/ChannelContainer.tsx
15
+ // src/components/ChannelContainer.tsx
16
16
  import { useSignals as _useSignals10 } from "@preact-signals/safe-react/tracking";
17
17
  import { Rx } from "@effect-rx/rx-react";
18
18
  import React10, { useCallback as useCallback2, useEffect as useEffect6, useMemo as useMemo4, useState as useState4 } from "react";
19
19
  import { useCapabilities, useCapability as useCapability4 } from "@dxos/app-framework";
20
20
  import { Context } from "@dxos/context";
21
+ import { failUndefined } from "@dxos/debug";
21
22
  import { log } from "@dxos/log";
22
23
  import { useClient } from "@dxos/react-client";
23
24
  import { fullyQualifiedId as fullyQualifiedId2, getSpace } from "@dxos/react-client/echo";
24
25
  import { useIdentity } from "@dxos/react-client/halo";
25
- import { useTranslation as useTranslation3, Input, ElevationProvider } from "@dxos/react-ui";
26
- import { ControlGroup, ControlItemInput, ControlGroupButton } from "@dxos/react-ui-form";
27
- 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";
28
29
  import { useSoundEffect } from "@dxos/react-ui-sfx";
29
30
  import { StackItem } from "@dxos/react-ui-stack";
30
31
 
31
- // packages/plugins/plugin-thread/src/components/Call/Call.tsx
32
+ // src/components/Call/Call.tsx
32
33
  import { useSignals as _useSignals9 } from "@preact-signals/safe-react/tracking";
33
34
  import React9 from "react";
34
35
  import { useCapability as useCapability3 } from "@dxos/app-framework";
35
36
 
36
- // packages/plugins/plugin-thread/src/components/Call/Toolbar.tsx
37
+ // src/components/Media/AudioStream.tsx
37
38
  import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
38
- import React from "react";
39
- import { useAppGraph, useCapability } from "@dxos/app-framework";
40
- import { useNode, useActions } from "@dxos/plugin-graph";
41
- import { fullyQualifiedId } from "@dxos/react-client/echo";
42
- import { Icon, IconButton, Toolbar as NativeToolbar, toLocalizedString, useTranslation } from "@dxos/react-ui";
43
- import { groupHoverControlItemWithTransition, mx } from "@dxos/react-ui-theme";
44
- var Toolbar = ({ classNames, channel, participants, autoHideControls = true, onJoin, onLeave }) => {
45
- var _effect = _useSignals();
46
- try {
47
- const { t } = useTranslation(THREAD_PLUGIN);
48
- const { graph } = useAppGraph();
49
- const call = useCapability(ThreadCapabilities.CallManager);
50
- const node = useNode(graph, channel && fullyQualifiedId(channel));
51
- const actions = useActions(graph, node?.id).filter((action) => action.properties.disposition === "toolbar");
52
- const isScreensharing = call.media.screenshareTrack !== void 0;
53
- const canSharescreen = typeof navigator.mediaDevices !== "undefined" && navigator.mediaDevices.getDisplayMedia !== void 0;
54
- return /* @__PURE__ */ React.createElement("div", {
55
- className: mx("z-20 flex justify-center m-8", autoHideControls && groupHoverControlItemWithTransition)
56
- }, /* @__PURE__ */ React.createElement(NativeToolbar.Root, {
57
- classNames: [
58
- "p-2 bg-modalSurface rounded-md shadow-md",
59
- classNames
60
- ]
61
- }, /* @__PURE__ */ React.createElement(ToggleButton, {
62
- active: call.media.audioEnabled,
63
- state: {
64
- on: {
65
- icon: "ph--microphone--regular",
66
- label: t("mic off"),
67
- onClick: () => call.turnAudioOff(),
68
- classNames: "bg-callActive"
69
- },
70
- off: {
71
- icon: "ph--microphone-slash--duotone",
72
- label: t("mic on"),
73
- onClick: () => call.turnAudioOn(),
74
- classNames: [
75
- call.joined && "bg-callAlert"
76
- ]
77
- }
78
- }
79
- }), /* @__PURE__ */ React.createElement(ToggleButton, {
80
- active: call.media.videoEnabled,
81
- state: {
82
- on: {
83
- icon: "ph--video-camera--regular",
84
- label: t("camera off"),
85
- onClick: () => call.turnVideoOff()
86
- },
87
- off: {
88
- icon: "ph--video-camera-slash--duotone",
89
- label: t("camera on"),
90
- onClick: () => call.turnVideoOn()
91
- }
92
- }
93
- }), participants !== void 0 && /* @__PURE__ */ React.createElement("div", {
94
- className: "flex justify-center items-center gap-2 is-[5rem] text-xs text-subdued"
95
- }, /* @__PURE__ */ React.createElement(Icon, {
96
- icon: "ph--users--regular",
97
- size: 4
98
- }), /* @__PURE__ */ React.createElement("div", null, participants)) || /* @__PURE__ */ React.createElement(NativeToolbar.Separator, {
99
- variant: "gap"
100
- }), call.joined && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(ToggleButton, {
101
- disabled: !canSharescreen,
102
- active: isScreensharing,
103
- state: {
104
- on: {
105
- icon: "ph--monitor--regular",
106
- label: t("screenshare off"),
107
- onClick: () => call.turnScreenshareOff()
108
- },
109
- off: {
110
- icon: "ph--monitor-arrow-up--duotone",
111
- label: t("screenshare on"),
112
- onClick: () => call.turnScreenshareOn()
113
- }
114
- }
115
- }), actions.map((action) => /* @__PURE__ */ React.createElement(IconButton, {
116
- key: action.id,
117
- ...defaultButtonProps,
118
- icon: action.properties.icon,
119
- label: toLocalizedString(action.properties.label, t),
120
- classNames: action.properties.classNames,
121
- onClick: () => action.data({
122
- node
123
- })
124
- })), /* @__PURE__ */ React.createElement(ToggleButton, {
125
- active: call.raisedHand,
126
- state: {
127
- on: {
128
- icon: "ph--hand-waving--regular",
129
- label: t("lower hand"),
130
- onClick: () => call.setRaisedHand(false),
131
- classNames: [
132
- call.joined && "bg-callAlert"
133
- ]
134
- },
135
- off: {
136
- icon: "ph--hand-palm--duotone",
137
- label: t("raise hand"),
138
- onClick: () => call.setRaisedHand(true)
139
- }
140
- }
141
- })), call.joined ? /* @__PURE__ */ React.createElement(IconButton, {
142
- variant: "destructive",
143
- icon: "ph--phone-x--regular",
144
- label: t("leave call"),
145
- onClick: onLeave
146
- }) : /* @__PURE__ */ React.createElement(IconButton, {
147
- variant: "primary",
148
- icon: "ph--phone-incoming--regular",
149
- label: t("join call"),
150
- onClick: onJoin
151
- })));
152
- } finally {
153
- _effect.f();
154
- }
155
- };
156
- Toolbar.displayName = "MeetingToolbar";
157
- var defaultButtonProps = {
158
- size: 5,
159
- iconOnly: true
160
- };
161
- var ToggleButton = ({ active, state }) => {
162
- var _effect = _useSignals();
163
- try {
164
- return /* @__PURE__ */ React.createElement(IconButton, {
165
- ...defaultButtonProps,
166
- classNames: [
167
- active ? state.on.classNames ?? "bg-callActive" : state.off.classNames
168
- ],
169
- icon: active ? state.on.icon : state.off.icon,
170
- label: active ? state.on.label : state.off.label,
171
- onClick: active ? state.on.onClick : state.off.onClick
172
- });
173
- } finally {
174
- _effect.f();
175
- }
176
- };
177
-
178
- // packages/plugins/plugin-thread/src/components/Media/AudioStream.tsx
179
- import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
180
- import React2, { useEffect, useRef } from "react";
39
+ import React, { useEffect, useRef } from "react";
181
40
  var AudioStream = ({ tracks }) => {
182
- var _effect = _useSignals2();
41
+ var _effect = _useSignals();
183
42
  try {
184
43
  const mediaStreamRef = useRef(new MediaStream());
185
44
  const ref = useRef(null);
@@ -202,10 +61,10 @@ var AudioStream = ({ tracks }) => {
202
61
  });
203
62
  audio.srcObject = mediaStream;
204
63
  };
205
- return /* @__PURE__ */ React2.createElement(React2.Fragment, null, /* @__PURE__ */ React2.createElement("audio", {
64
+ return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("audio", {
206
65
  ref,
207
66
  autoPlay: true
208
- }), tracks.map((track) => /* @__PURE__ */ React2.createElement(AudioTrack, {
67
+ }), tracks.map((track) => /* @__PURE__ */ React.createElement(AudioTrack, {
209
68
  key: track.id,
210
69
  track,
211
70
  mediaStream: mediaStreamRef.current,
@@ -231,12 +90,12 @@ var AudioTrack = ({ track, mediaStream, resetSrcObject }) => {
231
90
  return null;
232
91
  };
233
92
 
234
- // packages/plugins/plugin-thread/src/components/Media/VideoObject.tsx
235
- import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
236
- import React3, { forwardRef, memo, useEffect as useEffect2, useRef as useRef2 } from "react";
237
- import { mx as mx2 } from "@dxos/react-ui-theme";
93
+ // src/components/Media/VideoObject.tsx
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";
238
97
  var VideoObject = /* @__PURE__ */ memo(/* @__PURE__ */ forwardRef(({ videoStream, classNames, flip, contain, ...rest }, ref) => {
239
- var _effect = _useSignals3();
98
+ var _effect = _useSignals2();
240
99
  try {
241
100
  const internalRef = useRef2(null);
242
101
  useEffect2(() => {
@@ -250,8 +109,8 @@ var VideoObject = /* @__PURE__ */ memo(/* @__PURE__ */ forwardRef(({ videoStream
250
109
  videoStream,
251
110
  internalRef.current
252
111
  ]);
253
- return /* @__PURE__ */ React3.createElement("video", {
254
- 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),
255
114
  ref: (v) => {
256
115
  internalRef.current = v;
257
116
  if (ref === null) {
@@ -271,29 +130,29 @@ var VideoObject = /* @__PURE__ */ memo(/* @__PURE__ */ forwardRef(({ videoStream
271
130
  }));
272
131
  VideoObject.displayName = "VideoObject";
273
132
 
274
- // packages/plugins/plugin-thread/src/components/Participant/Participant.tsx
275
- import { useSignals as _useSignals7 } from "@preact-signals/safe-react/tracking";
276
- import React7, { memo as memo2, useMemo as useMemo2 } from "react";
277
- import { useCapability as useCapability2 } from "@dxos/app-framework";
133
+ // src/components/Participant/Participant.tsx
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";
278
137
 
279
- // packages/plugins/plugin-thread/src/components/ResponsiveGrid/ResponsiveContainer.tsx
280
- import { useSignals as _useSignals4 } from "@preact-signals/safe-react/tracking";
281
- import React4 from "react";
282
- import { mx as mx3 } from "@dxos/react-ui-theme";
138
+ // src/components/ResponsiveGrid/ResponsiveContainer.tsx
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";
283
142
  var ResponsiveContainer = ({ children }) => {
284
- var _effect = _useSignals4();
143
+ var _effect = _useSignals3();
285
144
  try {
286
145
  return (
287
146
  // Outer container that takes full size of parent.
288
- /* @__PURE__ */ React4.createElement("div", {
147
+ /* @__PURE__ */ React3.createElement("div", {
289
148
  role: "none",
290
149
  className: "relative flex w-full h-full"
291
- }, /* @__PURE__ */ React4.createElement("div", {
150
+ }, /* @__PURE__ */ React3.createElement("div", {
292
151
  role: "none",
293
152
  className: "absolute inset-0 flex justify-center items-center"
294
- }, /* @__PURE__ */ React4.createElement("div", {
153
+ }, /* @__PURE__ */ React3.createElement("div", {
295
154
  role: "none",
296
- 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")
297
156
  }, children)))
298
157
  );
299
158
  } finally {
@@ -301,20 +160,20 @@ var ResponsiveContainer = ({ children }) => {
301
160
  }
302
161
  };
303
162
 
304
- // packages/plugins/plugin-thread/src/components/ResponsiveGrid/ResponsiveGrid.tsx
305
- import { useSignals as _useSignals5 } from "@preact-signals/safe-react/tracking";
306
- import React5, { useLayoutEffect, useState, useEffect as useEffect3, useMemo, useCallback } from "react";
163
+ // src/components/ResponsiveGrid/ResponsiveGrid.tsx
164
+ import { useSignals as _useSignals4 } from "@preact-signals/safe-react/tracking";
165
+ import React4, { useCallback, useEffect as useEffect3, useLayoutEffect, useMemo, useState } from "react";
307
166
  import { useResizeDetector } from "react-resize-detector";
308
167
  import { invariant } from "@dxos/invariant";
309
- import { mx as mx4 } from "@dxos/react-ui-theme";
310
- var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-thread/src/components/ResponsiveGrid/ResponsiveGrid.tsx";
168
+ import { mx as mx3 } from "@dxos/react-ui-theme";
169
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/components/ResponsiveGrid/ResponsiveGrid.tsx";
311
170
  var ASPECT_RATIO = 16 / 9;
312
171
  var MIN_GALLERY_HEIGHT = 250;
313
172
  var DEFAULT_GAP = 8;
314
173
  var maxImageSize = "w-[2560px] h-[1440px]";
315
174
  var defaultGetId = (item) => item.id;
316
175
  var ResponsiveGrid = ({ classNames, Cell, gap = DEFAULT_GAP, getId: getId2 = defaultGetId, items, pinned, autoHideGallery = false, debug, onPinnedChange }) => {
317
- var _effect = _useSignals5();
176
+ var _effect = _useSignals4();
318
177
  try {
319
178
  const { width: containerWidth = 0, height: containerHeight = 0, ref: containerRef } = useResizeDetector({
320
179
  refreshRate: 100
@@ -401,47 +260,47 @@ var ResponsiveGrid = ({ classNames, Cell, gap = DEFAULT_GAP, getId: getId2 = def
401
260
  pinned,
402
261
  onPinnedChange
403
262
  ]);
404
- return /* @__PURE__ */ React5.createElement("div", {
263
+ return /* @__PURE__ */ React4.createElement("div", {
405
264
  ref: containerRef,
406
- className: mx4("relative w-full h-full", classNames)
407
- }, /* @__PURE__ */ React5.createElement("div", {
265
+ className: mx3("relative w-full h-full", classNames)
266
+ }, /* @__PURE__ */ React4.createElement("div", {
408
267
  className: "absolute inset-0 flex flex-col grow gap-2"
409
- }, pinnedItem && /* @__PURE__ */ React5.createElement("div", {
410
- 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"),
411
270
  style: hideGallery ? {} : {
412
271
  height: dividerHeight
413
272
  }
414
- }, /* @__PURE__ */ React5.createElement(SoloItem, {
273
+ }, /* @__PURE__ */ React4.createElement(SoloItem, {
415
274
  id: getId2(pinnedItem),
416
275
  debug
417
- })), !hideGallery && /* @__PURE__ */ React5.createElement("div", {
276
+ })), !hideGallery && /* @__PURE__ */ React4.createElement("div", {
418
277
  ref: gridContainerRef,
419
278
  className: "flex grow-[1] overflow-hidden justify-center items-center",
420
279
  style: hideGallery ? {} : {
421
280
  minHeight: MIN_GALLERY_HEIGHT
422
281
  }
423
- }, mainItems.length === 1 && /* @__PURE__ */ React5.createElement("div", {
282
+ }, mainItems.length === 1 && /* @__PURE__ */ React4.createElement("div", {
424
283
  style: {
425
284
  width: cellWidth
426
285
  },
427
286
  className: "flex h-full"
428
- }, /* @__PURE__ */ React5.createElement(SoloItem, {
287
+ }, /* @__PURE__ */ React4.createElement(SoloItem, {
429
288
  id: getId2(mainItems[0]),
430
289
  debug
431
- })), mainItems.length > 1 && columns > 0 && /* @__PURE__ */ React5.createElement("div", {
290
+ })), mainItems.length > 1 && columns > 0 && /* @__PURE__ */ React4.createElement("div", {
432
291
  role: "grid",
433
292
  style: {
434
293
  display: "grid",
435
294
  gridTemplateColumns: `repeat(${columns}, ${cellWidth}px)`,
436
295
  gap: `${gap}px`
437
296
  }
438
- }, mainItems.map((item) => /* @__PURE__ */ React5.createElement("div", {
297
+ }, mainItems.map((item) => /* @__PURE__ */ React4.createElement("div", {
439
298
  key: getId2(item),
440
299
  "data-grid-item": getId2(item),
441
- className: mx4("aspect-video max-h-full max-w-full w-auto h-auto", debug && "border border-primary-500")
442
- }))))), /* @__PURE__ */ React5.createElement("div", {
443
- className: mx4(debug && "opacity-10")
444
- }, 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, {
445
304
  key: getId2(item),
446
305
  classNames: "absolute transition-all duration-500",
447
306
  item,
@@ -454,14 +313,14 @@ var ResponsiveGrid = ({ classNames, Cell, gap = DEFAULT_GAP, getId: getId2 = def
454
313
  }
455
314
  };
456
315
  var SoloItem = ({ debug, id }) => {
457
- var _effect = _useSignals5();
316
+ var _effect = _useSignals4();
458
317
  try {
459
- return /* @__PURE__ */ React5.createElement(ResponsiveContainer, null, /* @__PURE__ */ React5.createElement("div", {
318
+ return /* @__PURE__ */ React4.createElement(ResponsiveContainer, null, /* @__PURE__ */ React4.createElement("div", {
460
319
  "data-grid-item": id,
461
- className: mx4("aspect-video overflow-hidden", debug && "z-20 border-2 border-primary-500")
462
- }, /* @__PURE__ */ React5.createElement("img", {
320
+ className: mx3("aspect-video overflow-hidden", debug && "z-20 border-2 border-primary-500")
321
+ }, /* @__PURE__ */ React4.createElement("img", {
463
322
  alt: "placeholder video",
464
- className: mx4("opacity-0", maxImageSize)
323
+ className: mx3("opacity-0", maxImageSize)
465
324
  })));
466
325
  } finally {
467
326
  _effect.f();
@@ -530,16 +389,16 @@ var fitAspectRatio = (outerWidth, outerHeight, aspectRatio) => {
530
389
  };
531
390
  };
532
391
 
533
- // packages/plugins/plugin-thread/src/components/ResponsiveGrid/ResponsiveGridItem.tsx
534
- import { useSignals as _useSignals6 } from "@preact-signals/safe-react/tracking";
535
- import React6, { useEffect as useEffect4, useState as useState2 } from "react";
536
- import { Icon as Icon2, IconButton as IconButton2, useTranslation as useTranslation2 } from "@dxos/react-ui";
392
+ // src/components/ResponsiveGrid/ResponsiveGridItem.tsx
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";
537
396
  import { Waveform } from "@dxos/react-ui-sfx";
538
- import { groupHoverControlItemWithTransition as groupHoverControlItemWithTransition2, mx as mx5 } from "@dxos/react-ui-theme";
397
+ import { groupHoverControlItemWithTransition, mx as mx4 } from "@dxos/react-ui-theme";
539
398
  var ResponsiveGridItem = ({ children, classNames, item, style, name, self, pinned, screenshare, video, mute, wave, speaking, onClick }) => {
540
- var _effect = _useSignals6();
399
+ var _effect = _useSignals5();
541
400
  try {
542
- const { t } = useTranslation2(THREAD_PLUGIN);
401
+ const { t } = useTranslation(meta.id);
543
402
  const iconProps = {
544
403
  wave: {
545
404
  icon: "ph--hand-waving--duotone",
@@ -565,32 +424,32 @@ var ResponsiveGridItem = ({ children, classNames, item, style, name, self, pinne
565
424
  }, [
566
425
  speaking
567
426
  ]);
568
- return /* @__PURE__ */ React6.createElement("div", {
569
- 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),
570
429
  style
571
- }, children, onClick && /* @__PURE__ */ React6.createElement("div", {
430
+ }, children, onClick && /* @__PURE__ */ React5.createElement("div", {
572
431
  className: "z-10 absolute top-1 right-1 flex"
573
- }, /* @__PURE__ */ React6.createElement(IconButton2, {
574
- classNames: mx5("p-1 min-bs-1 rounded", groupHoverControlItemWithTransition2),
432
+ }, /* @__PURE__ */ React5.createElement(IconButton, {
433
+ classNames: mx4("p-1 min-bs-1 rounded", groupHoverControlItemWithTransition),
575
434
  iconOnly: true,
576
435
  icon: pinned ? "ph--x--regular" : "ph--arrows-out--regular",
577
436
  size: pinned ? 5 : 4,
578
437
  label: pinned ? t("icon unpin") : t("icon pin"),
579
438
  onClick: () => onClick?.(item)
580
- })), name && /* @__PURE__ */ React6.createElement("div", {
439
+ })), name && /* @__PURE__ */ React5.createElement("div", {
581
440
  className: "z-10 absolute bottom-1 left-8 right-1 flex justify-end gap-1 items-center"
582
- }, screenshare && /* @__PURE__ */ React6.createElement(Icon2, {
441
+ }, screenshare && /* @__PURE__ */ React5.createElement(Icon, {
583
442
  icon: "ph--broadcast--regular",
584
443
  size: pinned ? 5 : 4
585
- }), /* @__PURE__ */ React6.createElement("div", {
586
- className: mx5("bg-neutral-800 text-neutral-100 py-0.5 truncate rounded", pinned ? "px-2" : "px-1 text-xs")
587
- }, 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", {
588
447
  className: "z-10 absolute bottom-1 left-1 flex"
589
- }, speaking && /* @__PURE__ */ React6.createElement(Waveform, {
448
+ }, speaking && /* @__PURE__ */ React5.createElement(Waveform, {
590
449
  active: true,
591
450
  size: pinned ? 5 : 4
592
- }) || props && /* @__PURE__ */ React6.createElement(IconButton2, {
593
- 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),
594
453
  icon: props?.icon,
595
454
  label: props?.label,
596
455
  size: pinned ? 5 : 4,
@@ -601,20 +460,22 @@ var ResponsiveGridItem = ({ children, classNames, item, style, name, self, pinne
601
460
  }
602
461
  };
603
462
 
604
- // packages/plugins/plugin-thread/src/components/Participant/Participant.tsx
463
+ // src/components/Participant/Participant.tsx
605
464
  var SCREENSHARE_SUFFIX = "_screenshare";
606
465
  var Participant = /* @__PURE__ */ memo2(({ item: user, debug, ...props }) => {
607
- var _effect = _useSignals7();
466
+ var _effect = _useSignals6();
608
467
  try {
609
- const call = useCapability2(ThreadCapabilities.CallManager);
468
+ const call = useCapability(ThreadCapabilities.CallManager);
610
469
  const isSelf = call.self.id !== void 0 && user.id !== void 0 && user.id.startsWith(call.self.id);
611
470
  const isScreenshare = user.id?.endsWith(SCREENSHARE_SUFFIX);
612
- 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;
613
472
  const videoStream = useMemo2(() => {
614
- if (isSelf && !isScreenshare) {
615
- return call.media.videoStream;
616
- } else if (isSelf && isScreenshare) {
617
- 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
+ }
618
479
  } else if (!isSelf) {
619
480
  return pulledVideoStream;
620
481
  }
@@ -625,7 +486,7 @@ var Participant = /* @__PURE__ */ memo2(({ item: user, debug, ...props }) => {
625
486
  call.media.screenshareVideoStream,
626
487
  pulledVideoStream
627
488
  ]);
628
- return /* @__PURE__ */ React7.createElement(ResponsiveGridItem, {
489
+ return /* @__PURE__ */ React6.createElement(ResponsiveGridItem, {
629
490
  ...props,
630
491
  item: user,
631
492
  name: user.name,
@@ -636,7 +497,7 @@ var Participant = /* @__PURE__ */ memo2(({ item: user, debug, ...props }) => {
636
497
  wave: user.raisedHand,
637
498
  speaking: user.speaking,
638
499
  debug
639
- }, /* @__PURE__ */ React7.createElement(VideoObject, {
500
+ }, /* @__PURE__ */ React6.createElement(VideoObject, {
640
501
  videoStream,
641
502
  flip: isSelf && !isScreenshare,
642
503
  contain: !!isScreenshare,
@@ -648,12 +509,12 @@ var Participant = /* @__PURE__ */ memo2(({ item: user, debug, ...props }) => {
648
509
  });
649
510
  Participant.displayName = "Participant";
650
511
 
651
- // packages/plugins/plugin-thread/src/components/Participant/ParticipantGrid.tsx
652
- import { useSignals as _useSignals8 } from "@preact-signals/safe-react/tracking";
653
- import React8, { useEffect as useEffect5, useMemo as useMemo3, useState as useState3 } from "react";
512
+ // src/components/Participant/ParticipantGrid.tsx
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";
654
515
  var getId = (user) => user.id;
655
516
  var ParticipantGrid = ({ classNames, self, users, fullscreen, debug }) => {
656
- var _effect = _useSignals8();
517
+ var _effect = _useSignals7();
657
518
  try {
658
519
  const [pinned, setPinned] = useState3();
659
520
  const allUsers = useMemo3(() => {
@@ -707,7 +568,7 @@ var ParticipantGrid = ({ classNames, self, users, fullscreen, debug }) => {
707
568
  return 0;
708
569
  }
709
570
  });
710
- return /* @__PURE__ */ React8.createElement(ResponsiveGrid, {
571
+ return /* @__PURE__ */ React7.createElement(ResponsiveGrid, {
711
572
  classNames,
712
573
  Cell: Participant,
713
574
  debug,
@@ -722,7 +583,149 @@ var ParticipantGrid = ({ classNames, self, users, fullscreen, debug }) => {
722
583
  }
723
584
  };
724
585
 
725
- // packages/plugins/plugin-thread/src/components/Call/Call.tsx
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
+
728
+ // src/components/Call/Call.tsx
726
729
  var CallRoot = ({ children }) => {
727
730
  var _effect = _useSignals9();
728
731
  try {
@@ -739,7 +742,7 @@ var CallAudio = () => {
739
742
  try {
740
743
  const call = useCapability3(ThreadCapabilities.CallManager);
741
744
  return /* @__PURE__ */ React9.createElement(AudioStream, {
742
- tracks: call.pulledAudioTracks
745
+ tracks: call.audioTracksToPlay
743
746
  });
744
747
  } finally {
745
748
  _effect.f();
@@ -785,14 +788,14 @@ var Call = {
785
788
  Toolbar: CallToolbar
786
789
  };
787
790
 
788
- // packages/plugins/plugin-thread/src/components/ChannelContainer.tsx
789
- var __dxlog_file2 = "/home/runner/work/dxos/dxos/packages/plugins/plugin-thread/src/components/ChannelContainer.tsx";
791
+ // src/components/ChannelContainer.tsx
792
+ var __dxlog_file2 = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/components/ChannelContainer.tsx";
790
793
  var ChannelContainer = ({ channel, roomId: _roomId, role, fullscreen }) => {
791
794
  var _effect = _useSignals10();
792
795
  try {
793
796
  const space = getSpace(channel);
794
797
  const callManager = useCapability4(ThreadCapabilities.CallManager);
795
- const roomId = channel ? fullyQualifiedId2(channel) : _roomId;
798
+ const roomId = _roomId ?? (channel ? fullyQualifiedId2(channel) : failUndefined());
796
799
  const identity = useIdentity();
797
800
  const isNamed = !!identity?.profile?.displayName;
798
801
  const joinSound = useSoundEffect("JoinCall");
@@ -801,7 +804,7 @@ var ChannelContainer = ({ channel, roomId: _roomId, role, fullscreen }) => {
801
804
  useEffect6(() => {
802
805
  const ctx = new Context(void 0, {
803
806
  F: __dxlog_file2,
804
- L: 47
807
+ L: 49
805
808
  });
806
809
  callManager.left.on(ctx, (roomId2) => {
807
810
  extensions.forEach((extension) => {
@@ -843,7 +846,7 @@ var ChannelContainer = ({ channel, roomId: _roomId, role, fullscreen }) => {
843
846
  } catch (err) {
844
847
  log.catch(err, void 0, {
845
848
  F: __dxlog_file2,
846
- L: 91,
849
+ L: 93,
847
850
  S: void 0,
848
851
  C: (f, a) => f(...a)
849
852
  });
@@ -859,7 +862,7 @@ var ChannelContainer = ({ channel, roomId: _roomId, role, fullscreen }) => {
859
862
  } catch (err) {
860
863
  log.catch(err, void 0, {
861
864
  F: __dxlog_file2,
862
- L: 103,
865
+ L: 105,
863
866
  S: void 0,
864
867
  C: (f, a) => f(...a)
865
868
  });
@@ -898,7 +901,7 @@ var ChannelContainer_default = ChannelContainer;
898
901
  var DisplayNameMissing = () => {
899
902
  var _effect = _useSignals10();
900
903
  try {
901
- const { t } = useTranslation3(THREAD_PLUGIN);
904
+ const { t } = useTranslation3(meta.id);
902
905
  const client = useClient();
903
906
  const [displayName, setDisplayName] = useState4("");
904
907
  const handleChange = useCallback2((event) => setDisplayName(event.target.value), []);
@@ -934,7 +937,7 @@ var useChannelToolbarActions = (onJoinCall) => {
934
937
  label: [
935
938
  "channel toolbar title",
936
939
  {
937
- ns: THREAD_PLUGIN
940
+ ns: meta.id
938
941
  }
939
942
  ]
940
943
  }),
@@ -942,7 +945,7 @@ var useChannelToolbarActions = (onJoinCall) => {
942
945
  label: [
943
946
  "start video call label",
944
947
  {
945
- ns: THREAD_PLUGIN
948
+ ns: meta.id
946
949
  }
947
950
  ],
948
951
  icon: "ph--video-camera--regular",
@@ -981,4 +984,4 @@ export {
981
984
  ChannelContainer,
982
985
  ChannelContainer_default
983
986
  };
984
- //# sourceMappingURL=chunk-2RNIPFDA.mjs.map
987
+ //# sourceMappingURL=chunk-SNKFZQST.mjs.map