@dxos/plugin-thread 0.8.4-main.ae835ea → 0.8.4-main.bcb3aa67d6

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 (456) hide show
  1. package/dist/lib/browser/add-message-RNUQFJTH.mjs +97 -0
  2. package/dist/lib/browser/add-message-RNUQFJTH.mjs.map +7 -0
  3. package/dist/lib/browser/blueprints/index.mjs +37 -0
  4. package/dist/lib/browser/blueprints/index.mjs.map +7 -0
  5. package/dist/lib/browser/chunk-BHQ62SKT.mjs +259 -0
  6. package/dist/lib/browser/chunk-BHQ62SKT.mjs.map +7 -0
  7. package/dist/lib/browser/chunk-H32XEGIV.mjs +61 -0
  8. package/dist/lib/browser/chunk-H32XEGIV.mjs.map +7 -0
  9. package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
  10. package/dist/lib/browser/create-UWYTS35R.mjs +55 -0
  11. package/dist/lib/browser/create-UWYTS35R.mjs.map +7 -0
  12. package/dist/lib/browser/create-channel-7RX3G7QV.mjs +21 -0
  13. package/dist/lib/browser/create-channel-7RX3G7QV.mjs.map +7 -0
  14. package/dist/lib/browser/create-channel-thread-ZA7IVGTL.mjs +28 -0
  15. package/dist/lib/browser/create-channel-thread-ZA7IVGTL.mjs.map +7 -0
  16. package/dist/lib/browser/create-proposals-74FZ3XTC.mjs +57 -0
  17. package/dist/lib/browser/create-proposals-74FZ3XTC.mjs.map +7 -0
  18. package/dist/lib/browser/delete-SJBDYXW3.mjs +59 -0
  19. package/dist/lib/browser/delete-SJBDYXW3.mjs.map +7 -0
  20. package/dist/lib/browser/delete-message-AHSDDYXK.mjs +64 -0
  21. package/dist/lib/browser/delete-message-AHSDDYXK.mjs.map +7 -0
  22. package/dist/lib/browser/index.mjs +2250 -229
  23. package/dist/lib/browser/index.mjs.map +4 -4
  24. package/dist/lib/browser/meta.json +1 -1
  25. package/dist/lib/browser/on-create-space-YNZHJSZ5.mjs +25 -0
  26. package/dist/lib/browser/on-create-space-YNZHJSZ5.mjs.map +7 -0
  27. package/dist/lib/browser/operations/index.mjs +14 -0
  28. package/dist/lib/browser/operations/index.mjs.map +7 -0
  29. package/dist/lib/browser/restore-X2K3ZKFD.mjs +33 -0
  30. package/dist/lib/browser/restore-X2K3ZKFD.mjs.map +7 -0
  31. package/dist/lib/browser/restore-message-EHSQSLM3.mjs +42 -0
  32. package/dist/lib/browser/restore-message-EHSQSLM3.mjs.map +7 -0
  33. package/dist/lib/browser/select-GKW3QALS.mjs +26 -0
  34. package/dist/lib/browser/select-GKW3QALS.mjs.map +7 -0
  35. package/dist/lib/browser/toggle-resolved-Y5KJLQO3.mjs +45 -0
  36. package/dist/lib/browser/toggle-resolved-Y5KJLQO3.mjs.map +7 -0
  37. package/dist/lib/browser/types/index.mjs +6 -8
  38. package/dist/lib/node-esm/add-message-R3XLXRZ5.mjs +98 -0
  39. package/dist/lib/node-esm/add-message-R3XLXRZ5.mjs.map +7 -0
  40. package/dist/lib/node-esm/blueprints/index.mjs +38 -0
  41. package/dist/lib/node-esm/blueprints/index.mjs.map +7 -0
  42. package/dist/lib/node-esm/chunk-BAKHDRSB.mjs +260 -0
  43. package/dist/lib/node-esm/chunk-BAKHDRSB.mjs.map +7 -0
  44. package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
  45. package/dist/lib/node-esm/chunk-M6EZRL5B.mjs +62 -0
  46. package/dist/lib/node-esm/chunk-M6EZRL5B.mjs.map +7 -0
  47. package/dist/lib/node-esm/create-SKEKGLSD.mjs +56 -0
  48. package/dist/lib/node-esm/create-SKEKGLSD.mjs.map +7 -0
  49. package/dist/lib/node-esm/create-channel-4UICXKGI.mjs +22 -0
  50. package/dist/lib/node-esm/create-channel-4UICXKGI.mjs.map +7 -0
  51. package/dist/lib/node-esm/create-channel-thread-EWDR3J44.mjs +29 -0
  52. package/dist/lib/node-esm/create-channel-thread-EWDR3J44.mjs.map +7 -0
  53. package/dist/lib/node-esm/create-proposals-SASCDSNZ.mjs +58 -0
  54. package/dist/lib/node-esm/create-proposals-SASCDSNZ.mjs.map +7 -0
  55. package/dist/lib/node-esm/delete-IGQXPUHX.mjs +60 -0
  56. package/dist/lib/node-esm/delete-IGQXPUHX.mjs.map +7 -0
  57. package/dist/lib/node-esm/delete-message-IEJYQNZY.mjs +65 -0
  58. package/dist/lib/node-esm/delete-message-IEJYQNZY.mjs.map +7 -0
  59. package/dist/lib/node-esm/index.mjs +2250 -229
  60. package/dist/lib/node-esm/index.mjs.map +4 -4
  61. package/dist/lib/node-esm/meta.json +1 -1
  62. package/dist/lib/node-esm/on-create-space-UGALNIWK.mjs +26 -0
  63. package/dist/lib/node-esm/on-create-space-UGALNIWK.mjs.map +7 -0
  64. package/dist/lib/node-esm/operations/index.mjs +15 -0
  65. package/dist/lib/node-esm/operations/index.mjs.map +7 -0
  66. package/dist/lib/node-esm/restore-4EAMGSOF.mjs +34 -0
  67. package/dist/lib/node-esm/restore-4EAMGSOF.mjs.map +7 -0
  68. package/dist/lib/node-esm/restore-message-2Z6KR3RJ.mjs +43 -0
  69. package/dist/lib/node-esm/restore-message-2Z6KR3RJ.mjs.map +7 -0
  70. package/dist/lib/node-esm/select-MLVUUPYK.mjs +27 -0
  71. package/dist/lib/node-esm/select-MLVUUPYK.mjs.map +7 -0
  72. package/dist/lib/node-esm/toggle-resolved-Y2FRSWZ3.mjs +46 -0
  73. package/dist/lib/node-esm/toggle-resolved-Y2FRSWZ3.mjs.map +7 -0
  74. package/dist/lib/node-esm/types/index.mjs +6 -8
  75. package/dist/types/src/ThreadPlugin.d.ts +2 -1
  76. package/dist/types/src/ThreadPlugin.d.ts.map +1 -1
  77. package/dist/types/src/blueprints/index.d.ts +2 -0
  78. package/dist/types/src/blueprints/index.d.ts.map +1 -0
  79. package/dist/types/src/blueprints/thread-blueprint.d.ts +4 -0
  80. package/dist/types/src/blueprints/thread-blueprint.d.ts.map +1 -0
  81. package/dist/types/src/calls/call-manager.d.ts +40 -30
  82. package/dist/types/src/calls/call-manager.d.ts.map +1 -1
  83. package/dist/types/src/calls/call-swarm-synchronizer.d.ts +2 -2
  84. package/dist/types/src/calls/call-swarm-synchronizer.d.ts.map +1 -1
  85. package/dist/types/src/calls/media-manager.d.ts +1 -1
  86. package/dist/types/src/calls/media-manager.d.ts.map +1 -1
  87. package/dist/types/src/calls/util/calls-service.d.ts +1 -1
  88. package/dist/types/src/calls/util/calls-service.d.ts.map +1 -1
  89. package/dist/types/src/calls/util/task-scheduling.d.ts +2 -2
  90. package/dist/types/src/calls/util/task-scheduling.d.ts.map +1 -1
  91. package/dist/types/src/calls-service.stories.d.ts +2 -2
  92. package/dist/types/src/calls-service.stories.d.ts.map +1 -1
  93. package/dist/types/src/capabilities/app-graph-builder.d.ts +4 -2
  94. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  95. package/dist/types/src/capabilities/blueprint-definition.d.ts +6 -0
  96. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -0
  97. package/dist/types/src/capabilities/call-manager.d.ts +3 -2
  98. package/dist/types/src/capabilities/call-manager.d.ts.map +1 -1
  99. package/dist/types/src/capabilities/index.d.ts +13 -14
  100. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  101. package/dist/types/src/capabilities/markdown.d.ts +3 -2
  102. package/dist/types/src/capabilities/markdown.d.ts.map +1 -1
  103. package/dist/types/src/capabilities/operation-handler.d.ts +6 -0
  104. package/dist/types/src/capabilities/operation-handler.d.ts.map +1 -0
  105. package/dist/types/src/capabilities/react-root.d.ts +4 -2
  106. package/dist/types/src/capabilities/react-root.d.ts.map +1 -1
  107. package/dist/types/src/capabilities/react-surface.d.ts +3 -2
  108. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  109. package/dist/types/src/capabilities/settings.d.ts +4 -2
  110. package/dist/types/src/capabilities/settings.d.ts.map +1 -1
  111. package/dist/types/src/capabilities/state.d.ts +5 -5
  112. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  113. package/dist/types/src/capabilities/undo-mappings.d.ts +5 -0
  114. package/dist/types/src/capabilities/undo-mappings.d.ts.map +1 -0
  115. package/dist/types/src/components/Call/Call.d.ts.map +1 -1
  116. package/dist/types/src/components/Call/Toolbar.d.ts +1 -1
  117. package/dist/types/src/components/Call/Toolbar.d.ts.map +1 -1
  118. package/dist/types/src/components/CommentsPanel/CommentsPanel.d.ts +13 -0
  119. package/dist/types/src/components/CommentsPanel/CommentsPanel.d.ts.map +1 -0
  120. package/dist/types/src/components/CommentsPanel/CommentsPanel.stories.d.ts +160 -0
  121. package/dist/types/src/components/CommentsPanel/CommentsPanel.stories.d.ts.map +1 -0
  122. package/dist/types/src/components/CommentsPanel/CommentsThread.d.ts +14 -0
  123. package/dist/types/src/components/CommentsPanel/CommentsThread.d.ts.map +1 -0
  124. package/dist/types/src/components/CommentsPanel/index.d.ts +3 -0
  125. package/dist/types/src/components/CommentsPanel/index.d.ts.map +1 -0
  126. package/dist/types/src/components/Lobby/Lobby.d.ts.map +1 -1
  127. package/dist/types/src/components/Media/VideoObject.d.ts +1 -1
  128. package/dist/types/src/components/Media/VideoObject.stories.d.ts +1 -1
  129. package/dist/types/src/components/MessagePanel/MessagePanel.d.ts +15 -0
  130. package/dist/types/src/components/MessagePanel/MessagePanel.d.ts.map +1 -0
  131. package/dist/types/src/components/MessagePanel/index.d.ts +2 -0
  132. package/dist/types/src/components/MessagePanel/index.d.ts.map +1 -0
  133. package/dist/types/src/components/Participant/Participant.d.ts.map +1 -1
  134. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts +142 -140
  135. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts.map +1 -1
  136. package/dist/types/src/components/ResponsiveGrid/ResponsiveGridItem.d.ts.map +1 -1
  137. package/dist/types/src/components/ResponsiveGrid/{ResponsiveContainer.d.ts → ResponsivePanel.d.ts} +4 -4
  138. package/dist/types/src/components/ResponsiveGrid/ResponsivePanel.d.ts.map +1 -0
  139. package/dist/types/src/components/ResponsiveGrid/ResponsivePanel.stories.d.ts +164 -0
  140. package/dist/types/src/components/ResponsiveGrid/ResponsivePanel.stories.d.ts.map +1 -0
  141. package/dist/types/src/components/ResponsiveGrid/index.d.ts +1 -1
  142. package/dist/types/src/components/ResponsiveGrid/index.d.ts.map +1 -1
  143. package/dist/types/src/components/ThreadSettings/ThreadSettings.d.ts +6 -0
  144. package/dist/types/src/components/ThreadSettings/ThreadSettings.d.ts.map +1 -0
  145. package/dist/types/src/components/ThreadSettings/ThreadSettings.stories.d.ts +161 -0
  146. package/dist/types/src/components/ThreadSettings/ThreadSettings.stories.d.ts.map +1 -0
  147. package/dist/types/src/components/ThreadSettings/index.d.ts +3 -0
  148. package/dist/types/src/components/ThreadSettings/index.d.ts.map +1 -0
  149. package/dist/types/src/components/index.d.ts +4 -9
  150. package/dist/types/src/components/index.d.ts.map +1 -1
  151. package/dist/types/src/{components → containers/CallDebugPanel}/CallDebugPanel.d.ts +1 -1
  152. package/dist/types/src/containers/CallDebugPanel/CallDebugPanel.d.ts.map +1 -0
  153. package/dist/types/src/containers/CallDebugPanel/index.d.ts +3 -0
  154. package/dist/types/src/containers/CallDebugPanel/index.d.ts.map +1 -0
  155. package/dist/types/src/{components → containers/CallSidebar}/CallSidebar.d.ts +0 -1
  156. package/dist/types/src/containers/CallSidebar/CallSidebar.d.ts.map +1 -0
  157. package/dist/types/src/containers/CallSidebar/index.d.ts +3 -0
  158. package/dist/types/src/containers/CallSidebar/index.d.ts.map +1 -0
  159. package/dist/types/src/containers/ChannelContainer/ChannelContainer.d.ts +12 -0
  160. package/dist/types/src/containers/ChannelContainer/ChannelContainer.d.ts.map +1 -0
  161. package/dist/types/src/containers/ChannelContainer/ChannelContainer.stories.d.ts +162 -0
  162. package/dist/types/src/containers/ChannelContainer/ChannelContainer.stories.d.ts.map +1 -0
  163. package/dist/types/src/containers/ChannelContainer/index.d.ts +3 -0
  164. package/dist/types/src/containers/ChannelContainer/index.d.ts.map +1 -0
  165. package/dist/types/src/containers/ChatContainer/ChatContainer.d.ts +20 -0
  166. package/dist/types/src/containers/ChatContainer/ChatContainer.d.ts.map +1 -0
  167. package/dist/types/src/containers/ChatContainer/ChatContainer.stories.d.ts +162 -0
  168. package/dist/types/src/containers/ChatContainer/ChatContainer.stories.d.ts.map +1 -0
  169. package/dist/types/src/containers/ChatContainer/index.d.ts +4 -0
  170. package/dist/types/src/containers/ChatContainer/index.d.ts.map +1 -0
  171. package/dist/types/src/containers/ThreadCompanion/ThreadCompanion.d.ts +8 -0
  172. package/dist/types/src/containers/ThreadCompanion/ThreadCompanion.d.ts.map +1 -0
  173. package/dist/types/src/containers/ThreadCompanion/index.d.ts +3 -0
  174. package/dist/types/src/containers/ThreadCompanion/index.d.ts.map +1 -0
  175. package/dist/types/src/containers/index.d.ts +7 -0
  176. package/dist/types/src/containers/index.d.ts.map +1 -0
  177. package/dist/types/src/{components/command-extension.d.ts → extensions/command.d.ts} +1 -1
  178. package/dist/types/src/extensions/command.d.ts.map +1 -0
  179. package/dist/types/src/extensions/index.d.ts +1 -0
  180. package/dist/types/src/extensions/index.d.ts.map +1 -1
  181. package/dist/types/src/extensions/threads.d.ts +8 -3
  182. package/dist/types/src/extensions/threads.d.ts.map +1 -1
  183. package/dist/types/src/hooks/analytics.d.ts +2 -3
  184. package/dist/types/src/hooks/analytics.d.ts.map +1 -1
  185. package/dist/types/src/hooks/index.d.ts +2 -2
  186. package/dist/types/src/hooks/index.d.ts.map +1 -1
  187. package/dist/types/src/index.d.ts +1 -1
  188. package/dist/types/src/index.d.ts.map +1 -1
  189. package/dist/types/src/meta.d.ts +2 -2
  190. package/dist/types/src/meta.d.ts.map +1 -1
  191. package/dist/types/src/operations/add-message.d.ts +5 -0
  192. package/dist/types/src/operations/add-message.d.ts.map +1 -0
  193. package/dist/types/src/operations/create-channel-thread.d.ts +5 -0
  194. package/dist/types/src/operations/create-channel-thread.d.ts.map +1 -0
  195. package/dist/types/src/operations/create-channel.d.ts +5 -0
  196. package/dist/types/src/operations/create-channel.d.ts.map +1 -0
  197. package/dist/types/src/operations/create-proposals.d.ts +5 -0
  198. package/dist/types/src/operations/create-proposals.d.ts.map +1 -0
  199. package/dist/types/src/operations/create.d.ts +5 -0
  200. package/dist/types/src/operations/create.d.ts.map +1 -0
  201. package/dist/types/src/operations/definitions.d.ts +2789 -0
  202. package/dist/types/src/operations/definitions.d.ts.map +1 -0
  203. package/dist/types/src/operations/delete-message.d.ts +5 -0
  204. package/dist/types/src/operations/delete-message.d.ts.map +1 -0
  205. package/dist/types/src/operations/delete.d.ts +5 -0
  206. package/dist/types/src/operations/delete.d.ts.map +1 -0
  207. package/dist/types/src/operations/index.d.ts +4 -0
  208. package/dist/types/src/operations/index.d.ts.map +1 -0
  209. package/dist/types/src/operations/on-create-space.d.ts +5 -0
  210. package/dist/types/src/operations/on-create-space.d.ts.map +1 -0
  211. package/dist/types/src/operations/restore-message.d.ts +5 -0
  212. package/dist/types/src/operations/restore-message.d.ts.map +1 -0
  213. package/dist/types/src/operations/restore.d.ts +5 -0
  214. package/dist/types/src/operations/restore.d.ts.map +1 -0
  215. package/dist/types/src/operations/select.d.ts +5 -0
  216. package/dist/types/src/operations/select.d.ts.map +1 -0
  217. package/dist/types/src/operations/toggle-resolved.d.ts +5 -0
  218. package/dist/types/src/operations/toggle-resolved.d.ts.map +1 -0
  219. package/dist/types/src/{components/testing.d.ts → testing/data.d.ts} +2 -2
  220. package/dist/types/src/testing/data.d.ts.map +1 -0
  221. package/dist/types/src/testing/stories.d.ts +2 -1
  222. package/dist/types/src/testing/stories.d.ts.map +1 -1
  223. package/dist/types/src/translations.d.ts +140 -138
  224. package/dist/types/src/translations.d.ts.map +1 -1
  225. package/dist/types/src/types/Channel.d.ts +707 -12
  226. package/dist/types/src/types/Channel.d.ts.map +1 -1
  227. package/dist/types/src/types/Settings.d.ts +4 -0
  228. package/dist/types/src/types/Settings.d.ts.map +1 -0
  229. package/dist/types/src/types/capabilities.d.ts +23 -0
  230. package/dist/types/src/types/capabilities.d.ts.map +1 -0
  231. package/dist/types/src/types/index.d.ts +1 -1
  232. package/dist/types/src/types/index.d.ts.map +1 -1
  233. package/dist/types/src/types/types.d.ts +3 -443
  234. package/dist/types/src/types/types.d.ts.map +1 -1
  235. package/dist/types/tsconfig.tsbuildinfo +1 -1
  236. package/package.json +108 -65
  237. package/src/ThreadPlugin.tsx +78 -112
  238. package/src/blueprints/index.ts +5 -0
  239. package/src/blueprints/thread-blueprint.ts +37 -0
  240. package/src/calls/call-manager.ts +76 -52
  241. package/src/calls/call-swarm-synchronizer.ts +2 -2
  242. package/src/calls/media-manager.ts +10 -7
  243. package/src/calls/util/calls-service.ts +1 -1
  244. package/src/calls/util/stub-media-streams.ts +2 -2
  245. package/src/calls/util/task-scheduling.ts +4 -4
  246. package/src/calls-service.stories.tsx +8 -8
  247. package/src/capabilities/app-graph-builder.ts +171 -165
  248. package/src/capabilities/blueprint-definition.ts +17 -0
  249. package/src/capabilities/call-manager.ts +18 -12
  250. package/src/capabilities/index.ts +15 -12
  251. package/src/capabilities/markdown.ts +49 -37
  252. package/src/capabilities/operation-handler.ts +16 -0
  253. package/src/capabilities/react-root.tsx +12 -9
  254. package/src/capabilities/react-surface.tsx +83 -77
  255. package/src/capabilities/settings.ts +27 -12
  256. package/src/capabilities/state.ts +14 -18
  257. package/src/capabilities/undo-mappings.ts +46 -0
  258. package/src/components/Call/Call.tsx +10 -6
  259. package/src/components/Call/Toolbar.tsx +57 -40
  260. package/src/components/CommentsPanel/CommentsPanel.stories.tsx +94 -0
  261. package/src/components/{CommentsContainer.tsx → CommentsPanel/CommentsPanel.tsx} +19 -20
  262. package/src/components/{CommentsThreadContainer.tsx → CommentsPanel/CommentsThread.tsx} +43 -45
  263. package/src/components/CommentsPanel/index.ts +6 -0
  264. package/src/components/Lobby/Lobby.tsx +14 -12
  265. package/src/components/Media/AudioStream.tsx +2 -2
  266. package/src/components/Media/VideoObject.stories.tsx +6 -6
  267. package/src/components/Media/VideoObject.tsx +1 -1
  268. package/src/components/{MessageContainer.tsx → MessagePanel/MessagePanel.tsx} +71 -40
  269. package/src/components/MessagePanel/index.ts +5 -0
  270. package/src/components/Participant/Participant.tsx +32 -19
  271. package/src/components/ResponsiveGrid/ResponsiveGrid.stories.tsx +5 -5
  272. package/src/components/ResponsiveGrid/ResponsiveGrid.tsx +5 -5
  273. package/src/components/ResponsiveGrid/ResponsiveGridItem.tsx +12 -9
  274. package/src/components/ResponsiveGrid/{ResponsiveContainer.stories.tsx → ResponsivePanel.stories.tsx} +7 -7
  275. package/src/components/ResponsiveGrid/{ResponsiveContainer.tsx → ResponsivePanel.tsx} +5 -5
  276. package/src/components/ResponsiveGrid/index.ts +1 -1
  277. package/src/components/ThreadSettings/ThreadSettings.stories.tsx +32 -0
  278. package/src/components/ThreadSettings/ThreadSettings.tsx +20 -0
  279. package/src/components/ThreadSettings/index.ts +7 -0
  280. package/src/components/index.ts +5 -12
  281. package/src/{components → containers/CallDebugPanel}/CallDebugPanel.tsx +14 -16
  282. package/src/containers/CallDebugPanel/index.ts +7 -0
  283. package/src/containers/CallSidebar/CallSidebar.tsx +17 -0
  284. package/src/containers/CallSidebar/index.ts +7 -0
  285. package/src/containers/ChannelContainer/ChannelContainer.stories.tsx +59 -0
  286. package/src/{components → containers/ChannelContainer}/ChannelContainer.tsx +94 -76
  287. package/src/containers/ChannelContainer/index.ts +7 -0
  288. package/src/{components/Chat.stories.tsx → containers/ChatContainer/ChatContainer.stories.tsx} +21 -19
  289. package/src/containers/ChatContainer/ChatContainer.tsx +130 -0
  290. package/src/containers/ChatContainer/index.ts +8 -0
  291. package/src/containers/ThreadCompanion/ThreadCompanion.tsx +217 -0
  292. package/src/containers/ThreadCompanion/index.ts +7 -0
  293. package/src/containers/index.ts +11 -0
  294. package/src/{components/command-extension.ts → extensions/command.ts} +3 -3
  295. package/src/extensions/index.ts +1 -0
  296. package/src/extensions/threads.ts +83 -38
  297. package/src/hooks/analytics.ts +22 -21
  298. package/src/hooks/index.ts +3 -2
  299. package/src/index.ts +1 -1
  300. package/src/meta.ts +4 -4
  301. package/src/operations/add-message.ts +82 -0
  302. package/src/operations/create-channel-thread.ts +26 -0
  303. package/src/operations/create-channel.ts +21 -0
  304. package/src/operations/create-proposals.ts +49 -0
  305. package/src/operations/create.ts +49 -0
  306. package/src/operations/definitions.ts +177 -0
  307. package/src/operations/delete-message.ts +53 -0
  308. package/src/operations/delete.ts +64 -0
  309. package/src/operations/index.ts +22 -0
  310. package/src/operations/on-create-space.ts +27 -0
  311. package/src/operations/restore-message.ts +38 -0
  312. package/src/operations/restore.ts +38 -0
  313. package/src/operations/select.ts +25 -0
  314. package/src/operations/toggle-resolved.ts +41 -0
  315. package/src/{components/testing.ts → testing/data.ts} +3 -5
  316. package/src/testing/stories.ts +16 -17
  317. package/src/translations.ts +72 -74
  318. package/src/types/Channel.ts +21 -11
  319. package/src/types/Settings.ts +10 -0
  320. package/src/types/capabilities.ts +35 -0
  321. package/src/types/index.ts +1 -1
  322. package/src/types/types.ts +4 -108
  323. package/src/util.ts +1 -1
  324. package/dist/lib/browser/ChannelContainer-SVV4ZX5T.mjs +0 -16
  325. package/dist/lib/browser/ChatContainer-ALFWQ65B.mjs +0 -15
  326. package/dist/lib/browser/app-graph-builder-ACBXRBOS.mjs +0 -171
  327. package/dist/lib/browser/app-graph-builder-ACBXRBOS.mjs.map +0 -7
  328. package/dist/lib/browser/call-manager-P3MYR2JS.mjs +0 -24
  329. package/dist/lib/browser/call-manager-P3MYR2JS.mjs.map +0 -7
  330. package/dist/lib/browser/chunk-6CUDBEYP.mjs +0 -377
  331. package/dist/lib/browser/chunk-6CUDBEYP.mjs.map +0 -7
  332. package/dist/lib/browser/chunk-BBTXGRIR.mjs +0 -18
  333. package/dist/lib/browser/chunk-BBTXGRIR.mjs.map +0 -7
  334. package/dist/lib/browser/chunk-CP7E2HRE.mjs +0 -31
  335. package/dist/lib/browser/chunk-CP7E2HRE.mjs.map +0 -7
  336. package/dist/lib/browser/chunk-DJOUMWEL.mjs +0 -988
  337. package/dist/lib/browser/chunk-DJOUMWEL.mjs.map +0 -7
  338. package/dist/lib/browser/chunk-HDEQRBOC.mjs +0 -181
  339. package/dist/lib/browser/chunk-HDEQRBOC.mjs.map +0 -7
  340. package/dist/lib/browser/chunk-IQSXEHOW.mjs +0 -618
  341. package/dist/lib/browser/chunk-IQSXEHOW.mjs.map +0 -7
  342. package/dist/lib/browser/chunk-K2DUJRFJ.mjs +0 -27
  343. package/dist/lib/browser/chunk-K2DUJRFJ.mjs.map +0 -7
  344. package/dist/lib/browser/chunk-L6F2AG6W.mjs +0 -23
  345. package/dist/lib/browser/chunk-L6F2AG6W.mjs.map +0 -7
  346. package/dist/lib/browser/chunk-US5ZQYC3.mjs +0 -1793
  347. package/dist/lib/browser/chunk-US5ZQYC3.mjs.map +0 -7
  348. package/dist/lib/browser/chunk-UTSLSZED.mjs +0 -178
  349. package/dist/lib/browser/chunk-UTSLSZED.mjs.map +0 -7
  350. package/dist/lib/browser/chunk-XYUJXHYV.mjs +0 -106
  351. package/dist/lib/browser/chunk-XYUJXHYV.mjs.map +0 -7
  352. package/dist/lib/browser/intent-resolver-5POQTZ24.mjs +0 -419
  353. package/dist/lib/browser/intent-resolver-5POQTZ24.mjs.map +0 -7
  354. package/dist/lib/browser/markdown-L7LDNF56.mjs +0 -169
  355. package/dist/lib/browser/markdown-L7LDNF56.mjs.map +0 -7
  356. package/dist/lib/browser/react-root-RCJLK4EP.mjs +0 -28
  357. package/dist/lib/browser/react-root-RCJLK4EP.mjs.map +0 -7
  358. package/dist/lib/browser/react-surface-IC576W2W.mjs +0 -109
  359. package/dist/lib/browser/react-surface-IC576W2W.mjs.map +0 -7
  360. package/dist/lib/browser/settings-5FYGBOGI.mjs +0 -22
  361. package/dist/lib/browser/settings-5FYGBOGI.mjs.map +0 -7
  362. package/dist/lib/browser/state-36REWXO5.mjs +0 -34
  363. package/dist/lib/browser/state-36REWXO5.mjs.map +0 -7
  364. package/dist/lib/browser/toolkit-PXASLYEQ.mjs +0 -74
  365. package/dist/lib/browser/toolkit-PXASLYEQ.mjs.map +0 -7
  366. package/dist/lib/node-esm/ChannelContainer-63GMQ753.mjs +0 -17
  367. package/dist/lib/node-esm/ChannelContainer-63GMQ753.mjs.map +0 -7
  368. package/dist/lib/node-esm/ChatContainer-MFKPXMIK.mjs +0 -16
  369. package/dist/lib/node-esm/ChatContainer-MFKPXMIK.mjs.map +0 -7
  370. package/dist/lib/node-esm/app-graph-builder-JXD7KY3G.mjs +0 -172
  371. package/dist/lib/node-esm/app-graph-builder-JXD7KY3G.mjs.map +0 -7
  372. package/dist/lib/node-esm/call-manager-FCEFP7EJ.mjs +0 -25
  373. package/dist/lib/node-esm/call-manager-FCEFP7EJ.mjs.map +0 -7
  374. package/dist/lib/node-esm/chunk-2MMJF7DW.mjs +0 -182
  375. package/dist/lib/node-esm/chunk-2MMJF7DW.mjs.map +0 -7
  376. package/dist/lib/node-esm/chunk-2V3WSLUZ.mjs +0 -108
  377. package/dist/lib/node-esm/chunk-2V3WSLUZ.mjs.map +0 -7
  378. package/dist/lib/node-esm/chunk-ABUFOZVX.mjs +0 -33
  379. package/dist/lib/node-esm/chunk-ABUFOZVX.mjs.map +0 -7
  380. package/dist/lib/node-esm/chunk-AFDO2SUZ.mjs +0 -25
  381. package/dist/lib/node-esm/chunk-AFDO2SUZ.mjs.map +0 -7
  382. package/dist/lib/node-esm/chunk-KGYDYYKJ.mjs +0 -1794
  383. package/dist/lib/node-esm/chunk-KGYDYYKJ.mjs.map +0 -7
  384. package/dist/lib/node-esm/chunk-NWUUMKVQ.mjs +0 -378
  385. package/dist/lib/node-esm/chunk-NWUUMKVQ.mjs.map +0 -7
  386. package/dist/lib/node-esm/chunk-Q7AKKZNY.mjs +0 -619
  387. package/dist/lib/node-esm/chunk-Q7AKKZNY.mjs.map +0 -7
  388. package/dist/lib/node-esm/chunk-QCQAAU6J.mjs +0 -989
  389. package/dist/lib/node-esm/chunk-QCQAAU6J.mjs.map +0 -7
  390. package/dist/lib/node-esm/chunk-TYLLHI46.mjs +0 -179
  391. package/dist/lib/node-esm/chunk-TYLLHI46.mjs.map +0 -7
  392. package/dist/lib/node-esm/chunk-XI45H4IV.mjs +0 -28
  393. package/dist/lib/node-esm/chunk-XI45H4IV.mjs.map +0 -7
  394. package/dist/lib/node-esm/chunk-ZQAGII7M.mjs +0 -19
  395. package/dist/lib/node-esm/chunk-ZQAGII7M.mjs.map +0 -7
  396. package/dist/lib/node-esm/intent-resolver-63NV3XD2.mjs +0 -420
  397. package/dist/lib/node-esm/intent-resolver-63NV3XD2.mjs.map +0 -7
  398. package/dist/lib/node-esm/markdown-ZQW7MI5U.mjs +0 -170
  399. package/dist/lib/node-esm/markdown-ZQW7MI5U.mjs.map +0 -7
  400. package/dist/lib/node-esm/react-root-4IDB2SN2.mjs +0 -29
  401. package/dist/lib/node-esm/react-root-4IDB2SN2.mjs.map +0 -7
  402. package/dist/lib/node-esm/react-surface-O4LGTAZ3.mjs +0 -110
  403. package/dist/lib/node-esm/react-surface-O4LGTAZ3.mjs.map +0 -7
  404. package/dist/lib/node-esm/settings-EOBQUZSW.mjs +0 -23
  405. package/dist/lib/node-esm/settings-EOBQUZSW.mjs.map +0 -7
  406. package/dist/lib/node-esm/state-X3W67GTL.mjs +0 -35
  407. package/dist/lib/node-esm/state-X3W67GTL.mjs.map +0 -7
  408. package/dist/lib/node-esm/toolkit-X2KA4FNC.mjs +0 -75
  409. package/dist/lib/node-esm/toolkit-X2KA4FNC.mjs.map +0 -7
  410. package/dist/types/src/capabilities/capabilities.d.ts +0 -27
  411. package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
  412. package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
  413. package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
  414. package/dist/types/src/capabilities/toolkit.d.ts +0 -24
  415. package/dist/types/src/capabilities/toolkit.d.ts.map +0 -1
  416. package/dist/types/src/components/CallDebugPanel.d.ts.map +0 -1
  417. package/dist/types/src/components/CallSidebar.d.ts.map +0 -1
  418. package/dist/types/src/components/ChannelContainer.d.ts +0 -14
  419. package/dist/types/src/components/ChannelContainer.d.ts.map +0 -1
  420. package/dist/types/src/components/ChannelContainer.stories.d.ts +0 -160
  421. package/dist/types/src/components/ChannelContainer.stories.d.ts.map +0 -1
  422. package/dist/types/src/components/Chat.stories.d.ts +0 -160
  423. package/dist/types/src/components/Chat.stories.d.ts.map +0 -1
  424. package/dist/types/src/components/ChatContainer.d.ts +0 -18
  425. package/dist/types/src/components/ChatContainer.d.ts.map +0 -1
  426. package/dist/types/src/components/Comments.stories.d.ts +0 -158
  427. package/dist/types/src/components/Comments.stories.d.ts.map +0 -1
  428. package/dist/types/src/components/CommentsContainer.d.ts +0 -13
  429. package/dist/types/src/components/CommentsContainer.d.ts.map +0 -1
  430. package/dist/types/src/components/CommentsThreadContainer.d.ts +0 -14
  431. package/dist/types/src/components/CommentsThreadContainer.d.ts.map +0 -1
  432. package/dist/types/src/components/MessageContainer.d.ts +0 -14
  433. package/dist/types/src/components/MessageContainer.d.ts.map +0 -1
  434. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.d.ts.map +0 -1
  435. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts +0 -162
  436. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts.map +0 -1
  437. package/dist/types/src/components/ThreadComplementary.d.ts +0 -5
  438. package/dist/types/src/components/ThreadComplementary.d.ts.map +0 -1
  439. package/dist/types/src/components/ThreadSettings.d.ts +0 -6
  440. package/dist/types/src/components/ThreadSettings.d.ts.map +0 -1
  441. package/dist/types/src/components/command-extension.d.ts.map +0 -1
  442. package/dist/types/src/components/testing.d.ts.map +0 -1
  443. package/dist/types/src/types/Thread.d.ts +0 -167
  444. package/dist/types/src/types/Thread.d.ts.map +0 -1
  445. package/src/capabilities/capabilities.ts +0 -33
  446. package/src/capabilities/intent-resolver.ts +0 -344
  447. package/src/capabilities/toolkit.ts +0 -85
  448. package/src/components/CallSidebar.tsx +0 -18
  449. package/src/components/ChannelContainer.stories.tsx +0 -59
  450. package/src/components/ChatContainer.tsx +0 -154
  451. package/src/components/Comments.stories.tsx +0 -91
  452. package/src/components/ThreadComplementary.tsx +0 -181
  453. package/src/components/ThreadSettings.tsx +0 -16
  454. package/src/types/Thread.ts +0 -26
  455. /package/dist/lib/browser/{ChannelContainer-SVV4ZX5T.mjs.map → chunk-J5LGTIGS.mjs.map} +0 -0
  456. /package/dist/lib/{browser/ChatContainer-ALFWQ65B.mjs.map → node-esm/chunk-HSLMI22Q.mjs.map} +0 -0
