@dxos/plugin-thread 0.8.3-staging.0fa589b → 0.8.4-main.03d5cd7b56

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 (598) hide show
  1. package/dist/lib/neutral/CallDebugPanel-CXWTCS7A.mjs +172 -0
  2. package/dist/lib/neutral/CallDebugPanel-CXWTCS7A.mjs.map +7 -0
  3. package/dist/lib/neutral/CallSidebar-YVXU6BOQ.mjs +25 -0
  4. package/dist/lib/neutral/CallSidebar-YVXU6BOQ.mjs.map +7 -0
  5. package/dist/lib/neutral/ChannelChat-EKQYQQXZ.mjs +10 -0
  6. package/dist/lib/neutral/ChannelContainer-XXMX5X43.mjs +9 -0
  7. package/dist/lib/neutral/ThreadCompanion-YGA2ORTJ.mjs +208 -0
  8. package/dist/lib/neutral/ThreadCompanion-YGA2ORTJ.mjs.map +7 -0
  9. package/dist/lib/neutral/ThreadContainer-XYEPEOSD.mjs +61 -0
  10. package/dist/lib/neutral/ThreadContainer-XYEPEOSD.mjs.map +7 -0
  11. package/dist/lib/neutral/ThreadPlugin.mjs +89 -0
  12. package/dist/lib/neutral/ThreadPlugin.mjs.map +7 -0
  13. package/dist/lib/neutral/ThreadPlugin.node.mjs +40 -0
  14. package/dist/lib/neutral/ThreadPlugin.node.mjs.map +7 -0
  15. package/dist/lib/neutral/ThreadSettings-5Z5XIHG3.mjs +15 -0
  16. package/dist/lib/neutral/ThreadSettings-5Z5XIHG3.mjs.map +7 -0
  17. package/dist/lib/neutral/add-message-WX3LCGZC.mjs +87 -0
  18. package/dist/lib/neutral/add-message-WX3LCGZC.mjs.map +7 -0
  19. package/dist/lib/neutral/app-graph-builder-BBHAUCMZ.mjs +173 -0
  20. package/dist/lib/neutral/app-graph-builder-BBHAUCMZ.mjs.map +7 -0
  21. package/dist/lib/neutral/append-channel-message-J7N6UEBL.mjs +40 -0
  22. package/dist/lib/neutral/append-channel-message-J7N6UEBL.mjs.map +7 -0
  23. package/dist/lib/neutral/blueprint-definition-S3EBOH4R.mjs +15 -0
  24. package/dist/lib/neutral/blueprint-definition-S3EBOH4R.mjs.map +7 -0
  25. package/dist/lib/neutral/blueprints/index.mjs +8 -0
  26. package/dist/lib/neutral/call-manager-JFA4DLWR.mjs +24 -0
  27. package/dist/lib/neutral/call-manager-JFA4DLWR.mjs.map +7 -0
  28. package/dist/lib/neutral/capabilities/index.mjs +29 -0
  29. package/dist/lib/neutral/capabilities/index.mjs.map +7 -0
  30. package/dist/lib/neutral/chunk-44D7D4ZX.mjs +20 -0
  31. package/dist/lib/neutral/chunk-44D7D4ZX.mjs.map +7 -0
  32. package/dist/lib/neutral/chunk-4SVMVL4L.mjs +164 -0
  33. package/dist/lib/neutral/chunk-4SVMVL4L.mjs.map +7 -0
  34. package/dist/lib/neutral/chunk-5T5LPLBN.mjs +36 -0
  35. package/dist/lib/neutral/chunk-5T5LPLBN.mjs.map +7 -0
  36. package/dist/lib/neutral/chunk-BFHJWC3L.mjs +276 -0
  37. package/dist/lib/neutral/chunk-BFHJWC3L.mjs.map +7 -0
  38. package/dist/lib/neutral/chunk-CROE4U4O.mjs +100 -0
  39. package/dist/lib/neutral/chunk-CROE4U4O.mjs.map +7 -0
  40. package/dist/lib/neutral/chunk-EACFR36K.mjs +55 -0
  41. package/dist/lib/neutral/chunk-EACFR36K.mjs.map +7 -0
  42. package/dist/lib/neutral/chunk-FWSMZWBO.mjs +178 -0
  43. package/dist/lib/neutral/chunk-FWSMZWBO.mjs.map +7 -0
  44. package/dist/lib/neutral/chunk-J5LGTIGS.mjs +10 -0
  45. package/dist/lib/{node-esm/chunk-PGRP3O4O.mjs → neutral/chunk-JLY4NVTA.mjs} +14 -9
  46. package/dist/lib/neutral/chunk-JLY4NVTA.mjs.map +7 -0
  47. package/dist/lib/neutral/chunk-NGZVEPJV.mjs +8 -0
  48. package/dist/lib/neutral/chunk-NGZVEPJV.mjs.map +7 -0
  49. package/dist/lib/{node-esm/chunk-WXNPD542.mjs → neutral/chunk-PZ7WTAA2.mjs} +317 -505
  50. package/dist/lib/neutral/chunk-PZ7WTAA2.mjs.map +7 -0
  51. package/dist/lib/neutral/chunk-UQFTL6TV.mjs +202 -0
  52. package/dist/lib/neutral/chunk-UQFTL6TV.mjs.map +7 -0
  53. package/dist/lib/neutral/components/index.mjs +1230 -0
  54. package/dist/lib/neutral/components/index.mjs.map +7 -0
  55. package/dist/lib/neutral/containers/index.mjs +19 -0
  56. package/dist/lib/neutral/containers/index.mjs.map +7 -0
  57. package/dist/lib/neutral/create-DGJZRLG7.mjs +52 -0
  58. package/dist/lib/neutral/create-DGJZRLG7.mjs.map +7 -0
  59. package/dist/lib/neutral/create-channel-RP646IAE.mjs +19 -0
  60. package/dist/lib/neutral/create-channel-RP646IAE.mjs.map +7 -0
  61. package/dist/lib/neutral/create-object-HIEWSBZB.mjs +27 -0
  62. package/dist/lib/neutral/create-object-HIEWSBZB.mjs.map +7 -0
  63. package/dist/lib/neutral/create-proposals-CPLU4YC6.mjs +56 -0
  64. package/dist/lib/neutral/create-proposals-CPLU4YC6.mjs.map +7 -0
  65. package/dist/lib/neutral/delete-MKKME2FE.mjs +57 -0
  66. package/dist/lib/neutral/delete-MKKME2FE.mjs.map +7 -0
  67. package/dist/lib/neutral/delete-message-UBZH3SZA.mjs +54 -0
  68. package/dist/lib/neutral/delete-message-UBZH3SZA.mjs.map +7 -0
  69. package/dist/lib/neutral/hooks/index.mjs +19 -0
  70. package/dist/lib/neutral/index.mjs +68 -0
  71. package/dist/lib/neutral/markdown-XQLZYS2O.mjs +83 -0
  72. package/dist/lib/neutral/markdown-XQLZYS2O.mjs.map +7 -0
  73. package/dist/lib/neutral/meta.json +1 -0
  74. package/dist/lib/neutral/meta.mjs +10 -0
  75. package/dist/lib/neutral/meta.mjs.map +7 -0
  76. package/dist/lib/neutral/on-create-space-MRLZYOJR.mjs +23 -0
  77. package/dist/lib/neutral/on-create-space-MRLZYOJR.mjs.map +7 -0
  78. package/dist/lib/neutral/operation-handler-RU6K2S4L.mjs +13 -0
  79. package/dist/lib/neutral/operation-handler-RU6K2S4L.mjs.map +7 -0
  80. package/dist/lib/neutral/operations/index.mjs +8 -0
  81. package/dist/lib/neutral/operations/index.mjs.map +7 -0
  82. package/dist/lib/neutral/plugin.mjs +16 -0
  83. package/dist/lib/neutral/plugin.mjs.map +7 -0
  84. package/dist/lib/neutral/react-root-VMMNUSSL.mjs +18 -0
  85. package/dist/lib/neutral/react-root-VMMNUSSL.mjs.map +7 -0
  86. package/dist/lib/neutral/react-surface-WPSVOTVG.mjs +94 -0
  87. package/dist/lib/neutral/react-surface-WPSVOTVG.mjs.map +7 -0
  88. package/dist/lib/neutral/restore-SUXNC6GE.mjs +32 -0
  89. package/dist/lib/neutral/restore-SUXNC6GE.mjs.map +7 -0
  90. package/dist/lib/neutral/restore-message-2TPJB32Y.mjs +33 -0
  91. package/dist/lib/neutral/restore-message-2TPJB32Y.mjs.map +7 -0
  92. package/dist/lib/neutral/select-H5RMZH43.mjs +24 -0
  93. package/dist/lib/neutral/select-H5RMZH43.mjs.map +7 -0
  94. package/dist/lib/neutral/settings-HK4EB6TF.mjs +30 -0
  95. package/dist/lib/neutral/settings-HK4EB6TF.mjs.map +7 -0
  96. package/dist/lib/neutral/state-UU7VEAKV.mjs +22 -0
  97. package/dist/lib/neutral/state-UU7VEAKV.mjs.map +7 -0
  98. package/dist/lib/neutral/testing/index.mjs +58 -0
  99. package/dist/lib/neutral/testing/index.mjs.map +7 -0
  100. package/dist/lib/neutral/toggle-resolved-HKZ4IRHG.mjs +36 -0
  101. package/dist/lib/neutral/toggle-resolved-HKZ4IRHG.mjs.map +7 -0
  102. package/dist/lib/neutral/translations.mjs +90 -0
  103. package/dist/lib/neutral/translations.mjs.map +7 -0
  104. package/dist/lib/neutral/types/index.mjs +12 -0
  105. package/dist/lib/neutral/types/index.mjs.map +7 -0
  106. package/dist/lib/neutral/undo-mappings-HOKL2L3M.mjs +54 -0
  107. package/dist/lib/neutral/undo-mappings-HOKL2L3M.mjs.map +7 -0
  108. package/dist/types/src/ThreadPlugin.d.ts +3 -1
  109. package/dist/types/src/ThreadPlugin.d.ts.map +1 -1
  110. package/dist/types/src/ThreadPlugin.node.d.ts +4 -0
  111. package/dist/types/src/ThreadPlugin.node.d.ts.map +1 -0
  112. package/dist/types/src/ThreadPlugin.test.d.ts +2 -0
  113. package/dist/types/src/ThreadPlugin.test.d.ts.map +1 -0
  114. package/dist/types/src/blueprints/index.d.ts +2 -0
  115. package/dist/types/src/blueprints/index.d.ts.map +1 -0
  116. package/dist/types/src/blueprints/thread-blueprint.d.ts +4 -0
  117. package/dist/types/src/blueprints/thread-blueprint.d.ts.map +1 -0
  118. package/dist/types/src/calls/call-manager.d.ts +40 -30
  119. package/dist/types/src/calls/call-manager.d.ts.map +1 -1
  120. package/dist/types/src/calls/call-swarm-synchronizer.d.ts +2 -2
  121. package/dist/types/src/calls/call-swarm-synchronizer.d.ts.map +1 -1
  122. package/dist/types/src/calls/media-manager.d.ts +2 -2
  123. package/dist/types/src/calls/media-manager.d.ts.map +1 -1
  124. package/dist/types/src/calls/speaking-monitor.d.ts +0 -3
  125. package/dist/types/src/calls/speaking-monitor.d.ts.map +1 -1
  126. package/dist/types/src/calls/types.d.ts +1 -1
  127. package/dist/types/src/calls/types.d.ts.map +1 -1
  128. package/dist/types/src/calls/util/audio.d.ts.map +1 -1
  129. package/dist/types/src/calls/util/calls-service.d.ts +11 -6
  130. package/dist/types/src/calls/util/calls-service.d.ts.map +1 -1
  131. package/dist/types/src/calls/util/history-cache.d.ts.map +1 -1
  132. package/dist/types/src/calls/util/media.d.ts.map +1 -1
  133. package/dist/types/src/calls/util/stub-media-streams.d.ts.map +1 -1
  134. package/dist/types/src/calls/util/task-scheduling.d.ts +2 -2
  135. package/dist/types/src/calls/util/task-scheduling.d.ts.map +1 -1
  136. package/dist/types/src/calls-service.stories.d.ts +23 -0
  137. package/dist/types/src/calls-service.stories.d.ts.map +1 -0
  138. package/dist/types/src/capabilities/app-graph-builder.d.ts +4 -2
  139. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  140. package/dist/types/src/capabilities/blueprint-definition.d.ts +6 -0
  141. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -0
  142. package/dist/types/src/capabilities/call-manager.d.ts +3 -2
  143. package/dist/types/src/capabilities/call-manager.d.ts.map +1 -1
  144. package/dist/types/src/capabilities/create-object.d.ts +11 -0
  145. package/dist/types/src/capabilities/create-object.d.ts.map +1 -0
  146. package/dist/types/src/capabilities/index.d.ts +19 -13
  147. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  148. package/dist/types/src/capabilities/markdown.d.ts +3 -2
  149. package/dist/types/src/capabilities/markdown.d.ts.map +1 -1
  150. package/dist/types/src/capabilities/operation-handler.d.ts +6 -0
  151. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -0
  152. package/dist/types/src/capabilities/react-root.d.ts +4 -2
  153. package/dist/types/src/capabilities/react-root.d.ts.map +1 -1
  154. package/dist/types/src/capabilities/react-surface.d.ts +3 -2
  155. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  156. package/dist/types/src/capabilities/settings.d.ts +5 -2
  157. package/dist/types/src/capabilities/settings.d.ts.map +1 -1
  158. package/dist/types/src/capabilities/state.d.ts +5 -5
  159. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  160. package/dist/types/src/capabilities/undo-mappings.d.ts +5 -0
  161. package/dist/types/src/capabilities/undo-mappings.d.ts.map +1 -0
  162. package/dist/types/src/components/Call/Call.d.ts +32 -4
  163. package/dist/types/src/components/Call/Call.d.ts.map +1 -1
  164. package/dist/types/src/components/Call/Toolbar.d.ts +6 -6
  165. package/dist/types/src/components/Call/Toolbar.d.ts.map +1 -1
  166. package/dist/types/src/components/Chat/Chat.d.ts +51 -0
  167. package/dist/types/src/components/Chat/Chat.d.ts.map +1 -0
  168. package/dist/types/src/components/Chat/index.d.ts +2 -0
  169. package/dist/types/src/components/Chat/index.d.ts.map +1 -0
  170. package/dist/types/src/components/CommentsPanel/CommentsPanel.d.ts +13 -0
  171. package/dist/types/src/components/CommentsPanel/CommentsPanel.d.ts.map +1 -0
  172. package/dist/types/src/components/CommentsPanel/CommentsPanel.stories.d.ts +160 -0
  173. package/dist/types/src/components/CommentsPanel/CommentsPanel.stories.d.ts.map +1 -0
  174. package/dist/types/src/components/CommentsPanel/CommentsThread.d.ts +14 -0
  175. package/dist/types/src/components/CommentsPanel/CommentsThread.d.ts.map +1 -0
  176. package/dist/types/src/components/CommentsPanel/index.d.ts +3 -0
  177. package/dist/types/src/components/CommentsPanel/index.d.ts.map +1 -0
  178. package/dist/types/src/components/Lobby/Lobby.d.ts +24 -3
  179. package/dist/types/src/components/Lobby/Lobby.d.ts.map +1 -1
  180. package/dist/types/src/components/Media/VideoObject.d.ts +3 -3
  181. package/dist/types/src/components/Media/VideoObject.d.ts.map +1 -1
  182. package/dist/types/src/components/Media/VideoObject.stories.d.ts +18 -4
  183. package/dist/types/src/components/Media/VideoObject.stories.d.ts.map +1 -1
  184. package/dist/types/src/components/MessagePanel/MessagePanel.d.ts +15 -0
  185. package/dist/types/src/components/MessagePanel/MessagePanel.d.ts.map +1 -0
  186. package/dist/types/src/components/MessagePanel/index.d.ts +2 -0
  187. package/dist/types/src/components/MessagePanel/index.d.ts.map +1 -0
  188. package/dist/types/src/components/Participant/Participant.d.ts.map +1 -1
  189. package/dist/types/src/components/Participant/ParticipantGrid.d.ts.map +1 -1
  190. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.d.ts.map +1 -1
  191. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts +160 -5
  192. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts.map +1 -1
  193. package/dist/types/src/components/ResponsiveGrid/ResponsiveGridItem.d.ts.map +1 -1
  194. package/dist/types/src/components/ResponsiveGrid/{ResponsiveContainer.d.ts → ResponsivePanel.d.ts} +4 -4
  195. package/dist/types/src/components/ResponsiveGrid/ResponsivePanel.d.ts.map +1 -0
  196. package/dist/types/src/components/ResponsiveGrid/ResponsivePanel.stories.d.ts +164 -0
  197. package/dist/types/src/components/ResponsiveGrid/ResponsivePanel.stories.d.ts.map +1 -0
  198. package/dist/types/src/components/ResponsiveGrid/index.d.ts +1 -1
  199. package/dist/types/src/components/ResponsiveGrid/index.d.ts.map +1 -1
  200. package/dist/types/src/components/ThreadSettings/ThreadSettings.d.ts +6 -0
  201. package/dist/types/src/components/ThreadSettings/ThreadSettings.d.ts.map +1 -0
  202. package/dist/types/src/components/ThreadSettings/ThreadSettings.stories.d.ts +161 -0
  203. package/dist/types/src/components/ThreadSettings/ThreadSettings.stories.d.ts.map +1 -0
  204. package/dist/types/src/components/ThreadSettings/index.d.ts +2 -0
  205. package/dist/types/src/components/ThreadSettings/index.d.ts.map +1 -0
  206. package/dist/types/src/components/index.d.ts +5 -9
  207. package/dist/types/src/components/index.d.ts.map +1 -1
  208. package/dist/types/src/containers/CallDebugPanel/CallDebugPanel.d.ts +15 -0
  209. package/dist/types/src/containers/CallDebugPanel/CallDebugPanel.d.ts.map +1 -0
  210. package/dist/types/src/containers/CallDebugPanel/index.d.ts +2 -0
  211. package/dist/types/src/containers/CallDebugPanel/index.d.ts.map +1 -0
  212. package/dist/types/src/{components → containers/CallSidebar}/CallSidebar.d.ts +0 -1
  213. package/dist/types/src/containers/CallSidebar/CallSidebar.d.ts.map +1 -0
  214. package/dist/types/src/containers/CallSidebar/index.d.ts +2 -0
  215. package/dist/types/src/containers/CallSidebar/index.d.ts.map +1 -0
  216. package/dist/types/src/containers/ChannelChat/ChannelChat.d.ts +20 -0
  217. package/dist/types/src/containers/ChannelChat/ChannelChat.d.ts.map +1 -0
  218. package/dist/types/src/containers/ChannelChat/index.d.ts +4 -0
  219. package/dist/types/src/containers/ChannelChat/index.d.ts.map +1 -0
  220. package/dist/types/src/containers/ChannelContainer/ChannelContainer.d.ts +12 -0
  221. package/dist/types/src/containers/ChannelContainer/ChannelContainer.d.ts.map +1 -0
  222. package/dist/types/src/containers/ChannelContainer/ChannelContainer.stories.d.ts +162 -0
  223. package/dist/types/src/containers/ChannelContainer/ChannelContainer.stories.d.ts.map +1 -0
  224. package/dist/types/src/containers/ChannelContainer/index.d.ts +2 -0
  225. package/dist/types/src/containers/ChannelContainer/index.d.ts.map +1 -0
  226. package/dist/types/src/containers/ThreadCompanion/ThreadCompanion.d.ts +8 -0
  227. package/dist/types/src/containers/ThreadCompanion/ThreadCompanion.d.ts.map +1 -0
  228. package/dist/types/src/containers/ThreadCompanion/index.d.ts +2 -0
  229. package/dist/types/src/containers/ThreadCompanion/index.d.ts.map +1 -0
  230. package/dist/types/src/containers/ThreadContainer/ThreadContainer.d.ts +20 -0
  231. package/dist/types/src/containers/ThreadContainer/ThreadContainer.d.ts.map +1 -0
  232. package/dist/types/src/containers/ThreadContainer/ThreadContainer.stories.d.ts +162 -0
  233. package/dist/types/src/containers/ThreadContainer/ThreadContainer.stories.d.ts.map +1 -0
  234. package/dist/types/src/containers/ThreadContainer/index.d.ts +4 -0
  235. package/dist/types/src/containers/ThreadContainer/index.d.ts.map +1 -0
  236. package/dist/types/src/containers/index.d.ts +8 -0
  237. package/dist/types/src/containers/index.d.ts.map +1 -0
  238. package/dist/types/src/{components/command-extension.d.ts → extensions/command.d.ts} +1 -1
  239. package/dist/types/src/extensions/command.d.ts.map +1 -0
  240. package/dist/types/src/extensions/index.d.ts +1 -0
  241. package/dist/types/src/extensions/index.d.ts.map +1 -1
  242. package/dist/types/src/extensions/threads.d.ts +9 -4
  243. package/dist/types/src/extensions/threads.d.ts.map +1 -1
  244. package/dist/types/src/hooks/analytics.d.ts +2 -3
  245. package/dist/types/src/hooks/analytics.d.ts.map +1 -1
  246. package/dist/types/src/hooks/index.d.ts +3 -0
  247. package/dist/types/src/hooks/index.d.ts.map +1 -1
  248. package/dist/types/src/hooks/useBlackCanvasStreamTrack.d.ts +2 -0
  249. package/dist/types/src/hooks/useBlackCanvasStreamTrack.d.ts.map +1 -0
  250. package/dist/types/src/hooks/useInaudibleAudioStreamTrack.d.ts +2 -0
  251. package/dist/types/src/hooks/useInaudibleAudioStreamTrack.d.ts.map +1 -0
  252. package/dist/types/src/hooks/useStatus.d.ts.map +1 -1
  253. package/dist/types/src/hooks/useVideoStreamTrack.d.ts +3 -0
  254. package/dist/types/src/hooks/useVideoStreamTrack.d.ts.map +1 -0
  255. package/dist/types/src/index.d.ts +2 -2
  256. package/dist/types/src/index.d.ts.map +1 -1
  257. package/dist/types/src/meta.d.ts +3 -4
  258. package/dist/types/src/meta.d.ts.map +1 -1
  259. package/dist/types/src/operations/add-message.d.ts +5 -0
  260. package/dist/types/src/operations/add-message.d.ts.map +1 -0
  261. package/dist/types/src/operations/append-channel-message.d.ts +5 -0
  262. package/dist/types/src/operations/append-channel-message.d.ts.map +1 -0
  263. package/dist/types/src/operations/create-channel.d.ts +5 -0
  264. package/dist/types/src/operations/create-channel.d.ts.map +1 -0
  265. package/dist/types/src/operations/create-proposals.d.ts +5 -0
  266. package/dist/types/src/operations/create-proposals.d.ts.map +1 -0
  267. package/dist/types/src/operations/create.d.ts +5 -0
  268. package/dist/types/src/operations/create.d.ts.map +1 -0
  269. package/dist/types/src/operations/delete-message.d.ts +5 -0
  270. package/dist/types/src/operations/delete-message.d.ts.map +1 -0
  271. package/dist/types/src/operations/delete.d.ts +5 -0
  272. package/dist/types/src/operations/delete.d.ts.map +1 -0
  273. package/dist/types/src/operations/index.d.ts +3 -0
  274. package/dist/types/src/operations/index.d.ts.map +1 -0
  275. package/dist/types/src/operations/on-create-space.d.ts +5 -0
  276. package/dist/types/src/operations/on-create-space.d.ts.map +1 -0
  277. package/dist/types/src/operations/restore-message.d.ts +5 -0
  278. package/dist/types/src/operations/restore-message.d.ts.map +1 -0
  279. package/dist/types/src/operations/restore.d.ts +5 -0
  280. package/dist/types/src/operations/restore.d.ts.map +1 -0
  281. package/dist/types/src/operations/select.d.ts +5 -0
  282. package/dist/types/src/operations/select.d.ts.map +1 -0
  283. package/dist/types/src/operations/toggle-resolved.d.ts +5 -0
  284. package/dist/types/src/operations/toggle-resolved.d.ts.map +1 -0
  285. package/dist/types/src/plugin.d.ts +4 -0
  286. package/dist/types/src/plugin.d.ts.map +1 -0
  287. package/dist/types/src/testing/data.d.ts +5 -0
  288. package/dist/types/src/testing/data.d.ts.map +1 -0
  289. package/dist/types/src/testing/index.d.ts +1 -1
  290. package/dist/types/src/testing/index.d.ts.map +1 -1
  291. package/dist/types/src/translations.d.ts +144 -194
  292. package/dist/types/src/translations.d.ts.map +1 -1
  293. package/dist/types/src/types/Settings.d.ts +5 -0
  294. package/dist/types/src/types/Settings.d.ts.map +1 -0
  295. package/dist/types/src/types/ThreadCapabilities.d.ts +26 -0
  296. package/dist/types/src/types/ThreadCapabilities.d.ts.map +1 -0
  297. package/dist/types/src/types/ThreadOperation.d.ts +1995 -0
  298. package/dist/types/src/types/ThreadOperation.d.ts.map +1 -0
  299. package/dist/types/src/types/index.d.ts +3 -1
  300. package/dist/types/src/types/index.d.ts.map +1 -1
  301. package/dist/types/src/types/types.d.ts +3 -325
  302. package/dist/types/src/types/types.d.ts.map +1 -1
  303. package/dist/types/src/util.d.ts +21 -3
  304. package/dist/types/src/util.d.ts.map +1 -1
  305. package/dist/types/tsconfig.tsbuildinfo +1 -1
  306. package/package.json +150 -80
  307. package/src/ThreadPlugin.node.ts +39 -0
  308. package/src/ThreadPlugin.test.ts +37 -0
  309. package/src/ThreadPlugin.tsx +64 -147
  310. package/src/blueprints/index.ts +5 -0
  311. package/src/blueprints/thread-blueprint.ts +36 -0
  312. package/src/calls/call-manager.ts +78 -50
  313. package/src/calls/call-swarm-synchronizer.ts +3 -3
  314. package/src/calls/media-manager.ts +77 -41
  315. package/src/calls/types.ts +8 -4
  316. package/src/calls/util/calls-service.ts +74 -19
  317. package/src/calls/util/stub-media-streams.ts +65 -9
  318. package/src/calls/util/task-scheduling.ts +4 -4
  319. package/src/calls-service.stories.tsx +230 -0
  320. package/src/capabilities/app-graph-builder.ts +176 -161
  321. package/src/capabilities/blueprint-definition.ts +19 -0
  322. package/src/capabilities/call-manager.ts +18 -10
  323. package/src/capabilities/create-object.ts +29 -0
  324. package/src/capabilities/index.ts +17 -11
  325. package/src/capabilities/markdown.ts +54 -36
  326. package/src/capabilities/operation-handler.ts +16 -0
  327. package/src/capabilities/react-root.tsx +12 -9
  328. package/src/capabilities/react-surface.tsx +83 -74
  329. package/src/capabilities/settings.ts +26 -12
  330. package/src/capabilities/state.ts +14 -17
  331. package/src/capabilities/undo-mappings.ts +46 -0
  332. package/src/components/Call/Call.tsx +17 -12
  333. package/src/components/Call/Toolbar.tsx +63 -46
  334. package/src/components/Chat/Chat.tsx +258 -0
  335. package/src/components/Chat/index.ts +5 -0
  336. package/src/components/CommentsPanel/CommentsPanel.stories.tsx +95 -0
  337. package/src/components/CommentsPanel/CommentsPanel.tsx +71 -0
  338. package/src/components/CommentsPanel/CommentsThread.tsx +171 -0
  339. package/src/components/CommentsPanel/index.ts +6 -0
  340. package/src/components/Lobby/Lobby.tsx +21 -17
  341. package/src/components/Media/AudioStream.tsx +2 -2
  342. package/src/components/Media/VideoObject.stories.tsx +37 -30
  343. package/src/components/Media/VideoObject.tsx +1 -1
  344. package/src/components/MessagePanel/MessagePanel.tsx +221 -0
  345. package/src/components/MessagePanel/index.ts +5 -0
  346. package/src/components/Participant/Participant.tsx +35 -15
  347. package/src/components/Participant/ParticipantGrid.tsx +1 -1
  348. package/src/components/ResponsiveGrid/ResponsiveGrid.stories.tsx +51 -49
  349. package/src/components/ResponsiveGrid/ResponsiveGrid.tsx +6 -6
  350. package/src/components/ResponsiveGrid/ResponsiveGridItem.tsx +15 -12
  351. package/src/components/ResponsiveGrid/{ResponsiveContainer.stories.tsx → ResponsivePanel.stories.tsx} +12 -12
  352. package/src/components/ResponsiveGrid/{ResponsiveContainer.tsx → ResponsivePanel.tsx} +7 -9
  353. package/src/components/ResponsiveGrid/index.ts +1 -1
  354. package/src/components/ThreadSettings/ThreadSettings.stories.tsx +32 -0
  355. package/src/components/ThreadSettings/ThreadSettings.tsx +20 -0
  356. package/src/components/ThreadSettings/index.ts +5 -0
  357. package/src/components/index.ts +6 -12
  358. package/src/containers/CallDebugPanel/CallDebugPanel.tsx +173 -0
  359. package/src/containers/CallDebugPanel/index.ts +5 -0
  360. package/src/containers/CallSidebar/CallSidebar.tsx +18 -0
  361. package/src/containers/CallSidebar/index.ts +5 -0
  362. package/src/containers/ChannelChat/ChannelChat.tsx +75 -0
  363. package/src/containers/ChannelChat/index.ts +8 -0
  364. package/src/containers/ChannelContainer/ChannelContainer.stories.tsx +105 -0
  365. package/src/containers/ChannelContainer/ChannelContainer.tsx +223 -0
  366. package/src/containers/ChannelContainer/index.ts +5 -0
  367. package/src/containers/ThreadCompanion/ThreadCompanion.tsx +215 -0
  368. package/src/containers/ThreadCompanion/index.ts +5 -0
  369. package/src/containers/ThreadContainer/ThreadContainer.stories.tsx +86 -0
  370. package/src/containers/ThreadContainer/ThreadContainer.tsx +75 -0
  371. package/src/containers/ThreadContainer/index.ts +8 -0
  372. package/src/containers/index.ts +12 -0
  373. package/src/{components/command-extension.ts → extensions/command.ts} +7 -4
  374. package/src/extensions/index.ts +1 -0
  375. package/src/extensions/threads.ts +89 -44
  376. package/src/hooks/analytics.ts +22 -21
  377. package/src/hooks/index.ts +4 -0
  378. package/src/hooks/useBlackCanvasStreamTrack.tsx +27 -0
  379. package/src/hooks/useDebugMode.ts +1 -1
  380. package/src/hooks/useInaudibleAudioStreamTrack.tsx +27 -0
  381. package/src/hooks/useVideoStreamTrack.tsx +36 -0
  382. package/src/index.ts +4 -3
  383. package/src/meta.ts +11 -7
  384. package/src/operations/add-message.ts +81 -0
  385. package/src/operations/append-channel-message.ts +37 -0
  386. package/src/operations/create-channel.ts +20 -0
  387. package/src/operations/create-proposals.ts +49 -0
  388. package/src/operations/create.ts +48 -0
  389. package/src/operations/delete-message.ts +53 -0
  390. package/src/operations/delete.ts +63 -0
  391. package/src/operations/index.ts +20 -0
  392. package/src/operations/on-create-space.ts +27 -0
  393. package/src/operations/restore-message.ts +38 -0
  394. package/src/operations/restore.ts +38 -0
  395. package/src/operations/select.ts +24 -0
  396. package/src/operations/toggle-resolved.ts +41 -0
  397. package/src/plugin.ts +11 -0
  398. package/src/testing/data.ts +49 -0
  399. package/src/testing/index.ts +1 -1
  400. package/src/translations.ts +77 -73
  401. package/src/types/Settings.ts +10 -0
  402. package/src/types/ThreadCapabilities.ts +41 -0
  403. package/src/types/ThreadOperation.ts +179 -0
  404. package/src/types/index.ts +4 -1
  405. package/src/types/types.ts +4 -92
  406. package/src/typings/peermetrics-webrtc-stats.d.ts +17 -1
  407. package/src/typings.d.ts +8 -0
  408. package/src/util.ts +38 -6
  409. package/dist/lib/browser/ChannelContainer-PKFBVENP.mjs +0 -15
  410. package/dist/lib/browser/ChatContainer-RSOKYAMK.mjs +0 -14
  411. package/dist/lib/browser/app-graph-builder-OY7R7EJP.mjs +0 -171
  412. package/dist/lib/browser/app-graph-builder-OY7R7EJP.mjs.map +0 -7
  413. package/dist/lib/browser/call-manager-APQAZWHT.mjs +0 -23
  414. package/dist/lib/browser/call-manager-APQAZWHT.mjs.map +0 -7
  415. package/dist/lib/browser/chunk-4H4A264L.mjs +0 -1708
  416. package/dist/lib/browser/chunk-4H4A264L.mjs.map +0 -7
  417. package/dist/lib/browser/chunk-5P5BH5GE.mjs +0 -88
  418. package/dist/lib/browser/chunk-5P5BH5GE.mjs.map +0 -7
  419. package/dist/lib/browser/chunk-6NBVNXTM.mjs +0 -21
  420. package/dist/lib/browser/chunk-6NBVNXTM.mjs.map +0 -7
  421. package/dist/lib/browser/chunk-AEXWNS6Z.mjs +0 -128
  422. package/dist/lib/browser/chunk-AEXWNS6Z.mjs.map +0 -7
  423. package/dist/lib/browser/chunk-IIUTBDVB.mjs +0 -17
  424. package/dist/lib/browser/chunk-IIUTBDVB.mjs.map +0 -7
  425. package/dist/lib/browser/chunk-JKQUJOTX.mjs +0 -31
  426. package/dist/lib/browser/chunk-JKQUJOTX.mjs.map +0 -7
  427. package/dist/lib/browser/chunk-PG5CTFKK.mjs +0 -550
  428. package/dist/lib/browser/chunk-PG5CTFKK.mjs.map +0 -7
  429. package/dist/lib/browser/chunk-R5MDLUPC.mjs +0 -18
  430. package/dist/lib/browser/chunk-R5MDLUPC.mjs.map +0 -7
  431. package/dist/lib/browser/chunk-TAFSCSUR.mjs +0 -351
  432. package/dist/lib/browser/chunk-TAFSCSUR.mjs.map +0 -7
  433. package/dist/lib/browser/chunk-XZKBN3NS.mjs +0 -983
  434. package/dist/lib/browser/chunk-XZKBN3NS.mjs.map +0 -7
  435. package/dist/lib/browser/index.mjs +0 -308
  436. package/dist/lib/browser/index.mjs.map +0 -7
  437. package/dist/lib/browser/intent-resolver-FK2MDVDT.mjs +0 -353
  438. package/dist/lib/browser/intent-resolver-FK2MDVDT.mjs.map +0 -7
  439. package/dist/lib/browser/markdown-TE5SWWNJ.mjs +0 -169
  440. package/dist/lib/browser/markdown-TE5SWWNJ.mjs.map +0 -7
  441. package/dist/lib/browser/meta.json +0 -1
  442. package/dist/lib/browser/react-root-NK3A4VG7.mjs +0 -27
  443. package/dist/lib/browser/react-root-NK3A4VG7.mjs.map +0 -7
  444. package/dist/lib/browser/react-surface-VXUJKSOG.mjs +0 -108
  445. package/dist/lib/browser/react-surface-VXUJKSOG.mjs.map +0 -7
  446. package/dist/lib/browser/settings-RB2RSLXV.mjs +0 -22
  447. package/dist/lib/browser/settings-RB2RSLXV.mjs.map +0 -7
  448. package/dist/lib/browser/state-RKL5MSDP.mjs +0 -34
  449. package/dist/lib/browser/state-RKL5MSDP.mjs.map +0 -7
  450. package/dist/lib/browser/types/index.mjs +0 -16
  451. package/dist/lib/node/ChannelContainer-YS5YT2ML.cjs +0 -36
  452. package/dist/lib/node/ChannelContainer-YS5YT2ML.cjs.map +0 -7
  453. package/dist/lib/node/ChatContainer-GCOM3M56.cjs +0 -35
  454. package/dist/lib/node/ChatContainer-GCOM3M56.cjs.map +0 -7
  455. package/dist/lib/node/app-graph-builder-PBHJNDQY.cjs +0 -179
  456. package/dist/lib/node/app-graph-builder-PBHJNDQY.cjs.map +0 -7
  457. package/dist/lib/node/call-manager-HV2XJW5O.cjs +0 -37
  458. package/dist/lib/node/call-manager-HV2XJW5O.cjs.map +0 -7
  459. package/dist/lib/node/chunk-44I33JDT.cjs +0 -1731
  460. package/dist/lib/node/chunk-44I33JDT.cjs.map +0 -7
  461. package/dist/lib/node/chunk-4YSNVPWU.cjs +0 -37
  462. package/dist/lib/node/chunk-4YSNVPWU.cjs.map +0 -7
  463. package/dist/lib/node/chunk-E3WBZTTI.cjs +0 -371
  464. package/dist/lib/node/chunk-E3WBZTTI.cjs.map +0 -7
  465. package/dist/lib/node/chunk-ERG7G6FF.cjs +0 -59
  466. package/dist/lib/node/chunk-ERG7G6FF.cjs.map +0 -7
  467. package/dist/lib/node/chunk-FUXJAVFZ.cjs +0 -108
  468. package/dist/lib/node/chunk-FUXJAVFZ.cjs.map +0 -7
  469. package/dist/lib/node/chunk-HLMCEE5K.cjs +0 -41
  470. package/dist/lib/node/chunk-HLMCEE5K.cjs.map +0 -7
  471. package/dist/lib/node/chunk-IP533AMV.cjs +0 -554
  472. package/dist/lib/node/chunk-IP533AMV.cjs.map +0 -7
  473. package/dist/lib/node/chunk-LR5NENBE.cjs +0 -54
  474. package/dist/lib/node/chunk-LR5NENBE.cjs.map +0 -7
  475. package/dist/lib/node/chunk-UM36TPCT.cjs +0 -984
  476. package/dist/lib/node/chunk-UM36TPCT.cjs.map +0 -7
  477. package/dist/lib/node/chunk-ZGDN3XBR.cjs +0 -149
  478. package/dist/lib/node/chunk-ZGDN3XBR.cjs.map +0 -7
  479. package/dist/lib/node/index.cjs +0 -310
  480. package/dist/lib/node/index.cjs.map +0 -7
  481. package/dist/lib/node/intent-resolver-SYSJ5SJG.cjs +0 -363
  482. package/dist/lib/node/intent-resolver-SYSJ5SJG.cjs.map +0 -7
  483. package/dist/lib/node/markdown-GQIPJS2F.cjs +0 -178
  484. package/dist/lib/node/markdown-GQIPJS2F.cjs.map +0 -7
  485. package/dist/lib/node/meta.json +0 -1
  486. package/dist/lib/node/react-root-6HHDMULJ.cjs +0 -51
  487. package/dist/lib/node/react-root-6HHDMULJ.cjs.map +0 -7
  488. package/dist/lib/node/react-surface-NBH42NN2.cjs +0 -122
  489. package/dist/lib/node/react-surface-NBH42NN2.cjs.map +0 -7
  490. package/dist/lib/node/settings-4LQSFEDK.cjs +0 -36
  491. package/dist/lib/node/settings-4LQSFEDK.cjs.map +0 -7
  492. package/dist/lib/node/state-IY5XX3H2.cjs +0 -50
  493. package/dist/lib/node/state-IY5XX3H2.cjs.map +0 -7
  494. package/dist/lib/node/types/index.cjs +0 -38
  495. package/dist/lib/node/types/index.cjs.map +0 -7
  496. package/dist/lib/node-esm/ChannelContainer-O4QJII2P.mjs +0 -16
  497. package/dist/lib/node-esm/ChatContainer-F6CSADV7.mjs +0 -15
  498. package/dist/lib/node-esm/app-graph-builder-BAHBHYWI.mjs +0 -172
  499. package/dist/lib/node-esm/app-graph-builder-BAHBHYWI.mjs.map +0 -7
  500. package/dist/lib/node-esm/call-manager-UUYXLF4T.mjs +0 -24
  501. package/dist/lib/node-esm/call-manager-UUYXLF4T.mjs.map +0 -7
  502. package/dist/lib/node-esm/chunk-2RNIPFDA.mjs +0 -984
  503. package/dist/lib/node-esm/chunk-2RNIPFDA.mjs.map +0 -7
  504. package/dist/lib/node-esm/chunk-ESQC6SYE.mjs +0 -19
  505. package/dist/lib/node-esm/chunk-ESQC6SYE.mjs.map +0 -7
  506. package/dist/lib/node-esm/chunk-K4KAUOKT.mjs +0 -19
  507. package/dist/lib/node-esm/chunk-K4KAUOKT.mjs.map +0 -7
  508. package/dist/lib/node-esm/chunk-O3V45YJP.mjs +0 -90
  509. package/dist/lib/node-esm/chunk-O3V45YJP.mjs.map +0 -7
  510. package/dist/lib/node-esm/chunk-O63QJPQX.mjs +0 -23
  511. package/dist/lib/node-esm/chunk-O63QJPQX.mjs.map +0 -7
  512. package/dist/lib/node-esm/chunk-P6RLFCNT.mjs +0 -352
  513. package/dist/lib/node-esm/chunk-P6RLFCNT.mjs.map +0 -7
  514. package/dist/lib/node-esm/chunk-PGRP3O4O.mjs.map +0 -7
  515. package/dist/lib/node-esm/chunk-UJMPYKT3.mjs +0 -129
  516. package/dist/lib/node-esm/chunk-UJMPYKT3.mjs.map +0 -7
  517. package/dist/lib/node-esm/chunk-UZWVVFT3.mjs +0 -551
  518. package/dist/lib/node-esm/chunk-UZWVVFT3.mjs.map +0 -7
  519. package/dist/lib/node-esm/chunk-WXNPD542.mjs.map +0 -7
  520. package/dist/lib/node-esm/index.mjs +0 -309
  521. package/dist/lib/node-esm/index.mjs.map +0 -7
  522. package/dist/lib/node-esm/intent-resolver-BU73VYW3.mjs +0 -354
  523. package/dist/lib/node-esm/intent-resolver-BU73VYW3.mjs.map +0 -7
  524. package/dist/lib/node-esm/markdown-HJUWNBLS.mjs +0 -170
  525. package/dist/lib/node-esm/markdown-HJUWNBLS.mjs.map +0 -7
  526. package/dist/lib/node-esm/meta.json +0 -1
  527. package/dist/lib/node-esm/react-root-RUXOAQNW.mjs +0 -28
  528. package/dist/lib/node-esm/react-root-RUXOAQNW.mjs.map +0 -7
  529. package/dist/lib/node-esm/react-surface-ELXFYKP6.mjs +0 -109
  530. package/dist/lib/node-esm/react-surface-ELXFYKP6.mjs.map +0 -7
  531. package/dist/lib/node-esm/settings-EA7DFSM6.mjs +0 -23
  532. package/dist/lib/node-esm/settings-EA7DFSM6.mjs.map +0 -7
  533. package/dist/lib/node-esm/state-6AUTNROZ.mjs +0 -35
  534. package/dist/lib/node-esm/state-6AUTNROZ.mjs.map +0 -7
  535. package/dist/lib/node-esm/types/index.mjs +0 -17
  536. package/dist/types/src/capabilities/capabilities.d.ts +0 -27
  537. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  538. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  539. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  540. package/dist/types/src/components/CallDebugPanel.d.ts +0 -8
  541. package/dist/types/src/components/CallDebugPanel.d.ts.map +0 -1
  542. package/dist/types/src/components/CallSidebar.d.ts.map +0 -1
  543. package/dist/types/src/components/ChannelContainer.d.ts +0 -14
  544. package/dist/types/src/components/ChannelContainer.d.ts.map +0 -1
  545. package/dist/types/src/components/ChannelContainer.stories.d.ts +0 -10
  546. package/dist/types/src/components/ChannelContainer.stories.d.ts.map +0 -1
  547. package/dist/types/src/components/Chat.stories.d.ts +0 -6
  548. package/dist/types/src/components/Chat.stories.d.ts.map +0 -1
  549. package/dist/types/src/components/ChatContainer.d.ts +0 -17
  550. package/dist/types/src/components/ChatContainer.d.ts.map +0 -1
  551. package/dist/types/src/components/CommentContainer.d.ts +0 -13
  552. package/dist/types/src/components/CommentContainer.d.ts.map +0 -1
  553. package/dist/types/src/components/Comments.stories.d.ts +0 -6
  554. package/dist/types/src/components/Comments.stories.d.ts.map +0 -1
  555. package/dist/types/src/components/CommentsContainer.d.ts +0 -13
  556. package/dist/types/src/components/CommentsContainer.d.ts.map +0 -1
  557. package/dist/types/src/components/MessageContainer.d.ts +0 -11
  558. package/dist/types/src/components/MessageContainer.d.ts.map +0 -1
  559. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.d.ts.map +0 -1
  560. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts +0 -10
  561. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts.map +0 -1
  562. package/dist/types/src/components/ThreadComplementary.d.ts +0 -5
  563. package/dist/types/src/components/ThreadComplementary.d.ts.map +0 -1
  564. package/dist/types/src/components/ThreadSettings.d.ts +0 -6
  565. package/dist/types/src/components/ThreadSettings.d.ts.map +0 -1
  566. package/dist/types/src/components/command-extension.d.ts.map +0 -1
  567. package/dist/types/src/components/testing.d.ts +0 -4
  568. package/dist/types/src/components/testing.d.ts.map +0 -1
  569. package/dist/types/src/peers.stories.d.ts +0 -11
  570. package/dist/types/src/peers.stories.d.ts.map +0 -1
  571. package/dist/types/src/testing/stories.d.ts +0 -2
  572. package/dist/types/src/testing/stories.d.ts.map +0 -1
  573. package/dist/types/src/types/schema.d.ts +0 -133
  574. package/dist/types/src/types/schema.d.ts.map +0 -1
  575. package/src/capabilities/capabilities.ts +0 -33
  576. package/src/capabilities/intent-resolver.ts +0 -296
  577. package/src/components/CallDebugPanel.tsx +0 -115
  578. package/src/components/CallSidebar.tsx +0 -17
  579. package/src/components/ChannelContainer.stories.tsx +0 -58
  580. package/src/components/ChannelContainer.tsx +0 -199
  581. package/src/components/Chat.stories.tsx +0 -88
  582. package/src/components/ChatContainer.tsx +0 -140
  583. package/src/components/CommentContainer.tsx +0 -198
  584. package/src/components/Comments.stories.tsx +0 -85
  585. package/src/components/CommentsContainer.tsx +0 -66
  586. package/src/components/MessageContainer.tsx +0 -167
  587. package/src/components/ThreadComplementary.tsx +0 -151
  588. package/src/components/ThreadSettings.tsx +0 -17
  589. package/src/components/testing.ts +0 -29
  590. package/src/peers.stories.tsx +0 -189
  591. package/src/testing/stories.ts +0 -50
  592. package/src/types/schema.ts +0 -33
  593. /package/dist/lib/{browser/ChannelContainer-PKFBVENP.mjs.map → neutral/ChannelChat-EKQYQQXZ.mjs.map} +0 -0
  594. /package/dist/lib/{browser/ChatContainer-RSOKYAMK.mjs.map → neutral/ChannelContainer-XXMX5X43.mjs.map} +0 -0
  595. /package/dist/lib/{browser/types → neutral/blueprints}/index.mjs.map +0 -0
  596. /package/dist/lib/{node-esm/ChannelContainer-O4QJII2P.mjs.map → neutral/chunk-J5LGTIGS.mjs.map} +0 -0
  597. /package/dist/lib/{node-esm/types → neutral/hooks}/index.mjs.map +0 -0
  598. /package/dist/lib/{node-esm/ChatContainer-F6CSADV7.mjs.map → neutral/index.mjs.map} +0 -0
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/components/ChannelContainer.tsx", "../../../src/components/Call/Call.tsx", "../../../src/components/Call/Toolbar.tsx", "../../../src/components/Media/AudioStream.tsx", "../../../src/components/Media/VideoObject.tsx", "../../../src/components/Participant/Participant.tsx", "../../../src/components/ResponsiveGrid/ResponsiveContainer.tsx", "../../../src/components/ResponsiveGrid/ResponsiveGrid.tsx", "../../../src/components/ResponsiveGrid/ResponsiveGridItem.tsx", "../../../src/components/Participant/ParticipantGrid.tsx"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Rx } from '@effect-rx/rx-react';\nimport React, { useCallback, useEffect, useMemo, useState, type ChangeEvent } from 'react';\n\nimport { useCapabilities, useCapability } from '@dxos/app-framework';\nimport { Context } from '@dxos/context';\nimport { log } from '@dxos/log';\nimport { useClient } from '@dxos/react-client';\nimport { fullyQualifiedId, getSpace } from '@dxos/react-client/echo';\nimport { useIdentity } from '@dxos/react-client/halo';\nimport { useTranslation, Input, ElevationProvider, type ThemedClassName } from '@dxos/react-ui';\nimport { ControlGroup, ControlItemInput, ControlGroupButton } from '@dxos/react-ui-form';\nimport { ToolbarMenu, MenuProvider, createMenuAction, useMenuActions, createMenuItemGroup } from '@dxos/react-ui-menu';\nimport { useSoundEffect } from '@dxos/react-ui-sfx';\nimport { StackItem } from '@dxos/react-ui-stack';\n\nimport { Call } from './Call';\nimport ChatContainer from './ChatContainer';\nimport { ThreadCapabilities } from '../capabilities';\nimport { THREAD_PLUGIN } from '../meta';\nimport { type ChannelType } from '../types';\n\nexport type ChannelContainerProps = {\n channel?: ChannelType;\n roomId?: string;\n role?: string;\n fullscreen?: boolean;\n};\n\n/**\n * Renders a call when active, otherwise renders the channel chat.\n */\nexport const ChannelContainer = ({ channel, roomId: _roomId, role, fullscreen }: ChannelContainerProps) => {\n const space = getSpace(channel);\n const callManager = useCapability(ThreadCapabilities.CallManager);\n const roomId = channel ? fullyQualifiedId(channel) : _roomId;\n const identity = useIdentity();\n const isNamed = !!identity?.profile?.displayName;\n const joinSound = useSoundEffect('JoinCall');\n const leaveSound = useSoundEffect('LeaveCall');\n\n const extensions = useCapabilities(ThreadCapabilities.CallExtension);\n useEffect(() => {\n const ctx = new Context();\n callManager.left.on(ctx, (roomId) => {\n extensions.forEach((extension) => {\n void extension.onLeave?.(roomId);\n });\n });\n\n callManager.callStateUpdated.on(ctx, (state) => {\n extensions.forEach((extension) => {\n void extension.onCallStateUpdated?.(state);\n });\n });\n\n callManager.mediaStateUpdated.on(ctx, (state) => {\n extensions.forEach((extension) => {\n void extension.onMediaStateUpdated?.(state);\n });\n });\n\n return () => {\n void ctx.dispose();\n };\n }, [callManager, extensions]);\n\n /**\n * Join the call.\n */\n // TODO(wittjosiah): Show preview before joining?\n const handleJoin = useCallback(async () => {\n if (!roomId || !channel) {\n return;\n }\n\n if (callManager.joined) {\n await callManager.leave();\n }\n\n try {\n void joinSound.play();\n callManager.setRoomId(roomId);\n await callManager.join();\n await Promise.all(extensions.map((extension) => extension.onJoin?.({ channel, roomId })));\n } catch (err) {\n // TODO(burdon): Error sound.\n log.catch(err);\n }\n }, [extensions, channel, roomId]);\n\n /**\n * Leave the call.\n */\n const handleLeave = useCallback(async () => {\n try {\n void leaveSound.play();\n } catch (err) {\n // TODO(burdon): Error sound.\n log.catch(err);\n } finally {\n void callManager.turnAudioOff();\n void callManager.turnVideoOff();\n void callManager.turnScreenshareOff();\n void callManager.leave();\n }\n }, [extensions, roomId]);\n\n const isJoined = callManager.joined && callManager.roomId === roomId;\n\n return (\n <StackItem.Content toolbar={!isJoined} classNames={isJoined && 'h-full'}>\n {isJoined && !isNamed && <DisplayNameMissing />}\n {isJoined && isNamed && (\n <Call.Root>\n <Call.Grid fullscreen={fullscreen} />\n <Call.Toolbar channel={channel} onLeave={handleLeave} />\n </Call.Root>\n )}\n {!isJoined && channel && channel.defaultThread.target && space && (\n <>\n <ChannelToolbar attendableId={fullyQualifiedId(channel)} role={role} onJoinCall={handleJoin} />\n <ChatContainer space={space} thread={channel.defaultThread.target} />\n </>\n )}\n </StackItem.Content>\n );\n};\n\nexport default ChannelContainer;\n\nconst DisplayNameMissing = () => {\n const { t } = useTranslation(THREAD_PLUGIN);\n const client = useClient();\n const [displayName, setDisplayName] = useState('');\n const handleChange = useCallback((event: ChangeEvent<HTMLInputElement>) => setDisplayName(event.target.value), []);\n const handleSave = useCallback(() => client.halo.updateProfile({ displayName }), [client, displayName]);\n\n return (\n <ControlGroup classNames='p-4 place-content-center'>\n <ControlItemInput title={t('display name label')} description={t('display name description')}>\n <Input.TextInput\n value={displayName}\n onChange={handleChange}\n placeholder={t('display name input placeholder')}\n classNames='md:min-is-64'\n />\n </ControlItemInput>\n <ControlGroupButton disabled={!displayName} onClick={handleSave}>\n {t('set display name label')}\n </ControlGroupButton>\n </ControlGroup>\n );\n};\n\nconst useChannelToolbarActions = (onJoinCall?: () => void) => {\n const creator = useMemo(\n () =>\n Rx.make(() => {\n return {\n nodes: [\n createMenuItemGroup('root', {\n label: ['channel toolbar title', { ns: THREAD_PLUGIN }],\n }),\n createMenuAction('video-call', () => onJoinCall?.(), {\n label: ['start video call label', { ns: THREAD_PLUGIN }],\n icon: 'ph--video-camera--regular',\n type: 'video-call',\n }),\n ],\n edges: [{ source: 'root', target: 'video-call' }],\n };\n }),\n [],\n );\n\n return useMenuActions(creator);\n};\n\ntype ChannelToolbarProps = ThemedClassName<{\n attendableId?: string;\n role?: string;\n onJoinCall?: () => void;\n}>;\n\nconst ChannelToolbar = ({ attendableId, role, onJoinCall, classNames }: ChannelToolbarProps) => {\n const menuProps = useChannelToolbarActions(onJoinCall);\n\n return (\n <ElevationProvider elevation={role === 'section' ? 'positioned' : 'base'}>\n <MenuProvider {...menuProps} attendableId={attendableId}>\n <ToolbarMenu classNames={classNames} />\n </MenuProvider>\n </ElevationProvider>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { type PropsWithChildren, type FC } from 'react';\n\nimport { useCapability } from '@dxos/app-framework';\nimport { type ThemedClassName } from '@dxos/react-ui';\n\nimport { Toolbar, type ToolbarProps } from './Toolbar';\nimport { ThreadCapabilities } from '../../capabilities';\nimport { useDebugMode } from '../../hooks';\nimport { AudioStream } from '../Media';\nimport { ParticipantGrid } from '../Participant';\n\n//\n// Root\n//\n\ntype CallRootProps = PropsWithChildren<ThemedClassName>;\n\nconst CallRoot: FC<CallRootProps> = ({ children }) => {\n return <div className='relative flex flex-col grow overflow-hidden'>{children}</div>;\n};\n\nCallRoot.displayName = 'CallRoot';\n\n//\n// Audio\n//\n\ntype CallAudioProps = {};\n\nconst CallAudio: FC<CallAudioProps> = () => {\n const call = useCapability(ThreadCapabilities.CallManager);\n\n return <AudioStream tracks={call.pulledAudioTracks} />;\n};\n\nCallAudio.displayName = 'CallAudio';\n\n//\n// Room\n//\n\ntype CallGridProps = {\n fullscreen?: boolean;\n};\n\nconst CallGrid: FC<CallGridProps> = ({ fullscreen }) => {\n const debug = useDebugMode();\n const call = useCapability(ThreadCapabilities.CallManager);\n\n return (\n <div className='grid grow p-4 dark:bg-neutral-900'>\n <ParticipantGrid self={call.self} users={call.users} debug={debug} fullscreen={fullscreen} />\n </div>\n );\n};\n\nCallGrid.displayName = 'CallGrid';\n\n//\n// Toolbar\n//\n\ntype CallToolbarProps = Pick<ToolbarProps, 'channel' | 'onLeave'>;\n\nconst CallToolbar: FC<CallToolbarProps> = (props) => {\n return (\n <div className='absolute bottom-0 left-0 right-0 flex justify-center'>\n <Toolbar isInRoom {...props} />\n </div>\n );\n};\n\nCallToolbar.displayName = 'CallToolbar';\n\n//\n// Export\n//\n\nexport const Call = {\n Root: CallRoot,\n Grid: CallGrid,\n Audio: CallAudio,\n Toolbar: CallToolbar,\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nimport { useAppGraph, useCapability } from '@dxos/app-framework';\nimport { useNode, useActions } from '@dxos/plugin-graph';\nimport { fullyQualifiedId } from '@dxos/react-client/echo';\nimport {\n Icon,\n IconButton,\n type IconButtonProps,\n type ThemedClassName,\n Toolbar as NativeToolbar,\n toLocalizedString,\n useTranslation,\n} from '@dxos/react-ui';\nimport { groupHoverControlItemWithTransition, mx } from '@dxos/react-ui-theme';\n\nimport { ThreadCapabilities } from '../../capabilities';\nimport { THREAD_PLUGIN } from '../../meta';\nimport { type ChannelType } from '../../types';\n\nexport type ToolbarProps = ThemedClassName<{\n channel?: ChannelType;\n participants?: number;\n autoHideControls?: boolean;\n isInRoom?: boolean;\n onJoin?: () => void;\n onLeave?: () => void;\n}>;\n\n// TODO(wittjosiah): Use ToolbarMenu.\nexport const Toolbar = ({\n classNames,\n channel,\n participants,\n autoHideControls = true,\n onJoin,\n onLeave,\n}: ToolbarProps) => {\n const { t } = useTranslation(THREAD_PLUGIN);\n const { graph } = useAppGraph();\n const call = useCapability(ThreadCapabilities.CallManager);\n\n // Channel app graph node.\n const node = useNode(graph, channel && fullyQualifiedId(channel));\n const actions = useActions(graph, node?.id).filter((action) => action.properties.disposition === 'toolbar');\n\n // Screen sharing.\n const isScreensharing = call.media.screenshareTrack !== undefined;\n const canSharescreen =\n typeof navigator.mediaDevices !== 'undefined' && navigator.mediaDevices.getDisplayMedia !== undefined;\n\n // TODO(wittjosiah): In order to use toolbar, need to update to actually use the graph action callbacks directly.\n return (\n <div className={mx('z-20 flex justify-center m-8', autoHideControls && groupHoverControlItemWithTransition)}>\n <NativeToolbar.Root classNames={['p-2 bg-modalSurface rounded-md shadow-md', classNames]}>\n <ToggleButton\n active={call.media.audioEnabled}\n state={{\n on: {\n icon: 'ph--microphone--regular',\n label: t('mic off'),\n onClick: () => call.turnAudioOff(),\n classNames: 'bg-callActive',\n },\n off: {\n icon: 'ph--microphone-slash--duotone',\n label: t('mic on'),\n onClick: () => call.turnAudioOn(),\n classNames: [call.joined && 'bg-callAlert'],\n },\n }}\n />\n <ToggleButton\n active={call.media.videoEnabled}\n state={{\n on: {\n icon: 'ph--video-camera--regular',\n label: t('camera off'),\n onClick: () => call.turnVideoOff(),\n },\n off: {\n icon: 'ph--video-camera-slash--duotone',\n label: t('camera on'),\n onClick: () => call.turnVideoOn(),\n },\n }}\n />\n\n {(participants !== undefined && (\n <div className='flex justify-center items-center gap-2 is-[5rem] text-xs text-subdued'>\n <Icon icon='ph--users--regular' size={4} />\n <div>{participants}</div>\n </div>\n )) || <NativeToolbar.Separator variant='gap' />}\n\n {call.joined && (\n <>\n <ToggleButton\n disabled={!canSharescreen}\n active={isScreensharing}\n state={{\n on: {\n icon: 'ph--monitor--regular',\n label: t('screenshare off'),\n onClick: () => call.turnScreenshareOff(),\n },\n off: {\n icon: 'ph--monitor-arrow-up--duotone',\n label: t('screenshare on'),\n onClick: () => call.turnScreenshareOn(),\n },\n }}\n />\n\n {/* Companion actions. */}\n {actions.map((action) => (\n <IconButton\n key={action.id}\n {...defaultButtonProps}\n icon={action.properties.icon}\n label={toLocalizedString(action.properties.label, t)}\n classNames={action.properties.classNames}\n onClick={() => action.data({ node })}\n />\n ))}\n\n <ToggleButton\n active={call.raisedHand}\n state={{\n on: {\n icon: 'ph--hand-waving--regular',\n label: t('lower hand'),\n onClick: () => call.setRaisedHand(false),\n classNames: [call.joined && 'bg-callAlert'],\n },\n off: {\n icon: 'ph--hand-palm--duotone',\n label: t('raise hand'),\n onClick: () => call.setRaisedHand(true),\n },\n }}\n />\n </>\n )}\n {call.joined ? (\n <IconButton variant='destructive' icon='ph--phone-x--regular' label={t('leave call')} onClick={onLeave} />\n ) : (\n <IconButton variant='primary' icon='ph--phone-incoming--regular' label={t('join call')} onClick={onJoin} />\n )}\n </NativeToolbar.Root>\n </div>\n );\n};\n\nToolbar.displayName = 'MeetingToolbar';\n\ntype ToolbarButtonProps = Pick<IconButtonProps, 'disabled'> & {\n active?: boolean;\n state: {\n on: Pick<IconButtonProps, 'icon' | 'label' | 'onClick' | 'classNames'>;\n off: Pick<IconButtonProps, 'icon' | 'label' | 'onClick' | 'classNames'>;\n };\n};\n\nconst defaultButtonProps: Partial<IconButtonProps> = {\n size: 5,\n iconOnly: true,\n};\n\nconst ToggleButton = ({ active, state }: ToolbarButtonProps) => (\n <IconButton\n {...defaultButtonProps}\n classNames={[active ? state.on.classNames ?? 'bg-callActive' : state.off.classNames]}\n icon={active ? state.on.icon : state.off.icon}\n label={active ? state.on.label : state.off.label}\n onClick={active ? state.on.onClick : state.off.onClick}\n />\n);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { type FC, useEffect, useRef } from 'react';\n\nexport type AudioStreamProps = {\n tracks: MediaStreamTrack[];\n};\n\nexport const AudioStream: FC<AudioStreamProps> = ({ tracks }) => {\n const mediaStreamRef = useRef(new MediaStream());\n const ref = useRef<HTMLAudioElement>(null);\n\n useEffect(() => {\n const audio = ref.current;\n if (!audio) {\n return;\n }\n\n const mediaStream = mediaStreamRef.current;\n audio.srcObject = mediaStream;\n }, []);\n\n const resetSrcObject = () => {\n const audio = ref.current;\n const mediaStream = mediaStreamRef.current;\n if (!audio || !mediaStream) {\n return;\n }\n\n // Need to set srcObject again in Chrome and call play() again for Safari\n // https://www.youtube.com/live/Tkx3OGrwVk8?si=K--P_AzNnAGrjraV&t=2533\n // Calling play() this way to make Chrome happy otherwise it throws an error.\n audio.addEventListener('canplay', () => audio.play(), { once: true });\n audio.srcObject = mediaStream;\n };\n\n return (\n <>\n <audio ref={ref} autoPlay />\n {tracks.map((track) => (\n <AudioTrack key={track.id} track={track} mediaStream={mediaStreamRef.current} resetSrcObject={resetSrcObject} />\n ))}\n </>\n );\n};\n\ntype AudioTrackProps = {\n track: MediaStreamTrack;\n mediaStream: MediaStream;\n resetSrcObject: () => void;\n};\n\nconst AudioTrack = ({ track, mediaStream, resetSrcObject }: AudioTrackProps) => {\n useEffect(() => {\n const currentTrack = track;\n mediaStream.addTrack(currentTrack);\n resetSrcObject();\n return () => {\n mediaStream.removeTrack(currentTrack);\n resetSrcObject();\n };\n }, [track, mediaStream]);\n\n return null;\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { type JSX, forwardRef, memo, useEffect, useRef } from 'react';\n\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport { mx } from '@dxos/react-ui-theme';\n\nexport type VideoObjectProps = Omit<JSX.IntrinsicElements['video'], 'className' | 'ref'> &\n ThemedClassName<{\n videoStream?: MediaStream;\n flip?: boolean;\n // TODO(burdon): If screenshare then contain.\n contain?: boolean;\n }>;\n\nexport const VideoObject = memo(\n forwardRef<HTMLVideoElement, VideoObjectProps>(({ videoStream, classNames, flip, contain, ...rest }, ref) => {\n const internalRef = useRef<HTMLVideoElement | null>(null);\n\n useEffect(() => {\n const video = internalRef.current;\n if (video && videoStream) {\n video.srcObject = videoStream;\n video.setAttribute('autoplay', 'true');\n video.setAttribute('playsinline', 'true');\n }\n }, [videoStream, internalRef.current]);\n\n // NOTE: The video element typically has a max size of 1280x720.\n return (\n <video\n className={mx(\n 'w-full aspect-video',\n flip && 'scale-x-[-1]',\n contain ? 'object-contain' : 'object-cover',\n classNames,\n )}\n ref={(v) => {\n internalRef.current = v;\n if (ref === null) {\n return;\n }\n\n if (typeof ref === 'function') {\n ref(v);\n } else {\n ref.current = v;\n }\n }}\n {...rest}\n />\n );\n }),\n);\n\nVideoObject.displayName = 'VideoObject';\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { memo, useMemo } from 'react';\n\nimport { useCapability } from '@dxos/app-framework';\n\nimport { type EncodedTrackName, type UserState } from '../../calls';\nimport { ThreadCapabilities } from '../../capabilities';\nimport { VideoObject } from '../Media';\nimport { ResponsiveGridItem, type ResponsiveGridItemProps } from '../ResponsiveGrid';\n\nexport const SCREENSHARE_SUFFIX = '_screenshare';\n\nexport const Participant = memo(({ item: user, debug, ...props }: ResponsiveGridItemProps<UserState>) => {\n const call = useCapability(ThreadCapabilities.CallManager);\n const isSelf: boolean = call.self.id !== undefined && user.id !== undefined && user.id.startsWith(call.self.id);\n const isScreenshare = user.id?.endsWith(SCREENSHARE_SUFFIX);\n const pulledVideoStream = call.getVideoStream(\n isScreenshare || !isSelf ? (user.tracks?.video as EncodedTrackName) : undefined,\n );\n\n const videoStream = useMemo<MediaStream | undefined>(() => {\n if (isSelf && !isScreenshare) {\n return call.media.videoStream;\n } else if (isSelf && isScreenshare) {\n return call.media.screenshareVideoStream;\n } else if (!isSelf) {\n return pulledVideoStream;\n }\n }, [isSelf, isScreenshare, call.media.videoStream, call.media.screenshareVideoStream, pulledVideoStream]);\n\n return (\n <ResponsiveGridItem\n {...props}\n item={user}\n name={user.name}\n self={isSelf}\n screenshare={!!call.media.screenshareVideoStream}\n video={call.media.videoEnabled}\n mute={user ? !user.tracks?.audioEnabled : false}\n wave={user.raisedHand}\n speaking={user.speaking}\n debug={debug}\n >\n <VideoObject\n videoStream={videoStream}\n flip={isSelf && !isScreenshare}\n contain={!!isScreenshare}\n classNames='rounded-md'\n />\n </ResponsiveGridItem>\n );\n});\n\nParticipant.displayName = 'Participant';\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { type PropsWithChildren } from 'react';\n\nimport { mx } from '@dxos/react-ui-theme';\n\n/**\n * A container component that maintains the child's aspect ratio while centering its content.\n * The container will scale to fit within its parent's bounds while preserving the aspect ratio.\n *\n * @example\n * <ResponsiveContainer>\n * <VideoObject />\n * </ResponsiveContainer>\n */\nexport const ResponsiveContainer = ({ children }: PropsWithChildren) => {\n return (\n // Outer container that takes full size of parent.\n <div role='none' className='relative flex w-full h-full'>\n {/* Absolute positioning layer for centering content. */}\n <div role='none' className='absolute inset-0 flex justify-center items-center'>\n {/* Content container that maintains given aspect ratio and proper scaling. */}\n <div role='none' className={mx('max-h-full max-w-full w-auto h-auto aspect-video')}>\n {children}\n </div>\n </div>\n </div>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { type ComponentType, type FC, useLayoutEffect, useState, useEffect, useMemo, useCallback } from 'react';\nimport { useResizeDetector } from 'react-resize-detector';\n\nimport { invariant } from '@dxos/invariant';\nimport { type ThemedClassName } from '@dxos/react-ui';\nimport { type Size } from '@dxos/react-ui-dnd';\nimport { mx } from '@dxos/react-ui-theme';\n\nimport { ResponsiveContainer } from './ResponsiveContainer';\nimport { type ResponsiveGridItemProps } from './ResponsiveGridItem';\n\nconst ASPECT_RATIO = 16 / 9;\nconst MIN_GALLERY_HEIGHT = 250;\n\nconst DEFAULT_GAP = 8;\n\nconst maxImageSize = 'w-[2560px] h-[1440px]';\n\n/**\n * Props for the ResponsiveGrid component.\n */\nexport type ResponsiveGridProps<T extends object = any> = ThemedClassName<{\n /** Cell component. */\n Cell: ComponentType<ResponsiveGridItemProps<T>>;\n\n /** Space between grid items in pixels. */\n gap?: number;\n\n /** Function to get the ID of an item. */\n getId?: (item: T) => string;\n\n /** Array of items to display in the grid. */\n items: T[];\n\n /** ID of the pinned item. */\n pinned?: string;\n\n /** Whether to hide the gallery (unpinned items) when an item is pinned. */\n autoHideGallery?: boolean;\n\n /** Whether the divider is resizable. */\n resizable?: boolean;\n\n /** Debug mode. */\n debug?: boolean;\n\n /** Callback when the pinned item changes. */\n onPinnedChange?: (pinned: string | undefined) => void;\n}>;\n\nconst defaultGetId: ResponsiveGridProps<any>['getId'] = (item: any) => item.id;\n\n/**\n * A responsive grid component that automatically adjusts its layout to optimize space usage.\n * Maintains aspect ratio of items while ensuring uniform gaps between them.\n */\nexport const ResponsiveGrid = <T extends object = any>({\n classNames,\n Cell,\n gap = DEFAULT_GAP,\n getId = defaultGetId,\n items,\n pinned,\n autoHideGallery = false,\n debug,\n onPinnedChange,\n}: ResponsiveGridProps<T>) => {\n const {\n width: containerWidth = 0,\n height: containerHeight = 0,\n ref: containerRef,\n } = useResizeDetector<HTMLDivElement>({ refreshRate: 100 });\n const [dividerHeight, setDividerHeight] = useState<Size>(0);\n useEffect(() => {\n if (containerWidth && containerHeight) {\n const { height } = fitAspectRatio(containerWidth, containerHeight, ASPECT_RATIO);\n setDividerHeight(Math.min(height, containerHeight - MIN_GALLERY_HEIGHT));\n }\n }, [containerWidth, containerHeight]);\n\n const pinnedItem = useMemo(() => items.find((item) => getId(item) === pinned), [items, pinned]);\n const mainItems = useMemo(() => items.filter((item) => getId(item) !== pinned), [items, pinned]);\n const hideGallery = autoHideGallery && pinnedItem !== undefined;\n\n //\n // Recalculate optimal layout when container size or items change.\n //\n const [{ time, columns, cellWidth }, setLayout] = useState<Layout>({ time: 0, columns: 0, cellWidth: 0 });\n const { width = 0, height = 0, ref: gridContainerRef } = useResizeDetector<HTMLDivElement>({ refreshRate: 200 });\n useEffect(() => {\n if (containerHeight && width && height) {\n const layout = calculateLayout(width, height, mainItems.length, gap);\n setLayout({ time: Date.now(), ...layout });\n }\n }, [containerHeight, width, height, mainItems.length, gap, pinned]);\n\n //\n // We use the browser to layout invisible divs and then calculate the absolute position of these items,\n // which are animated into position.\n //\n const [bounds, setBounds] = useState<[T, DOMRectBounds][]>([]);\n useLayoutEffect(() => {\n if ((!hideGallery && !gridContainerRef.current) || !containerHeight) {\n return;\n }\n\n // TODO(burdon): Consider directly setting bounds on DOM elementsinstead of state update?\n const t = setTimeout(() => {\n setBounds(\n items\n .filter((item) => !hideGallery || item === pinnedItem)\n .map((item) => {\n invariant(containerRef.current);\n const el = containerRef.current.querySelector(`[data-grid-item=\"${getId(item)}\"]`);\n if (!el) {\n return null;\n }\n\n const bounds = getRelativeBounds(containerRef.current, el as HTMLElement);\n return [item, bounds];\n })\n .filter((item): item is [T, DOMRectBounds] => item !== null),\n );\n });\n\n return () => clearTimeout(t);\n }, [containerHeight, items, pinnedItem, hideGallery, time]);\n\n const handleClick = useCallback(\n (item: T) => onPinnedChange?.(getId(item) === pinned ? undefined : getId(item)),\n [pinned, onPinnedChange],\n );\n\n return (\n <div ref={containerRef} className={mx('relative w-full h-full', classNames)}>\n {/* Placeholder elements to calculate layout. */}\n <div className='absolute inset-0 flex flex-col grow gap-2'>\n {/* Pinned item. */}\n {pinnedItem && (\n <div\n className={mx('flex grow-[2] shrink overflow-hidden justify-center items-center', hideGallery && 'h-full')}\n style={hideGallery ? {} : { height: dividerHeight }}\n >\n <SoloItem id={getId(pinnedItem)} debug={debug} />\n </div>\n )}\n\n {/* Gallery. */}\n {!hideGallery && (\n <div\n ref={gridContainerRef}\n className='flex grow-[1] overflow-hidden justify-center items-center'\n style={hideGallery ? {} : { minHeight: MIN_GALLERY_HEIGHT }}\n >\n {mainItems.length === 1 && (\n <div style={{ width: cellWidth }} className='flex h-full'>\n <SoloItem id={getId(mainItems[0])} debug={debug} />\n </div>\n )}\n\n {mainItems.length > 1 && columns > 0 && (\n <div\n role='grid'\n style={{\n display: 'grid',\n gridTemplateColumns: `repeat(${columns}, ${cellWidth}px)`,\n gap: `${gap}px`,\n }}\n >\n {mainItems.map((item) => (\n <div\n key={getId(item)}\n {...{ 'data-grid-item': getId(item) }}\n className={mx(\n 'aspect-video max-h-full max-w-full w-auto h-auto',\n debug && 'border border-primary-500',\n )}\n />\n ))}\n </div>\n )}\n </div>\n )}\n </div>\n\n {/* Absolutely positioned items. */}\n <div className={mx(debug && 'opacity-10')}>\n {bounds.map(([item, bounds]) => (\n <Cell\n key={getId(item)}\n classNames='absolute transition-all duration-500'\n item={item}\n style={bounds}\n pinned={getId(item) === pinned}\n onClick={items.length > 1 ? handleClick : undefined}\n />\n ))}\n </div>\n </div>\n );\n};\n\nconst SoloItem: FC<Pick<ResponsiveGridProps, 'debug'> & { id: string }> = ({ debug, id }) => {\n return (\n <ResponsiveContainer>\n <div\n {...{ 'data-grid-item': id }}\n className={mx('aspect-video overflow-hidden', debug && 'z-20 border-2 border-primary-500')}\n >\n {/* Maximum size placeholder image forces aspect ratio. */}\n <img alt='placeholder video' className={mx('opacity-0', maxImageSize)} />\n </div>\n </ResponsiveContainer>\n );\n};\n\ntype DOMRectBounds = Pick<DOMRect, 'top' | 'left' | 'width' | 'height'>;\n\n// TODO(burdon): Reconcile with react-ui-gameboard.\nconst getRelativeBounds = (container: HTMLElement, el: HTMLElement): DOMRectBounds => {\n const containerRect = container.getBoundingClientRect();\n const elementRect = el.getBoundingClientRect();\n return {\n top: elementRect.top - containerRect.top,\n left: elementRect.left - containerRect.left,\n width: elementRect.width,\n height: elementRect.height,\n };\n};\n\ntype Layout = {\n time?: number;\n columns: number;\n cellWidth: number;\n};\n\n/**\n * Calculates the optimal number of columns for a grid layout that minimizes wasted space.\n * @param containerWidth - Width of the container in pixels.\n * @param containerHeight - Height of the container in pixels.\n * @param count - Total number of items to display.\n * @param gap - Space between items in pixels.\n * @param aspectRatio - Desired aspect ratio of items (width/height).\n * @returns The optimal number of columns.\n */\nconst calculateLayout = (\n containerWidth: number,\n containerHeight: number,\n count: number,\n gap: number,\n aspectRatio = ASPECT_RATIO,\n): Layout => {\n if (count === 0) {\n return { columns: 1, cellWidth: 1 };\n }\n\n let minWastedSpace = Infinity;\n let bestColumns = 1;\n let cellWidth = 0;\n\n // Try different rows counts to find the optimal layout that minimizes wasted space.\n for (let rows = 1; rows <= count; rows++) {\n const cols = Math.ceil(count / rows);\n\n // Calculate available space accounting for gaps.\n const { width: itemWidth, height: itemHeight } = fitItemsToGrid(\n containerWidth,\n containerHeight,\n cols,\n rows,\n aspectRatio,\n gap,\n );\n\n // Calculate total wasted space for this configuration.\n const usedWidth = itemWidth * cols + gap * cols - 1;\n const usedHeight = itemHeight * rows + gap * rows - 1;\n\n // Determine if optimal.\n const wastedSpace = containerWidth * containerHeight - usedWidth * usedHeight;\n if (wastedSpace < minWastedSpace) {\n minWastedSpace = wastedSpace;\n bestColumns = cols;\n cellWidth = itemWidth;\n }\n }\n\n return { columns: bestColumns, cellWidth };\n};\n\n/**\n * Returns the size of the largest rectangle with the given aspect ration that fits within the grid.\n */\nconst fitItemsToGrid = (\n outerWidth: number,\n outerHeight: number,\n numCols: number,\n numRows: number,\n aspectRatio: number,\n gap: number,\n): { width: number; height: number } => {\n // Calculate available space accounting for gaps.\n const availableWidth = outerWidth - gap * (numCols - 1);\n const availableHeight = outerHeight - gap * (numRows - 1);\n\n // Calculate max dimensions.\n const maxCellWidth = availableWidth / numCols;\n const maxCellHeight = availableHeight / numRows;\n\n // Use fitAspectRatio to get dimensions that fit within max cell size while maintaining the desired aspect ratio\n return fitAspectRatio(maxCellWidth, maxCellHeight, aspectRatio);\n};\n\n/**\n * Returns the size of the largest rectangle the given aspect ratio that fits within the outer rectangle.\n */\nconst fitAspectRatio = (\n outerWidth: number,\n outerHeight: number,\n aspectRatio: number,\n): { width: number; height: number } => {\n if (outerWidth <= 0 || outerHeight <= 0 || aspectRatio <= 0) {\n return { width: 0, height: 0 };\n }\n\n // First try fitting to width.\n let width = outerWidth;\n let height = width / aspectRatio;\n\n // If too tall, fit to height instead.\n if (height > outerHeight) {\n height = outerHeight;\n width = height * aspectRatio;\n }\n\n return { width, height };\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useEffect, useState, type CSSProperties, type PropsWithChildren } from 'react';\n\nimport { Icon, IconButton, useTranslation, type ThemedClassName } from '@dxos/react-ui';\nimport { Waveform } from '@dxos/react-ui-sfx';\nimport { groupHoverControlItemWithTransition, mx } from '@dxos/react-ui-theme';\n\nimport { THREAD_PLUGIN } from '../../meta';\n\nexport type ResponsiveGridItemProps<T extends object = any> = PropsWithChildren<\n ThemedClassName<{\n item: T;\n style?: CSSProperties;\n pinned?: boolean;\n name?: string;\n self?: boolean;\n screenshare?: boolean;\n video?: boolean;\n mute?: boolean;\n wave?: boolean;\n speaking?: boolean;\n debug?: boolean;\n onClick?: (item: T) => void;\n }>\n>;\n\n/**\n * Cell container.\n */\nexport const ResponsiveGridItem = <T extends object = any>({\n children,\n classNames,\n item,\n style,\n name,\n self,\n pinned,\n screenshare,\n video,\n mute,\n wave,\n speaking,\n onClick,\n}: ResponsiveGridItemProps<T>) => {\n const { t } = useTranslation(THREAD_PLUGIN);\n const iconProps: Record<string, { icon: string; label: string; classNames?: string }> = {\n wave: {\n icon: 'ph--hand-waving--duotone',\n label: t('icon wave'),\n classNames: 'animate-pulse bg-orange-500',\n },\n mute: {\n icon: 'ph--microphone-slash--regular',\n label: t('icon muted'),\n },\n };\n\n const props = wave && !pinned ? iconProps.wave : mute ? iconProps.mute : speaking ? iconProps.speaking : undefined;\n\n // Debounce speaking indicator.\n const [speakingIndicator, setSpeakingIndicator] = useState(speaking);\n useEffect(() => {\n if (speaking) {\n setSpeakingIndicator(true);\n } else {\n const timeout = setTimeout(() => {\n setSpeakingIndicator(false);\n }, 1_000);\n return () => clearTimeout(timeout);\n }\n }, [speaking]);\n\n return (\n <div\n className={mx(\n 'relative w-full h-full group',\n 'rounded-md outline outline-2 outline-neutral-900 transition-[outline-color] duration-500',\n speakingIndicator ? 'outline-green-500' : !video && 'outline-separator',\n classNames,\n )}\n style={style}\n >\n {children}\n\n {/* Action. */}\n {onClick && (\n <div className='z-10 absolute top-1 right-1 flex'>\n <IconButton\n classNames={mx('p-1 min-bs-1 rounded', groupHoverControlItemWithTransition)}\n iconOnly\n icon={pinned ? 'ph--x--regular' : 'ph--arrows-out--regular'}\n size={pinned ? 5 : 4}\n label={pinned ? t('icon unpin') : t('icon pin')}\n onClick={() => onClick?.(item)}\n />\n </div>\n )}\n\n {/* Name. */}\n {name && (\n <div className='z-10 absolute bottom-1 left-8 right-1 flex justify-end gap-1 items-center'>\n {/* TODO(burdon): Replace with avatar for everyone. */}\n {/* {self && <Icon icon='ph--asterisk--regular' size={pinned ? 5 : 4} />} */}\n {screenshare && <Icon icon='ph--broadcast--regular' size={pinned ? 5 : 4} />}\n <div\n className={mx('bg-neutral-800 text-neutral-100 py-0.5 truncate rounded', pinned ? 'px-2' : 'px-1 text-xs')}\n >\n {name}\n </div>\n </div>\n )}\n\n {/* Activity. */}\n <div className='z-10 absolute bottom-1 left-1 flex'>\n {(speaking && <Waveform active size={pinned ? 5 : 4} />) ||\n (props && (\n <IconButton\n classNames={mx('p-1 min-bs-1 rounded', props?.classNames)}\n icon={props?.icon}\n label={props?.label}\n size={pinned ? 5 : 4}\n iconOnly\n />\n ))}\n </div>\n </div>\n );\n};\n", "//\n// Copyright 2025 DXOS.org\n//\n\nimport React, { useEffect, useMemo, useState } from 'react';\n\nimport { type ThemedClassName } from '@dxos/react-ui';\n\nimport { Participant, SCREENSHARE_SUFFIX } from './Participant';\nimport { type UserState } from '../../calls';\nimport { ResponsiveGrid } from '../ResponsiveGrid';\n\nconst getId = (user: UserState): string => user.id!;\n\nexport type ParticipantGridProps = ThemedClassName<{\n self: UserState;\n users: UserState[];\n fullscreen?: boolean;\n debug?: boolean;\n}>;\n\nexport const ParticipantGrid = ({ classNames, self, users, fullscreen, debug }: ParticipantGridProps) => {\n const [pinned, setPinned] = useState<string | undefined>();\n\n const allUsers = useMemo(() => {\n const allUsers: (UserState & { isSelf?: boolean })[] = [];\n users.forEach((user) => {\n if (!user.joined) {\n return;\n }\n\n allUsers.push({ ...user, isSelf: user.id === self.id });\n if (user.tracks?.screenshareEnabled) {\n const screenshare: UserState = {\n ...user,\n id: user.id + SCREENSHARE_SUFFIX,\n tracks: {\n ...user.tracks,\n video: user.tracks.screenshare,\n videoEnabled: user.tracks.screenshareEnabled,\n } as any, // TODO(burdon): Remove cast.\n };\n\n allUsers.push(screenshare);\n }\n });\n\n return allUsers;\n }, [self, users]);\n\n useEffect(() => {\n if (pinned) {\n // Check expanded user is still in call.\n if (!allUsers.find((user) => user.id === pinned)) {\n setPinned(undefined);\n }\n }\n }, [pinned, allUsers]);\n\n // TODO(burdon): Put self last.\n const sortedUsers: UserState[] = allUsers.sort((a, b) => {\n if (a.isSelf) {\n return 1;\n } else if (b.isSelf) {\n return -1;\n } else if (a.tracks?.screenshareEnabled) {\n return -1;\n } else if (b.tracks?.screenshareEnabled) {\n return 1;\n } else {\n return 0;\n }\n });\n\n // TODO(burdon): Show ghost view of user for a second before leaving.\n return (\n <ResponsiveGrid<UserState>\n classNames={classNames}\n Cell={Participant}\n debug={debug}\n getId={getId}\n items={sortedUsers}\n pinned={pinned}\n autoHideGallery={fullscreen}\n onPinnedChange={setPinned}\n />\n );\n};\n"],
5
- "mappings": "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",
6
- "names": ["import_react", "import_app_framework", "import_echo", "import_react_ui", "import_react_ui_theme", "import_react_ui_sfx", "Toolbar", "classNames", "channel", "participants", "autoHideControls", "onJoin", "onLeave", "t", "useTranslation", "THREAD_PLUGIN", "graph", "useAppGraph", "call", "useCapability", "ThreadCapabilities", "CallManager", "node", "useNode", "fullyQualifiedId", "actions", "useActions", "id", "filter", "action", "properties", "disposition", "isScreensharing", "media", "screenshareTrack", "undefined", "canSharescreen", "navigator", "mediaDevices", "getDisplayMedia", "React", "div", "className", "mx", "groupHoverControlItemWithTransition", "NativeToolbar", "Root", "ToggleButton", "active", "audioEnabled", "state", "on", "icon", "label", "onClick", "turnAudioOff", "off", "turnAudioOn", "joined", "videoEnabled", "turnVideoOff", "turnVideoOn", "Icon", "size", "Separator", "variant", "disabled", "turnScreenshareOff", "turnScreenshareOn", "map", "IconButton", "key", "defaultButtonProps", "toLocalizedString", "data", "raisedHand", "setRaisedHand", "displayName", "iconOnly", "AudioStream", "tracks", "mediaStreamRef", "useRef", "MediaStream", "ref", "useEffect", "audio", "current", "mediaStream", "srcObject", "resetSrcObject", "addEventListener", "play", "once", "autoPlay", "track", "AudioTrack", "currentTrack", "addTrack", "removeTrack", "VideoObject", "memo", "forwardRef", "videoStream", "flip", "contain", "rest", "internalRef", "video", "setAttribute", "v", "ResponsiveContainer", "children", "role", "ASPECT_RATIO", "MIN_GALLERY_HEIGHT", "DEFAULT_GAP", "maxImageSize", "defaultGetId", "item", "ResponsiveGrid", "Cell", "gap", "getId", "items", "pinned", "autoHideGallery", "debug", "onPinnedChange", "width", "containerWidth", "height", "containerHeight", "containerRef", "useResizeDetector", "refreshRate", "dividerHeight", "setDividerHeight", "useState", "fitAspectRatio", "Math", "min", "pinnedItem", "useMemo", "find", "mainItems", "hideGallery", "time", "columns", "cellWidth", "setLayout", "gridContainerRef", "layout", "calculateLayout", "length", "Date", "now", "bounds", "setBounds", "useLayoutEffect", "setTimeout", "invariant", "el", "querySelector", "getRelativeBounds", "clearTimeout", "handleClick", "useCallback", "style", "SoloItem", "minHeight", "display", "gridTemplateColumns", "img", "alt", "container", "containerRect", "getBoundingClientRect", "elementRect", "top", "left", "count", "aspectRatio", "minWastedSpace", "Infinity", "bestColumns", "rows", "cols", "ceil", "itemWidth", "itemHeight", "fitItemsToGrid", "usedWidth", "usedHeight", "wastedSpace", "outerWidth", "outerHeight", "numCols", "numRows", "availableWidth", "availableHeight", "maxCellWidth", "maxCellHeight", "ResponsiveGridItem", "name", "self", "screenshare", "mute", "wave", "speaking", "iconProps", "props", "speakingIndicator", "setSpeakingIndicator", "timeout", "Waveform", "SCREENSHARE_SUFFIX", "Participant", "user", "isSelf", "startsWith", "isScreenshare", "endsWith", "pulledVideoStream", "getVideoStream", "screenshareVideoStream", "ParticipantGrid", "users", "fullscreen", "setPinned", "allUsers", "forEach", "push", "screenshareEnabled", "sortedUsers", "sort", "a", "b", "CallRoot", "CallAudio", "pulledAudioTracks", "CallGrid", "useDebugMode", "CallToolbar", "isInRoom", "Call", "Grid", "Audio", "ChannelContainer", "roomId", "_roomId", "space", "getSpace", "callManager", "identity", "useIdentity", "isNamed", "profile", "joinSound", "useSoundEffect", "leaveSound", "extensions", "useCapabilities", "CallExtension", "ctx", "Context", "extension", "callStateUpdated", "onCallStateUpdated", "mediaStateUpdated", "onMediaStateUpdated", "dispose", "handleJoin", "leave", "setRoomId", "join", "Promise", "all", "err", "log", "catch", "handleLeave", "isJoined", "StackItem", "Content", "toolbar", "DisplayNameMissing", "defaultThread", "target", "ChannelToolbar", "attendableId", "onJoinCall", "ChatContainer", "thread", "client", "useClient", "setDisplayName", "handleChange", "event", "value", "handleSave", "halo", "updateProfile", "ControlGroup", "ControlItemInput", "title", "description", "Input", "TextInput", "onChange", "placeholder", "ControlGroupButton", "useChannelToolbarActions", "creator", "Rx", "make", "nodes", "createMenuItemGroup", "ns", "createMenuAction", "type", "edges", "source", "useMenuActions", "menuProps", "ElevationProvider", "elevation", "MenuProvider", "ToolbarMenu"]
7
- }
@@ -1,149 +0,0 @@
1
- "use strict";
2
- var __defProp = Object.defineProperty;
3
- var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
- var __getOwnPropNames = Object.getOwnPropertyNames;
5
- var __hasOwnProp = Object.prototype.hasOwnProperty;
6
- var __export = (target, all) => {
7
- for (var name in all)
8
- __defProp(target, name, { get: all[name], enumerable: true });
9
- };
10
- var __copyProps = (to, from, except, desc) => {
11
- if (from && typeof from === "object" || typeof from === "function") {
12
- for (let key of __getOwnPropNames(from))
13
- if (!__hasOwnProp.call(to, key) && key !== except)
14
- __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
- }
16
- return to;
17
- };
18
- var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var chunk_ZGDN3XBR_exports = {};
20
- __export(chunk_ZGDN3XBR_exports, {
21
- ChannelType: () => ChannelType,
22
- ThreadAction: () => ThreadAction,
23
- ThreadSettingsSchema: () => ThreadSettingsSchema,
24
- ThreadStatus: () => ThreadStatus,
25
- ThreadType: () => ThreadType
26
- });
27
- module.exports = __toCommonJS(chunk_ZGDN3XBR_exports);
28
- var import_chunk_HLMCEE5K = require("./chunk-HLMCEE5K.cjs");
29
- var import_effect = require("effect");
30
- var import_echo = require("@dxos/echo");
31
- var import_schema = require("@dxos/schema");
32
- var import_effect2 = require("effect");
33
- var import_echo2 = require("@dxos/echo");
34
- var import_echo3 = require("@dxos/react-client/echo");
35
- var import_schema2 = require("@dxos/schema");
36
- var ThreadStatus = import_effect.Schema.Union(import_effect.Schema.Literal("staged"), import_effect.Schema.Literal("active"), import_effect.Schema.Literal("resolved"));
37
- var _ThreadType = import_effect.Schema.Struct({
38
- name: import_effect.Schema.optional(import_effect.Schema.String),
39
- status: import_effect.Schema.optional(ThreadStatus),
40
- messages: import_effect.Schema.mutable(import_effect.Schema.Array(import_echo.Type.Ref(import_schema.DataType.Message)))
41
- }).pipe(import_echo.Type.Obj({
42
- typename: "dxos.org/type/Thread",
43
- version: "0.1.0"
44
- }));
45
- var ThreadType = _ThreadType;
46
- var _ChannelType = import_effect.Schema.Struct({
47
- name: import_effect.Schema.optional(import_effect.Schema.String),
48
- defaultThread: import_echo.Type.Ref(ThreadType),
49
- // TODO(wittjosiah): Should be an "ordered collection".
50
- threads: import_effect.Schema.mutable(import_effect.Schema.Array(import_echo.Type.Ref(ThreadType)))
51
- }).pipe(import_echo.Type.Obj({
52
- typename: "dxos.org/type/Channel",
53
- version: "0.1.0"
54
- }));
55
- var ChannelType = _ChannelType;
56
- (function(ThreadAction2) {
57
- const THREAD_ACTION = `${import_chunk_HLMCEE5K.THREAD_PLUGIN}/action`;
58
- class CreateChannel extends import_effect2.Schema.TaggedClass()(`${THREAD_ACTION}/create-channel`, {
59
- input: import_effect2.Schema.Struct({
60
- spaceId: import_echo2.Type.SpaceId,
61
- name: import_effect2.Schema.optional(import_effect2.Schema.String)
62
- }),
63
- output: import_effect2.Schema.Struct({
64
- object: ChannelType
65
- })
66
- }) {
67
- }
68
- ThreadAction2.CreateChannel = CreateChannel;
69
- class CreateChannelThread extends import_effect2.Schema.TaggedClass()(`${THREAD_ACTION}/create-channel-thread`, {
70
- input: import_effect2.Schema.Struct({
71
- channel: ChannelType
72
- }),
73
- output: import_effect2.Schema.Struct({
74
- object: ThreadType
75
- })
76
- }) {
77
- }
78
- ThreadAction2.CreateChannelThread = CreateChannelThread;
79
- class Create extends import_effect2.Schema.TaggedClass()(`${THREAD_ACTION}/create`, {
80
- input: import_effect2.Schema.Struct({
81
- name: import_effect2.Schema.optional(import_effect2.Schema.String),
82
- anchor: import_effect2.Schema.optional(import_effect2.Schema.String),
83
- subject: import_echo3.EchoObjectSchema
84
- }),
85
- output: import_effect2.Schema.Void
86
- }) {
87
- }
88
- ThreadAction2.Create = Create;
89
- class Delete extends import_effect2.Schema.TaggedClass()(`${THREAD_ACTION}/delete`, {
90
- input: import_effect2.Schema.Struct({
91
- anchor: import_schema2.AnchoredTo,
92
- subject: import_echo3.EchoObjectSchema,
93
- thread: import_effect2.Schema.optional(ThreadType)
94
- }),
95
- output: import_effect2.Schema.Void
96
- }) {
97
- }
98
- ThreadAction2.Delete = Delete;
99
- class Select extends import_effect2.Schema.TaggedClass()(`${THREAD_ACTION}/select`, {
100
- input: import_effect2.Schema.Struct({
101
- current: import_effect2.Schema.String
102
- }),
103
- output: import_effect2.Schema.Void
104
- }) {
105
- }
106
- ThreadAction2.Select = Select;
107
- class ToggleResolved extends import_effect2.Schema.TaggedClass()(`${THREAD_ACTION}/toggle-resolved`, {
108
- input: import_effect2.Schema.Struct({
109
- thread: ThreadType
110
- }),
111
- output: import_effect2.Schema.Void
112
- }) {
113
- }
114
- ThreadAction2.ToggleResolved = ToggleResolved;
115
- class AddMessage extends import_effect2.Schema.TaggedClass()(`${THREAD_ACTION}/add-message`, {
116
- input: import_effect2.Schema.Struct({
117
- subject: import_echo3.EchoObjectSchema,
118
- anchor: import_schema2.AnchoredTo,
119
- sender: import_schema2.DataType.Actor,
120
- text: import_effect2.Schema.String
121
- }),
122
- output: import_effect2.Schema.Void
123
- }) {
124
- }
125
- ThreadAction2.AddMessage = AddMessage;
126
- class DeleteMessage extends import_effect2.Schema.TaggedClass()(`${THREAD_ACTION}/delete-message`, {
127
- input: import_effect2.Schema.Struct({
128
- anchor: import_schema2.AnchoredTo,
129
- subject: import_echo3.EchoObjectSchema,
130
- messageId: import_effect2.Schema.String,
131
- message: import_effect2.Schema.optional(import_schema2.DataType.Message),
132
- messageIndex: import_effect2.Schema.optional(import_effect2.Schema.Number)
133
- }),
134
- output: import_effect2.Schema.Void
135
- }) {
136
- }
137
- ThreadAction2.DeleteMessage = DeleteMessage;
138
- })(ThreadAction || (ThreadAction = {}));
139
- var ThreadSettingsSchema = import_effect2.Schema.mutable(import_effect2.Schema.Struct({}));
140
- var ThreadAction;
141
- // Annotate the CommonJS export names for ESM import in node:
142
- 0 && (module.exports = {
143
- ChannelType,
144
- ThreadAction,
145
- ThreadSettingsSchema,
146
- ThreadStatus,
147
- ThreadType
148
- });
149
- //# sourceMappingURL=chunk-ZGDN3XBR.cjs.map
@@ -1,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/types/schema.ts", "../../../src/types/types.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Schema } from 'effect';\n\nimport { Type } from '@dxos/echo';\nimport { DataType } from '@dxos/schema';\n\nexport const ThreadStatus = Schema.Union(\n Schema.Literal('staged'),\n Schema.Literal('active'),\n Schema.Literal('resolved'),\n);\n\nconst _ThreadType = Schema.Struct({\n name: Schema.optional(Schema.String),\n status: Schema.optional(ThreadStatus),\n messages: Schema.mutable(Schema.Array(Type.Ref(DataType.Message))),\n}).pipe(Type.Obj({ typename: 'dxos.org/type/Thread', version: '0.1.0' }));\nexport interface ThreadType extends Schema.Schema.Type<typeof _ThreadType> {}\nexport const ThreadType: Type.obj<Schema.Schema<ThreadType, Schema.Schema.Encoded<typeof _ThreadType>, never>> =\n _ThreadType;\n\nconst _ChannelType = Schema.Struct({\n name: Schema.optional(Schema.String),\n defaultThread: Type.Ref(ThreadType),\n // TODO(wittjosiah): Should be an \"ordered collection\".\n threads: Schema.mutable(Schema.Array(Type.Ref(ThreadType))),\n}).pipe(Type.Obj({ typename: 'dxos.org/type/Channel', version: '0.1.0' }));\nexport interface ChannelType extends Schema.Schema.Type<typeof _ChannelType> {}\nexport const ChannelType: Type.obj<Schema.Schema<ChannelType, Schema.Schema.Encoded<typeof _ChannelType>, never>> =\n _ChannelType;\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { Schema } from 'effect';\n\nimport { Type } from '@dxos/echo';\nimport { EchoObjectSchema } from '@dxos/react-client/echo';\nimport { AnchoredTo, DataType } from '@dxos/schema';\n\nimport { ChannelType, ThreadType } from './schema';\nimport { THREAD_PLUGIN } from '../meta';\n\nexport namespace ThreadAction {\n const THREAD_ACTION = `${THREAD_PLUGIN}/action`;\n\n export class CreateChannel extends Schema.TaggedClass<CreateChannel>()(`${THREAD_ACTION}/create-channel`, {\n input: Schema.Struct({\n spaceId: Type.SpaceId,\n name: Schema.optional(Schema.String),\n }),\n output: Schema.Struct({\n object: ChannelType,\n }),\n }) {}\n\n export class CreateChannelThread extends Schema.TaggedClass<CreateChannelThread>()(\n `${THREAD_ACTION}/create-channel-thread`,\n {\n input: Schema.Struct({\n channel: ChannelType,\n }),\n output: Schema.Struct({\n object: ThreadType,\n }),\n },\n ) {}\n\n export class Create extends Schema.TaggedClass<Create>()(`${THREAD_ACTION}/create`, {\n input: Schema.Struct({\n name: Schema.optional(Schema.String),\n anchor: Schema.optional(Schema.String),\n subject: EchoObjectSchema,\n }),\n output: Schema.Void,\n }) {}\n\n export class Delete extends Schema.TaggedClass<Delete>()(`${THREAD_ACTION}/delete`, {\n input: Schema.Struct({\n anchor: AnchoredTo,\n subject: EchoObjectSchema,\n thread: Schema.optional(ThreadType),\n }),\n output: Schema.Void,\n }) {}\n\n export class Select extends Schema.TaggedClass<Select>()(`${THREAD_ACTION}/select`, {\n input: Schema.Struct({\n current: Schema.String,\n }),\n output: Schema.Void,\n }) {}\n\n export class ToggleResolved extends Schema.TaggedClass<ToggleResolved>()(`${THREAD_ACTION}/toggle-resolved`, {\n input: Schema.Struct({\n thread: ThreadType,\n }),\n output: Schema.Void,\n }) {}\n\n export class AddMessage extends Schema.TaggedClass<AddMessage>()(`${THREAD_ACTION}/add-message`, {\n input: Schema.Struct({\n subject: EchoObjectSchema,\n anchor: AnchoredTo,\n sender: DataType.Actor,\n text: Schema.String,\n }),\n output: Schema.Void,\n }) {}\n\n export class DeleteMessage extends Schema.TaggedClass<DeleteMessage>()(`${THREAD_ACTION}/delete-message`, {\n input: Schema.Struct({\n anchor: AnchoredTo,\n subject: EchoObjectSchema,\n messageId: Schema.String,\n message: Schema.optional(DataType.Message),\n messageIndex: Schema.optional(Schema.Number),\n }),\n output: Schema.Void,\n }) {}\n}\n\nexport const ThreadSettingsSchema = Schema.mutable(Schema.Struct({}));\nexport type ThreadSettingsProps = Schema.Schema.Type<typeof ThreadSettingsSchema>;\n\nexport interface ThreadModel {\n root: ThreadType;\n}\n\ntype SubjectId = string;\nexport type ViewState = { showResolvedThreads: boolean };\nexport type ViewStore = Record<SubjectId, ViewState>;\n\nexport type ThreadState = {\n /** Object toolbar state. */\n toolbar: Record<string, boolean>;\n /** In-memory draft threads. */\n drafts: Record<string, AnchoredTo[]>;\n current?: string | undefined;\n};\n"],
5
- "mappings": "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",
6
- "names": ["import_effect", "import_echo", "import_schema", "ThreadStatus", "Schema", "Union", "Literal", "_ThreadType", "Struct", "name", "optional", "String", "status", "messages", "mutable", "Array", "Type", "Ref", "DataType", "Message", "pipe", "Obj", "typename", "version", "ThreadType", "_ChannelType", "defaultThread", "threads", "ChannelType", "ThreadAction", "THREAD_ACTION", "THREAD_PLUGIN", "CreateChannel", "TaggedClass", "input", "spaceId", "SpaceId", "output", "object", "CreateChannelThread", "channel", "Create", "anchor", "subject", "EchoObjectSchema", "Void", "Delete", "AnchoredTo", "thread", "Select", "current", "ToggleResolved", "AddMessage", "sender", "Actor", "text", "DeleteMessage", "messageId", "message", "messageIndex", "Number", "ThreadSettingsSchema"]
7
- }