@dxos/plugin-thread 0.8.3 → 0.8.4-main.1c7ec43d41

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 (558) hide show
  1. package/dist/lib/browser/add-message-3FTZANTW.mjs +89 -0
  2. package/dist/lib/browser/add-message-3FTZANTW.mjs.map +7 -0
  3. package/dist/lib/browser/append-channel-message-CO3M6FSA.mjs +40 -0
  4. package/dist/lib/browser/append-channel-message-CO3M6FSA.mjs.map +7 -0
  5. package/dist/lib/browser/blueprints/index.mjs +37 -0
  6. package/dist/lib/browser/blueprints/index.mjs.map +7 -0
  7. package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
  8. package/dist/lib/browser/chunk-MR4CWITF.mjs +31 -0
  9. package/dist/lib/browser/chunk-MR4CWITF.mjs.map +7 -0
  10. package/dist/lib/browser/chunk-TPNZ43NB.mjs +258 -0
  11. package/dist/lib/browser/chunk-TPNZ43NB.mjs.map +7 -0
  12. package/dist/lib/browser/create-GMUAPFZM.mjs +55 -0
  13. package/dist/lib/browser/create-GMUAPFZM.mjs.map +7 -0
  14. package/dist/lib/browser/create-channel-ZXKSLHGN.mjs +19 -0
  15. package/dist/lib/browser/create-channel-ZXKSLHGN.mjs.map +7 -0
  16. package/dist/lib/browser/create-proposals-AV5CREPV.mjs +56 -0
  17. package/dist/lib/browser/create-proposals-AV5CREPV.mjs.map +7 -0
  18. package/dist/lib/browser/delete-673YOWCG.mjs +59 -0
  19. package/dist/lib/browser/delete-673YOWCG.mjs.map +7 -0
  20. package/dist/lib/browser/delete-message-RQ72ZY5D.mjs +55 -0
  21. package/dist/lib/browser/delete-message-RQ72ZY5D.mjs.map +7 -0
  22. package/dist/lib/browser/index.mjs +1783 -270
  23. package/dist/lib/browser/index.mjs.map +4 -4
  24. package/dist/lib/browser/meta.json +1 -1
  25. package/dist/lib/browser/on-create-space-SPE3QVFZ.mjs +24 -0
  26. package/dist/lib/browser/on-create-space-SPE3QVFZ.mjs.map +7 -0
  27. package/dist/lib/browser/operations/index.mjs +13 -0
  28. package/dist/lib/browser/operations/index.mjs.map +7 -0
  29. package/dist/lib/browser/restore-VX7FLZOZ.mjs +32 -0
  30. package/dist/lib/browser/restore-VX7FLZOZ.mjs.map +7 -0
  31. package/dist/lib/browser/restore-message-D65NSWUA.mjs +33 -0
  32. package/dist/lib/browser/restore-message-D65NSWUA.mjs.map +7 -0
  33. package/dist/lib/browser/select-DO4AYSCB.mjs +26 -0
  34. package/dist/lib/browser/select-DO4AYSCB.mjs.map +7 -0
  35. package/dist/lib/browser/toggle-resolved-JD3D4WBZ.mjs +36 -0
  36. package/dist/lib/browser/toggle-resolved-JD3D4WBZ.mjs.map +7 -0
  37. package/dist/lib/browser/translations.mjs +90 -0
  38. package/dist/lib/browser/translations.mjs.map +7 -0
  39. package/dist/lib/browser/types/index.mjs +6 -12
  40. package/dist/lib/node-esm/add-message-56J2HLJB.mjs +90 -0
  41. package/dist/lib/node-esm/add-message-56J2HLJB.mjs.map +7 -0
  42. package/dist/lib/node-esm/append-channel-message-F7KGBSWP.mjs +41 -0
  43. package/dist/lib/node-esm/append-channel-message-F7KGBSWP.mjs.map +7 -0
  44. package/dist/lib/node-esm/blueprints/index.mjs +38 -0
  45. package/dist/lib/node-esm/blueprints/index.mjs.map +7 -0
  46. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  47. package/dist/lib/node-esm/chunk-L6UL3NVS.mjs +32 -0
  48. package/dist/lib/node-esm/chunk-L6UL3NVS.mjs.map +7 -0
  49. package/dist/lib/node-esm/chunk-XKUMDYGR.mjs +259 -0
  50. package/dist/lib/node-esm/chunk-XKUMDYGR.mjs.map +7 -0
  51. package/dist/lib/node-esm/create-LEXHIPUT.mjs +56 -0
  52. package/dist/lib/node-esm/create-LEXHIPUT.mjs.map +7 -0
  53. package/dist/lib/node-esm/create-channel-6VHTC2OR.mjs +20 -0
  54. package/dist/lib/node-esm/create-channel-6VHTC2OR.mjs.map +7 -0
  55. package/dist/lib/node-esm/create-proposals-P5O2ICOL.mjs +57 -0
  56. package/dist/lib/node-esm/create-proposals-P5O2ICOL.mjs.map +7 -0
  57. package/dist/lib/node-esm/delete-4KSU4UEJ.mjs +60 -0
  58. package/dist/lib/node-esm/delete-4KSU4UEJ.mjs.map +7 -0
  59. package/dist/lib/node-esm/delete-message-PGNLB6TL.mjs +56 -0
  60. package/dist/lib/node-esm/delete-message-PGNLB6TL.mjs.map +7 -0
  61. package/dist/lib/node-esm/index.mjs +1783 -270
  62. package/dist/lib/node-esm/index.mjs.map +4 -4
  63. package/dist/lib/node-esm/meta.json +1 -1
  64. package/dist/lib/node-esm/on-create-space-TFBSHWQ4.mjs +25 -0
  65. package/dist/lib/node-esm/on-create-space-TFBSHWQ4.mjs.map +7 -0
  66. package/dist/lib/node-esm/operations/index.mjs +14 -0
  67. package/dist/lib/node-esm/operations/index.mjs.map +7 -0
  68. package/dist/lib/node-esm/restore-E27OAIFJ.mjs +33 -0
  69. package/dist/lib/node-esm/restore-E27OAIFJ.mjs.map +7 -0
  70. package/dist/lib/node-esm/restore-message-J3CH6NGI.mjs +34 -0
  71. package/dist/lib/node-esm/restore-message-J3CH6NGI.mjs.map +7 -0
  72. package/dist/lib/node-esm/select-NDHRM75K.mjs +27 -0
  73. package/dist/lib/node-esm/select-NDHRM75K.mjs.map +7 -0
  74. package/dist/lib/node-esm/toggle-resolved-VS6NKXL3.mjs +37 -0
  75. package/dist/lib/node-esm/toggle-resolved-VS6NKXL3.mjs.map +7 -0
  76. package/dist/lib/node-esm/translations.mjs +91 -0
  77. package/dist/lib/node-esm/translations.mjs.map +7 -0
  78. package/dist/lib/node-esm/types/index.mjs +6 -12
  79. package/dist/types/src/ThreadPlugin.d.ts +3 -1
  80. package/dist/types/src/ThreadPlugin.d.ts.map +1 -1
  81. package/dist/types/src/ThreadPlugin.node.d.ts +4 -0
  82. package/dist/types/src/ThreadPlugin.node.d.ts.map +1 -0
  83. package/dist/types/src/ThreadPlugin.test.d.ts +2 -0
  84. package/dist/types/src/ThreadPlugin.test.d.ts.map +1 -0
  85. package/dist/types/src/blueprints/index.d.ts +2 -0
  86. package/dist/types/src/blueprints/index.d.ts.map +1 -0
  87. package/dist/types/src/blueprints/thread-blueprint.d.ts +4 -0
  88. package/dist/types/src/blueprints/thread-blueprint.d.ts.map +1 -0
  89. package/dist/types/src/calls/call-manager.d.ts +40 -30
  90. package/dist/types/src/calls/call-manager.d.ts.map +1 -1
  91. package/dist/types/src/calls/call-swarm-synchronizer.d.ts +2 -2
  92. package/dist/types/src/calls/call-swarm-synchronizer.d.ts.map +1 -1
  93. package/dist/types/src/calls/media-manager.d.ts +2 -2
  94. package/dist/types/src/calls/media-manager.d.ts.map +1 -1
  95. package/dist/types/src/calls/speaking-monitor.d.ts +0 -3
  96. package/dist/types/src/calls/speaking-monitor.d.ts.map +1 -1
  97. package/dist/types/src/calls/types.d.ts +1 -1
  98. package/dist/types/src/calls/types.d.ts.map +1 -1
  99. package/dist/types/src/calls/util/audio.d.ts.map +1 -1
  100. package/dist/types/src/calls/util/calls-service.d.ts +11 -6
  101. package/dist/types/src/calls/util/calls-service.d.ts.map +1 -1
  102. package/dist/types/src/calls/util/history-cache.d.ts.map +1 -1
  103. package/dist/types/src/calls/util/media.d.ts.map +1 -1
  104. package/dist/types/src/calls/util/stub-media-streams.d.ts.map +1 -1
  105. package/dist/types/src/calls/util/task-scheduling.d.ts +2 -2
  106. package/dist/types/src/calls/util/task-scheduling.d.ts.map +1 -1
  107. package/dist/types/src/calls-service.stories.d.ts +23 -0
  108. package/dist/types/src/calls-service.stories.d.ts.map +1 -0
  109. package/dist/types/src/capabilities/app-graph-builder.d.ts +4 -2
  110. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  111. package/dist/types/src/capabilities/blueprint-definition.d.ts +6 -0
  112. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -0
  113. package/dist/types/src/capabilities/call-manager.d.ts +3 -2
  114. package/dist/types/src/capabilities/call-manager.d.ts.map +1 -1
  115. package/dist/types/src/capabilities/create-object.d.ts +11 -0
  116. package/dist/types/src/capabilities/create-object.d.ts.map +1 -0
  117. package/dist/types/src/capabilities/index.d.ts +19 -13
  118. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  119. package/dist/types/src/capabilities/markdown.d.ts +3 -2
  120. package/dist/types/src/capabilities/markdown.d.ts.map +1 -1
  121. package/dist/types/src/capabilities/operation-handler.d.ts +6 -0
  122. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -0
  123. package/dist/types/src/capabilities/react-root.d.ts +4 -2
  124. package/dist/types/src/capabilities/react-root.d.ts.map +1 -1
  125. package/dist/types/src/capabilities/react-surface.d.ts +3 -2
  126. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  127. package/dist/types/src/capabilities/settings.d.ts +5 -2
  128. package/dist/types/src/capabilities/settings.d.ts.map +1 -1
  129. package/dist/types/src/capabilities/state.d.ts +5 -5
  130. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  131. package/dist/types/src/capabilities/undo-mappings.d.ts +5 -0
  132. package/dist/types/src/capabilities/undo-mappings.d.ts.map +1 -0
  133. package/dist/types/src/components/Call/Call.d.ts +32 -4
  134. package/dist/types/src/components/Call/Call.d.ts.map +1 -1
  135. package/dist/types/src/components/Call/Toolbar.d.ts +6 -6
  136. package/dist/types/src/components/Call/Toolbar.d.ts.map +1 -1
  137. package/dist/types/src/components/Chat/Chat.d.ts +51 -0
  138. package/dist/types/src/components/Chat/Chat.d.ts.map +1 -0
  139. package/dist/types/src/components/Chat/index.d.ts +2 -0
  140. package/dist/types/src/components/Chat/index.d.ts.map +1 -0
  141. package/dist/types/src/components/CommentsPanel/CommentsPanel.d.ts +13 -0
  142. package/dist/types/src/components/CommentsPanel/CommentsPanel.d.ts.map +1 -0
  143. package/dist/types/src/components/CommentsPanel/CommentsPanel.stories.d.ts +160 -0
  144. package/dist/types/src/components/CommentsPanel/CommentsPanel.stories.d.ts.map +1 -0
  145. package/dist/types/src/components/CommentsPanel/CommentsThread.d.ts +14 -0
  146. package/dist/types/src/components/CommentsPanel/CommentsThread.d.ts.map +1 -0
  147. package/dist/types/src/components/CommentsPanel/index.d.ts +3 -0
  148. package/dist/types/src/components/CommentsPanel/index.d.ts.map +1 -0
  149. package/dist/types/src/components/Lobby/Lobby.d.ts +24 -3
  150. package/dist/types/src/components/Lobby/Lobby.d.ts.map +1 -1
  151. package/dist/types/src/components/Media/VideoObject.d.ts +3 -3
  152. package/dist/types/src/components/Media/VideoObject.d.ts.map +1 -1
  153. package/dist/types/src/components/Media/VideoObject.stories.d.ts +18 -4
  154. package/dist/types/src/components/Media/VideoObject.stories.d.ts.map +1 -1
  155. package/dist/types/src/components/MessagePanel/MessagePanel.d.ts +15 -0
  156. package/dist/types/src/components/MessagePanel/MessagePanel.d.ts.map +1 -0
  157. package/dist/types/src/components/MessagePanel/index.d.ts +2 -0
  158. package/dist/types/src/components/MessagePanel/index.d.ts.map +1 -0
  159. package/dist/types/src/components/Participant/Participant.d.ts.map +1 -1
  160. package/dist/types/src/components/Participant/ParticipantGrid.d.ts.map +1 -1
  161. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.d.ts.map +1 -1
  162. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts +160 -5
  163. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts.map +1 -1
  164. package/dist/types/src/components/ResponsiveGrid/ResponsiveGridItem.d.ts.map +1 -1
  165. package/dist/types/src/components/ResponsiveGrid/{ResponsiveContainer.d.ts → ResponsivePanel.d.ts} +4 -4
  166. package/dist/types/src/components/ResponsiveGrid/ResponsivePanel.d.ts.map +1 -0
  167. package/dist/types/src/components/ResponsiveGrid/ResponsivePanel.stories.d.ts +164 -0
  168. package/dist/types/src/components/ResponsiveGrid/ResponsivePanel.stories.d.ts.map +1 -0
  169. package/dist/types/src/components/ResponsiveGrid/index.d.ts +1 -1
  170. package/dist/types/src/components/ResponsiveGrid/index.d.ts.map +1 -1
  171. package/dist/types/src/components/ThreadSettings/ThreadSettings.d.ts +6 -0
  172. package/dist/types/src/components/ThreadSettings/ThreadSettings.d.ts.map +1 -0
  173. package/dist/types/src/components/ThreadSettings/ThreadSettings.stories.d.ts +161 -0
  174. package/dist/types/src/components/ThreadSettings/ThreadSettings.stories.d.ts.map +1 -0
  175. package/dist/types/src/components/ThreadSettings/index.d.ts +2 -0
  176. package/dist/types/src/components/ThreadSettings/index.d.ts.map +1 -0
  177. package/dist/types/src/components/index.d.ts +5 -9
  178. package/dist/types/src/components/index.d.ts.map +1 -1
  179. package/dist/types/src/containers/CallDebugPanel/CallDebugPanel.d.ts +15 -0
  180. package/dist/types/src/containers/CallDebugPanel/CallDebugPanel.d.ts.map +1 -0
  181. package/dist/types/src/containers/CallDebugPanel/index.d.ts +2 -0
  182. package/dist/types/src/containers/CallDebugPanel/index.d.ts.map +1 -0
  183. package/dist/types/src/{components → containers/CallSidebar}/CallSidebar.d.ts +0 -1
  184. package/dist/types/src/containers/CallSidebar/CallSidebar.d.ts.map +1 -0
  185. package/dist/types/src/containers/CallSidebar/index.d.ts +2 -0
  186. package/dist/types/src/containers/CallSidebar/index.d.ts.map +1 -0
  187. package/dist/types/src/containers/ChannelChat/ChannelChat.d.ts +20 -0
  188. package/dist/types/src/containers/ChannelChat/ChannelChat.d.ts.map +1 -0
  189. package/dist/types/src/containers/ChannelChat/index.d.ts +4 -0
  190. package/dist/types/src/containers/ChannelChat/index.d.ts.map +1 -0
  191. package/dist/types/src/containers/ChannelContainer/ChannelContainer.d.ts +12 -0
  192. package/dist/types/src/containers/ChannelContainer/ChannelContainer.d.ts.map +1 -0
  193. package/dist/types/src/containers/ChannelContainer/ChannelContainer.stories.d.ts +162 -0
  194. package/dist/types/src/containers/ChannelContainer/ChannelContainer.stories.d.ts.map +1 -0
  195. package/dist/types/src/containers/ChannelContainer/index.d.ts +2 -0
  196. package/dist/types/src/containers/ChannelContainer/index.d.ts.map +1 -0
  197. package/dist/types/src/containers/ThreadCompanion/ThreadCompanion.d.ts +8 -0
  198. package/dist/types/src/containers/ThreadCompanion/ThreadCompanion.d.ts.map +1 -0
  199. package/dist/types/src/containers/ThreadCompanion/index.d.ts +2 -0
  200. package/dist/types/src/containers/ThreadCompanion/index.d.ts.map +1 -0
  201. package/dist/types/src/containers/ThreadContainer/ThreadContainer.d.ts +20 -0
  202. package/dist/types/src/containers/ThreadContainer/ThreadContainer.d.ts.map +1 -0
  203. package/dist/types/src/containers/ThreadContainer/ThreadContainer.stories.d.ts +162 -0
  204. package/dist/types/src/containers/ThreadContainer/ThreadContainer.stories.d.ts.map +1 -0
  205. package/dist/types/src/containers/ThreadContainer/index.d.ts +4 -0
  206. package/dist/types/src/containers/ThreadContainer/index.d.ts.map +1 -0
  207. package/dist/types/src/containers/index.d.ts +8 -0
  208. package/dist/types/src/containers/index.d.ts.map +1 -0
  209. package/dist/types/src/{components/command-extension.d.ts → extensions/command.d.ts} +1 -1
  210. package/dist/types/src/extensions/command.d.ts.map +1 -0
  211. package/dist/types/src/extensions/index.d.ts +1 -0
  212. package/dist/types/src/extensions/index.d.ts.map +1 -1
  213. package/dist/types/src/extensions/threads.d.ts +9 -4
  214. package/dist/types/src/extensions/threads.d.ts.map +1 -1
  215. package/dist/types/src/hooks/analytics.d.ts +2 -3
  216. package/dist/types/src/hooks/analytics.d.ts.map +1 -1
  217. package/dist/types/src/hooks/index.d.ts +3 -0
  218. package/dist/types/src/hooks/index.d.ts.map +1 -1
  219. package/dist/types/src/hooks/useBlackCanvasStreamTrack.d.ts +2 -0
  220. package/dist/types/src/hooks/useBlackCanvasStreamTrack.d.ts.map +1 -0
  221. package/dist/types/src/hooks/useInaudibleAudioStreamTrack.d.ts +2 -0
  222. package/dist/types/src/hooks/useInaudibleAudioStreamTrack.d.ts.map +1 -0
  223. package/dist/types/src/hooks/useStatus.d.ts.map +1 -1
  224. package/dist/types/src/hooks/useVideoStreamTrack.d.ts +3 -0
  225. package/dist/types/src/hooks/useVideoStreamTrack.d.ts.map +1 -0
  226. package/dist/types/src/index.d.ts +4 -3
  227. package/dist/types/src/index.d.ts.map +1 -1
  228. package/dist/types/src/meta.d.ts +3 -4
  229. package/dist/types/src/meta.d.ts.map +1 -1
  230. package/dist/types/src/operations/add-message.d.ts +5 -0
  231. package/dist/types/src/operations/add-message.d.ts.map +1 -0
  232. package/dist/types/src/operations/append-channel-message.d.ts +5 -0
  233. package/dist/types/src/operations/append-channel-message.d.ts.map +1 -0
  234. package/dist/types/src/operations/create-channel.d.ts +5 -0
  235. package/dist/types/src/operations/create-channel.d.ts.map +1 -0
  236. package/dist/types/src/operations/create-proposals.d.ts +5 -0
  237. package/dist/types/src/operations/create-proposals.d.ts.map +1 -0
  238. package/dist/types/src/operations/create.d.ts +5 -0
  239. package/dist/types/src/operations/create.d.ts.map +1 -0
  240. package/dist/types/src/operations/definitions.d.ts +1995 -0
  241. package/dist/types/src/operations/definitions.d.ts.map +1 -0
  242. package/dist/types/src/operations/delete-message.d.ts +5 -0
  243. package/dist/types/src/operations/delete-message.d.ts.map +1 -0
  244. package/dist/types/src/operations/delete.d.ts +5 -0
  245. package/dist/types/src/operations/delete.d.ts.map +1 -0
  246. package/dist/types/src/operations/index.d.ts +4 -0
  247. package/dist/types/src/operations/index.d.ts.map +1 -0
  248. package/dist/types/src/operations/on-create-space.d.ts +5 -0
  249. package/dist/types/src/operations/on-create-space.d.ts.map +1 -0
  250. package/dist/types/src/operations/restore-message.d.ts +5 -0
  251. package/dist/types/src/operations/restore-message.d.ts.map +1 -0
  252. package/dist/types/src/operations/restore.d.ts +5 -0
  253. package/dist/types/src/operations/restore.d.ts.map +1 -0
  254. package/dist/types/src/operations/select.d.ts +5 -0
  255. package/dist/types/src/operations/select.d.ts.map +1 -0
  256. package/dist/types/src/operations/toggle-resolved.d.ts +5 -0
  257. package/dist/types/src/operations/toggle-resolved.d.ts.map +1 -0
  258. package/dist/types/src/testing/data.d.ts +5 -0
  259. package/dist/types/src/testing/data.d.ts.map +1 -0
  260. package/dist/types/src/testing/index.d.ts +1 -1
  261. package/dist/types/src/testing/index.d.ts.map +1 -1
  262. package/dist/types/src/translations.d.ts +144 -194
  263. package/dist/types/src/translations.d.ts.map +1 -1
  264. package/dist/types/src/types/Settings.d.ts +5 -0
  265. package/dist/types/src/types/Settings.d.ts.map +1 -0
  266. package/dist/types/src/types/capabilities.d.ts +29 -0
  267. package/dist/types/src/types/capabilities.d.ts.map +1 -0
  268. package/dist/types/src/types/index.d.ts +1 -1
  269. package/dist/types/src/types/index.d.ts.map +1 -1
  270. package/dist/types/src/types/types.d.ts +4 -326
  271. package/dist/types/src/types/types.d.ts.map +1 -1
  272. package/dist/types/src/util.d.ts +21 -3
  273. package/dist/types/src/util.d.ts.map +1 -1
  274. package/dist/types/tsconfig.tsbuildinfo +1 -1
  275. package/package.json +119 -75
  276. package/src/ThreadPlugin.node.ts +39 -0
  277. package/src/ThreadPlugin.test.ts +37 -0
  278. package/src/ThreadPlugin.tsx +66 -149
  279. package/src/blueprints/index.ts +5 -0
  280. package/src/blueprints/thread-blueprint.ts +36 -0
  281. package/src/calls/call-manager.ts +78 -50
  282. package/src/calls/call-swarm-synchronizer.ts +3 -3
  283. package/src/calls/media-manager.ts +77 -41
  284. package/src/calls/types.ts +8 -4
  285. package/src/calls/util/calls-service.ts +74 -19
  286. package/src/calls/util/stub-media-streams.ts +65 -9
  287. package/src/calls/util/task-scheduling.ts +4 -4
  288. package/src/calls-service.stories.tsx +230 -0
  289. package/src/capabilities/app-graph-builder.ts +177 -162
  290. package/src/capabilities/blueprint-definition.ts +19 -0
  291. package/src/capabilities/call-manager.ts +19 -11
  292. package/src/capabilities/create-object.ts +29 -0
  293. package/src/capabilities/index.ts +17 -11
  294. package/src/capabilities/markdown.ts +55 -37
  295. package/src/capabilities/operation-handler.ts +16 -0
  296. package/src/capabilities/react-root.tsx +12 -9
  297. package/src/capabilities/react-surface.tsx +83 -74
  298. package/src/capabilities/settings.ts +28 -12
  299. package/src/capabilities/state.ts +14 -17
  300. package/src/capabilities/undo-mappings.ts +46 -0
  301. package/src/components/Call/Call.tsx +17 -12
  302. package/src/components/Call/Toolbar.tsx +63 -46
  303. package/src/components/Chat/Chat.tsx +258 -0
  304. package/src/components/Chat/index.ts +5 -0
  305. package/src/components/CommentsPanel/CommentsPanel.stories.tsx +95 -0
  306. package/src/components/CommentsPanel/CommentsPanel.tsx +71 -0
  307. package/src/components/CommentsPanel/CommentsThread.tsx +172 -0
  308. package/src/components/CommentsPanel/index.ts +6 -0
  309. package/src/components/Lobby/Lobby.tsx +21 -17
  310. package/src/components/Media/AudioStream.tsx +2 -2
  311. package/src/components/Media/VideoObject.stories.tsx +37 -30
  312. package/src/components/Media/VideoObject.tsx +1 -1
  313. package/src/components/MessagePanel/MessagePanel.tsx +225 -0
  314. package/src/components/MessagePanel/index.ts +5 -0
  315. package/src/components/Participant/Participant.tsx +35 -15
  316. package/src/components/Participant/ParticipantGrid.tsx +1 -1
  317. package/src/components/ResponsiveGrid/ResponsiveGrid.stories.tsx +51 -49
  318. package/src/components/ResponsiveGrid/ResponsiveGrid.tsx +6 -6
  319. package/src/components/ResponsiveGrid/ResponsiveGridItem.tsx +15 -12
  320. package/src/components/ResponsiveGrid/{ResponsiveContainer.stories.tsx → ResponsivePanel.stories.tsx} +12 -12
  321. package/src/components/ResponsiveGrid/{ResponsiveContainer.tsx → ResponsivePanel.tsx} +5 -5
  322. package/src/components/ResponsiveGrid/index.ts +1 -1
  323. package/src/components/ThreadSettings/ThreadSettings.stories.tsx +32 -0
  324. package/src/components/ThreadSettings/ThreadSettings.tsx +20 -0
  325. package/src/components/ThreadSettings/index.ts +5 -0
  326. package/src/components/index.ts +6 -12
  327. package/src/containers/CallDebugPanel/CallDebugPanel.tsx +173 -0
  328. package/src/containers/CallDebugPanel/index.ts +5 -0
  329. package/src/containers/CallSidebar/CallSidebar.tsx +18 -0
  330. package/src/containers/CallSidebar/index.ts +5 -0
  331. package/src/containers/ChannelChat/ChannelChat.tsx +75 -0
  332. package/src/containers/ChannelChat/index.ts +8 -0
  333. package/src/containers/ChannelContainer/ChannelContainer.stories.tsx +105 -0
  334. package/src/containers/ChannelContainer/ChannelContainer.tsx +223 -0
  335. package/src/containers/ChannelContainer/index.ts +5 -0
  336. package/src/containers/ThreadCompanion/ThreadCompanion.tsx +215 -0
  337. package/src/containers/ThreadCompanion/index.ts +5 -0
  338. package/src/containers/ThreadContainer/ThreadContainer.stories.tsx +86 -0
  339. package/src/containers/ThreadContainer/ThreadContainer.tsx +75 -0
  340. package/src/containers/ThreadContainer/index.ts +8 -0
  341. package/src/containers/index.ts +12 -0
  342. package/src/{components/command-extension.ts → extensions/command.ts} +7 -4
  343. package/src/extensions/index.ts +1 -0
  344. package/src/extensions/threads.ts +89 -44
  345. package/src/hooks/analytics.ts +22 -21
  346. package/src/hooks/index.ts +4 -0
  347. package/src/hooks/useBlackCanvasStreamTrack.tsx +27 -0
  348. package/src/hooks/useDebugMode.ts +1 -1
  349. package/src/hooks/useInaudibleAudioStreamTrack.tsx +27 -0
  350. package/src/hooks/useVideoStreamTrack.tsx +36 -0
  351. package/src/index.ts +11 -4
  352. package/src/meta.ts +11 -7
  353. package/src/operations/add-message.ts +81 -0
  354. package/src/operations/append-channel-message.ts +36 -0
  355. package/src/operations/create-channel.ts +20 -0
  356. package/src/operations/create-proposals.ts +49 -0
  357. package/src/operations/create.ts +48 -0
  358. package/src/operations/definitions.ts +177 -0
  359. package/src/operations/delete-message.ts +53 -0
  360. package/src/operations/delete.ts +63 -0
  361. package/src/operations/index.ts +22 -0
  362. package/src/operations/on-create-space.ts +27 -0
  363. package/src/operations/restore-message.ts +38 -0
  364. package/src/operations/restore.ts +38 -0
  365. package/src/operations/select.ts +24 -0
  366. package/src/operations/toggle-resolved.ts +41 -0
  367. package/src/testing/data.ts +49 -0
  368. package/src/testing/index.ts +1 -1
  369. package/src/translations.ts +77 -73
  370. package/src/types/Settings.ts +10 -0
  371. package/src/types/capabilities.ts +42 -0
  372. package/src/types/index.ts +1 -1
  373. package/src/types/types.ts +5 -91
  374. package/src/typings/peermetrics-webrtc-stats.d.ts +17 -1
  375. package/src/typings.d.ts +8 -0
  376. package/src/util.ts +38 -6
  377. package/dist/lib/browser/ChannelContainer-PKFBVENP.mjs +0 -15
  378. package/dist/lib/browser/ChatContainer-RSOKYAMK.mjs +0 -14
  379. package/dist/lib/browser/app-graph-builder-OY7R7EJP.mjs +0 -171
  380. package/dist/lib/browser/app-graph-builder-OY7R7EJP.mjs.map +0 -7
  381. package/dist/lib/browser/call-manager-APQAZWHT.mjs +0 -23
  382. package/dist/lib/browser/call-manager-APQAZWHT.mjs.map +0 -7
  383. package/dist/lib/browser/chunk-4H4A264L.mjs +0 -1708
  384. package/dist/lib/browser/chunk-4H4A264L.mjs.map +0 -7
  385. package/dist/lib/browser/chunk-5P5BH5GE.mjs +0 -88
  386. package/dist/lib/browser/chunk-5P5BH5GE.mjs.map +0 -7
  387. package/dist/lib/browser/chunk-6NBVNXTM.mjs +0 -21
  388. package/dist/lib/browser/chunk-6NBVNXTM.mjs.map +0 -7
  389. package/dist/lib/browser/chunk-AEXWNS6Z.mjs +0 -128
  390. package/dist/lib/browser/chunk-AEXWNS6Z.mjs.map +0 -7
  391. package/dist/lib/browser/chunk-IIUTBDVB.mjs +0 -17
  392. package/dist/lib/browser/chunk-IIUTBDVB.mjs.map +0 -7
  393. package/dist/lib/browser/chunk-JKQUJOTX.mjs +0 -31
  394. package/dist/lib/browser/chunk-JKQUJOTX.mjs.map +0 -7
  395. package/dist/lib/browser/chunk-PG5CTFKK.mjs +0 -550
  396. package/dist/lib/browser/chunk-PG5CTFKK.mjs.map +0 -7
  397. package/dist/lib/browser/chunk-R5MDLUPC.mjs +0 -18
  398. package/dist/lib/browser/chunk-R5MDLUPC.mjs.map +0 -7
  399. package/dist/lib/browser/chunk-TAFSCSUR.mjs +0 -351
  400. package/dist/lib/browser/chunk-TAFSCSUR.mjs.map +0 -7
  401. package/dist/lib/browser/chunk-XZKBN3NS.mjs +0 -983
  402. package/dist/lib/browser/chunk-XZKBN3NS.mjs.map +0 -7
  403. package/dist/lib/browser/intent-resolver-FK2MDVDT.mjs +0 -353
  404. package/dist/lib/browser/intent-resolver-FK2MDVDT.mjs.map +0 -7
  405. package/dist/lib/browser/markdown-TE5SWWNJ.mjs +0 -169
  406. package/dist/lib/browser/markdown-TE5SWWNJ.mjs.map +0 -7
  407. package/dist/lib/browser/react-root-NK3A4VG7.mjs +0 -27
  408. package/dist/lib/browser/react-root-NK3A4VG7.mjs.map +0 -7
  409. package/dist/lib/browser/react-surface-VXUJKSOG.mjs +0 -108
  410. package/dist/lib/browser/react-surface-VXUJKSOG.mjs.map +0 -7
  411. package/dist/lib/browser/settings-RB2RSLXV.mjs +0 -22
  412. package/dist/lib/browser/settings-RB2RSLXV.mjs.map +0 -7
  413. package/dist/lib/browser/state-RKL5MSDP.mjs +0 -34
  414. package/dist/lib/browser/state-RKL5MSDP.mjs.map +0 -7
  415. package/dist/lib/node/ChannelContainer-YS5YT2ML.cjs +0 -36
  416. package/dist/lib/node/ChannelContainer-YS5YT2ML.cjs.map +0 -7
  417. package/dist/lib/node/ChatContainer-GCOM3M56.cjs +0 -35
  418. package/dist/lib/node/ChatContainer-GCOM3M56.cjs.map +0 -7
  419. package/dist/lib/node/app-graph-builder-PBHJNDQY.cjs +0 -179
  420. package/dist/lib/node/app-graph-builder-PBHJNDQY.cjs.map +0 -7
  421. package/dist/lib/node/call-manager-HV2XJW5O.cjs +0 -37
  422. package/dist/lib/node/call-manager-HV2XJW5O.cjs.map +0 -7
  423. package/dist/lib/node/chunk-44I33JDT.cjs +0 -1731
  424. package/dist/lib/node/chunk-44I33JDT.cjs.map +0 -7
  425. package/dist/lib/node/chunk-4YSNVPWU.cjs +0 -37
  426. package/dist/lib/node/chunk-4YSNVPWU.cjs.map +0 -7
  427. package/dist/lib/node/chunk-E3WBZTTI.cjs +0 -371
  428. package/dist/lib/node/chunk-E3WBZTTI.cjs.map +0 -7
  429. package/dist/lib/node/chunk-ERG7G6FF.cjs +0 -59
  430. package/dist/lib/node/chunk-ERG7G6FF.cjs.map +0 -7
  431. package/dist/lib/node/chunk-FUXJAVFZ.cjs +0 -108
  432. package/dist/lib/node/chunk-FUXJAVFZ.cjs.map +0 -7
  433. package/dist/lib/node/chunk-HLMCEE5K.cjs +0 -41
  434. package/dist/lib/node/chunk-HLMCEE5K.cjs.map +0 -7
  435. package/dist/lib/node/chunk-IP533AMV.cjs +0 -554
  436. package/dist/lib/node/chunk-IP533AMV.cjs.map +0 -7
  437. package/dist/lib/node/chunk-LR5NENBE.cjs +0 -54
  438. package/dist/lib/node/chunk-LR5NENBE.cjs.map +0 -7
  439. package/dist/lib/node/chunk-UM36TPCT.cjs +0 -984
  440. package/dist/lib/node/chunk-UM36TPCT.cjs.map +0 -7
  441. package/dist/lib/node/chunk-ZGDN3XBR.cjs +0 -149
  442. package/dist/lib/node/chunk-ZGDN3XBR.cjs.map +0 -7
  443. package/dist/lib/node/index.cjs +0 -310
  444. package/dist/lib/node/index.cjs.map +0 -7
  445. package/dist/lib/node/intent-resolver-SYSJ5SJG.cjs +0 -363
  446. package/dist/lib/node/intent-resolver-SYSJ5SJG.cjs.map +0 -7
  447. package/dist/lib/node/markdown-GQIPJS2F.cjs +0 -178
  448. package/dist/lib/node/markdown-GQIPJS2F.cjs.map +0 -7
  449. package/dist/lib/node/meta.json +0 -1
  450. package/dist/lib/node/react-root-6HHDMULJ.cjs +0 -51
  451. package/dist/lib/node/react-root-6HHDMULJ.cjs.map +0 -7
  452. package/dist/lib/node/react-surface-NBH42NN2.cjs +0 -122
  453. package/dist/lib/node/react-surface-NBH42NN2.cjs.map +0 -7
  454. package/dist/lib/node/settings-4LQSFEDK.cjs +0 -36
  455. package/dist/lib/node/settings-4LQSFEDK.cjs.map +0 -7
  456. package/dist/lib/node/state-IY5XX3H2.cjs +0 -50
  457. package/dist/lib/node/state-IY5XX3H2.cjs.map +0 -7
  458. package/dist/lib/node/types/index.cjs +0 -38
  459. package/dist/lib/node/types/index.cjs.map +0 -7
  460. package/dist/lib/node-esm/ChannelContainer-O4QJII2P.mjs +0 -16
  461. package/dist/lib/node-esm/ChannelContainer-O4QJII2P.mjs.map +0 -7
  462. package/dist/lib/node-esm/ChatContainer-F6CSADV7.mjs +0 -15
  463. package/dist/lib/node-esm/ChatContainer-F6CSADV7.mjs.map +0 -7
  464. package/dist/lib/node-esm/app-graph-builder-BAHBHYWI.mjs +0 -172
  465. package/dist/lib/node-esm/app-graph-builder-BAHBHYWI.mjs.map +0 -7
  466. package/dist/lib/node-esm/call-manager-UUYXLF4T.mjs +0 -24
  467. package/dist/lib/node-esm/call-manager-UUYXLF4T.mjs.map +0 -7
  468. package/dist/lib/node-esm/chunk-2RNIPFDA.mjs +0 -984
  469. package/dist/lib/node-esm/chunk-2RNIPFDA.mjs.map +0 -7
  470. package/dist/lib/node-esm/chunk-ESQC6SYE.mjs +0 -19
  471. package/dist/lib/node-esm/chunk-ESQC6SYE.mjs.map +0 -7
  472. package/dist/lib/node-esm/chunk-K4KAUOKT.mjs +0 -19
  473. package/dist/lib/node-esm/chunk-K4KAUOKT.mjs.map +0 -7
  474. package/dist/lib/node-esm/chunk-O3V45YJP.mjs +0 -90
  475. package/dist/lib/node-esm/chunk-O3V45YJP.mjs.map +0 -7
  476. package/dist/lib/node-esm/chunk-O63QJPQX.mjs +0 -23
  477. package/dist/lib/node-esm/chunk-O63QJPQX.mjs.map +0 -7
  478. package/dist/lib/node-esm/chunk-P6RLFCNT.mjs +0 -352
  479. package/dist/lib/node-esm/chunk-P6RLFCNT.mjs.map +0 -7
  480. package/dist/lib/node-esm/chunk-PGRP3O4O.mjs +0 -33
  481. package/dist/lib/node-esm/chunk-PGRP3O4O.mjs.map +0 -7
  482. package/dist/lib/node-esm/chunk-UJMPYKT3.mjs +0 -129
  483. package/dist/lib/node-esm/chunk-UJMPYKT3.mjs.map +0 -7
  484. package/dist/lib/node-esm/chunk-UZWVVFT3.mjs +0 -551
  485. package/dist/lib/node-esm/chunk-UZWVVFT3.mjs.map +0 -7
  486. package/dist/lib/node-esm/chunk-WXNPD542.mjs +0 -1710
  487. package/dist/lib/node-esm/chunk-WXNPD542.mjs.map +0 -7
  488. package/dist/lib/node-esm/intent-resolver-BU73VYW3.mjs +0 -354
  489. package/dist/lib/node-esm/intent-resolver-BU73VYW3.mjs.map +0 -7
  490. package/dist/lib/node-esm/markdown-HJUWNBLS.mjs +0 -170
  491. package/dist/lib/node-esm/markdown-HJUWNBLS.mjs.map +0 -7
  492. package/dist/lib/node-esm/react-root-RUXOAQNW.mjs +0 -28
  493. package/dist/lib/node-esm/react-root-RUXOAQNW.mjs.map +0 -7
  494. package/dist/lib/node-esm/react-surface-ELXFYKP6.mjs +0 -109
  495. package/dist/lib/node-esm/react-surface-ELXFYKP6.mjs.map +0 -7
  496. package/dist/lib/node-esm/settings-EA7DFSM6.mjs +0 -23
  497. package/dist/lib/node-esm/settings-EA7DFSM6.mjs.map +0 -7
  498. package/dist/lib/node-esm/state-6AUTNROZ.mjs +0 -35
  499. package/dist/lib/node-esm/state-6AUTNROZ.mjs.map +0 -7
  500. package/dist/types/src/capabilities/capabilities.d.ts +0 -27
  501. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  502. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  503. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  504. package/dist/types/src/components/CallDebugPanel.d.ts +0 -8
  505. package/dist/types/src/components/CallDebugPanel.d.ts.map +0 -1
  506. package/dist/types/src/components/CallSidebar.d.ts.map +0 -1
  507. package/dist/types/src/components/ChannelContainer.d.ts +0 -14
  508. package/dist/types/src/components/ChannelContainer.d.ts.map +0 -1
  509. package/dist/types/src/components/ChannelContainer.stories.d.ts +0 -10
  510. package/dist/types/src/components/ChannelContainer.stories.d.ts.map +0 -1
  511. package/dist/types/src/components/Chat.stories.d.ts +0 -6
  512. package/dist/types/src/components/Chat.stories.d.ts.map +0 -1
  513. package/dist/types/src/components/ChatContainer.d.ts +0 -17
  514. package/dist/types/src/components/ChatContainer.d.ts.map +0 -1
  515. package/dist/types/src/components/CommentContainer.d.ts +0 -13
  516. package/dist/types/src/components/CommentContainer.d.ts.map +0 -1
  517. package/dist/types/src/components/Comments.stories.d.ts +0 -6
  518. package/dist/types/src/components/Comments.stories.d.ts.map +0 -1
  519. package/dist/types/src/components/CommentsContainer.d.ts +0 -13
  520. package/dist/types/src/components/CommentsContainer.d.ts.map +0 -1
  521. package/dist/types/src/components/MessageContainer.d.ts +0 -11
  522. package/dist/types/src/components/MessageContainer.d.ts.map +0 -1
  523. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.d.ts.map +0 -1
  524. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts +0 -10
  525. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts.map +0 -1
  526. package/dist/types/src/components/ThreadComplementary.d.ts +0 -5
  527. package/dist/types/src/components/ThreadComplementary.d.ts.map +0 -1
  528. package/dist/types/src/components/ThreadSettings.d.ts +0 -6
  529. package/dist/types/src/components/ThreadSettings.d.ts.map +0 -1
  530. package/dist/types/src/components/command-extension.d.ts.map +0 -1
  531. package/dist/types/src/components/testing.d.ts +0 -4
  532. package/dist/types/src/components/testing.d.ts.map +0 -1
  533. package/dist/types/src/peers.stories.d.ts +0 -11
  534. package/dist/types/src/peers.stories.d.ts.map +0 -1
  535. package/dist/types/src/testing/stories.d.ts +0 -2
  536. package/dist/types/src/testing/stories.d.ts.map +0 -1
  537. package/dist/types/src/types/schema.d.ts +0 -133
  538. package/dist/types/src/types/schema.d.ts.map +0 -1
  539. package/src/capabilities/capabilities.ts +0 -33
  540. package/src/capabilities/intent-resolver.ts +0 -296
  541. package/src/components/CallDebugPanel.tsx +0 -115
  542. package/src/components/CallSidebar.tsx +0 -17
  543. package/src/components/ChannelContainer.stories.tsx +0 -58
  544. package/src/components/ChannelContainer.tsx +0 -199
  545. package/src/components/Chat.stories.tsx +0 -88
  546. package/src/components/ChatContainer.tsx +0 -140
  547. package/src/components/CommentContainer.tsx +0 -198
  548. package/src/components/Comments.stories.tsx +0 -85
  549. package/src/components/CommentsContainer.tsx +0 -66
  550. package/src/components/MessageContainer.tsx +0 -167
  551. package/src/components/ThreadComplementary.tsx +0 -151
  552. package/src/components/ThreadSettings.tsx +0 -17
  553. package/src/components/testing.ts +0 -29
  554. package/src/peers.stories.tsx +0 -189
  555. package/src/testing/stories.ts +0 -50
  556. package/src/types/schema.ts +0 -33
  557. /package/dist/lib/browser/{ChannelContainer-PKFBVENP.mjs.map → chunk-J5LGTIGS.mjs.map} +0 -0
  558. /package/dist/lib/{browser/ChatContainer-RSOKYAMK.mjs.map → node-esm/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