@dxos/plugin-thread 0.8.4-main.72ec0f3 → 0.8.4-main.937b3ca

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 (353) hide show
  1. package/dist/lib/browser/app-graph-builder-SPAZN5XL.mjs +188 -0
  2. package/dist/lib/browser/app-graph-builder-SPAZN5XL.mjs.map +7 -0
  3. package/dist/lib/browser/blueprint-definition-UQ63QKQG.mjs +17 -0
  4. package/dist/lib/browser/blueprint-definition-UQ63QKQG.mjs.map +7 -0
  5. package/dist/lib/browser/blueprints/index.mjs +8 -0
  6. package/dist/lib/browser/call-manager-YBRTG6T3.mjs +26 -0
  7. package/dist/lib/browser/call-manager-YBRTG6T3.mjs.map +7 -0
  8. package/dist/lib/browser/{chunk-KOBXMDCI.mjs → chunk-DLO2G3DM.mjs} +14 -12
  9. package/dist/lib/browser/chunk-DLO2G3DM.mjs.map +7 -0
  10. package/dist/lib/browser/{chunk-ZCW3NSDZ.mjs → chunk-ERK254BS.mjs} +68 -51
  11. package/dist/lib/browser/chunk-ERK254BS.mjs.map +7 -0
  12. package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
  13. package/dist/lib/browser/chunk-TAWDJPMD.mjs +293 -0
  14. package/dist/lib/browser/chunk-TAWDJPMD.mjs.map +7 -0
  15. package/dist/lib/browser/chunk-VZICDGBW.mjs +1813 -0
  16. package/dist/lib/browser/chunk-VZICDGBW.mjs.map +7 -0
  17. package/dist/lib/browser/{blueprint-definition-6BKYTMJS.mjs → chunk-ZFLSTQSE.mjs} +40 -38
  18. package/dist/lib/browser/chunk-ZFLSTQSE.mjs.map +7 -0
  19. package/dist/lib/browser/index.mjs +113 -105
  20. package/dist/lib/browser/index.mjs.map +4 -4
  21. package/dist/lib/browser/markdown-TSXOA3GV.mjs +210 -0
  22. package/dist/lib/browser/markdown-TSXOA3GV.mjs.map +7 -0
  23. package/dist/lib/browser/meta.json +1 -1
  24. package/dist/lib/browser/operation-resolver-MDMEBYH2.mjs +441 -0
  25. package/dist/lib/browser/operation-resolver-MDMEBYH2.mjs.map +7 -0
  26. package/dist/lib/browser/react-root-Q7U5D3DA.mjs +25 -0
  27. package/dist/lib/browser/react-root-Q7U5D3DA.mjs.map +7 -0
  28. package/dist/lib/browser/{react-surface-BCD5ODQ6.mjs → react-surface-WDZQSDWH.mjs} +35 -35
  29. package/dist/lib/browser/react-surface-WDZQSDWH.mjs.map +7 -0
  30. package/dist/lib/browser/repair-TDKAFAGH.mjs +38 -0
  31. package/dist/lib/browser/repair-TDKAFAGH.mjs.map +7 -0
  32. package/dist/lib/browser/settings-OOKKVXV7.mjs +32 -0
  33. package/dist/lib/browser/settings-OOKKVXV7.mjs.map +7 -0
  34. package/dist/lib/browser/state-3LKZHDRI.mjs +24 -0
  35. package/dist/lib/browser/state-3LKZHDRI.mjs.map +7 -0
  36. package/dist/lib/browser/types/index.mjs +7 -7
  37. package/dist/lib/node-esm/app-graph-builder-3LJAPDUW.mjs +189 -0
  38. package/dist/lib/node-esm/app-graph-builder-3LJAPDUW.mjs.map +7 -0
  39. package/dist/lib/node-esm/blueprint-definition-MZZXXL37.mjs +18 -0
  40. package/dist/lib/node-esm/blueprint-definition-MZZXXL37.mjs.map +7 -0
  41. package/dist/lib/node-esm/blueprints/index.mjs +9 -0
  42. package/dist/lib/node-esm/call-manager-MMCTNFOH.mjs +27 -0
  43. package/dist/lib/node-esm/call-manager-MMCTNFOH.mjs.map +7 -0
  44. package/dist/lib/node-esm/chunk-3RD3IVVD.mjs +1814 -0
  45. package/dist/lib/node-esm/chunk-3RD3IVVD.mjs.map +7 -0
  46. package/dist/lib/node-esm/{blueprint-definition-6LEAWSC7.mjs → chunk-AQHPP6ZX.mjs} +40 -38
  47. package/dist/lib/node-esm/chunk-AQHPP6ZX.mjs.map +7 -0
  48. package/dist/lib/node-esm/chunk-ARTUUKTM.mjs +294 -0
  49. package/dist/lib/node-esm/chunk-ARTUUKTM.mjs.map +7 -0
  50. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  51. package/dist/lib/node-esm/{chunk-PZH2EDU5.mjs → chunk-KRBZBJRI.mjs} +14 -12
  52. package/dist/lib/node-esm/chunk-KRBZBJRI.mjs.map +7 -0
  53. package/dist/lib/node-esm/{chunk-7KZWZS2U.mjs → chunk-QP3KQOPQ.mjs} +68 -51
  54. package/dist/lib/node-esm/chunk-QP3KQOPQ.mjs.map +7 -0
  55. package/dist/lib/node-esm/index.mjs +113 -105
  56. package/dist/lib/node-esm/index.mjs.map +4 -4
  57. package/dist/lib/node-esm/markdown-N2UJ3D6L.mjs +211 -0
  58. package/dist/lib/node-esm/markdown-N2UJ3D6L.mjs.map +7 -0
  59. package/dist/lib/node-esm/meta.json +1 -1
  60. package/dist/lib/node-esm/operation-resolver-7PHDJZA2.mjs +442 -0
  61. package/dist/lib/node-esm/operation-resolver-7PHDJZA2.mjs.map +7 -0
  62. package/dist/lib/node-esm/react-root-SZIGQRDZ.mjs +26 -0
  63. package/dist/lib/node-esm/react-root-SZIGQRDZ.mjs.map +7 -0
  64. package/dist/lib/node-esm/{react-surface-WZH7OAO3.mjs → react-surface-24PNWUDX.mjs} +35 -35
  65. package/dist/lib/node-esm/react-surface-24PNWUDX.mjs.map +7 -0
  66. package/dist/lib/node-esm/repair-LHLLGXKF.mjs +39 -0
  67. package/dist/lib/node-esm/repair-LHLLGXKF.mjs.map +7 -0
  68. package/dist/lib/node-esm/settings-LXZQXSPL.mjs +33 -0
  69. package/dist/lib/node-esm/settings-LXZQXSPL.mjs.map +7 -0
  70. package/dist/lib/node-esm/state-YYAK5ENM.mjs +25 -0
  71. package/dist/lib/node-esm/state-YYAK5ENM.mjs.map +7 -0
  72. package/dist/lib/node-esm/types/index.mjs +7 -7
  73. package/dist/types/src/ThreadPlugin.d.ts +2 -1
  74. package/dist/types/src/ThreadPlugin.d.ts.map +1 -1
  75. package/dist/types/src/blueprints/index.d.ts +2 -0
  76. package/dist/types/src/blueprints/index.d.ts.map +1 -0
  77. package/dist/types/src/blueprints/thread-blueprint.d.ts +21 -0
  78. package/dist/types/src/blueprints/thread-blueprint.d.ts.map +1 -0
  79. package/dist/types/src/calls/call-manager.d.ts +40 -30
  80. package/dist/types/src/calls/call-manager.d.ts.map +1 -1
  81. package/dist/types/src/calls/call-swarm-synchronizer.d.ts +2 -2
  82. package/dist/types/src/calls/call-swarm-synchronizer.d.ts.map +1 -1
  83. package/dist/types/src/calls/media-manager.d.ts +1 -1
  84. package/dist/types/src/calls/media-manager.d.ts.map +1 -1
  85. package/dist/types/src/calls/util/calls-service.d.ts +1 -1
  86. package/dist/types/src/calls/util/calls-service.d.ts.map +1 -1
  87. package/dist/types/src/calls/util/task-scheduling.d.ts +2 -2
  88. package/dist/types/src/calls/util/task-scheduling.d.ts.map +1 -1
  89. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +6 -0
  90. package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +1 -0
  91. package/dist/types/src/capabilities/app-graph-builder/index.d.ts +3 -0
  92. package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +1 -0
  93. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts +9 -0
  94. package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts.map +1 -0
  95. package/dist/types/src/capabilities/blueprint-definition/index.d.ts +3 -0
  96. package/dist/types/src/capabilities/blueprint-definition/index.d.ts.map +1 -0
  97. package/dist/types/src/capabilities/call-manager/call-manager.d.ts +6 -0
  98. package/dist/types/src/capabilities/call-manager/call-manager.d.ts.map +1 -0
  99. package/dist/types/src/capabilities/call-manager/index.d.ts +3 -0
  100. package/dist/types/src/capabilities/call-manager/index.d.ts.map +1 -0
  101. package/dist/types/src/capabilities/index.d.ts +10 -16
  102. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  103. package/dist/types/src/capabilities/markdown/index.d.ts +3 -0
  104. package/dist/types/src/capabilities/markdown/index.d.ts.map +1 -0
  105. package/dist/types/src/capabilities/markdown/markdown.d.ts +5 -0
  106. package/dist/types/src/capabilities/markdown/markdown.d.ts.map +1 -0
  107. package/dist/types/src/capabilities/operation-resolver/index.d.ts +3 -0
  108. package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +1 -0
  109. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +5 -0
  110. package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +1 -0
  111. package/dist/types/src/capabilities/react-root/index.d.ts +6 -0
  112. package/dist/types/src/capabilities/react-root/index.d.ts.map +1 -0
  113. package/dist/types/src/capabilities/react-root/react-root.d.ts +9 -0
  114. package/dist/types/src/capabilities/react-root/react-root.d.ts.map +1 -0
  115. package/dist/types/src/capabilities/react-surface/index.d.ts +3 -0
  116. package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -0
  117. package/dist/types/src/capabilities/react-surface/react-surface.d.ts +5 -0
  118. package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -0
  119. package/dist/types/src/capabilities/repair/index.d.ts +3 -0
  120. package/dist/types/src/capabilities/repair/index.d.ts.map +1 -0
  121. package/dist/types/src/capabilities/repair/repair.d.ts +6 -0
  122. package/dist/types/src/capabilities/repair/repair.d.ts.map +1 -0
  123. package/dist/types/src/capabilities/settings/index.d.ts +3 -0
  124. package/dist/types/src/capabilities/settings/index.d.ts.map +1 -0
  125. package/dist/types/src/capabilities/settings/settings.d.ts +5 -0
  126. package/dist/types/src/capabilities/settings/settings.d.ts.map +1 -0
  127. package/dist/types/src/capabilities/state/index.d.ts +3 -0
  128. package/dist/types/src/capabilities/state/index.d.ts.map +1 -0
  129. package/dist/types/src/capabilities/state/state.d.ts +7 -0
  130. package/dist/types/src/capabilities/state/state.d.ts.map +1 -0
  131. package/dist/types/src/components/Call/Call.d.ts.map +1 -1
  132. package/dist/types/src/components/Call/Toolbar.d.ts.map +1 -1
  133. package/dist/types/src/components/CallSidebar.d.ts.map +1 -1
  134. package/dist/types/src/components/ChannelContainer.d.ts +4 -5
  135. package/dist/types/src/components/ChannelContainer.d.ts.map +1 -1
  136. package/dist/types/src/components/ChannelContainer.stories.d.ts +5 -1
  137. package/dist/types/src/components/ChannelContainer.stories.d.ts.map +1 -1
  138. package/dist/types/src/components/Chat.stories.d.ts +4 -0
  139. package/dist/types/src/components/Chat.stories.d.ts.map +1 -1
  140. package/dist/types/src/components/ChatContainer.d.ts +2 -2
  141. package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
  142. package/dist/types/src/components/Comments.stories.d.ts +4 -0
  143. package/dist/types/src/components/Comments.stories.d.ts.map +1 -1
  144. package/dist/types/src/components/CommentsContainer.d.ts.map +1 -1
  145. package/dist/types/src/components/CommentsThreadContainer.d.ts.map +1 -1
  146. package/dist/types/src/components/Lobby/Lobby.d.ts.map +1 -1
  147. package/dist/types/src/components/Media/VideoObject.d.ts +1 -1
  148. package/dist/types/src/components/Media/VideoObject.stories.d.ts +1 -1
  149. package/dist/types/src/components/MessageContainer.d.ts +3 -2
  150. package/dist/types/src/components/MessageContainer.d.ts.map +1 -1
  151. package/dist/types/src/components/Participant/Participant.d.ts.map +1 -1
  152. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts +4 -0
  153. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts.map +1 -1
  154. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts +4 -0
  155. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts.map +1 -1
  156. package/dist/types/src/components/ThreadCompanion.d.ts.map +1 -1
  157. package/dist/types/src/components/ThreadSettings.d.ts +4 -2
  158. package/dist/types/src/components/ThreadSettings.d.ts.map +1 -1
  159. package/dist/types/src/components/index.d.ts +2 -2
  160. package/dist/types/src/components/index.d.ts.map +1 -1
  161. package/dist/types/src/components/testing.d.ts +1 -1
  162. package/dist/types/src/components/testing.d.ts.map +1 -1
  163. package/dist/types/src/extensions/threads.d.ts +7 -2
  164. package/dist/types/src/extensions/threads.d.ts.map +1 -1
  165. package/dist/types/src/functions/create-proposals.d.ts.map +1 -1
  166. package/dist/types/src/hooks/analytics.d.ts +1 -2
  167. package/dist/types/src/hooks/analytics.d.ts.map +1 -1
  168. package/dist/types/src/index.d.ts +1 -1
  169. package/dist/types/src/index.d.ts.map +1 -1
  170. package/dist/types/src/meta.d.ts +2 -2
  171. package/dist/types/src/meta.d.ts.map +1 -1
  172. package/dist/types/src/testing/stories.d.ts +2 -1
  173. package/dist/types/src/testing/stories.d.ts.map +1 -1
  174. package/dist/types/src/translations.d.ts +4 -0
  175. package/dist/types/src/translations.d.ts.map +1 -1
  176. package/dist/types/src/types/Channel.d.ts +691 -12
  177. package/dist/types/src/types/Channel.d.ts.map +1 -1
  178. package/dist/types/src/types/capabilities.d.ts +23 -0
  179. package/dist/types/src/types/capabilities.d.ts.map +1 -0
  180. package/dist/types/src/types/index.d.ts +1 -1
  181. package/dist/types/src/types/index.d.ts.map +1 -1
  182. package/dist/types/src/types/types.d.ts +3213 -354
  183. package/dist/types/src/types/types.d.ts.map +1 -1
  184. package/dist/types/tsconfig.tsbuildinfo +1 -1
  185. package/package.json +86 -69
  186. package/src/ThreadPlugin.tsx +54 -90
  187. package/src/blueprints/index.ts +5 -0
  188. package/src/blueprints/thread-blueprint.ts +32 -0
  189. package/src/calls/call-manager.ts +76 -52
  190. package/src/calls/call-swarm-synchronizer.ts +2 -2
  191. package/src/calls/media-manager.ts +1 -1
  192. package/src/calls/util/calls-service.ts +1 -1
  193. package/src/calls/util/task-scheduling.ts +4 -4
  194. package/src/capabilities/app-graph-builder/app-graph-builder.ts +201 -0
  195. package/src/capabilities/app-graph-builder/index.ts +7 -0
  196. package/src/capabilities/blueprint-definition/blueprint-definition.ts +23 -0
  197. package/src/capabilities/blueprint-definition/index.ts +7 -0
  198. package/src/capabilities/call-manager/call-manager.ts +26 -0
  199. package/src/capabilities/call-manager/index.ts +7 -0
  200. package/src/capabilities/index.ts +10 -13
  201. package/src/capabilities/markdown/index.ts +7 -0
  202. package/src/capabilities/markdown/markdown.ts +83 -0
  203. package/src/capabilities/operation-resolver/index.ts +7 -0
  204. package/src/capabilities/operation-resolver/operation-resolver.ts +400 -0
  205. package/src/capabilities/react-root/index.ts +7 -0
  206. package/src/capabilities/react-root/react-root.tsx +20 -0
  207. package/src/capabilities/react-surface/index.ts +7 -0
  208. package/src/capabilities/react-surface/react-surface.tsx +97 -0
  209. package/src/capabilities/repair/index.ts +7 -0
  210. package/src/capabilities/repair/repair.ts +51 -0
  211. package/src/capabilities/settings/index.ts +7 -0
  212. package/src/capabilities/settings/settings.ts +33 -0
  213. package/src/capabilities/state/index.ts +7 -0
  214. package/src/capabilities/state/state.ts +22 -0
  215. package/src/components/Call/Call.tsx +7 -3
  216. package/src/components/Call/Toolbar.tsx +28 -20
  217. package/src/components/CallSidebar.tsx +4 -2
  218. package/src/components/ChannelContainer.stories.tsx +12 -10
  219. package/src/components/ChannelContainer.tsx +18 -16
  220. package/src/components/Chat.stories.tsx +8 -8
  221. package/src/components/ChatContainer.tsx +8 -9
  222. package/src/components/Comments.stories.tsx +22 -20
  223. package/src/components/CommentsContainer.tsx +1 -2
  224. package/src/components/CommentsThreadContainer.tsx +10 -11
  225. package/src/components/Lobby/Lobby.tsx +8 -6
  226. package/src/components/Media/AudioStream.tsx +2 -2
  227. package/src/components/Media/VideoObject.tsx +1 -1
  228. package/src/components/MessageContainer.tsx +54 -23
  229. package/src/components/Participant/Participant.tsx +31 -18
  230. package/src/components/ResponsiveGrid/ResponsiveContainer.tsx +1 -1
  231. package/src/components/ResponsiveGrid/ResponsiveGrid.tsx +1 -1
  232. package/src/components/ResponsiveGrid/ResponsiveGridItem.tsx +1 -1
  233. package/src/components/ThreadCompanion.tsx +70 -65
  234. package/src/components/ThreadSettings.tsx +6 -1
  235. package/src/components/command-extension.ts +2 -2
  236. package/src/components/index.ts +2 -5
  237. package/src/components/testing.ts +1 -3
  238. package/src/extensions/threads.ts +78 -43
  239. package/src/functions/create-proposals.ts +6 -7
  240. package/src/hooks/analytics.ts +23 -20
  241. package/src/index.ts +1 -1
  242. package/src/meta.ts +2 -2
  243. package/src/testing/stories.ts +15 -11
  244. package/src/translations.ts +2 -0
  245. package/src/types/Channel.ts +13 -10
  246. package/src/types/capabilities.ts +34 -0
  247. package/src/types/index.ts +1 -1
  248. package/src/types/types.ts +161 -74
  249. package/dist/lib/browser/ChannelContainer-MX5ABVGC.mjs +0 -16
  250. package/dist/lib/browser/ChatContainer-7F5Y6GXJ.mjs +0 -15
  251. package/dist/lib/browser/app-graph-builder-HNYLII5E.mjs +0 -170
  252. package/dist/lib/browser/app-graph-builder-HNYLII5E.mjs.map +0 -7
  253. package/dist/lib/browser/blueprint-definition-6BKYTMJS.mjs.map +0 -7
  254. package/dist/lib/browser/call-manager-MAXQLMMS.mjs +0 -24
  255. package/dist/lib/browser/call-manager-MAXQLMMS.mjs.map +0 -7
  256. package/dist/lib/browser/chunk-BBTXGRIR.mjs +0 -18
  257. package/dist/lib/browser/chunk-BBTXGRIR.mjs.map +0 -7
  258. package/dist/lib/browser/chunk-BQWQFTWT.mjs +0 -612
  259. package/dist/lib/browser/chunk-BQWQFTWT.mjs.map +0 -7
  260. package/dist/lib/browser/chunk-FR6MEAZI.mjs +0 -377
  261. package/dist/lib/browser/chunk-FR6MEAZI.mjs.map +0 -7
  262. package/dist/lib/browser/chunk-INQVAYPN.mjs +0 -989
  263. package/dist/lib/browser/chunk-INQVAYPN.mjs.map +0 -7
  264. package/dist/lib/browser/chunk-K2DUJRFJ.mjs +0 -27
  265. package/dist/lib/browser/chunk-K2DUJRFJ.mjs.map +0 -7
  266. package/dist/lib/browser/chunk-KOBXMDCI.mjs.map +0 -7
  267. package/dist/lib/browser/chunk-NMJEVD36.mjs +0 -168
  268. package/dist/lib/browser/chunk-NMJEVD36.mjs.map +0 -7
  269. package/dist/lib/browser/chunk-OOUDK7Q7.mjs +0 -23
  270. package/dist/lib/browser/chunk-OOUDK7Q7.mjs.map +0 -7
  271. package/dist/lib/browser/chunk-ZCW3NSDZ.mjs.map +0 -7
  272. package/dist/lib/browser/intent-resolver-BOUT4WGY.mjs +0 -361
  273. package/dist/lib/browser/intent-resolver-BOUT4WGY.mjs.map +0 -7
  274. package/dist/lib/browser/markdown-74EUSQGV.mjs +0 -171
  275. package/dist/lib/browser/markdown-74EUSQGV.mjs.map +0 -7
  276. package/dist/lib/browser/react-root-BVG7B2LW.mjs +0 -28
  277. package/dist/lib/browser/react-root-BVG7B2LW.mjs.map +0 -7
  278. package/dist/lib/browser/react-surface-BCD5ODQ6.mjs.map +0 -7
  279. package/dist/lib/browser/settings-LGQUZITB.mjs +0 -22
  280. package/dist/lib/browser/settings-LGQUZITB.mjs.map +0 -7
  281. package/dist/lib/browser/state-36REWXO5.mjs +0 -34
  282. package/dist/lib/browser/state-36REWXO5.mjs.map +0 -7
  283. package/dist/lib/node-esm/ChannelContainer-2JJJ3IDK.mjs +0 -17
  284. package/dist/lib/node-esm/ChatContainer-C526R4DI.mjs +0 -16
  285. package/dist/lib/node-esm/app-graph-builder-SOCKP4ST.mjs +0 -171
  286. package/dist/lib/node-esm/app-graph-builder-SOCKP4ST.mjs.map +0 -7
  287. package/dist/lib/node-esm/blueprint-definition-6LEAWSC7.mjs.map +0 -7
  288. package/dist/lib/node-esm/call-manager-LC4OS2KD.mjs +0 -25
  289. package/dist/lib/node-esm/call-manager-LC4OS2KD.mjs.map +0 -7
  290. package/dist/lib/node-esm/chunk-5DLH4MWN.mjs +0 -25
  291. package/dist/lib/node-esm/chunk-5DLH4MWN.mjs.map +0 -7
  292. package/dist/lib/node-esm/chunk-7KZWZS2U.mjs.map +0 -7
  293. package/dist/lib/node-esm/chunk-JF7THR7F.mjs +0 -990
  294. package/dist/lib/node-esm/chunk-JF7THR7F.mjs.map +0 -7
  295. package/dist/lib/node-esm/chunk-JJW6YMLC.mjs +0 -613
  296. package/dist/lib/node-esm/chunk-JJW6YMLC.mjs.map +0 -7
  297. package/dist/lib/node-esm/chunk-PZH2EDU5.mjs.map +0 -7
  298. package/dist/lib/node-esm/chunk-TJKM5JZT.mjs +0 -169
  299. package/dist/lib/node-esm/chunk-TJKM5JZT.mjs.map +0 -7
  300. package/dist/lib/node-esm/chunk-TWKGDFCS.mjs +0 -378
  301. package/dist/lib/node-esm/chunk-TWKGDFCS.mjs.map +0 -7
  302. package/dist/lib/node-esm/chunk-XI45H4IV.mjs +0 -28
  303. package/dist/lib/node-esm/chunk-XI45H4IV.mjs.map +0 -7
  304. package/dist/lib/node-esm/chunk-ZQAGII7M.mjs +0 -19
  305. package/dist/lib/node-esm/chunk-ZQAGII7M.mjs.map +0 -7
  306. package/dist/lib/node-esm/intent-resolver-45PLIFCJ.mjs +0 -362
  307. package/dist/lib/node-esm/intent-resolver-45PLIFCJ.mjs.map +0 -7
  308. package/dist/lib/node-esm/markdown-566XXB55.mjs +0 -172
  309. package/dist/lib/node-esm/markdown-566XXB55.mjs.map +0 -7
  310. package/dist/lib/node-esm/react-root-DCY6DKLC.mjs +0 -29
  311. package/dist/lib/node-esm/react-root-DCY6DKLC.mjs.map +0 -7
  312. package/dist/lib/node-esm/react-surface-WZH7OAO3.mjs.map +0 -7
  313. package/dist/lib/node-esm/settings-WKLJSP6R.mjs +0 -23
  314. package/dist/lib/node-esm/settings-WKLJSP6R.mjs.map +0 -7
  315. package/dist/lib/node-esm/state-X3W67GTL.mjs +0 -35
  316. package/dist/lib/node-esm/state-X3W67GTL.mjs.map +0 -7
  317. package/dist/types/src/capabilities/app-graph-builder.d.ts +0 -4
  318. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +0 -1
  319. package/dist/types/src/capabilities/blueprint-definition.d.ts +0 -5
  320. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +0 -1
  321. package/dist/types/src/capabilities/call-manager.d.ts +0 -5
  322. package/dist/types/src/capabilities/call-manager.d.ts.map +0 -1
  323. package/dist/types/src/capabilities/capabilities.d.ts +0 -27
  324. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  325. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  326. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  327. package/dist/types/src/capabilities/markdown.d.ts +0 -4
  328. package/dist/types/src/capabilities/markdown.d.ts.map +0 -1
  329. package/dist/types/src/capabilities/react-root.d.ts +0 -7
  330. package/dist/types/src/capabilities/react-root.d.ts.map +0 -1
  331. package/dist/types/src/capabilities/react-surface.d.ts +0 -4
  332. package/dist/types/src/capabilities/react-surface.d.ts.map +0 -1
  333. package/dist/types/src/capabilities/settings.d.ts +0 -4
  334. package/dist/types/src/capabilities/settings.d.ts.map +0 -1
  335. package/dist/types/src/capabilities/state.d.ts +0 -7
  336. package/dist/types/src/capabilities/state.d.ts.map +0 -1
  337. package/dist/types/src/types/Thread.d.ts +0 -167
  338. package/dist/types/src/types/Thread.d.ts.map +0 -1
  339. package/src/capabilities/app-graph-builder.ts +0 -194
  340. package/src/capabilities/blueprint-definition.ts +0 -38
  341. package/src/capabilities/call-manager.ts +0 -20
  342. package/src/capabilities/capabilities.ts +0 -33
  343. package/src/capabilities/intent-resolver.ts +0 -311
  344. package/src/capabilities/markdown.ts +0 -71
  345. package/src/capabilities/react-root.tsx +0 -17
  346. package/src/capabilities/react-surface.tsx +0 -90
  347. package/src/capabilities/settings.ts +0 -19
  348. package/src/capabilities/state.ts +0 -26
  349. package/src/types/Thread.ts +0 -26
  350. /package/dist/lib/browser/{ChannelContainer-MX5ABVGC.mjs.map → blueprints/index.mjs.map} +0 -0
  351. /package/dist/lib/browser/{ChatContainer-7F5Y6GXJ.mjs.map → chunk-J5LGTIGS.mjs.map} +0 -0
  352. /package/dist/lib/node-esm/{ChannelContainer-2JJJ3IDK.mjs.map → blueprints/index.mjs.map} +0 -0
  353. /package/dist/lib/node-esm/{ChatContainer-C526R4DI.mjs.map → chunk-HSLMI22Q.mjs.map} +0 -0
