@dxos/plugin-thread 0.8.3 → 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
@@ -3,91 +3,95 @@
3
3
  //
4
4
 
5
5
  import { Type } from '@dxos/echo';
6
+ import { type Resource } from '@dxos/react-ui';
7
+ import { Channel } from '@dxos/types';
6
8
 
7
- import { THREAD_PLUGIN } from './meta';
8
- import { ChannelType } from './types';
9
+ import { meta } from '#meta';
9
10
 
10
- export default [
11
+ export const translations = [
11
12
  {
12
13
  'en-US': {
13
- [Type.getTypename(ChannelType)]: {
14
- 'typename label': 'Channel',
15
- 'typename label_zero': 'Channels',
16
- 'typename label_one': 'Channel',
17
- 'typename label_other': 'Channels',
18
- 'object name placeholder': 'New channel',
14
+ [Type.getTypename(Channel.Channel)]: {
15
+ 'typename.label': 'Channel',
16
+ 'typename.label_zero': 'Channels',
17
+ 'typename.label_one': 'Channel',
18
+ 'typename.label_other': 'Channels',
19
+ 'object-name.placeholder': 'New channel',
20
+ 'add-object.label': 'Add channel',
21
+ 'rename-object.label': 'Rename channel',
22
+ 'delete-object.label': 'Delete channel',
23
+ 'object-deleted.label': 'Channel deleted',
19
24
  },
20
- [THREAD_PLUGIN]: {
21
- 'plugin name': 'Chat',
22
- 'channel title label': 'Title',
23
- 'message placeholder': 'Reply…',
24
- 'activity message': 'Processing…',
25
- 'anonymous label': 'Anonymous',
26
- 'delete message block label': 'Delete message block',
27
- 'detached thread label': 'Referenced content was removed',
28
- 'delete thread label': 'Delete thread',
29
- 'thread deleted label': 'You deleted a thread.',
30
- 'message deleted label': 'You deleted a message.',
31
- 'comments heading': 'Comments',
32
- 'chat heading': 'Chat',
33
- 'draft button': 'DRAFT',
34
- 'no comments title': 'Comments',
35
- 'no comments message':
25
+ [meta.id]: {
26
+ 'plugin.name': 'Chat',
27
+ 'channel-title.label': 'Title',
28
+ 'message.placeholder': 'Reply…',
29
+ 'activity.message': 'Processing…',
30
+ 'anonymous.label': 'Anonymous',
31
+ 'delete-message-block.label': 'Delete message block',
32
+ 'detached-thread.label': 'Referenced content was removed',
33
+ 'delete-thread.label': 'Delete thread',
34
+ 'resolve-thread.label': 'Resolve thread',
35
+ 'thread-deleted.label': 'Thread deleted',
36
+ 'message-deleted.label': 'Message deleted',
37
+ 'comments.heading': 'Comments',
38
+ 'chat.heading': 'Chat',
39
+ 'draft.button': 'DRAFT',
40
+ 'no-comments.title': 'Comments',
41
+ 'no-comments.message':
36
42
  'Click on the <commentIcon></commentIcon> button in the document toolbar to create a comment thread on the selected text.',
37
- 'toggle show resolved': 'Show resolved',
38
- 'unnamed object threads label': 'Threads',
39
- 'mark as resolved label': 'Mark as resolved',
40
- 'mark as unresolved label': 'Mark as unresolved',
41
- 'save message label': 'Save',
42
- 'edit message label': 'Edit',
43
- 'delete message label': 'Delete message',
44
- 'open comments panel label': 'Show Comments',
45
- 'comments label': 'Comments',
46
- 'show all label': 'All comments',
47
- 'show unresolved label': 'Unresolved comments',
43
+ 'toggle-show-resolved.label': 'Show resolved',
44
+ 'unnamed-object-threads.label': 'Threads',
45
+ 'mark-as-resolved.label': 'Mark as resolved',
46
+ 'mark-as-unresolved.label': 'Mark as unresolved',
47
+ 'save-message.label': 'Save',
48
+ 'edit-message.label': 'Edit',
49
+ 'delete-message.label': 'Delete message',
50
+ 'accept-proposal.label': 'Accept proposal',
51
+ 'open-comments-panel.label': 'Show Comments',
52
+ 'comments.label': 'Comments',
53
+ 'show-all.label': 'All comments',
54
+ 'show-unresolved.label': 'Unresolved comments',
55
+ 'add-comment.label': 'Add comment',
48
56
 
49
- 'channel companion label': 'Channel',
50
- 'call panel label': 'Active Call',
57
+ 'channel-companion.label': 'Channel',
58
+ 'call-panel.label': 'Active Call',
51
59
 
52
- 'display name label': 'Display name',
53
- 'display name description': 'Set your display name before joining a meeting.',
54
- 'display name input placeholder': 'Enter your name',
55
- 'set display name label': 'Continue',
60
+ 'display-name.label': 'Display name',
61
+ 'display-name.description': 'Set your display name before joining a meeting.',
62
+ 'display-name-input.placeholder': 'Enter your name',
63
+ 'set-display-name.label': 'Continue',
56
64
 
57
- 'call tab label': 'Call',
58
- 'meeting status title': 'Meeting',
59
- 'share meeting link label': 'Share meeting',
60
- 'show webrtc stats title': 'Detailed WebRTC Stats',
65
+ 'call-tab.label': 'Call',
66
+ 'meeting-status.title': 'Calls',
67
+ 'share-meeting-link.label': 'Share meeting',
68
+ 'show-webrtc-stats.title': 'WebRTC Stats',
69
+ 'show-calls-history.title': 'Service History',
61
70
 
62
- 'meeting summary label': 'Summary',
63
- 'summarize label': 'Summarize',
64
- 'summarizing label': 'Creating summary...',
65
- 'create summary message': 'A summary doesn’t exist for this meeting yet. Create one now?',
71
+ 'meeting-summary.label': 'Summary',
72
+ 'summarize.label': 'Summarize',
73
+ 'summarizing.label': 'Creating summary...',
74
+ 'create-summary.message': 'A summary doesn’t exist for this meeting yet. Create one now?',
66
75
 
67
- 'join call': 'Join',
68
- 'leave call': 'Leave',
76
+ 'icon-pin.label': 'Pin video',
77
+ 'icon-unpin.label': 'Unpin video',
78
+ 'icon-wave.label': 'Waving',
79
+ 'icon-muted.label': 'Muted',
80
+ 'join-call.button': 'Join',
81
+ 'leave-call.button': 'Leave',
82
+ 'mic-on.button': 'Unmute',
83
+ 'mic-off.button': 'Mute',
84
+ 'camera-on.button': 'Turn camera on',
85
+ 'camera-off.button': 'Turn camera off',
86
+ 'camera-off.label': 'Camera off',
87
+ 'raise-hand.button': 'Raise hand',
88
+ 'lower-hand.button': 'Lower hand',
89
+ 'screenshare-on.button': 'Share screen',
90
+ 'screenshare-off.button': 'Stop streaming',
69
91
 
70
- 'lobby participants_zero': 'No participants',
71
- 'lobby participants_one': '1 participant',
72
- 'lobby participants_other': '{{count}} participants',
73
-
74
- 'icon pin': 'Pin video',
75
- 'icon unpin': 'Unpin video',
76
- 'icon wave': 'Waving',
77
- 'icon muted': 'Muted',
78
- 'icon speaking': 'Speaking',
79
-
80
- 'mic on': 'Unmute',
81
- 'mic off': 'Mute',
82
- 'camera on': 'Turn camera on',
83
- 'camera off': 'Turn camera off',
84
- 'camera off label': 'Camera off',
85
-
86
- 'raise hand': 'Raise hand',
87
- 'lower hand': 'Lower hand',
88
- 'screenshare on': 'Share screen',
89
- 'screenshare off': 'Stop streaming',
92
+ 'channel-toolbar.title': 'Channel actions',
93
+ 'start-video-call.menu': 'Start video call',
90
94
  },
91
95
  },
92
96
  },
93
- ];
97
+ ] as const satisfies Resource[];
@@ -0,0 +1,10 @@
1
+ //
2
+ // Copyright 2023 DXOS.org
3
+ //
4
+
5
+ // @import-as-namespace
6
+
7
+ import * as Schema from 'effect/Schema';
8
+
9
+ export const Settings = Schema.mutable(Schema.Struct({}));
10
+ export interface Settings extends Schema.Schema.Type<typeof Settings> {}
@@ -0,0 +1,41 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ // @import-as-namespace
6
+
7
+ import { type Atom } from '@effect-atom/atom-react';
8
+
9
+ import { Capability } from '@dxos/app-framework';
10
+ import { AppCapabilities } from '@dxos/app-toolkit';
11
+ import { type Channel } from '@dxos/types';
12
+
13
+ import { meta } from '#meta';
14
+
15
+ import { type CallManager as CallManagerImpl, type CallState, type MediaState } from '../calls';
16
+ import { type ThreadState, type ViewStore } from '../types';
17
+
18
+ export const Settings = Capability.make<Atom.Writable<import('./Settings').Settings>>(`${meta.id}.capability.settings`);
19
+ export const CallManager = Capability.make<CallManagerImpl>(`${meta.id}.capability.call-manager`);
20
+
21
+ /** Comment configuration contributed per typename by plugins that support commenting. */
22
+ export type CommentConfig = AppCapabilities.CommentConfig;
23
+ export const CommentConfig: Capability.InterfaceDef<AppCapabilities.CommentConfig> = AppCapabilities.CommentConfig;
24
+
25
+ // TODO(burdon): Better way to define specific extensions for meeting companions.
26
+ // TODO(burdon): This brings in deps from ../calls; how should we manage/minimize explicit type exposure to other plugins?
27
+ // TODO(wittjosiah): These callbacks could be intents once we support broadcast.
28
+ export type CallProperties = {
29
+ onJoin: (state: { channel?: Channel.Channel; roomId?: string }) => Promise<void>;
30
+ onLeave: (roomId?: string) => Promise<void>;
31
+ onCallStateUpdated: (callState: CallState) => Promise<void>;
32
+ onMediaStateUpdated: ([mediaState, isSpeaking]: [MediaState, boolean]) => Promise<void>;
33
+ };
34
+
35
+ export const CallExtension = Capability.make<CallProperties>(`${meta.id}.capability.call-extension`);
36
+
37
+ /** Thread state (drafts, toolbar state, current selection). */
38
+ export const State = Capability.make<Atom.Writable<ThreadState>>(`${meta.id}.capability.state`);
39
+
40
+ /** Per-subject view state (e.g., showResolvedThreads). */
41
+ export const ViewState = Capability.make<Atom.Writable<ViewStore>>(`${meta.id}.capability.view-state`);
@@ -0,0 +1,179 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ // @import-as-namespace
6
+
7
+ import * as Schema from 'effect/Schema';
8
+
9
+ import { Capability } from '@dxos/app-framework';
10
+ import { Operation } from '@dxos/compute';
11
+ import { Database, Key, Obj, Ref } from '@dxos/echo';
12
+ import { Collection } from '@dxos/echo';
13
+ import { Markdown } from '@dxos/plugin-markdown';
14
+ import { SpaceSchema } from '@dxos/react-client/echo';
15
+ import { Actor, AnchoredTo, Channel, Message, Thread } from '@dxos/types';
16
+
17
+ import { meta } from '#meta';
18
+
19
+ const THREAD_OPERATION = `${meta.id}.operation`;
20
+
21
+ export const OnCreateSpace = Operation.make({
22
+ meta: { key: `${THREAD_OPERATION}.on-create-space`, name: 'On Create Space' },
23
+ services: [Capability.Service],
24
+ input: Schema.Struct({
25
+ space: SpaceSchema,
26
+ rootCollection: Collection.Collection,
27
+ isDefault: Schema.Boolean.pipe(Schema.optional),
28
+ }),
29
+ output: Schema.Void,
30
+ });
31
+
32
+ export const CreateChannel = Operation.make({
33
+ meta: { key: `${THREAD_OPERATION}.create-channel`, name: 'Create Channel' },
34
+ services: [Capability.Service],
35
+ input: Schema.Struct({
36
+ spaceId: Key.SpaceId,
37
+ name: Schema.optional(Schema.String),
38
+ }),
39
+ output: Schema.Struct({
40
+ object: Channel.Channel,
41
+ }),
42
+ });
43
+
44
+ export const AppendChannelMessage = Operation.make({
45
+ meta: { key: `${THREAD_OPERATION}.append-channel-message`, name: 'Append Channel Message' },
46
+ // Note: Feed.FeedService is provided inside the handler from space.queues, not at the
47
+ // operation level — the runtime can't fulfill it without a space context.
48
+ services: [Capability.Service],
49
+ input: Schema.Struct({
50
+ channel: Channel.Channel,
51
+ sender: Actor.Actor,
52
+ text: Schema.String,
53
+ }),
54
+ output: Schema.Void,
55
+ });
56
+
57
+ export const Create = Operation.make({
58
+ meta: { key: `${THREAD_OPERATION}.create`, name: 'Create Thread' },
59
+ services: [Capability.Service],
60
+ input: Schema.Struct({
61
+ name: Schema.optional(Schema.String),
62
+ anchor: Schema.optional(Schema.String),
63
+ subject: Obj.Unknown,
64
+ }),
65
+ output: Schema.Void,
66
+ });
67
+
68
+ export const DeleteOutput = Schema.Struct({
69
+ thread: Thread.Thread.annotations({ description: 'The deleted thread.' }),
70
+ anchor: AnchoredTo.AnchoredTo.annotations({ description: 'The deleted anchor.' }),
71
+ }).pipe(Schema.partial);
72
+
73
+ export type DeleteOutput = Schema.Schema.Type<typeof DeleteOutput>;
74
+
75
+ export const Delete = Operation.make({
76
+ meta: { key: `${THREAD_OPERATION}.delete`, name: 'Delete Thread' },
77
+ services: [Capability.Service],
78
+ input: Schema.Struct({
79
+ anchor: AnchoredTo.AnchoredTo,
80
+ subject: Obj.Unknown,
81
+ thread: Schema.optional(Thread.Thread),
82
+ }),
83
+ output: DeleteOutput,
84
+ });
85
+
86
+ export const Select = Operation.make({
87
+ meta: { key: `${THREAD_OPERATION}.select`, name: 'Select Thread' },
88
+ services: [Capability.Service],
89
+ input: Schema.Struct({
90
+ current: Schema.String,
91
+ }),
92
+ output: Schema.Void,
93
+ });
94
+
95
+ export const ToggleResolved = Operation.make({
96
+ meta: { key: `${THREAD_OPERATION}.toggle-resolved`, name: 'Toggle Resolved' },
97
+ services: [Capability.Service],
98
+ input: Schema.Struct({
99
+ thread: Thread.Thread,
100
+ }),
101
+ output: Schema.Void,
102
+ });
103
+
104
+ export const AddMessage = Operation.make({
105
+ meta: { key: `${THREAD_OPERATION}.add-message`, name: 'Add Message' },
106
+ services: [Capability.Service],
107
+ input: Schema.Struct({
108
+ subject: Obj.Unknown,
109
+ anchor: AnchoredTo.AnchoredTo,
110
+ sender: Actor.Actor,
111
+ text: Schema.String,
112
+ }),
113
+ output: Schema.Void,
114
+ });
115
+
116
+ export const DeleteMessageOutput = Schema.partial(
117
+ Schema.Struct({
118
+ message: Message.Message.annotations({ description: 'The deleted message.' }),
119
+ messageIndex: Schema.Number.annotations({ description: 'The index the message was at.' }),
120
+ }),
121
+ );
122
+
123
+ export type DeleteMessageOutput = Schema.Schema.Type<typeof DeleteMessageOutput>;
124
+
125
+ export const DeleteMessage = Operation.make({
126
+ meta: { key: `${THREAD_OPERATION}.delete-message`, name: 'Delete Message' },
127
+ services: [Capability.Service],
128
+ input: Schema.Struct({
129
+ anchor: AnchoredTo.AnchoredTo,
130
+ subject: Obj.Unknown,
131
+ messageId: Schema.String,
132
+ }),
133
+ output: DeleteMessageOutput,
134
+ });
135
+
136
+ /**
137
+ * Restore a deleted thread (inverse of Delete).
138
+ */
139
+ export const Restore = Operation.make({
140
+ meta: { key: `${THREAD_OPERATION}.restore`, name: 'Restore Thread' },
141
+ services: [Capability.Service],
142
+ input: Schema.Struct({
143
+ thread: Thread.Thread.annotations({ description: 'The thread to restore.' }),
144
+ anchor: AnchoredTo.AnchoredTo.annotations({ description: 'The anchor relation to restore.' }),
145
+ }),
146
+ output: Schema.Void,
147
+ });
148
+
149
+ /**
150
+ * Restore a deleted message (inverse of DeleteMessage).
151
+ */
152
+ export const RestoreMessage = Operation.make({
153
+ meta: { key: `${THREAD_OPERATION}.restore-message`, name: 'Restore Message' },
154
+ services: [Capability.Service],
155
+ input: Schema.Struct({
156
+ anchor: AnchoredTo.AnchoredTo.annotations({ description: 'The anchor of the thread.' }),
157
+ message: Message.Message.annotations({ description: 'The message to restore.' }),
158
+ messageIndex: Schema.Number.annotations({ description: 'The index to restore the message at.' }),
159
+ }),
160
+ output: Schema.Void,
161
+ });
162
+
163
+ export const CreateProposals = Operation.make({
164
+ meta: {
165
+ key: 'org.dxos.function.thread.create-proposals',
166
+ name: 'Create Proposals',
167
+ description: 'Proposes a set of changes to a document.',
168
+ },
169
+ input: Schema.Struct({
170
+ doc: Ref.Ref(Markdown.Document).annotations({
171
+ description: 'The ID of the document.',
172
+ }),
173
+ diffs: Schema.Array(Schema.String).annotations({
174
+ description: 'The diffs to propose for the document.',
175
+ }),
176
+ }),
177
+ output: Schema.Void,
178
+ services: [Database.Service],
179
+ });
@@ -2,5 +2,8 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- export * from './schema';
6
5
  export * from './types';
6
+
7
+ export * as Settings from './Settings';
8
+ export * as ThreadCapabilities from './ThreadCapabilities';
9
+ export * as ThreadOperation from './ThreadOperation';
@@ -2,99 +2,10 @@
2
2
  // Copyright 2023 DXOS.org
3
3
  //
4
4
 
5
- import { Schema } from 'effect';
6
-
7
- import { Type } from '@dxos/echo';
8
- import { EchoObjectSchema } from '@dxos/react-client/echo';
9
- import { AnchoredTo, DataType } from '@dxos/schema';
10
-
11
- import { ChannelType, ThreadType } from './schema';
12
- import { THREAD_PLUGIN } from '../meta';
13
-
14
- export namespace ThreadAction {
15
- const THREAD_ACTION = `${THREAD_PLUGIN}/action`;
16
-
17
- export class CreateChannel extends Schema.TaggedClass<CreateChannel>()(`${THREAD_ACTION}/create-channel`, {
18
- input: Schema.Struct({
19
- spaceId: Type.SpaceId,
20
- name: Schema.optional(Schema.String),
21
- }),
22
- output: Schema.Struct({
23
- object: ChannelType,
24
- }),
25
- }) {}
26
-
27
- export class CreateChannelThread extends Schema.TaggedClass<CreateChannelThread>()(
28
- `${THREAD_ACTION}/create-channel-thread`,
29
- {
30
- input: Schema.Struct({
31
- channel: ChannelType,
32
- }),
33
- output: Schema.Struct({
34
- object: ThreadType,
35
- }),
36
- },
37
- ) {}
38
-
39
- export class Create extends Schema.TaggedClass<Create>()(`${THREAD_ACTION}/create`, {
40
- input: Schema.Struct({
41
- name: Schema.optional(Schema.String),
42
- anchor: Schema.optional(Schema.String),
43
- subject: EchoObjectSchema,
44
- }),
45
- output: Schema.Void,
46
- }) {}
47
-
48
- export class Delete extends Schema.TaggedClass<Delete>()(`${THREAD_ACTION}/delete`, {
49
- input: Schema.Struct({
50
- anchor: AnchoredTo,
51
- subject: EchoObjectSchema,
52
- thread: Schema.optional(ThreadType),
53
- }),
54
- output: Schema.Void,
55
- }) {}
56
-
57
- export class Select extends Schema.TaggedClass<Select>()(`${THREAD_ACTION}/select`, {
58
- input: Schema.Struct({
59
- current: Schema.String,
60
- }),
61
- output: Schema.Void,
62
- }) {}
63
-
64
- export class ToggleResolved extends Schema.TaggedClass<ToggleResolved>()(`${THREAD_ACTION}/toggle-resolved`, {
65
- input: Schema.Struct({
66
- thread: ThreadType,
67
- }),
68
- output: Schema.Void,
69
- }) {}
70
-
71
- export class AddMessage extends Schema.TaggedClass<AddMessage>()(`${THREAD_ACTION}/add-message`, {
72
- input: Schema.Struct({
73
- subject: EchoObjectSchema,
74
- anchor: AnchoredTo,
75
- sender: DataType.Actor,
76
- text: Schema.String,
77
- }),
78
- output: Schema.Void,
79
- }) {}
80
-
81
- export class DeleteMessage extends Schema.TaggedClass<DeleteMessage>()(`${THREAD_ACTION}/delete-message`, {
82
- input: Schema.Struct({
83
- anchor: AnchoredTo,
84
- subject: EchoObjectSchema,
85
- messageId: Schema.String,
86
- message: Schema.optional(DataType.Message),
87
- messageIndex: Schema.optional(Schema.Number),
88
- }),
89
- output: Schema.Void,
90
- }) {}
91
- }
92
-
93
- export const ThreadSettingsSchema = Schema.mutable(Schema.Struct({}));
94
- export type ThreadSettingsProps = Schema.Schema.Type<typeof ThreadSettingsSchema>;
5
+ import { AnchoredTo, Thread } from '@dxos/types';
95
6
 
96
7
  export interface ThreadModel {
97
- root: ThreadType;
8
+ root: Thread.Thread;
98
9
  }
99
10
 
100
11
  type SubjectId = string;
@@ -105,6 +16,7 @@ export type ThreadState = {
105
16
  /** Object toolbar state. */
106
17
  toolbar: Record<string, boolean>;
107
18
  /** In-memory draft threads. */
108
- drafts: Record<string, AnchoredTo[]>;
19
+ // TODO(burdon): Drafts are getting lost.
20
+ drafts: Record<string, AnchoredTo.AnchoredTo[]>;
109
21
  current?: string | undefined;
110
22
  };
@@ -22,7 +22,23 @@ declare module '@peermetrics/webrtc-stats' {
22
22
  connectionId: string;
23
23
  }
24
24
 
25
- export class WebRTCStats extends EventEmitter {
25
+ type TrackStats = {
26
+ id: string;
27
+ kind: 'audio' | 'video';
28
+ codecId: string;
29
+ mid: string;
30
+ bytesSent: number;
31
+ bytesReceived: number;
32
+ };
33
+
34
+ export type WebRTCStatsEvent = {
35
+ data: {
36
+ audio: { inbound: TrackStats[]; outbound: TrackStats[] };
37
+ video: { inbound: TrackStats[]; outbound: TrackStats[] };
38
+ };
39
+ };
40
+
41
+ export class WebRTCStats extends EventEmitter<{ stats: WebRTCStatsEvent }> {
26
42
  constructor(options: WebRTCStatsConstructorOptions);
27
43
  addConnection(info: ConnectionInfo): void;
28
44
  removeConnection(info: Pick<ConnectionInfo, 'pc'>): void;
@@ -0,0 +1,8 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ declare module '*.mp4?raw' {
6
+ const content: string;
7
+ export default content;
8
+ }
package/src/util.ts CHANGED
@@ -2,25 +2,57 @@
2
2
  // Copyright 2024 DXOS.org
3
3
  //
4
4
 
5
- import { Match } from 'effect';
5
+ import * as Match from 'effect/Match';
6
6
 
7
7
  import { generateName } from '@dxos/display-name';
8
- import { type Selection } from '@dxos/plugin-attention';
9
8
  import { type PublicKey } from '@dxos/react-client';
10
9
  import { type Identity } from '@dxos/react-client/halo';
10
+ import { type Selection } from '@dxos/react-ui-attention';
11
11
  import { type MessageMetadata } from '@dxos/react-ui-thread';
12
- import { hexToFallback } from '@dxos/util';
12
+ import { hexToFallback, toFallback } from '@dxos/util';
13
13
 
14
14
  export type MessagePropertiesProvider = (identityKey: PublicKey | undefined) => MessageMetadata;
15
15
 
16
- export const getMessageMetadata = (id: string, identity?: Identity): MessageMetadata => {
17
- const fallback = hexToFallback(identity?.identityKey.toHex() ?? '0');
16
+ /**
17
+ * Stable hash for an arbitrary string — used as the avatar-fallback seed for
18
+ * external senders who have no DXOS identity (e.g. Slack/Discord-synced
19
+ * messages). djb2-ish, only stability matters.
20
+ *
21
+ * Coerced to unsigned 32-bit via `>>> 0` because `toFallback` does a plain
22
+ * modulo against `idEmoji.length * idHue.length` and JavaScript's `%`
23
+ * preserves the sign of the dividend — a negative hash would index
24
+ * `idEmoji[-x]` and `idHue[-x]` to `undefined`, causing the avatar to fall
25
+ * through to `Avatar.Content`'s default red/ghost.
26
+ */
27
+ const hashString = (s: string): number => {
28
+ let h = 0;
29
+ for (let i = 0; i < s.length; i++) {
30
+ h = (h * 31 + s.charCodeAt(i)) | 0;
31
+ }
32
+ return h >>> 0;
33
+ };
34
+
35
+ export const getMessageMetadata = (
36
+ id: string,
37
+ identity?: Identity,
38
+ /**
39
+ * Externally-sourced sender info (Slack/Discord/etc). Used only when no
40
+ * matching DXOS `identity` is available — provides `name`/`email` for the
41
+ * author label and a stable seed for the avatar fallback.
42
+ */
43
+ fallbackSender?: { name?: string; email?: string },
44
+ ): MessageMetadata => {
45
+ const fallback = identity?.identityKey
46
+ ? hexToFallback(identity.identityKey.toHex())
47
+ : toFallback(hashString(fallbackSender?.name ?? fallbackSender?.email ?? '0'));
18
48
  return {
19
49
  id,
20
50
  authorId: identity?.did,
21
51
  authorName:
22
52
  identity?.profile?.displayName ??
23
- (identity?.identityKey ? generateName(identity.identityKey.toHex()) : undefined),
53
+ (identity?.identityKey ? generateName(identity.identityKey.toHex()) : undefined) ??
54
+ fallbackSender?.name ??
55
+ fallbackSender?.email,
24
56
  authorAvatarProps: {
25
57
  hue: identity?.profile?.data?.hue ?? fallback.hue,
26
58
  emoji: identity?.profile?.data?.emoji ?? fallback.emoji,
@@ -1,15 +0,0 @@
1
- import {
2
- ChannelContainer,
3
- ChannelContainer_default
4
- } from "./chunk-XZKBN3NS.mjs";
5
- import "./chunk-6NBVNXTM.mjs";
6
- import "./chunk-R5MDLUPC.mjs";
7
- import "./chunk-TAFSCSUR.mjs";
8
- import "./chunk-5P5BH5GE.mjs";
9
- import "./chunk-JKQUJOTX.mjs";
10
- import "./chunk-IIUTBDVB.mjs";
11
- export {
12
- ChannelContainer,
13
- ChannelContainer_default as default
14
- };
15
- //# sourceMappingURL=ChannelContainer-PKFBVENP.mjs.map
@@ -1,14 +0,0 @@
1
- import {
2
- ChatContainer,
3
- ChatContainer_default,
4
- ChatHeading
5
- } from "./chunk-TAFSCSUR.mjs";
6
- import "./chunk-5P5BH5GE.mjs";
7
- import "./chunk-JKQUJOTX.mjs";
8
- import "./chunk-IIUTBDVB.mjs";
9
- export {
10
- ChatContainer,
11
- ChatHeading,
12
- ChatContainer_default as default
13
- };
14
- //# sourceMappingURL=ChatContainer-RSOKYAMK.mjs.map