@dxos/plugin-thread 0.8.4-main.72ec0f3 → 0.8.4-main.74a063c4e0

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 (458) hide show
  1. package/dist/lib/browser/add-message-MJDIN4K4.mjs +97 -0
  2. package/dist/lib/browser/add-message-MJDIN4K4.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-2QNKWX4H.mjs +259 -0
  6. package/dist/lib/browser/chunk-2QNKWX4H.mjs.map +7 -0
  7. package/dist/lib/browser/chunk-7T7J6ZR6.mjs +61 -0
  8. package/dist/lib/browser/chunk-7T7J6ZR6.mjs.map +7 -0
  9. package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
  10. package/dist/lib/browser/create-N2ZVTONJ.mjs +55 -0
  11. package/dist/lib/browser/create-N2ZVTONJ.mjs.map +7 -0
  12. package/dist/lib/browser/create-channel-Y4H3535D.mjs +21 -0
  13. package/dist/lib/browser/create-channel-Y4H3535D.mjs.map +7 -0
  14. package/dist/lib/browser/create-channel-thread-6N7TKEAW.mjs +28 -0
  15. package/dist/lib/browser/create-channel-thread-6N7TKEAW.mjs.map +7 -0
  16. package/dist/lib/browser/create-proposals-VTOSWUOX.mjs +57 -0
  17. package/dist/lib/browser/create-proposals-VTOSWUOX.mjs.map +7 -0
  18. package/dist/lib/browser/delete-QZZE655Y.mjs +59 -0
  19. package/dist/lib/browser/delete-QZZE655Y.mjs.map +7 -0
  20. package/dist/lib/browser/delete-message-JTBPACDE.mjs +64 -0
  21. package/dist/lib/browser/delete-message-JTBPACDE.mjs.map +7 -0
  22. package/dist/lib/browser/index.mjs +2249 -227
  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-2UGS234J.mjs +25 -0
  26. package/dist/lib/browser/on-create-space-2UGS234J.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-KKQHFLYO.mjs +33 -0
  30. package/dist/lib/browser/restore-KKQHFLYO.mjs.map +7 -0
  31. package/dist/lib/browser/restore-message-YN4BJQIZ.mjs +42 -0
  32. package/dist/lib/browser/restore-message-YN4BJQIZ.mjs.map +7 -0
  33. package/dist/lib/browser/select-VBJ3MBLN.mjs +26 -0
  34. package/dist/lib/browser/select-VBJ3MBLN.mjs.map +7 -0
  35. package/dist/lib/browser/toggle-resolved-OX7UEZG5.mjs +45 -0
  36. package/dist/lib/browser/toggle-resolved-OX7UEZG5.mjs.map +7 -0
  37. package/dist/lib/browser/types/index.mjs +6 -8
  38. package/dist/lib/node-esm/add-message-X6IRTANN.mjs +98 -0
  39. package/dist/lib/node-esm/add-message-X6IRTANN.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-HSLMI22Q.mjs +11 -0
  43. package/dist/lib/node-esm/chunk-I6LAZYVU.mjs +260 -0
  44. package/dist/lib/node-esm/chunk-I6LAZYVU.mjs.map +7 -0
  45. package/dist/lib/node-esm/chunk-UGSMYQLZ.mjs +62 -0
  46. package/dist/lib/node-esm/chunk-UGSMYQLZ.mjs.map +7 -0
  47. package/dist/lib/node-esm/create-A6XQZR7M.mjs +56 -0
  48. package/dist/lib/node-esm/create-A6XQZR7M.mjs.map +7 -0
  49. package/dist/lib/node-esm/create-channel-KA5T23ZS.mjs +22 -0
  50. package/dist/lib/node-esm/create-channel-KA5T23ZS.mjs.map +7 -0
  51. package/dist/lib/node-esm/create-channel-thread-44PXAPGM.mjs +29 -0
  52. package/dist/lib/node-esm/create-channel-thread-44PXAPGM.mjs.map +7 -0
  53. package/dist/lib/node-esm/create-proposals-HDBVDNUX.mjs +58 -0
  54. package/dist/lib/node-esm/create-proposals-HDBVDNUX.mjs.map +7 -0
  55. package/dist/lib/node-esm/delete-3RAWD5GG.mjs +60 -0
  56. package/dist/lib/node-esm/delete-3RAWD5GG.mjs.map +7 -0
  57. package/dist/lib/node-esm/delete-message-QQHNJBHY.mjs +65 -0
  58. package/dist/lib/node-esm/delete-message-QQHNJBHY.mjs.map +7 -0
  59. package/dist/lib/node-esm/index.mjs +2249 -227
  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-ZURB6UKR.mjs +26 -0
  63. package/dist/lib/node-esm/on-create-space-ZURB6UKR.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-PDYEKDE3.mjs +34 -0
  67. package/dist/lib/node-esm/restore-PDYEKDE3.mjs.map +7 -0
  68. package/dist/lib/node-esm/restore-message-OB32YYKF.mjs +43 -0
  69. package/dist/lib/node-esm/restore-message-OB32YYKF.mjs.map +7 -0
  70. package/dist/lib/node-esm/select-6KETLVWY.mjs +27 -0
  71. package/dist/lib/node-esm/select-6KETLVWY.mjs.map +7 -0
  72. package/dist/lib/node-esm/toggle-resolved-V74EBRQZ.mjs +46 -0
  73. package/dist/lib/node-esm/toggle-resolved-V74EBRQZ.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 +5 -4
  96. package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -1
  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/{CommentsThreadContainer.d.ts → CommentsPanel/CommentsThread.d.ts} +3 -3
  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/Media/VideoObject.stories.d.ts.map +1 -1
  130. package/dist/types/src/components/MessagePanel/MessagePanel.d.ts +15 -0
  131. package/dist/types/src/components/MessagePanel/MessagePanel.d.ts.map +1 -0
  132. package/dist/types/src/components/MessagePanel/index.d.ts +2 -0
  133. package/dist/types/src/components/MessagePanel/index.d.ts.map +1 -0
  134. package/dist/types/src/components/Participant/Participant.d.ts.map +1 -1
  135. package/dist/types/src/components/Participant/ParticipantGrid.d.ts.map +1 -1
  136. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.d.ts.map +1 -1
  137. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts +142 -140
  138. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts.map +1 -1
  139. package/dist/types/src/components/ResponsiveGrid/{ResponsiveContainer.d.ts → ResponsivePanel.d.ts} +4 -4
  140. package/dist/types/src/components/ResponsiveGrid/ResponsivePanel.d.ts.map +1 -0
  141. package/dist/types/src/components/ResponsiveGrid/ResponsivePanel.stories.d.ts +164 -0
  142. package/dist/types/src/components/ResponsiveGrid/ResponsivePanel.stories.d.ts.map +1 -0
  143. package/dist/types/src/components/ResponsiveGrid/index.d.ts +1 -1
  144. package/dist/types/src/components/ResponsiveGrid/index.d.ts.map +1 -1
  145. package/dist/types/src/components/ThreadSettings/ThreadSettings.d.ts +6 -0
  146. package/dist/types/src/components/ThreadSettings/ThreadSettings.d.ts.map +1 -0
  147. package/dist/types/src/components/ThreadSettings/ThreadSettings.stories.d.ts +161 -0
  148. package/dist/types/src/components/ThreadSettings/ThreadSettings.stories.d.ts.map +1 -0
  149. package/dist/types/src/components/ThreadSettings/index.d.ts +2 -0
  150. package/dist/types/src/components/ThreadSettings/index.d.ts.map +1 -0
  151. package/dist/types/src/components/index.d.ts +4 -9
  152. package/dist/types/src/components/index.d.ts.map +1 -1
  153. package/dist/types/src/{components → containers/CallDebugPanel}/CallDebugPanel.d.ts +1 -1
  154. package/dist/types/src/containers/CallDebugPanel/CallDebugPanel.d.ts.map +1 -0
  155. package/dist/types/src/containers/CallDebugPanel/index.d.ts +2 -0
  156. package/dist/types/src/containers/CallDebugPanel/index.d.ts.map +1 -0
  157. package/dist/types/src/{components → containers/CallSidebar}/CallSidebar.d.ts +0 -1
  158. package/dist/types/src/containers/CallSidebar/CallSidebar.d.ts.map +1 -0
  159. package/dist/types/src/containers/CallSidebar/index.d.ts +2 -0
  160. package/dist/types/src/containers/CallSidebar/index.d.ts.map +1 -0
  161. package/dist/types/src/containers/ChannelContainer/ChannelContainer.d.ts +12 -0
  162. package/dist/types/src/containers/ChannelContainer/ChannelContainer.d.ts.map +1 -0
  163. package/dist/types/src/containers/ChannelContainer/ChannelContainer.stories.d.ts +162 -0
  164. package/dist/types/src/containers/ChannelContainer/ChannelContainer.stories.d.ts.map +1 -0
  165. package/dist/types/src/containers/ChannelContainer/index.d.ts +2 -0
  166. package/dist/types/src/containers/ChannelContainer/index.d.ts.map +1 -0
  167. package/dist/types/src/containers/ChatContainer/ChatContainer.d.ts +20 -0
  168. package/dist/types/src/containers/ChatContainer/ChatContainer.d.ts.map +1 -0
  169. package/dist/types/src/containers/ChatContainer/ChatContainer.stories.d.ts +162 -0
  170. package/dist/types/src/containers/ChatContainer/ChatContainer.stories.d.ts.map +1 -0
  171. package/dist/types/src/containers/ChatContainer/index.d.ts +4 -0
  172. package/dist/types/src/containers/ChatContainer/index.d.ts.map +1 -0
  173. package/dist/types/src/containers/ThreadCompanion/ThreadCompanion.d.ts +8 -0
  174. package/dist/types/src/containers/ThreadCompanion/ThreadCompanion.d.ts.map +1 -0
  175. package/dist/types/src/containers/ThreadCompanion/index.d.ts +2 -0
  176. package/dist/types/src/containers/ThreadCompanion/index.d.ts.map +1 -0
  177. package/dist/types/src/containers/index.d.ts +7 -0
  178. package/dist/types/src/containers/index.d.ts.map +1 -0
  179. package/dist/types/src/{components/command-extension.d.ts → extensions/command.d.ts} +1 -1
  180. package/dist/types/src/extensions/command.d.ts.map +1 -0
  181. package/dist/types/src/extensions/index.d.ts +1 -0
  182. package/dist/types/src/extensions/index.d.ts.map +1 -1
  183. package/dist/types/src/extensions/threads.d.ts +8 -3
  184. package/dist/types/src/extensions/threads.d.ts.map +1 -1
  185. package/dist/types/src/hooks/analytics.d.ts +1 -2
  186. package/dist/types/src/hooks/analytics.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 +2 -369
  234. package/dist/types/src/types/types.d.ts.map +1 -1
  235. package/dist/types/src/util.d.ts.map +1 -1
  236. package/dist/types/tsconfig.tsbuildinfo +1 -1
  237. package/package.json +108 -69
  238. package/src/ThreadPlugin.tsx +76 -114
  239. package/src/blueprints/index.ts +5 -0
  240. package/src/blueprints/thread-blueprint.ts +37 -0
  241. package/src/calls/call-manager.ts +76 -52
  242. package/src/calls/call-swarm-synchronizer.ts +2 -2
  243. package/src/calls/media-manager.ts +1 -1
  244. package/src/calls/util/calls-service.ts +1 -2
  245. package/src/calls/util/task-scheduling.ts +4 -4
  246. package/src/calls-service.stories.tsx +10 -9
  247. package/src/capabilities/app-graph-builder.ts +171 -172
  248. package/src/capabilities/blueprint-definition.ts +9 -30
  249. package/src/capabilities/call-manager.ts +19 -12
  250. package/src/capabilities/index.ts +15 -12
  251. package/src/capabilities/markdown.ts +50 -39
  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 +79 -79
  255. package/src/capabilities/settings.ts +28 -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 +11 -7
  259. package/src/components/Call/Toolbar.tsx +55 -38
  260. package/src/components/CommentsPanel/CommentsPanel.stories.tsx +93 -0
  261. package/src/components/{CommentsContainer.tsx → CommentsPanel/CommentsPanel.tsx} +16 -16
  262. package/src/components/{CommentsThreadContainer.tsx → CommentsPanel/CommentsThread.tsx} +29 -31
  263. package/src/components/CommentsPanel/index.ts +6 -0
  264. package/src/components/Lobby/Lobby.tsx +15 -12
  265. package/src/components/Media/AudioStream.tsx +2 -2
  266. package/src/components/Media/VideoObject.stories.tsx +6 -7
  267. package/src/components/Media/VideoObject.tsx +2 -2
  268. package/src/components/{MessageContainer.tsx → MessagePanel/MessagePanel.tsx} +75 -38
  269. package/src/components/MessagePanel/index.ts +5 -0
  270. package/src/components/Participant/Participant.tsx +33 -19
  271. package/src/components/Participant/ParticipantGrid.tsx +0 -1
  272. package/src/components/ResponsiveGrid/ResponsiveGrid.stories.tsx +10 -11
  273. package/src/components/ResponsiveGrid/ResponsiveGrid.tsx +9 -9
  274. package/src/components/ResponsiveGrid/ResponsiveGridItem.tsx +10 -10
  275. package/src/components/ResponsiveGrid/{ResponsiveContainer.stories.tsx → ResponsivePanel.stories.tsx} +7 -8
  276. package/src/components/ResponsiveGrid/{ResponsiveContainer.tsx → ResponsivePanel.tsx} +6 -6
  277. package/src/components/ResponsiveGrid/index.ts +1 -1
  278. package/src/components/ThreadSettings/ThreadSettings.stories.tsx +31 -0
  279. package/src/components/ThreadSettings/ThreadSettings.tsx +20 -0
  280. package/src/components/ThreadSettings/index.ts +5 -0
  281. package/src/components/index.ts +4 -11
  282. package/src/{components → containers/CallDebugPanel}/CallDebugPanel.tsx +8 -7
  283. package/src/containers/CallDebugPanel/index.ts +5 -0
  284. package/src/containers/CallSidebar/CallSidebar.tsx +18 -0
  285. package/src/containers/CallSidebar/index.ts +5 -0
  286. package/src/containers/ChannelContainer/ChannelContainer.stories.tsx +61 -0
  287. package/src/{components → containers/ChannelContainer}/ChannelContainer.tsx +90 -72
  288. package/src/containers/ChannelContainer/index.ts +5 -0
  289. package/src/{components/Chat.stories.tsx → containers/ChatContainer/ChatContainer.stories.tsx} +23 -21
  290. package/src/containers/ChatContainer/ChatContainer.tsx +131 -0
  291. package/src/containers/ChatContainer/index.ts +8 -0
  292. package/src/containers/ThreadCompanion/ThreadCompanion.tsx +217 -0
  293. package/src/containers/ThreadCompanion/index.ts +5 -0
  294. package/src/containers/index.ts +11 -0
  295. package/src/{components/command-extension.ts → extensions/command.ts} +3 -3
  296. package/src/extensions/index.ts +1 -0
  297. package/src/extensions/threads.ts +79 -43
  298. package/src/hooks/analytics.ts +24 -20
  299. package/src/index.ts +1 -1
  300. package/src/meta.ts +4 -4
  301. package/src/operations/add-message.ts +81 -0
  302. package/src/operations/create-channel-thread.ts +26 -0
  303. package/src/operations/create-channel.ts +20 -0
  304. package/src/operations/create-proposals.ts +49 -0
  305. package/src/operations/create.ts +48 -0
  306. package/src/operations/definitions.ts +177 -0
  307. package/src/operations/delete-message.ts +53 -0
  308. package/src/operations/delete.ts +63 -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 +24 -0
  314. package/src/operations/toggle-resolved.ts +41 -0
  315. package/src/{components/testing.ts → testing/data.ts} +8 -10
  316. package/src/testing/stories.ts +17 -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 +36 -0
  321. package/src/types/index.ts +1 -1
  322. package/src/types/types.ts +3 -98
  323. package/src/util.ts +1 -1
  324. package/dist/lib/browser/ChannelContainer-MX5ABVGC.mjs +0 -16
  325. package/dist/lib/browser/ChatContainer-7F5Y6GXJ.mjs +0 -15
  326. package/dist/lib/browser/app-graph-builder-HNYLII5E.mjs +0 -170
  327. package/dist/lib/browser/app-graph-builder-HNYLII5E.mjs.map +0 -7
  328. package/dist/lib/browser/blueprint-definition-6BKYTMJS.mjs +0 -104
  329. package/dist/lib/browser/blueprint-definition-6BKYTMJS.mjs.map +0 -7
  330. package/dist/lib/browser/call-manager-MAXQLMMS.mjs +0 -24
  331. package/dist/lib/browser/call-manager-MAXQLMMS.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-BQWQFTWT.mjs +0 -612
  335. package/dist/lib/browser/chunk-BQWQFTWT.mjs.map +0 -7
  336. package/dist/lib/browser/chunk-CP7E2HRE.mjs +0 -31
  337. package/dist/lib/browser/chunk-CP7E2HRE.mjs.map +0 -7
  338. package/dist/lib/browser/chunk-FR6MEAZI.mjs +0 -377
  339. package/dist/lib/browser/chunk-FR6MEAZI.mjs.map +0 -7
  340. package/dist/lib/browser/chunk-INQVAYPN.mjs +0 -989
  341. package/dist/lib/browser/chunk-INQVAYPN.mjs.map +0 -7
  342. package/dist/lib/browser/chunk-ISCHODBV.mjs +0 -106
  343. package/dist/lib/browser/chunk-ISCHODBV.mjs.map +0 -7
  344. package/dist/lib/browser/chunk-K2DUJRFJ.mjs +0 -27
  345. package/dist/lib/browser/chunk-K2DUJRFJ.mjs.map +0 -7
  346. package/dist/lib/browser/chunk-KOBXMDCI.mjs +0 -182
  347. package/dist/lib/browser/chunk-KOBXMDCI.mjs.map +0 -7
  348. package/dist/lib/browser/chunk-NMJEVD36.mjs +0 -168
  349. package/dist/lib/browser/chunk-NMJEVD36.mjs.map +0 -7
  350. package/dist/lib/browser/chunk-OOUDK7Q7.mjs +0 -23
  351. package/dist/lib/browser/chunk-OOUDK7Q7.mjs.map +0 -7
  352. package/dist/lib/browser/chunk-ZCW3NSDZ.mjs +0 -1793
  353. package/dist/lib/browser/chunk-ZCW3NSDZ.mjs.map +0 -7
  354. package/dist/lib/browser/intent-resolver-BOUT4WGY.mjs +0 -361
  355. package/dist/lib/browser/intent-resolver-BOUT4WGY.mjs.map +0 -7
  356. package/dist/lib/browser/markdown-74EUSQGV.mjs +0 -171
  357. package/dist/lib/browser/markdown-74EUSQGV.mjs.map +0 -7
  358. package/dist/lib/browser/react-root-BVG7B2LW.mjs +0 -28
  359. package/dist/lib/browser/react-root-BVG7B2LW.mjs.map +0 -7
  360. package/dist/lib/browser/react-surface-BCD5ODQ6.mjs +0 -110
  361. package/dist/lib/browser/react-surface-BCD5ODQ6.mjs.map +0 -7
  362. package/dist/lib/browser/settings-LGQUZITB.mjs +0 -22
  363. package/dist/lib/browser/settings-LGQUZITB.mjs.map +0 -7
  364. package/dist/lib/browser/state-36REWXO5.mjs +0 -34
  365. package/dist/lib/browser/state-36REWXO5.mjs.map +0 -7
  366. package/dist/lib/node-esm/ChannelContainer-2JJJ3IDK.mjs +0 -17
  367. package/dist/lib/node-esm/ChannelContainer-2JJJ3IDK.mjs.map +0 -7
  368. package/dist/lib/node-esm/ChatContainer-C526R4DI.mjs +0 -16
  369. package/dist/lib/node-esm/ChatContainer-C526R4DI.mjs.map +0 -7
  370. package/dist/lib/node-esm/app-graph-builder-SOCKP4ST.mjs +0 -171
  371. package/dist/lib/node-esm/app-graph-builder-SOCKP4ST.mjs.map +0 -7
  372. package/dist/lib/node-esm/blueprint-definition-6LEAWSC7.mjs +0 -105
  373. package/dist/lib/node-esm/blueprint-definition-6LEAWSC7.mjs.map +0 -7
  374. package/dist/lib/node-esm/call-manager-LC4OS2KD.mjs +0 -25
  375. package/dist/lib/node-esm/call-manager-LC4OS2KD.mjs.map +0 -7
  376. package/dist/lib/node-esm/chunk-5DLH4MWN.mjs +0 -25
  377. package/dist/lib/node-esm/chunk-5DLH4MWN.mjs.map +0 -7
  378. package/dist/lib/node-esm/chunk-7KZWZS2U.mjs +0 -1794
  379. package/dist/lib/node-esm/chunk-7KZWZS2U.mjs.map +0 -7
  380. package/dist/lib/node-esm/chunk-ABUFOZVX.mjs +0 -33
  381. package/dist/lib/node-esm/chunk-ABUFOZVX.mjs.map +0 -7
  382. package/dist/lib/node-esm/chunk-JF7THR7F.mjs +0 -990
  383. package/dist/lib/node-esm/chunk-JF7THR7F.mjs.map +0 -7
  384. package/dist/lib/node-esm/chunk-JJW6YMLC.mjs +0 -613
  385. package/dist/lib/node-esm/chunk-JJW6YMLC.mjs.map +0 -7
  386. package/dist/lib/node-esm/chunk-PZH2EDU5.mjs +0 -183
  387. package/dist/lib/node-esm/chunk-PZH2EDU5.mjs.map +0 -7
  388. package/dist/lib/node-esm/chunk-TJKM5JZT.mjs +0 -169
  389. package/dist/lib/node-esm/chunk-TJKM5JZT.mjs.map +0 -7
  390. package/dist/lib/node-esm/chunk-TWKGDFCS.mjs +0 -378
  391. package/dist/lib/node-esm/chunk-TWKGDFCS.mjs.map +0 -7
  392. package/dist/lib/node-esm/chunk-VBI32FGI.mjs +0 -108
  393. package/dist/lib/node-esm/chunk-VBI32FGI.mjs.map +0 -7
  394. package/dist/lib/node-esm/chunk-XI45H4IV.mjs +0 -28
  395. package/dist/lib/node-esm/chunk-XI45H4IV.mjs.map +0 -7
  396. package/dist/lib/node-esm/chunk-ZQAGII7M.mjs +0 -19
  397. package/dist/lib/node-esm/chunk-ZQAGII7M.mjs.map +0 -7
  398. package/dist/lib/node-esm/intent-resolver-45PLIFCJ.mjs +0 -362
  399. package/dist/lib/node-esm/intent-resolver-45PLIFCJ.mjs.map +0 -7
  400. package/dist/lib/node-esm/markdown-566XXB55.mjs +0 -172
  401. package/dist/lib/node-esm/markdown-566XXB55.mjs.map +0 -7
  402. package/dist/lib/node-esm/react-root-DCY6DKLC.mjs +0 -29
  403. package/dist/lib/node-esm/react-root-DCY6DKLC.mjs.map +0 -7
  404. package/dist/lib/node-esm/react-surface-WZH7OAO3.mjs +0 -111
  405. package/dist/lib/node-esm/react-surface-WZH7OAO3.mjs.map +0 -7
  406. package/dist/lib/node-esm/settings-WKLJSP6R.mjs +0 -23
  407. package/dist/lib/node-esm/settings-WKLJSP6R.mjs.map +0 -7
  408. package/dist/lib/node-esm/state-X3W67GTL.mjs +0 -35
  409. package/dist/lib/node-esm/state-X3W67GTL.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/components/CallDebugPanel.d.ts.map +0 -1
  415. package/dist/types/src/components/CallSidebar.d.ts.map +0 -1
  416. package/dist/types/src/components/ChannelContainer.d.ts +0 -14
  417. package/dist/types/src/components/ChannelContainer.d.ts.map +0 -1
  418. package/dist/types/src/components/ChannelContainer.stories.d.ts +0 -160
  419. package/dist/types/src/components/ChannelContainer.stories.d.ts.map +0 -1
  420. package/dist/types/src/components/Chat.stories.d.ts +0 -160
  421. package/dist/types/src/components/Chat.stories.d.ts.map +0 -1
  422. package/dist/types/src/components/ChatContainer.d.ts +0 -18
  423. package/dist/types/src/components/ChatContainer.d.ts.map +0 -1
  424. package/dist/types/src/components/Comments.stories.d.ts +0 -158
  425. package/dist/types/src/components/Comments.stories.d.ts.map +0 -1
  426. package/dist/types/src/components/CommentsContainer.d.ts +0 -13
  427. package/dist/types/src/components/CommentsContainer.d.ts.map +0 -1
  428. package/dist/types/src/components/CommentsThreadContainer.d.ts.map +0 -1
  429. package/dist/types/src/components/MessageContainer.d.ts +0 -14
  430. package/dist/types/src/components/MessageContainer.d.ts.map +0 -1
  431. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.d.ts.map +0 -1
  432. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts +0 -162
  433. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts.map +0 -1
  434. package/dist/types/src/components/ThreadCompanion.d.ts +0 -5
  435. package/dist/types/src/components/ThreadCompanion.d.ts.map +0 -1
  436. package/dist/types/src/components/ThreadSettings.d.ts +0 -6
  437. package/dist/types/src/components/ThreadSettings.d.ts.map +0 -1
  438. package/dist/types/src/components/command-extension.d.ts.map +0 -1
  439. package/dist/types/src/components/testing.d.ts.map +0 -1
  440. package/dist/types/src/functions/create-proposals.d.ts +0 -6
  441. package/dist/types/src/functions/create-proposals.d.ts.map +0 -1
  442. package/dist/types/src/functions/index.d.ts +0 -2
  443. package/dist/types/src/functions/index.d.ts.map +0 -1
  444. package/dist/types/src/types/Thread.d.ts +0 -167
  445. package/dist/types/src/types/Thread.d.ts.map +0 -1
  446. package/src/capabilities/capabilities.ts +0 -33
  447. package/src/capabilities/intent-resolver.ts +0 -311
  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/ThreadCompanion.tsx +0 -188
  453. package/src/components/ThreadSettings.tsx +0 -16
  454. package/src/functions/create-proposals.ts +0 -58
  455. package/src/functions/index.ts +0 -5
  456. package/src/types/Thread.ts +0 -26
  457. /package/dist/lib/browser/{ChannelContainer-MX5ABVGC.mjs.map → chunk-J5LGTIGS.mjs.map} +0 -0
  458. /package/dist/lib/{browser/ChatContainer-7F5Y6GXJ.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
 
@@ -14,7 +14,6 @@ import {
14
14
  type TrackObject,
15
15
  type TracksResponse,
16
16
  } from '../types';
17
-
18
17
  import { HistoryCache } from './history-cache';
19
18
  import { BulkRequestDispatcher, FIFOScheduler } from './task-scheduling';
20
19
 
@@ -27,7 +26,7 @@ export type Session = {
27
26
 
28
27
  export type CallsServiceConfig = {
29
28
  apiBase: string;
30
- apiExtraParams?: string;
29
+ apiExtraProps?: string;
31
30
  iceServers?: RTCIceServer[];
32
31
  };
33
32
 
@@ -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.
@@ -12,13 +12,14 @@ import { log } from '@dxos/log';
12
12
  import { Config, useConfig } from '@dxos/react-client';
13
13
  import { withClientProvider } from '@dxos/react-client/testing';
14
14
  import { Button } from '@dxos/react-ui';
15
- import { withTheme } from '@dxos/react-ui/testing';
16
15
  import { Json } from '@dxos/react-ui-syntax-highlighter';
16
+ import { withTheme } from '@dxos/react-ui/testing';
17
17
 
18
18
  const testVideo = new URL('../testing/video.mp4', import.meta.url).href;
19
19
 
20
+ import { useBlackCanvasStreamTrack, useInaudibleAudioStreamTrack, useVideoStreamTrack } from '#hooks';
21
+
20
22
  import { CALLS_URL, CallsServicePeer, type TrackObject } from './calls';
21
- import { useBlackCanvasStreamTrack, useInaudibleAudioStreamTrack, useVideoStreamTrack } from './hooks';
22
23
 
23
24
  // TODO(burdon): THIS IS TOO COMPLEX FOR A TEST SETUP.
24
25
  const pushAndPullTrack = (mediaStreamTrack?: MediaStreamTrack) => {
@@ -130,9 +131,9 @@ const pushAndPullTrack = (mediaStreamTrack?: MediaStreamTrack) => {
130
131
  };
131
132
  };
132
133
 
133
- type StoryProps = { source: string };
134
+ type DefaultStoryProps = { source: string };
134
135
 
135
- const DefaultStory = ({ source }: StoryProps) => {
136
+ const DefaultStory = ({ source }: DefaultStoryProps) => {
136
137
  const pushVideoElement = useRef<HTMLVideoElement>(null);
137
138
  const pullVideoElement = useRef<HTMLVideoElement>(null);
138
139
  // Get video stream track.
@@ -166,16 +167,16 @@ const DefaultStory = ({ source }: StoryProps) => {
166
167
  Re-pull video
167
168
  </Button>
168
169
  </div>
169
- <Json data={metrics} />
170
+ <Json.Data data={metrics} />
170
171
  </div>
171
172
  );
172
173
  };
173
174
 
174
175
  const meta = {
175
- title: 'plugins/plugin-thread/calls-service',
176
+ title: 'plugins/plugin-thread/experimental/Calls',
176
177
  render: DefaultStory,
177
178
  decorators: [
178
- withTheme,
179
+ withTheme(),
179
180
  withClientProvider({
180
181
  config: new Config({
181
182
  runtime: {
@@ -208,7 +209,7 @@ export const InaudibleAudioStreamTrack = {
208
209
 
209
210
  return (
210
211
  <div className='flex flex-col gap-4 items-center'>
211
- <Json data={metrics} />
212
+ <Json.Data data={metrics} />
212
213
  <Button onClick={rePullTrack}>Re-pull audio</Button>
213
214
  </div>
214
215
  );
@@ -221,7 +222,7 @@ export const BlackVideoStreamTrack = {
221
222
  const { rePullTrack, metrics } = pushAndPullTrack(videoStreamTrack);
222
223
  return (
223
224
  <div className='flex flex-col gap-4 items-center'>
224
- <Json data={metrics} />
225
+ <Json.Data data={metrics} />
225
226
  <Button onClick={rePullTrack}>Re-pull audio</Button>
226
227
  </div>
227
228
  );