@@ -1,990 +0,0 @@
1
- import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
- import {
3
- ThreadCapabilities
4
- } from "./chunk-ZQAGII7M.mjs";
5
- import {
6
- ChatContainer_default
7
- } from "./chunk-TWKGDFCS.mjs";
8
- import {
9
- useDebugMode
10
- } from "./chunk-PZH2EDU5.mjs";
11
- import {
12
- meta
13
- } from "./chunk-XI45H4IV.mjs";
14
-
15
- // src/components/ChannelContainer.tsx
16
- import { useSignals as _useSignals10 } from "@preact-signals/safe-react/tracking";
17
- import { Atom } from "@effect-atom/atom-react";
18
- import React10, { useCallback as useCallback2, useEffect as useEffect6, useMemo as useMemo4, useState as useState4 } from "react";
19
- import { useCapabilities, useCapability as useCapability4 } from "@dxos/app-framework/react";
20
- import { Context } from "@dxos/context";
21
- import { failUndefined } from "@dxos/debug";
22
- import { Obj as Obj2 } from "@dxos/echo";
23
- import { log } from "@dxos/log";
24
- import { useClient } from "@dxos/react-client";
25
- import { getSpace } from "@dxos/react-client/echo";
26
- import { useIdentity } from "@dxos/react-client/halo";
27
- import { ElevationProvider, Input, useTranslation as useTranslation3 } from "@dxos/react-ui";
28
- import { ControlGroup, ControlGroupButton, ControlItemInput } from "@dxos/react-ui-form";
29
- import { MenuProvider, ToolbarMenu, createMenuAction, createMenuItemGroup, useMenuActions } from "@dxos/react-ui-menu";
30
- import { useSoundEffect } from "@dxos/react-ui-sfx";
31
- import { StackItem } from "@dxos/react-ui-stack";
32
-
33
- // src/components/Call/Call.tsx
34
- import { useSignals as _useSignals9 } from "@preact-signals/safe-react/tracking";
35
- import React9 from "react";
36
- import { useCapability as useCapability3 } from "@dxos/app-framework/react";
37
-
38
- // src/components/Media/AudioStream.tsx
39
- import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
40
- import React, { useEffect, useRef } from "react";
41
- var AudioStream = ({ tracks }) => {
42
- var _effect = _useSignals();
43
- try {
44
- const mediaStreamRef = useRef(new MediaStream());
45
- const ref = useRef(null);
46
- useEffect(() => {
47
- const audio = ref.current;
48
- if (!audio) {
49
- return;
50
- }
51
- const mediaStream = mediaStreamRef.current;
52
- audio.srcObject = mediaStream;
53
- }, []);
54
- const resetSrcObject = () => {
55
- const audio = ref.current;
56
- const mediaStream = mediaStreamRef.current;
57
- if (!audio || !mediaStream) {
58
- return;
59
- }
60
- audio.addEventListener("canplay", () => audio.play(), {
61
- once: true
62
- });
63
- audio.srcObject = mediaStream;
64
- };
65
- return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("audio", {
66
- ref,
67
- autoPlay: true
68
- }), tracks.map((track) => /* @__PURE__ */ React.createElement(AudioTrack, {
69
- key: track.id,
70
- track,
71
- mediaStream: mediaStreamRef.current,
72
- resetSrcObject
73
- })));
74
- } finally {
75
- _effect.f();
76
- }
77
- };
78
- var AudioTrack = ({ track, mediaStream, resetSrcObject }) => {
79
- useEffect(() => {
80
- const currentTrack = track;
81
- mediaStream.addTrack(currentTrack);
82
- resetSrcObject();
83
- return () => {
84
- mediaStream.removeTrack(currentTrack);
85
- resetSrcObject();
86
- };
87
- }, [
88
- track,
89
- mediaStream
90
- ]);
91
- return null;
92
- };
93
-
94
- // src/components/Media/VideoObject.tsx
95
- import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
96
- import React2, { forwardRef, memo, useEffect as useEffect2, useRef as useRef2 } from "react";
97
- import { mx } from "@dxos/react-ui-theme";
98
- var VideoObject = /* @__PURE__ */ memo(/* @__PURE__ */ forwardRef(({ videoStream, classNames, flip, contain, ...rest }, ref) => {
99
- var _effect = _useSignals2();
100
- try {
101
- const internalRef = useRef2(null);
102
- useEffect2(() => {
103
- const video = internalRef.current;
104
- if (video && videoStream) {
105
- video.srcObject = videoStream;
106
- video.setAttribute("autoplay", "true");
107
- video.setAttribute("playsinline", "true");
108
- }
109
- }, [
110
- videoStream,
111
- internalRef.current
112
- ]);
113
- return /* @__PURE__ */ React2.createElement("video", {
114
- className: mx("is-full aspect-video", flip && "scale-x-[-1]", contain ? "object-contain" : "object-cover", classNames),
115
- ref: (v) => {
116
- internalRef.current = v;
117
- if (ref === null) {
118
- return;
119
- }
120
- if (typeof ref === "function") {
121
- ref(v);
122
- } else {
123
- ref.current = v;
124
- }
125
- },
126
- ...rest
127
- });
128
- } finally {
129
- _effect.f();
130
- }
131
- }));
132
- VideoObject.displayName = "VideoObject";
133
-
134
- // src/components/Participant/Participant.tsx
135
- import { useSignals as _useSignals6 } from "@preact-signals/safe-react/tracking";
136
- import React6, { memo as memo2, useMemo as useMemo2 } from "react";
137
- import { useCapability } from "@dxos/app-framework/react";
138
-
139
- // src/components/ResponsiveGrid/ResponsiveContainer.tsx
140
- import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
141
- import React3 from "react";
142
- import { mx as mx2 } from "@dxos/react-ui-theme";
143
- var ResponsiveContainer = ({ children }) => {
144
- var _effect = _useSignals3();
145
- try {
146
- return (
147
- // Outer container that takes full size of parent.
148
- /* @__PURE__ */ React3.createElement("div", {
149
- role: "none",
150
- className: "relative flex is-full bs-full"
151
- }, /* @__PURE__ */ React3.createElement("div", {
152
- role: "none",
153
- className: "absolute inset-0 flex justify-center items-center"
154
- }, /* @__PURE__ */ React3.createElement("div", {
155
- role: "none",
156
- className: mx2("max-bs-full max-is-full is-auto bs-auto aspect-video")
157
- }, children)))
158
- );
159
- } finally {
160
- _effect.f();
161
- }
162
- };
163
-
164
- // src/components/ResponsiveGrid/ResponsiveGrid.tsx
165
- import { useSignals as _useSignals4 } from "@preact-signals/safe-react/tracking";
166
- import React4, { useCallback, useEffect as useEffect3, useLayoutEffect, useMemo, useState } from "react";
167
- import { useResizeDetector } from "react-resize-detector";
168
- import { invariant } from "@dxos/invariant";
169
- import { mx as mx3 } from "@dxos/react-ui-theme";
170
- var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/components/ResponsiveGrid/ResponsiveGrid.tsx";
171
- var ASPECT_RATIO = 16 / 9;
172
- var MIN_GALLERY_HEIGHT = 250;
173
- var DEFAULT_GAP = 8;
174
- var maxImageSize = "is-[2560px] bs-[1440px]";
175
- var defaultGetId = (item) => item.id;
176
- var ResponsiveGrid = ({ classNames, Cell, gap = DEFAULT_GAP, getId: getId2 = defaultGetId, items, pinned, autoHideGallery = false, debug, onPinnedChange }) => {
177
- var _effect = _useSignals4();
178
- try {
179
- const { width: containerWidth = 0, height: containerHeight = 0, ref: containerRef } = useResizeDetector({
180
- refreshRate: 100
181
- });
182
- const [dividerHeight, setDividerHeight] = useState(0);
183
- useEffect3(() => {
184
- if (containerWidth && containerHeight) {
185
- const { height: height2 } = fitAspectRatio(containerWidth, containerHeight, ASPECT_RATIO);
186
- setDividerHeight(Math.min(height2, containerHeight - MIN_GALLERY_HEIGHT));
187
- }
188
- }, [
189
- containerWidth,
190
- containerHeight
191
- ]);
192
- const pinnedItem = useMemo(() => items.find((item) => getId2(item) === pinned), [
193
- items,
194
- pinned
195
- ]);
196
- const mainItems = useMemo(() => items.filter((item) => getId2(item) !== pinned), [
197
- items,
198
- pinned
199
- ]);
200
- const hideGallery = autoHideGallery && pinnedItem !== void 0;
201
- const [{ time, columns, cellWidth }, setLayout] = useState({
202
- time: 0,
203
- columns: 0,
204
- cellWidth: 0
205
- });
206
- const { width = 0, height = 0, ref: gridContainerRef } = useResizeDetector({
207
- refreshRate: 200
208
- });
209
- useEffect3(() => {
210
- if (containerHeight && width && height) {
211
- const layout = calculateLayout(width, height, mainItems.length, gap);
212
- setLayout({
213
- time: Date.now(),
214
- ...layout
215
- });
216
- }
217
- }, [
218
- containerHeight,
219
- width,
220
- height,
221
- mainItems.length,
222
- gap,
223
- pinned
224
- ]);
225
- const [bounds, setBounds] = useState([]);
226
- useLayoutEffect(() => {
227
- if (!hideGallery && !gridContainerRef.current || !containerHeight) {
228
- return;
229
- }
230
- const t = setTimeout(() => {
231
- setBounds(items.filter((item) => !hideGallery || item === pinnedItem).map((item) => {
232
- invariant(containerRef.current, void 0, {
233
- F: __dxlog_file,
234
- L: 117,
235
- S: void 0,
236
- A: [
237
- "containerRef.current",
238
- ""
239
- ]
240
- });
241
- const el = containerRef.current.querySelector(`[data-grid-item="${getId2(item)}"]`);
242
- if (!el) {
243
- return null;
244
- }
245
- const bounds2 = getRelativeBounds(containerRef.current, el);
246
- return [
247
- item,
248
- bounds2
249
- ];
250
- }).filter((item) => item !== null));
251
- });
252
- return () => clearTimeout(t);
253
- }, [
254
- containerHeight,
255
- items,
256
- pinnedItem,
257
- hideGallery,
258
- time
259
- ]);
260
- const handleClick = useCallback((item) => onPinnedChange?.(getId2(item) === pinned ? void 0 : getId2(item)), [
261
- pinned,
262
- onPinnedChange
263
- ]);
264
- return /* @__PURE__ */ React4.createElement("div", {
265
- ref: containerRef,
266
- className: mx3("relative is-full bs-full", classNames)
267
- }, /* @__PURE__ */ React4.createElement("div", {
268
- className: "absolute inset-0 flex flex-col grow gap-2"
269
- }, pinnedItem && /* @__PURE__ */ React4.createElement("div", {
270
- className: mx3("flex grow-[2] shrink overflow-hidden justify-center items-center", hideGallery && "bs-full"),
271
- style: hideGallery ? {} : {
272
- height: dividerHeight
273
- }
274
- }, /* @__PURE__ */ React4.createElement(SoloItem, {
275
- id: getId2(pinnedItem),
276
- debug
277
- })), !hideGallery && /* @__PURE__ */ React4.createElement("div", {
278
- ref: gridContainerRef,
279
- className: "flex grow-[1] overflow-hidden justify-center items-center",
280
- style: hideGallery ? {} : {
281
- minHeight: MIN_GALLERY_HEIGHT
282
- }
283
- }, mainItems.length === 1 && /* @__PURE__ */ React4.createElement("div", {
284
- style: {
285
- width: cellWidth
286
- },
287
- className: "flex bs-full"
288
- }, /* @__PURE__ */ React4.createElement(SoloItem, {
289
- id: getId2(mainItems[0]),
290
- debug
291
- })), mainItems.length > 1 && columns > 0 && /* @__PURE__ */ React4.createElement("div", {
292
- role: "grid",
293
- style: {
294
- display: "grid",
295
- gridTemplateColumns: `repeat(${columns}, ${cellWidth}px)`,
296
- gap: `${gap}px`
297
- }
298
- }, mainItems.map((item) => /* @__PURE__ */ React4.createElement("div", {
299
- key: getId2(item),
300
- "data-grid-item": getId2(item),
301
- className: mx3("aspect-video max-bs-full max-is-full is-auto bs-auto", debug && "border border-primary-500")
302
- }))))), /* @__PURE__ */ React4.createElement("div", {
303
- className: mx3(debug && "opacity-10")
304
- }, bounds.map(([item, bounds2]) => /* @__PURE__ */ React4.createElement(Cell, {
305
- key: getId2(item),
306
- classNames: "absolute transition-all duration-500",
307
- item,
308
- style: bounds2,
309
- pinned: getId2(item) === pinned,
310
- onClick: items.length > 1 ? handleClick : void 0
311
- }))));
312
- } finally {
313
- _effect.f();
314
- }
315
- };
316
- var SoloItem = ({ debug, id }) => {
317
- var _effect = _useSignals4();
318
- try {
319
- return /* @__PURE__ */ React4.createElement(ResponsiveContainer, null, /* @__PURE__ */ React4.createElement("div", {
320
- "data-grid-item": id,
321
- className: mx3("aspect-video overflow-hidden", debug && "z-20 border-2 border-primary-500")
322
- }, /* @__PURE__ */ React4.createElement("img", {
323
- alt: "placeholder video",
324
- className: mx3("opacity-0", maxImageSize)
325
- })));
326
- } finally {
327
- _effect.f();
328
- }
329
- };
330
- var getRelativeBounds = (container, el) => {
331
- const containerRect = container.getBoundingClientRect();
332
- const elementRect = el.getBoundingClientRect();
333
- return {
334
- top: elementRect.top - containerRect.top,
335
- left: elementRect.left - containerRect.left,
336
- width: elementRect.width,
337
- height: elementRect.height
338
- };
339
- };
340
- var calculateLayout = (containerWidth, containerHeight, count, gap, aspectRatio = ASPECT_RATIO) => {
341
- if (count === 0) {
342
- return {
343
- columns: 1,
344
- cellWidth: 1
345
- };
346
- }
347
- let minWastedSpace = Infinity;
348
- let bestColumns = 1;
349
- let cellWidth = 0;
350
- for (let rows = 1; rows <= count; rows++) {
351
- const cols = Math.ceil(count / rows);
352
- const { width: itemWidth, height: itemHeight } = fitItemsToGrid(containerWidth, containerHeight, cols, rows, aspectRatio, gap);
353
- const usedWidth = itemWidth * cols + gap * cols - 1;
354
- const usedHeight = itemHeight * rows + gap * rows - 1;
355
- const wastedSpace = containerWidth * containerHeight - usedWidth * usedHeight;
356
- if (wastedSpace < minWastedSpace) {
357
- minWastedSpace = wastedSpace;
358
- bestColumns = cols;
359
- cellWidth = itemWidth;
360
- }
361
- }
362
- return {
363
- columns: bestColumns,
364
- cellWidth
365
- };
366
- };
367
- var fitItemsToGrid = (outerWidth, outerHeight, numCols, numRows, aspectRatio, gap) => {
368
- const availableWidth = outerWidth - gap * (numCols - 1);
369
- const availableHeight = outerHeight - gap * (numRows - 1);
370
- const maxCellWidth = availableWidth / numCols;
371
- const maxCellHeight = availableHeight / numRows;
372
- return fitAspectRatio(maxCellWidth, maxCellHeight, aspectRatio);
373
- };
374
- var fitAspectRatio = (outerWidth, outerHeight, aspectRatio) => {
375
- if (outerWidth <= 0 || outerHeight <= 0 || aspectRatio <= 0) {
376
- return {
377
- width: 0,
378
- height: 0
379
- };
380
- }
381
- let width = outerWidth;
382
- let height = width / aspectRatio;
383
- if (height > outerHeight) {
384
- height = outerHeight;
385
- width = height * aspectRatio;
386
- }
387
- return {
388
- width,
389
- height
390
- };
391
- };
392
-
393
- // src/components/ResponsiveGrid/ResponsiveGridItem.tsx
394
- import { useSignals as _useSignals5 } from "@preact-signals/safe-react/tracking";
395
- import React5, { useEffect as useEffect4, useState as useState2 } from "react";
396
- import { Icon, IconButton, useTranslation } from "@dxos/react-ui";
397
- import { Waveform } from "@dxos/react-ui-sfx";
398
- import { groupHoverControlItemWithTransition, mx as mx4 } from "@dxos/react-ui-theme";
399
- var ResponsiveGridItem = ({ children, classNames, item, style, name, self, pinned, screenshare, video, mute, wave, speaking, onClick }) => {
400
- var _effect = _useSignals5();
401
- try {
402
- const { t } = useTranslation(meta.id);
403
- const iconProps = {
404
- wave: {
405
- icon: "ph--hand-waving--duotone",
406
- label: t("icon wave"),
407
- classNames: "animate-pulse bg-orange-500"
408
- },
409
- mute: {
410
- icon: "ph--microphone-slash--regular",
411
- label: t("icon muted")
412
- }
413
- };
414
- const props = wave && !pinned ? iconProps.wave : mute ? iconProps.mute : speaking ? iconProps.speaking : void 0;
415
- const [speakingIndicator, setSpeakingIndicator] = useState2(speaking);
416
- useEffect4(() => {
417
- if (speaking) {
418
- setSpeakingIndicator(true);
419
- } else {
420
- const timeout = setTimeout(() => {
421
- setSpeakingIndicator(false);
422
- }, 1e3);
423
- return () => clearTimeout(timeout);
424
- }
425
- }, [
426
- speaking
427
- ]);
428
- return /* @__PURE__ */ React5.createElement("div", {
429
- className: mx4("relative is-full bs-full group", "rounded-md outline outline-2 outline-neutral-900 transition-[outline-color] duration-500", speakingIndicator ? "outline-green-500" : !video && "outline-separator", classNames),
430
- style
431
- }, children, onClick && /* @__PURE__ */ React5.createElement("div", {
432
- className: "z-10 absolute top-1 right-1 flex"
433
- }, /* @__PURE__ */ React5.createElement(IconButton, {
434
- classNames: mx4("p-1 min-bs-1 rounded", groupHoverControlItemWithTransition),
435
- iconOnly: true,
436
- icon: pinned ? "ph--x--regular" : "ph--arrows-out--regular",
437
- size: pinned ? 5 : 4,
438
- label: pinned ? t("icon unpin") : t("icon pin"),
439
- onClick: () => onClick?.(item)
440
- })), name && /* @__PURE__ */ React5.createElement("div", {
441
- className: "z-10 absolute bottom-1 left-8 right-1 flex justify-end gap-1 items-center"
442
- }, screenshare && /* @__PURE__ */ React5.createElement(Icon, {
443
- icon: "ph--broadcast--regular",
444
- size: pinned ? 5 : 4
445
- }), /* @__PURE__ */ React5.createElement("div", {
446
- className: mx4("bg-neutral-800 text-neutral-100 plb-0.5 truncate rounded", pinned ? "pli-2" : "pli-1 text-xs")
447
- }, name)), /* @__PURE__ */ React5.createElement("div", {
448
- className: "z-10 absolute bottom-1 left-1 flex"
449
- }, speaking && /* @__PURE__ */ React5.createElement(Waveform, {
450
- active: true,
451
- size: pinned ? 5 : 4
452
- }) || props && /* @__PURE__ */ React5.createElement(IconButton, {
453
- classNames: mx4("p-1 min-bs-1 rounded", props?.classNames),
454
- icon: props?.icon,
455
- label: props?.label,
456
- size: pinned ? 5 : 4,
457
- iconOnly: true
458
- })));
459
- } finally {
460
- _effect.f();
461
- }
462
- };
463
-
464
- // src/components/Participant/Participant.tsx
465
- var SCREENSHARE_SUFFIX = "_screenshare";
466
- var Participant = /* @__PURE__ */ memo2(({ item: user, debug, ...props }) => {
467
- var _effect = _useSignals6();
468
- try {
469
- const call = useCapability(ThreadCapabilities.CallManager);
470
- const isSelf = call.self.id !== void 0 && user.id !== void 0 && user.id.startsWith(call.self.id);
471
- const isScreenshare = user.id?.endsWith(SCREENSHARE_SUFFIX);
472
- const pulledVideoStream = !isSelf && isScreenshare && user.tracks?.screenshareEnabled ? call.getVideoStream(user.tracks?.screenshare) : !isSelf && !isScreenshare && user.tracks?.videoEnabled ? call.getVideoStream(user.tracks?.video) : void 0;
473
- const videoStream = useMemo2(() => {
474
- if (isSelf) {
475
- if (isScreenshare) {
476
- return call.media.screenshareVideoStream;
477
- } else if (!isScreenshare) {
478
- return call.media.videoStream;
479
- }
480
- } else if (!isSelf) {
481
- return pulledVideoStream;
482
- }
483
- }, [
484
- isSelf,
485
- isScreenshare,
486
- call.media.videoStream,
487
- call.media.screenshareVideoStream,
488
- pulledVideoStream
489
- ]);
490
- return /* @__PURE__ */ React6.createElement(ResponsiveGridItem, {
491
- ...props,
492
- item: user,
493
- name: user.name,
494
- self: isSelf,
495
- screenshare: !!call.media.screenshareVideoStream,
496
- video: call.media.videoEnabled,
497
- mute: user ? !user.tracks?.audioEnabled : false,
498
- wave: user.raisedHand,
499
- speaking: user.speaking,
500
- debug
501
- }, /* @__PURE__ */ React6.createElement(VideoObject, {
502
- videoStream,
503
- flip: isSelf && !isScreenshare,
504
- contain: !!isScreenshare,
505
- classNames: "rounded-md"
506
- }));
507
- } finally {
508
- _effect.f();
509
- }
510
- });
511
- Participant.displayName = "Participant";
512
-
513
- // src/components/Participant/ParticipantGrid.tsx
514
- import { useSignals as _useSignals7 } from "@preact-signals/safe-react/tracking";
515
- import React7, { useEffect as useEffect5, useMemo as useMemo3, useState as useState3 } from "react";
516
- var getId = (user) => user.id;
517
- var ParticipantGrid = ({ classNames, self, users, fullscreen, debug }) => {
518
- var _effect = _useSignals7();
519
- try {
520
- const [pinned, setPinned] = useState3();
521
- const allUsers = useMemo3(() => {
522
- const allUsers2 = [];
523
- users.forEach((user) => {
524
- if (!user.joined) {
525
- return;
526
- }
527
- allUsers2.push({
528
- ...user,
529
- isSelf: user.id === self.id
530
- });
531
- if (user.tracks?.screenshareEnabled) {
532
- const screenshare = {
533
- ...user,
534
- id: user.id + SCREENSHARE_SUFFIX,
535
- tracks: {
536
- ...user.tracks,
537
- video: user.tracks.screenshare,
538
- videoEnabled: user.tracks.screenshareEnabled
539
- }
540
- };
541
- allUsers2.push(screenshare);
542
- }
543
- });
544
- return allUsers2;
545
- }, [
546
- self,
547
- users
548
- ]);
549
- useEffect5(() => {
550
- if (pinned) {
551
- if (!allUsers.find((user) => user.id === pinned)) {
552
- setPinned(void 0);
553
- }
554
- }
555
- }, [
556
- pinned,
557
- allUsers
558
- ]);
559
- const sortedUsers = allUsers.sort((a, b) => {
560
- if (a.isSelf) {
561
- return 1;
562
- } else if (b.isSelf) {
563
- return -1;
564
- } else if (a.tracks?.screenshareEnabled) {
565
- return -1;
566
- } else if (b.tracks?.screenshareEnabled) {
567
- return 1;
568
- } else {
569
- return 0;
570
- }
571
- });
572
- return /* @__PURE__ */ React7.createElement(ResponsiveGrid, {
573
- classNames,
574
- Cell: Participant,
575
- debug,
576
- getId,
577
- items: sortedUsers,
578
- pinned,
579
- autoHideGallery: fullscreen,
580
- onPinnedChange: setPinned
581
- });
582
- } finally {
583
- _effect.f();
584
- }
585
- };
586
-
587
- // src/components/Call/Toolbar.tsx
588
- import { useSignals as _useSignals8 } from "@preact-signals/safe-react/tracking";
589
- import React8 from "react";
590
- import { useAppGraph, useCapability as useCapability2 } from "@dxos/app-framework/react";
591
- import { Obj } from "@dxos/echo";
592
- import { useActions, useNode } from "@dxos/plugin-graph";
593
- import { Icon as Icon2, IconButton as IconButton2, Toolbar as NaturalToolbar, toLocalizedString, useTranslation as useTranslation2 } from "@dxos/react-ui";
594
- import { groupHoverControlItemWithTransition as groupHoverControlItemWithTransition2, mx as mx5 } from "@dxos/react-ui-theme";
595
- var Toolbar = ({ classNames, channel, participants, autoHideControls = true, onJoin, onLeave }) => {
596
- var _effect = _useSignals8();
597
- try {
598
- const { t } = useTranslation2(meta.id);
599
- const { graph } = useAppGraph();
600
- const call = useCapability2(ThreadCapabilities.CallManager);
601
- const node = useNode(graph, channel && Obj.getDXN(channel).toString());
602
- const actions = useActions(graph, node?.id).filter((action) => action.properties.disposition === "toolbar");
603
- const isScreensharing = call.media.screenshareTrack !== void 0;
604
- const canSharescreen = typeof navigator.mediaDevices !== "undefined" && navigator.mediaDevices.getDisplayMedia !== void 0;
605
- return /* @__PURE__ */ React8.createElement("div", {
606
- className: mx5("z-20 flex justify-center m-8", autoHideControls && groupHoverControlItemWithTransition2)
607
- }, /* @__PURE__ */ React8.createElement(NaturalToolbar.Root, {
608
- classNames: [
609
- "p-2 bg-modalSurface rounded-md shadow-md",
610
- classNames
611
- ]
612
- }, /* @__PURE__ */ React8.createElement(ToggleButton, {
613
- active: call.media.audioEnabled,
614
- state: {
615
- on: {
616
- icon: "ph--microphone--regular",
617
- label: t("mic off"),
618
- onClick: () => call.turnAudioOff(),
619
- classNames: "bg-callActive"
620
- },
621
- off: {
622
- icon: "ph--microphone-slash--duotone",
623
- label: t("mic on"),
624
- onClick: () => call.turnAudioOn(),
625
- classNames: [
626
- call.joined && "bg-callAlert"
627
- ]
628
- }
629
- }
630
- }), /* @__PURE__ */ React8.createElement(ToggleButton, {
631
- active: call.media.videoEnabled,
632
- state: {
633
- on: {
634
- icon: "ph--video-camera--regular",
635
- label: t("camera off"),
636
- onClick: () => call.turnVideoOff()
637
- },
638
- off: {
639
- icon: "ph--video-camera-slash--duotone",
640
- label: t("camera on"),
641
- onClick: () => call.turnVideoOn()
642
- }
643
- }
644
- }), participants !== void 0 && /* @__PURE__ */ React8.createElement("div", {
645
- className: "flex justify-center items-center gap-2 is-[5rem] text-xs text-subdued"
646
- }, /* @__PURE__ */ React8.createElement(Icon2, {
647
- icon: "ph--users--regular",
648
- size: 4
649
- }), /* @__PURE__ */ React8.createElement("div", null, participants)) || /* @__PURE__ */ React8.createElement(NaturalToolbar.Separator, {
650
- variant: "gap"
651
- }), call.joined && /* @__PURE__ */ React8.createElement(React8.Fragment, null, /* @__PURE__ */ React8.createElement(ToggleButton, {
652
- disabled: !canSharescreen,
653
- active: isScreensharing,
654
- state: {
655
- on: {
656
- icon: "ph--monitor--regular",
657
- label: t("screenshare off"),
658
- onClick: () => call.turnScreenshareOff()
659
- },
660
- off: {
661
- icon: "ph--monitor-arrow-up--duotone",
662
- label: t("screenshare on"),
663
- onClick: () => call.turnScreenshareOn()
664
- }
665
- }
666
- }), actions.map((action) => /* @__PURE__ */ React8.createElement(IconButton2, {
667
- key: action.id,
668
- ...defaultButtonProps,
669
- icon: action.properties.icon,
670
- label: toLocalizedString(action.properties.label, t),
671
- classNames: action.properties.classNames,
672
- onClick: () => action.data({
673
- node
674
- })
675
- })), /* @__PURE__ */ React8.createElement(ToggleButton, {
676
- active: call.raisedHand,
677
- state: {
678
- on: {
679
- icon: "ph--hand-waving--regular",
680
- label: t("lower hand"),
681
- onClick: () => call.setRaisedHand(false),
682
- classNames: [
683
- call.joined && "bg-callAlert"
684
- ]
685
- },
686
- off: {
687
- icon: "ph--hand-palm--duotone",
688
- label: t("raise hand"),
689
- onClick: () => call.setRaisedHand(true)
690
- }
691
- }
692
- })), call.joined ? /* @__PURE__ */ React8.createElement(IconButton2, {
693
- variant: "destructive",
694
- icon: "ph--phone-x--regular",
695
- label: t("leave call"),
696
- onClick: onLeave
697
- }) : /* @__PURE__ */ React8.createElement(IconButton2, {
698
- variant: "primary",
699
- icon: "ph--phone-incoming--regular",
700
- label: t("join call"),
701
- onClick: onJoin
702
- })));
703
- } finally {
704
- _effect.f();
705
- }
706
- };
707
- Toolbar.displayName = "MeetingToolbar";
708
- var defaultButtonProps = {
709
- size: 5,
710
- iconOnly: true
711
- };
712
- var ToggleButton = ({ active, state }) => {
713
- var _effect = _useSignals8();
714
- try {
715
- return /* @__PURE__ */ React8.createElement(IconButton2, {
716
- ...defaultButtonProps,
717
- classNames: [
718
- active ? state.on.classNames ?? "bg-callActive" : state.off.classNames
719
- ],
720
- icon: active ? state.on.icon : state.off.icon,
721
- label: active ? state.on.label : state.off.label,
722
- onClick: active ? state.on.onClick : state.off.onClick
723
- });
724
- } finally {
725
- _effect.f();
726
- }
727
- };
728
-
729
- // src/components/Call/Call.tsx
730
- var CallRoot = ({ children }) => {
731
- var _effect = _useSignals9();
732
- try {
733
- return /* @__PURE__ */ React9.createElement("div", {
734
- className: "relative flex flex-col grow overflow-hidden"
735
- }, children);
736
- } finally {
737
- _effect.f();
738
- }
739
- };
740
- CallRoot.displayName = "CallRoot";
741
- var CallAudio = () => {
742
- var _effect = _useSignals9();
743
- try {
744
- const call = useCapability3(ThreadCapabilities.CallManager);
745
- return /* @__PURE__ */ React9.createElement(AudioStream, {
746
- tracks: call.audioTracksToPlay
747
- });
748
- } finally {
749
- _effect.f();
750
- }
751
- };
752
- CallAudio.displayName = "CallAudio";
753
- var CallGrid = ({ fullscreen }) => {
754
- var _effect = _useSignals9();
755
- try {
756
- const debug = useDebugMode();
757
- const call = useCapability3(ThreadCapabilities.CallManager);
758
- return /* @__PURE__ */ React9.createElement("div", {
759
- className: "grid grow p-4 dark:bg-neutral-900"
760
- }, /* @__PURE__ */ React9.createElement(ParticipantGrid, {
761
- self: call.self,
762
- users: call.users,
763
- debug,
764
- fullscreen
765
- }));
766
- } finally {
767
- _effect.f();
768
- }
769
- };
770
- CallGrid.displayName = "CallGrid";
771
- var CallToolbar = (props) => {
772
- var _effect = _useSignals9();
773
- try {
774
- return /* @__PURE__ */ React9.createElement("div", {
775
- className: "absolute bottom-0 left-0 right-0 flex justify-center"
776
- }, /* @__PURE__ */ React9.createElement(Toolbar, {
777
- isInRoom: true,
778
- ...props
779
- }));
780
- } finally {
781
- _effect.f();
782
- }
783
- };
784
- CallToolbar.displayName = "CallToolbar";
785
- var Call = {
786
- Root: CallRoot,
787
- Grid: CallGrid,
788
- Audio: CallAudio,
789
- Toolbar: CallToolbar
790
- };
791
-
792
- // src/components/ChannelContainer.tsx
793
- var __dxlog_file2 = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/components/ChannelContainer.tsx";
794
- var ChannelContainer = ({ channel, roomId: _roomId, role, fullscreen }) => {
795
- var _effect = _useSignals10();
796
- try {
797
- const space = getSpace(channel);
798
- const callManager = useCapability4(ThreadCapabilities.CallManager);
799
- const attendableId = channel ? Obj2.getDXN(channel).toString() : void 0;
800
- const roomId = _roomId ?? attendableId ?? failUndefined();
801
- const identity = useIdentity();
802
- const isNamed = !!identity?.profile?.displayName;
803
- const joinSound = useSoundEffect("JoinCall");
804
- const leaveSound = useSoundEffect("LeaveCall");
805
- const extensions = useCapabilities(ThreadCapabilities.CallExtension);
806
- useEffect6(() => {
807
- const ctx = new Context(void 0, {
808
- F: __dxlog_file2,
809
- L: 53
810
- });
811
- callManager.left.on(ctx, (roomId2) => {
812
- extensions.forEach((extension) => {
813
- void extension.onLeave?.(roomId2);
814
- });
815
- });
816
- callManager.callStateUpdated.on(ctx, (state) => {
817
- extensions.forEach((extension) => {
818
- void extension.onCallStateUpdated?.(state);
819
- });
820
- });
821
- callManager.mediaStateUpdated.on(ctx, (state) => {
822
- extensions.forEach((extension) => {
823
- void extension.onMediaStateUpdated?.(state);
824
- });
825
- });
826
- return () => {
827
- void ctx.dispose();
828
- };
829
- }, [
830
- callManager,
831
- extensions
832
- ]);
833
- const handleJoin = useCallback2(async () => {
834
- if (!roomId || !channel) {
835
- return;
836
- }
837
- if (callManager.joined) {
838
- await callManager.leave();
839
- }
840
- try {
841
- void joinSound.play();
842
- callManager.setRoomId(roomId);
843
- await callManager.join();
844
- await Promise.all(extensions.map((extension) => extension.onJoin?.({
845
- channel,
846
- roomId
847
- })));
848
- } catch (err) {
849
- log.catch(err, void 0, {
850
- F: __dxlog_file2,
851
- L: 97,
852
- S: void 0,
853
- C: (f, a) => f(...a)
854
- });
855
- }
856
- }, [
857
- extensions,
858
- channel,
859
- roomId
860
- ]);
861
- const handleLeave = useCallback2(async () => {
862
- try {
863
- void leaveSound.play();
864
- } catch (err) {
865
- log.catch(err, void 0, {
866
- F: __dxlog_file2,
867
- L: 109,
868
- S: void 0,
869
- C: (f, a) => f(...a)
870
- });
871
- } finally {
872
- void callManager.turnAudioOff();
873
- void callManager.turnVideoOff();
874
- void callManager.turnScreenshareOff();
875
- void callManager.leave();
876
- }
877
- }, [
878
- extensions,
879
- roomId
880
- ]);
881
- const isJoined = callManager.joined && callManager.roomId === roomId;
882
- return /* @__PURE__ */ React10.createElement(StackItem.Content, {
883
- classNames: isJoined && "bs-full",
884
- toolbar: !isJoined
885
- }, isJoined && !isNamed && /* @__PURE__ */ React10.createElement(DisplayNameMissing, null), isJoined && isNamed && /* @__PURE__ */ React10.createElement(Call.Root, null, /* @__PURE__ */ React10.createElement(Call.Grid, {
886
- fullscreen
887
- }), /* @__PURE__ */ React10.createElement(Call.Toolbar, {
888
- channel,
889
- onLeave: handleLeave
890
- })), !isJoined && channel && channel.defaultThread.target && space && /* @__PURE__ */ React10.createElement(React10.Fragment, null, /* @__PURE__ */ React10.createElement(ChannelToolbar, {
891
- attendableId,
892
- role,
893
- onJoinCall: handleJoin
894
- }), /* @__PURE__ */ React10.createElement(ChatContainer_default, {
895
- space,
896
- thread: channel.defaultThread.target,
897
- classNames: "container-max-width"
898
- })));
899
- } finally {
900
- _effect.f();
901
- }
902
- };
903
- var ChannelContainer_default = ChannelContainer;
904
- var DisplayNameMissing = () => {
905
- var _effect = _useSignals10();
906
- try {
907
- const { t } = useTranslation3(meta.id);
908
- const client = useClient();
909
- const [displayName, setDisplayName] = useState4("");
910
- const handleChange = useCallback2((event) => setDisplayName(event.target.value), []);
911
- const handleSave = useCallback2(() => client.halo.updateProfile({
912
- displayName
913
- }), [
914
- client,
915
- displayName
916
- ]);
917
- return /* @__PURE__ */ React10.createElement(ControlGroup, {
918
- classNames: "p-4 place-content-center"
919
- }, /* @__PURE__ */ React10.createElement(ControlItemInput, {
920
- title: t("display name label"),
921
- description: t("display name description")
922
- }, /* @__PURE__ */ React10.createElement(Input.TextInput, {
923
- value: displayName,
924
- onChange: handleChange,
925
- placeholder: t("display name input placeholder"),
926
- classNames: "md:min-is-64"
927
- })), /* @__PURE__ */ React10.createElement(ControlGroupButton, {
928
- disabled: !displayName,
929
- onClick: handleSave
930
- }, t("set display name label")));
931
- } finally {
932
- _effect.f();
933
- }
934
- };
935
- var useChannelToolbarActions = (onJoinCall) => {
936
- const creator = useMemo4(() => Atom.make(() => {
937
- return {
938
- nodes: [
939
- createMenuItemGroup("root", {
940
- label: [
941
- "channel toolbar title",
942
- {
943
- ns: meta.id
944
- }
945
- ]
946
- }),
947
- createMenuAction("video-call", () => onJoinCall?.(), {
948
- label: [
949
- "start video call label",
950
- {
951
- ns: meta.id
952
- }
953
- ],
954
- icon: "ph--video-camera--regular",
955
- type: "video-call"
956
- })
957
- ],
958
- edges: [
959
- {
960
- source: "root",
961
- target: "video-call"
962
- }
963
- ]
964
- };
965
- }), []);
966
- return useMenuActions(creator);
967
- };
968
- var ChannelToolbar = ({ attendableId, role, onJoinCall }) => {
969
- var _effect = _useSignals10();
970
- try {
971
- const menuProps = useChannelToolbarActions(onJoinCall);
972
- return /* @__PURE__ */ React10.createElement(ElevationProvider, {
973
- elevation: role === "section" ? "positioned" : "base"
974
- }, /* @__PURE__ */ React10.createElement(MenuProvider, {
975
- ...menuProps,
976
- attendableId
977
- }, /* @__PURE__ */ React10.createElement(ToolbarMenu, {
978
- textBlockWidth: true
979
- })));
980
- } finally {
981
- _effect.f();
982
- }
983
- };
984
-
985
- export {
986
- Call,
987
- ChannelContainer,
988
- ChannelContainer_default
989
- };
990
- //# sourceMappingURL=chunk-JF7THR7F.mjs.map