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