@dxos/plugin-thread 0.8.3 → 0.8.4-main.1068cf700f

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