@@ -2,13 +2,12 @@
2
2
  // Copyright 2025 DXOS.org
3
3
  //
4
4
 
5
- import { computed } from '@preact/signals-core';
5
+ import { Atom, type Registry } from '@effect-atom/atom-react';
6
6
 
7
7
  import { Event, synchronized } from '@dxos/async';
8
8
  import { type Client } from '@dxos/client';
9
9
  import { Resource } from '@dxos/context';
10
10
  import { invariant } from '@dxos/invariant';
11
- import { live } from '@dxos/live-object';
12
11
  import { type Tracks } from '@dxos/protocols/proto/dxos/edge/calls';
13
12
  import { isNonNullable } from '@dxos/util';
14
13
 
@@ -31,84 +30,103 @@ export class CallManager extends Resource {
31
30
  public readonly left = new Event<string>();
32
31
 
33
32
  /**
34
- * Live object state. Is changed on internal events.
33
+ * Atom-based state. Updated via `_updateState()`.
35
34
  * CAUTION: Do not change directly.
36
35
  */
37
- private readonly _state = live<GlobalState>({
36
+ private readonly _stateAtom = Atom.make<GlobalState>({
38
37
  call: {},
39
38
  media: { pulledAudioTracks: {}, pulledVideoStreams: {} },
40
39
  });
41
40
 
42
- // TODO(wittjosiah): This shouldn't be necessary, live-object's signals should be granular.
43
- private readonly _raisedHandSignal = computed(() => this._state.call.raisedHand ?? false);
44
- private readonly _speakingSignal = computed(() => this._state.call.speaking ?? false);
45
- private readonly _joinedSignal = computed(() => this._state.call.joined ?? false);
41
+ // Derived atoms for reactive subscriptions.
42
+ private readonly _roomIdAtom = Atom.make((get) => get(this._stateAtom).call.roomId);
43
+ private readonly _raisedHandAtom = Atom.make((get) => get(this._stateAtom).call.raisedHand ?? false);
44
+ private readonly _speakingAtom = Atom.make((get) => get(this._stateAtom).call.speaking ?? false);
45
+ private readonly _joinedAtom = Atom.make((get) => get(this._stateAtom).call.joined ?? false);
46
+ private readonly _selfAtom = Atom.make((get) => get(this._stateAtom).call.self ?? {});
47
+ private readonly _tracksAtom = Atom.make((get) => get(this._stateAtom).call.tracks ?? {});
48
+ private readonly _usersAtom = Atom.make((get) => get(this._stateAtom).call.users ?? []);
49
+ private readonly _mediaAtom = Atom.make((get) => get(this._stateAtom).media);
50
+ private readonly _audioTracksToPlayAtom = Atom.make((get) => {
51
+ const state = get(this._stateAtom);
52
+ return (state.call.users ?? [])
53
+ .map((user: UserState) => (user.tracks?.audioEnabled ? user.tracks?.audio : undefined))
54
+ .filter(isNonNullable)
55
+ .map((track: string) => state.media.pulledAudioTracks[track as EncodedTrackName]?.track)
56
+ .filter(isNonNullable);
57
+ });
58
+ private readonly _videoStreamAtomFamily = Atom.family<EncodedTrackName, Atom.Atom<MediaStream | undefined>>((name) =>
59
+ Atom.make((get) => get(this._stateAtom).media.pulledVideoStreams[name]?.stream),
60
+ );
61
+ private readonly _activityAtomFamily = Atom.family<string, Atom.Atom<ActivityState | undefined>>((key) =>
62
+ Atom.make((get) => get(this._stateAtom).call.activities?.[key]),
63
+ );
46
64
 
47
65
  private readonly _swarmSynchronizer: CallSwarmSynchronizer;
48
66
  private readonly _mediaManager: MediaManager;
49
67
 
50
- /** @reactive */
51
- get roomId(): string | undefined {
52
- return this._state.call.roomId;
68
+ //
69
+ // Derived atoms for reactive UI subscriptions.
70
+ //
71
+
72
+ /** Derived atom for roomId. */
73
+ get roomIdAtom(): Atom.Atom<string | undefined> {
74
+ return this._roomIdAtom;
53
75
  }
54
76
 
55
- /** @reactive */
56
- get raisedHand(): boolean {
57
- return this._raisedHandSignal.value;
77
+ /** Derived atom for raisedHand. */
78
+ get raisedHandAtom(): Atom.Atom<boolean> {
79
+ return this._raisedHandAtom;
58
80
  }
59
81
 
60
- /** @reactive */
61
- get speaking(): boolean {
62
- return this._speakingSignal.value;
82
+ /** Derived atom for speaking. */
83
+ get speakingAtom(): Atom.Atom<boolean> {
84
+ return this._speakingAtom;
63
85
  }
64
86
 
65
- /** @reactive */
66
- get joined(): boolean {
67
- return this._joinedSignal.value;
87
+ /** Derived atom for joined. */
88
+ get joinedAtom(): Atom.Atom<boolean> {
89
+ return this._joinedAtom;
68
90
  }
69
91
 
70
- /** @reactive */
71
- get self(): UserState {
72
- return this._state.call.self ?? {};
92
+ /** Derived atom for self. */
93
+ get selfAtom(): Atom.Atom<UserState> {
94
+ return this._selfAtom;
73
95
  }
74
96
 
75
- /** @reactive */
76
- get tracks(): Tracks {
77
- return this._state.call.tracks ?? {};
97
+ /** Derived atom for tracks. */
98
+ get tracksAtom(): Atom.Atom<Tracks> {
99
+ return this._tracksAtom;
78
100
  }
79
101
 
80
- /** @reactive */
81
- get users(): UserState[] {
82
- return this._state.call.users ?? [];
102
+ /** Derived atom for users. */
103
+ get usersAtom(): Atom.Atom<UserState[]> {
104
+ return this._usersAtom;
83
105
  }
84
106
 
85
- /** @reactive */
86
- get media() {
87
- return this._state.media;
107
+ /** Derived atom for media. */
108
+ get mediaAtom(): Atom.Atom<MediaState> {
109
+ return this._mediaAtom;
88
110
  }
89
111
 
90
- /** @reactive */
91
- get audioTracksToPlay(): MediaStreamTrack[] {
92
- return (this._state.call.users ?? [])
93
- .map((user) => (user.tracks?.audioEnabled ? user.tracks?.audio : undefined))
94
- .filter(isNonNullable)
95
- .map((track) => this._state.media.pulledAudioTracks[track as EncodedTrackName]?.track)
96
- .filter(isNonNullable);
112
+ /** Derived atom for audioTracksToPlay. */
113
+ get audioTracksToPlayAtom(): Atom.Atom<MediaStreamTrack[]> {
114
+ return this._audioTracksToPlayAtom;
97
115
  }
98
116
 
99
- /** @reactive */
100
- get state() {
101
- return this._state;
117
+ /** Returns the full state atom for reactive subscriptions. */
118
+ get stateAtom(): Atom.Atom<GlobalState> {
119
+ return this._stateAtom;
102
120
  }
103
121
 
104
- /** @reactive */
105
- getVideoStream(name?: EncodedTrackName): MediaStream | undefined {
106
- return name ? this._state.media.pulledVideoStreams[name]?.stream : undefined;
122
+ /** Returns a derived atom for a video stream by name. */
123
+ videoStreamAtom(name: EncodedTrackName): Atom.Atom<MediaStream | undefined> {
124
+ return this._videoStreamAtomFamily(name);
107
125
  }
108
126
 
109
- /** @reactive */
110
- getActivity(key: string): ActivityState | undefined {
111
- return this._state.call.activities?.[key];
127
+ /** Returns a derived atom for an activity by key. */
128
+ activityAtom(key: string): Atom.Atom<ActivityState | undefined> {
129
+ return this._activityAtomFamily(key);
112
130
  }
113
131
 
114
132
  setRoomId(roomId: string): void {
@@ -152,7 +170,10 @@ export class CallManager extends Resource {
152
170
  }
153
171
 
154
172
  // TODO(burdon): Can this be mocked?
155
- constructor(private readonly _client: Client) {
173
+ constructor(
174
+ private readonly _client: Client,
175
+ private readonly _registry: Registry.Registry,
176
+ ) {
156
177
  super();
157
178
  this._client.config.getOrThrow('runtime.services.edge.url');
158
179
  const networkService = this._client.services.services.NetworkService;
@@ -205,7 +226,8 @@ export class CallManager extends Resource {
205
226
  this._swarmSynchronizer.setJoined(false);
206
227
  await this._swarmSynchronizer.leave();
207
228
  await this._mediaManager.leave();
208
- this.roomId && this.left.emit(this.roomId);
229
+ const roomId = this._registry.get(this._roomIdAtom);
230
+ roomId && this.left.emit(roomId);
209
231
  }
210
232
 
211
233
  private _onCallStateUpdated(state: CallState): void {
@@ -240,7 +262,9 @@ export class CallManager extends Resource {
240
262
  * Only this method is allowed to change state.
241
263
  */
242
264
  private _updateState(): void {
243
- this._state.call = this._swarmSynchronizer._getState();
244
- this._state.media = this._mediaManager._getState();
265
+ this._registry.set(this._stateAtom, {
266
+ call: this._swarmSynchronizer._getState(),
267
+ media: this._mediaManager._getState(),
268
+ });
245
269
  }
246
270
  }
@@ -50,7 +50,7 @@ export type CallState = {
50
50
  tracks?: UserState['tracks'];
51
51
  };
52
52
 
53
- export type CallSwarmSynchronizerParams = { networkService: NetworkService };
53
+ export type CallSwarmSynchronizerProps = { networkService: NetworkService };
54
54
 
55
55
  /**
56
56
  * Period for peer to reconnect to the call swarm gracefully if connection was lost abruptly.
@@ -76,7 +76,7 @@ export class CallSwarmSynchronizer extends Resource {
76
76
 
77
77
  private _sendStateTask?: DeferredTask = undefined;
78
78
 
79
- constructor({ networkService }: CallSwarmSynchronizerParams) {
79
+ constructor({ networkService }: CallSwarmSynchronizerProps) {
80
80
  super();
81
81
  this._networkService = networkService;
82
82
  }
@@ -51,7 +51,7 @@ const MAX_WEB_CAM_FRAMERATE = 24;
51
51
  const MAX_WEB_CAM_BITRATE = 120_0000;
52
52
  const RETRY_INTERVAL = 100;
53
53
 
54
- export type MediaManagerParams = {
54
+ export type MediaManagerProps = {
55
55
  serviceConfig: CallsServiceConfig;
56
56
  };
57
57
 
@@ -59,9 +59,13 @@ const USE_INAUDIBLE_AUDIO = true;
59
59
 
60
60
  export class MediaManager extends Resource {
61
61
  public readonly stateUpdated = new Event<MediaState>();
62
- private readonly _state: MediaState = { pulledVideoStreams: {}, pulledAudioTracks: {} };
63
- private _speakingMonitor?: SpeakingMonitor = undefined;
64
62
 
63
+ private readonly _state: MediaState = {
64
+ pulledVideoStreams: {},
65
+ pulledAudioTracks: {},
66
+ };
67
+
68
+ private _speakingMonitor?: SpeakingMonitor = undefined;
65
69
  private _trackToReconcile: EncodedTrackName[] = [];
66
70
  private _blackCanvasStreamTrack?: MediaStreamTrack = undefined;
67
71
  private _inaudibleAudioStreamTrack?: MediaStreamTrack = undefined;
@@ -85,6 +89,7 @@ export class MediaManager extends Resource {
85
89
  width: VIDEO_WIDTH,
86
90
  height: VIDEO_HEIGHT,
87
91
  });
92
+
88
93
  this._state.videoTrack = this._blackCanvasStreamTrack;
89
94
  this._state.videoStream = new MediaStream();
90
95
  this._state.videoStream.addTrack(this._state.videoTrack);
@@ -137,6 +142,7 @@ export class MediaManager extends Resource {
137
142
  this._state.videoStream!.removeTrack(this._state.videoTrack!);
138
143
  this._state.videoTrack = await getUserMediaTrack('videoinput', { width: VIDEO_WIDTH, height: VIDEO_HEIGHT });
139
144
  this._state.videoStream!.addTrack(this._state.videoTrack);
145
+
140
146
  this._state.videoEnabled = true;
141
147
  this.stateUpdated.emit(this._state);
142
148
  this._pushTracksTask!.schedule();
@@ -226,7 +232,6 @@ export class MediaManager extends Resource {
226
232
  // Wait for cloudflare to process the track.
227
233
  await cancelWithContext(this._ctx, sleep(800));
228
234
  const trackNames = this._trackToReconcile;
229
-
230
235
  const tracksToPull = trackNames.filter(
231
236
  (name) => !this._state.pulledAudioTracks[name] && !this._state.pulledVideoStreams[name],
232
237
  );
@@ -258,8 +263,8 @@ export class MediaManager extends Resource {
258
263
  currentAudioTracks: Object.keys(this._state.pulledAudioTracks),
259
264
  currentVideoStreams: Object.keys(this._state.pulledVideoStreams),
260
265
  });
261
- this.stateUpdated.emit(this._state);
262
266
 
267
+ this.stateUpdated.emit(this._state);
263
268
  if (pullResults.some(({ shouldRetry }) => shouldRetry)) {
264
269
  await cancelWithContext(this._ctx, sleep(RETRY_INTERVAL));
265
270
  log.info('retrying pull tracks', { tracksToPull });
@@ -296,7 +301,6 @@ export class MediaManager extends Resource {
296
301
  }
297
302
 
298
303
  const shouldRetry = pushVideoResult.shouldRetry || pushAudioResult.shouldRetry || pushScreenshareResult.shouldRetry;
299
-
300
304
  if (updated) {
301
305
  this.stateUpdated.emit(this._state);
302
306
  }
@@ -356,7 +360,6 @@ export class MediaManager extends Resource {
356
360
  }
357
361
 
358
362
  const ctx = this._ctx.derive();
359
-
360
363
  try {
361
364
  return {
362
365
  track: await this._state.peer!.pushTrack({
@@ -27,7 +27,7 @@ export type Session = {
27
27
 
28
28
  export type CallsServiceConfig = {
29
29
  apiBase: string;
30
- apiExtraParams?: string;
30
+ apiExtraProps?: string;
31
31
  iceServers?: RTCIceServer[];
32
32
  };
33
33
 
@@ -60,13 +60,12 @@ const userGestureEvents = [
60
60
  */
61
61
  export const createInaudibleAudioStreamTrack = async ({ ctx }: { ctx: Context }): Promise<MediaStreamTrack> => {
62
62
  const audioContext = new window.AudioContext();
63
+
63
64
  const oscillator = audioContext.createOscillator();
64
65
  oscillator.type = 'triangle';
65
- // roughly sounds like a box fan
66
66
  oscillator.frequency.setValueAtTime(20, audioContext.currentTime);
67
67
 
68
68
  const gainNode = audioContext.createGain();
69
- // even w/ gain at 0 some packets are sent
70
69
  gainNode.gain.setValueAtTime(0, audioContext.currentTime);
71
70
  oscillator.connect(gainNode);
72
71
 
@@ -85,6 +84,7 @@ export const createInaudibleAudioStreamTrack = async ({ ctx }: { ctx: Context })
85
84
  audioContextStartedPreviously = true;
86
85
  ensureOscillatorStarted();
87
86
  }
87
+
88
88
  if (audioContext.state === 'suspended' || (audioContext.state as string) === 'interrupted') {
89
89
  resumeAudioContext();
90
90
  }
@@ -27,8 +27,8 @@ export class FIFOScheduler {
27
27
  }
28
28
 
29
29
  // TODO(mykola): Reconcile with @dxos/async task scheduling.
30
- export class BulkRequestDispatcher<RequestEntryParams, BulkResponse> {
31
- #currentBatch: RequestEntryParams[];
30
+ export class BulkRequestDispatcher<RequestEntryProps, BulkResponse> {
31
+ #currentBatch: RequestEntryProps[];
32
32
  #currentBulkResponse: Promise<BulkResponse> | null;
33
33
  #batchSizeLimit: number;
34
34
 
@@ -43,8 +43,8 @@ export class BulkRequestDispatcher<RequestEntryParams, BulkResponse> {
43
43
  * At the event loop iteration end, the accumulated entries will be dispatched as a bulk request.
44
44
  */
45
45
  doBulkRequest(
46
- params: RequestEntryParams,
47
- bulkRequestFunc: (bulkCopy: RequestEntryParams[]) => Promise<BulkResponse>,
46
+ params: RequestEntryProps,
47
+ bulkRequestFunc: (bulkCopy: RequestEntryProps[]) => Promise<BulkResponse>,
48
48
  ): Promise<BulkResponse> {
49
49
  if (this.#currentBatch.length >= this.#batchSizeLimit) {
50
50
  // If it reaches the batch size limit, we make another bulk request.
@@ -18,7 +18,7 @@ import { Json } from '@dxos/react-ui-syntax-highlighter';
18
18
  const testVideo = new URL('../testing/video.mp4', import.meta.url).href;
19
19
 
20
20
  import { CALLS_URL, CallsServicePeer, type TrackObject } from './calls';
21
- import { useBlackCanvasStreamTrack, useInaudibleAudioStreamTrack, useVideoStreamTrack } from './hooks';
21
+ import { useBlackCanvasStreamTrack, useInaudibleAudioStreamTrack, useVideoStreamTrack } from '#hooks';
22
22
 
23
23
  // TODO(burdon): THIS IS TOO COMPLEX FOR A TEST SETUP.
24
24
  const pushAndPullTrack = (mediaStreamTrack?: MediaStreamTrack) => {
@@ -130,9 +130,9 @@ const pushAndPullTrack = (mediaStreamTrack?: MediaStreamTrack) => {
130
130
  };
131
131
  };
132
132
 
133
- type StoryProps = { source: string };
133
+ type DefaultStoryProps = { source: string };
134
134
 
135
- const DefaultStory = ({ source }: StoryProps) => {
135
+ const DefaultStory = ({ source }: DefaultStoryProps) => {
136
136
  const pushVideoElement = useRef<HTMLVideoElement>(null);
137
137
  const pullVideoElement = useRef<HTMLVideoElement>(null);
138
138
  // Get video stream track.
@@ -166,16 +166,16 @@ const DefaultStory = ({ source }: StoryProps) => {
166
166
  Re-pull video
167
167
  </Button>
168
168
  </div>
169
- <Json data={metrics} />
169
+ <Json.Data data={metrics} />
170
170
  </div>
171
171
  );
172
172
  };
173
173
 
174
174
  const meta = {
175
- title: 'plugins/plugin-thread/calls-service',
175
+ title: 'plugins/plugin-thread/experimental/Calls',
176
176
  render: DefaultStory,
177
177
  decorators: [
178
- withTheme,
178
+ withTheme(),
179
179
  withClientProvider({
180
180
  config: new Config({
181
181
  runtime: {
@@ -208,7 +208,7 @@ export const InaudibleAudioStreamTrack = {
208
208
 
209
209
  return (
210
210
  <div className='flex flex-col gap-4 items-center'>
211
- <Json data={metrics} />
211
+ <Json.Data data={metrics} />
212
212
  <Button onClick={rePullTrack}>Re-pull audio</Button>
213
213
  </div>
214
214
  );
@@ -221,7 +221,7 @@ export const BlackVideoStreamTrack = {
221
221
  const { rePullTrack, metrics } = pushAndPullTrack(videoStreamTrack);
222
222
  return (
223
223
  <div className='flex flex-col gap-4 items-center'>
224
- <Json data={metrics} />
224
+ <Json.Data data={metrics} />
225
225
  <Button onClick={rePullTrack}>Re-pull audio</Button>
226
226
  </div>
227
227
  );