@dxos/plugin-thread 0.8.1-staging.9eaf14f → 0.8.2-main.10c050d

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 (407) hide show
  1. package/dist/lib/browser/ChannelContainer-XFNGSLHL.mjs +15 -0
  2. package/dist/lib/browser/ChatContainer-JWRI73OG.mjs +14 -0
  3. package/dist/lib/browser/app-graph-builder-K3CFBN7V.mjs +171 -0
  4. package/dist/lib/browser/app-graph-builder-K3CFBN7V.mjs.map +7 -0
  5. package/dist/lib/browser/call-manager-I4IKVCAK.mjs +23 -0
  6. package/dist/lib/browser/call-manager-I4IKVCAK.mjs.map +7 -0
  7. package/dist/lib/browser/{chunk-QDJ3Y6WF.mjs → chunk-5P5BH5GE.mjs} +57 -35
  8. package/dist/lib/browser/chunk-5P5BH5GE.mjs.map +7 -0
  9. package/dist/lib/browser/chunk-5PGLGDIP.mjs +983 -0
  10. package/dist/lib/browser/chunk-5PGLGDIP.mjs.map +7 -0
  11. package/dist/lib/browser/chunk-G3TS64FP.mjs +351 -0
  12. package/dist/lib/browser/chunk-G3TS64FP.mjs.map +7 -0
  13. package/dist/lib/browser/{chunk-WBJLUUOK.mjs → chunk-IIUTBDVB.mjs} +4 -4
  14. package/dist/lib/browser/chunk-IIUTBDVB.mjs.map +7 -0
  15. package/dist/lib/browser/chunk-IYY42OE2.mjs +545 -0
  16. package/dist/lib/browser/chunk-IYY42OE2.mjs.map +7 -0
  17. package/dist/lib/browser/chunk-JKQUJOTX.mjs +31 -0
  18. package/dist/lib/browser/chunk-JKQUJOTX.mjs.map +7 -0
  19. package/dist/lib/browser/chunk-N2V6MV6B.mjs +21 -0
  20. package/dist/lib/browser/chunk-N2V6MV6B.mjs.map +7 -0
  21. package/dist/lib/browser/{chunk-EP6MRLY7.mjs → chunk-R5MDLUPC.mjs} +5 -3
  22. package/dist/lib/browser/chunk-R5MDLUPC.mjs.map +7 -0
  23. package/dist/lib/browser/chunk-RJGJXXWK.mjs +1708 -0
  24. package/dist/lib/browser/chunk-RJGJXXWK.mjs.map +7 -0
  25. package/dist/lib/browser/chunk-WDOQXTI2.mjs +126 -0
  26. package/dist/lib/browser/chunk-WDOQXTI2.mjs.map +7 -0
  27. package/dist/lib/browser/index.mjs +107 -41
  28. package/dist/lib/browser/index.mjs.map +4 -4
  29. package/dist/lib/browser/{intent-resolver-QAY4FLLM.mjs → intent-resolver-YUYZCTLF.mjs} +102 -74
  30. package/dist/lib/browser/intent-resolver-YUYZCTLF.mjs.map +7 -0
  31. package/dist/lib/browser/markdown-4EC3OCF2.mjs +169 -0
  32. package/dist/lib/browser/markdown-4EC3OCF2.mjs.map +7 -0
  33. package/dist/lib/browser/meta.json +1 -1
  34. package/dist/lib/browser/react-root-YYDCVHGL.mjs +27 -0
  35. package/dist/lib/browser/react-root-YYDCVHGL.mjs.map +7 -0
  36. package/dist/lib/browser/react-surface-MEYBFPBC.mjs +108 -0
  37. package/dist/lib/browser/react-surface-MEYBFPBC.mjs.map +7 -0
  38. package/dist/lib/browser/{settings-4FEC7EAX.mjs → settings-KVBQQSO5.mjs} +5 -5
  39. package/dist/lib/browser/settings-KVBQQSO5.mjs.map +7 -0
  40. package/dist/lib/browser/{state-PNMSLKAH.mjs → state-RKL5MSDP.mjs} +7 -7
  41. package/dist/lib/browser/state-RKL5MSDP.mjs.map +7 -0
  42. package/dist/lib/browser/types/index.mjs +16 -0
  43. package/dist/lib/browser/types/index.mjs.map +7 -0
  44. package/dist/lib/node/ChannelContainer-F24RHJPX.cjs +36 -0
  45. package/dist/lib/node/ChannelContainer-F24RHJPX.cjs.map +7 -0
  46. package/dist/lib/node/ChatContainer-EE3FPSYO.cjs +35 -0
  47. package/dist/lib/node/ChatContainer-EE3FPSYO.cjs.map +7 -0
  48. package/dist/lib/node/app-graph-builder-IRE3GYKE.cjs +179 -0
  49. package/dist/lib/node/app-graph-builder-IRE3GYKE.cjs.map +7 -0
  50. package/dist/lib/node/call-manager-FZ4OMTB6.cjs +37 -0
  51. package/dist/lib/node/call-manager-FZ4OMTB6.cjs.map +7 -0
  52. package/dist/lib/node/chunk-4B3PPXA6.cjs +371 -0
  53. package/dist/lib/node/chunk-4B3PPXA6.cjs.map +7 -0
  54. package/dist/lib/node/{chunk-NQ5DTPOY.cjs → chunk-4YSNVPWU.cjs} +10 -8
  55. package/dist/lib/node/chunk-4YSNVPWU.cjs.map +7 -0
  56. package/dist/lib/node/chunk-6B3M6XRE.cjs +984 -0
  57. package/dist/lib/node/chunk-6B3M6XRE.cjs.map +7 -0
  58. package/dist/lib/node/chunk-AUIU6JGD.cjs +549 -0
  59. package/dist/lib/node/chunk-AUIU6JGD.cjs.map +7 -0
  60. package/dist/lib/node/chunk-ECIVLX56.cjs +1731 -0
  61. package/dist/lib/node/chunk-ECIVLX56.cjs.map +7 -0
  62. package/dist/lib/node/{chunk-S2A6BXEA.cjs → chunk-EYAUPLHT.cjs} +16 -10
  63. package/dist/lib/node/chunk-EYAUPLHT.cjs.map +7 -0
  64. package/dist/lib/node/{chunk-AKINTFBH.cjs → chunk-FUXJAVFZ.cjs} +50 -29
  65. package/dist/lib/node/chunk-FUXJAVFZ.cjs.map +7 -0
  66. package/dist/lib/node/{chunk-ONLWOUYZ.cjs → chunk-HLMCEE5K.cjs} +7 -7
  67. package/dist/lib/node/{chunk-ONLWOUYZ.cjs.map → chunk-HLMCEE5K.cjs.map} +2 -2
  68. package/dist/lib/node/chunk-LR5NENBE.cjs +54 -0
  69. package/dist/lib/node/chunk-LR5NENBE.cjs.map +7 -0
  70. package/dist/lib/node/chunk-TKHJVC2C.cjs +147 -0
  71. package/dist/lib/node/chunk-TKHJVC2C.cjs.map +7 -0
  72. package/dist/lib/node/index.cjs +142 -80
  73. package/dist/lib/node/index.cjs.map +4 -4
  74. package/dist/lib/node/{intent-resolver-S6FE5OR7.cjs → intent-resolver-MZ3HADNY.cjs} +108 -82
  75. package/dist/lib/node/intent-resolver-MZ3HADNY.cjs.map +7 -0
  76. package/dist/lib/node/markdown-NJDPXIKD.cjs +178 -0
  77. package/dist/lib/node/markdown-NJDPXIKD.cjs.map +7 -0
  78. package/dist/lib/node/meta.json +1 -1
  79. package/dist/lib/node/react-root-HQDBRGD3.cjs +51 -0
  80. package/dist/lib/node/react-root-HQDBRGD3.cjs.map +7 -0
  81. package/dist/lib/node/react-surface-KY5KFKVQ.cjs +122 -0
  82. package/dist/lib/node/react-surface-KY5KFKVQ.cjs.map +7 -0
  83. package/dist/lib/node/{settings-IXCPE55J.cjs → settings-H45P5YO2.cjs} +9 -9
  84. package/dist/lib/node/settings-H45P5YO2.cjs.map +7 -0
  85. package/dist/lib/node/{state-AT73KPGZ.cjs → state-IY5XX3H2.cjs} +10 -10
  86. package/dist/lib/node/state-IY5XX3H2.cjs.map +7 -0
  87. package/dist/lib/node/{types.cjs → types/index.cjs} +12 -6
  88. package/dist/lib/node/types/index.cjs.map +7 -0
  89. package/dist/lib/node-esm/ChannelContainer-AOXWXM53.mjs +16 -0
  90. package/dist/lib/node-esm/ChannelContainer-AOXWXM53.mjs.map +7 -0
  91. package/dist/lib/node-esm/ChatContainer-UJYPQMLV.mjs +15 -0
  92. package/dist/lib/node-esm/ChatContainer-UJYPQMLV.mjs.map +7 -0
  93. package/dist/lib/node-esm/app-graph-builder-I5VMPLE4.mjs +172 -0
  94. package/dist/lib/node-esm/app-graph-builder-I5VMPLE4.mjs.map +7 -0
  95. package/dist/lib/node-esm/call-manager-B3D3RK3R.mjs +24 -0
  96. package/dist/lib/node-esm/call-manager-B3D3RK3R.mjs.map +7 -0
  97. package/dist/lib/node-esm/chunk-CSO73XLB.mjs +546 -0
  98. package/dist/lib/node-esm/chunk-CSO73XLB.mjs.map +7 -0
  99. package/dist/lib/node-esm/{chunk-42F2DTMM.mjs → chunk-ESQC6SYE.mjs} +4 -4
  100. package/dist/lib/node-esm/chunk-ESQC6SYE.mjs.map +7 -0
  101. package/dist/lib/node-esm/chunk-J323VQ4P.mjs +127 -0
  102. package/dist/lib/node-esm/chunk-J323VQ4P.mjs.map +7 -0
  103. package/dist/lib/node-esm/chunk-JJLYSLLU.mjs +23 -0
  104. package/dist/lib/node-esm/chunk-JJLYSLLU.mjs.map +7 -0
  105. package/dist/lib/node-esm/{chunk-WLY2HMDB.mjs → chunk-K4KAUOKT.mjs} +5 -3
  106. package/dist/lib/node-esm/chunk-K4KAUOKT.mjs.map +7 -0
  107. package/dist/lib/node-esm/{chunk-J56FORYF.mjs → chunk-O3V45YJP.mjs} +57 -35
  108. package/dist/lib/node-esm/chunk-O3V45YJP.mjs.map +7 -0
  109. package/dist/lib/node-esm/chunk-PGRP3O4O.mjs +33 -0
  110. package/dist/lib/node-esm/chunk-PGRP3O4O.mjs.map +7 -0
  111. package/dist/lib/node-esm/chunk-POKXRTII.mjs +352 -0
  112. package/dist/lib/node-esm/chunk-POKXRTII.mjs.map +7 -0
  113. package/dist/lib/node-esm/chunk-WBNC7KMA.mjs +1710 -0
  114. package/dist/lib/node-esm/chunk-WBNC7KMA.mjs.map +7 -0
  115. package/dist/lib/node-esm/chunk-X6AUQDTE.mjs +984 -0
  116. package/dist/lib/node-esm/chunk-X6AUQDTE.mjs.map +7 -0
  117. package/dist/lib/node-esm/index.mjs +107 -41
  118. package/dist/lib/node-esm/index.mjs.map +4 -4
  119. package/dist/lib/node-esm/{intent-resolver-OURFRSSF.mjs → intent-resolver-CU22OPAH.mjs} +102 -74
  120. package/dist/lib/node-esm/intent-resolver-CU22OPAH.mjs.map +7 -0
  121. package/dist/lib/node-esm/markdown-HRGGO7IA.mjs +170 -0
  122. package/dist/lib/node-esm/markdown-HRGGO7IA.mjs.map +7 -0
  123. package/dist/lib/node-esm/meta.json +1 -1
  124. package/dist/lib/node-esm/react-root-MKN5SK3G.mjs +28 -0
  125. package/dist/lib/node-esm/react-root-MKN5SK3G.mjs.map +7 -0
  126. package/dist/lib/node-esm/react-surface-J2C7CVX7.mjs +109 -0
  127. package/dist/lib/node-esm/react-surface-J2C7CVX7.mjs.map +7 -0
  128. package/dist/lib/node-esm/{settings-ZUJQ4LWI.mjs → settings-IJGUOU3F.mjs} +5 -5
  129. package/dist/lib/node-esm/settings-IJGUOU3F.mjs.map +7 -0
  130. package/dist/lib/node-esm/{state-SSDX5O67.mjs → state-6AUTNROZ.mjs} +7 -7
  131. package/dist/lib/node-esm/state-6AUTNROZ.mjs.map +7 -0
  132. package/dist/lib/node-esm/types/index.mjs +17 -0
  133. package/dist/lib/node-esm/types/index.mjs.map +7 -0
  134. package/dist/types/src/ThreadPlugin.d.ts.map +1 -1
  135. package/dist/types/src/calls/call-manager.d.ts +77 -0
  136. package/dist/types/src/calls/call-manager.d.ts.map +1 -0
  137. package/dist/types/src/calls/call-swarm-synchronizer.d.ts +66 -0
  138. package/dist/types/src/calls/call-swarm-synchronizer.d.ts.map +1 -0
  139. package/dist/types/src/calls/index.d.ts +7 -0
  140. package/dist/types/src/calls/index.d.ts.map +1 -0
  141. package/dist/types/src/calls/media-manager.d.ts +60 -0
  142. package/dist/types/src/calls/media-manager.d.ts.map +1 -0
  143. package/dist/types/src/calls/speaking-monitor.d.ts +24 -0
  144. package/dist/types/src/calls/speaking-monitor.d.ts.map +1 -0
  145. package/dist/types/src/calls/types.d.ts +45 -0
  146. package/dist/types/src/calls/types.d.ts.map +1 -0
  147. package/dist/types/src/calls/util/audio.d.ts +6 -0
  148. package/dist/types/src/calls/util/audio.d.ts.map +1 -0
  149. package/dist/types/src/calls/util/calls-service.d.ts +72 -0
  150. package/dist/types/src/calls/util/calls-service.d.ts.map +1 -0
  151. package/dist/types/src/calls/util/history-cache.d.ts +11 -0
  152. package/dist/types/src/calls/util/history-cache.d.ts.map +1 -0
  153. package/dist/types/src/calls/util/index.d.ts +5 -0
  154. package/dist/types/src/calls/util/index.d.ts.map +1 -0
  155. package/dist/types/src/calls/util/media.d.ts +6 -0
  156. package/dist/types/src/calls/util/media.d.ts.map +1 -0
  157. package/dist/types/src/calls/util/stub-media-streams.d.ts +18 -0
  158. package/dist/types/src/calls/util/stub-media-streams.d.ts.map +1 -0
  159. package/dist/types/src/calls/util/task-scheduling.d.ts +17 -0
  160. package/dist/types/src/calls/util/task-scheduling.d.ts.map +1 -0
  161. package/dist/types/src/capabilities/app-graph-builder.d.ts +2 -179
  162. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  163. package/dist/types/src/capabilities/call-manager.d.ts +5 -0
  164. package/dist/types/src/capabilities/call-manager.d.ts.map +1 -0
  165. package/dist/types/src/capabilities/capabilities.d.ts +13 -1
  166. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  167. package/dist/types/src/capabilities/index.d.ts +8 -179
  168. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  169. package/dist/types/src/capabilities/intent-resolver.d.ts +2 -2
  170. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  171. package/dist/types/src/capabilities/markdown.d.ts +2 -2
  172. package/dist/types/src/capabilities/markdown.d.ts.map +1 -1
  173. package/dist/types/src/capabilities/react-root.d.ts +7 -0
  174. package/dist/types/src/capabilities/react-root.d.ts.map +1 -0
  175. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  176. package/dist/types/src/components/Call/Call.d.ts +17 -0
  177. package/dist/types/src/components/Call/Call.d.ts.map +1 -0
  178. package/dist/types/src/components/Call/Toolbar.d.ts +16 -0
  179. package/dist/types/src/components/Call/Toolbar.d.ts.map +1 -0
  180. package/dist/types/src/components/Call/index.d.ts +3 -0
  181. package/dist/types/src/components/Call/index.d.ts.map +1 -0
  182. package/dist/types/src/components/CallDebugPanel.d.ts +8 -0
  183. package/dist/types/src/components/CallDebugPanel.d.ts.map +1 -0
  184. package/dist/types/src/components/CallSidebar.d.ts +4 -0
  185. package/dist/types/src/components/CallSidebar.d.ts.map +1 -0
  186. package/dist/types/src/components/ChannelContainer.d.ts +14 -0
  187. package/dist/types/src/components/ChannelContainer.d.ts.map +1 -0
  188. package/dist/types/src/components/ChannelContainer.stories.d.ts +10 -0
  189. package/dist/types/src/components/ChannelContainer.stories.d.ts.map +1 -0
  190. package/dist/types/src/components/Chat.stories.d.ts.map +1 -1
  191. package/dist/types/src/components/ChatContainer.d.ts +9 -7
  192. package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
  193. package/dist/types/src/components/CommentContainer.d.ts +11 -2
  194. package/dist/types/src/components/CommentContainer.d.ts.map +1 -1
  195. package/dist/types/src/components/Comments.stories.d.ts +1 -1
  196. package/dist/types/src/components/Comments.stories.d.ts.map +1 -1
  197. package/dist/types/src/components/CommentsContainer.d.ts +5 -9
  198. package/dist/types/src/components/CommentsContainer.d.ts.map +1 -1
  199. package/dist/types/src/components/Lobby/Lobby.d.ts +15 -0
  200. package/dist/types/src/components/Lobby/Lobby.d.ts.map +1 -0
  201. package/dist/types/src/components/Lobby/index.d.ts +2 -0
  202. package/dist/types/src/components/Lobby/index.d.ts.map +1 -0
  203. package/dist/types/src/components/Media/AudioStream.d.ts +6 -0
  204. package/dist/types/src/components/Media/AudioStream.d.ts.map +1 -0
  205. package/dist/types/src/components/Media/VideoObject.d.ts +15 -0
  206. package/dist/types/src/components/Media/VideoObject.d.ts.map +1 -0
  207. package/dist/types/src/components/Media/VideoObject.stories.d.ts +8 -0
  208. package/dist/types/src/components/Media/VideoObject.stories.d.ts.map +1 -0
  209. package/dist/types/src/components/Media/index.d.ts +3 -0
  210. package/dist/types/src/components/Media/index.d.ts.map +1 -0
  211. package/dist/types/src/components/MessageContainer.d.ts +5 -4
  212. package/dist/types/src/components/MessageContainer.d.ts.map +1 -1
  213. package/dist/types/src/components/Participant/Participant.d.ts +6 -0
  214. package/dist/types/src/components/Participant/Participant.d.ts.map +1 -0
  215. package/dist/types/src/components/Participant/ParticipantGrid.d.ts +11 -0
  216. package/dist/types/src/components/Participant/ParticipantGrid.d.ts.map +1 -0
  217. package/dist/types/src/components/Participant/index.d.ts +3 -0
  218. package/dist/types/src/components/Participant/index.d.ts.map +1 -0
  219. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.d.ts +12 -0
  220. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.d.ts.map +1 -0
  221. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts +10 -0
  222. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts.map +1 -0
  223. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.d.ts +32 -0
  224. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.d.ts.map +1 -0
  225. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts +23 -0
  226. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts.map +1 -0
  227. package/dist/types/src/components/ResponsiveGrid/ResponsiveGridItem.d.ts +21 -0
  228. package/dist/types/src/components/ResponsiveGrid/ResponsiveGridItem.d.ts.map +1 -0
  229. package/dist/types/src/components/ResponsiveGrid/index.d.ts +4 -0
  230. package/dist/types/src/components/ResponsiveGrid/index.d.ts.map +1 -0
  231. package/dist/types/src/components/ThreadComplementary.d.ts.map +1 -1
  232. package/dist/types/src/components/ThreadSettings.d.ts.map +1 -1
  233. package/dist/types/src/components/index.d.ts +5 -1
  234. package/dist/types/src/components/index.d.ts.map +1 -1
  235. package/dist/types/src/components/testing.d.ts +101 -54
  236. package/dist/types/src/components/testing.d.ts.map +1 -1
  237. package/dist/types/src/extensions/threads.d.ts.map +1 -1
  238. package/dist/types/src/hooks/analytics.d.ts +3 -3
  239. package/dist/types/src/hooks/analytics.d.ts.map +1 -1
  240. package/dist/types/src/hooks/index.d.ts +2 -1
  241. package/dist/types/src/hooks/index.d.ts.map +1 -1
  242. package/dist/types/src/hooks/useDebugMode.d.ts +2 -0
  243. package/dist/types/src/hooks/useDebugMode.d.ts.map +1 -0
  244. package/dist/types/src/hooks/useStatus.d.ts.map +1 -1
  245. package/dist/types/src/index.d.ts +1 -1
  246. package/dist/types/src/index.d.ts.map +1 -1
  247. package/dist/types/src/meta.d.ts.map +1 -1
  248. package/dist/types/src/peers.stories.d.ts +11 -0
  249. package/dist/types/src/peers.stories.d.ts.map +1 -0
  250. package/dist/types/src/testing/index.d.ts +2 -0
  251. package/dist/types/src/testing/index.d.ts.map +1 -0
  252. package/dist/types/src/testing/stories.d.ts +2 -0
  253. package/dist/types/src/testing/stories.d.ts.map +1 -0
  254. package/dist/types/src/translations.d.ts +35 -56
  255. package/dist/types/src/translations.d.ts.map +1 -1
  256. package/dist/types/src/types/index.d.ts +3 -0
  257. package/dist/types/src/types/index.d.ts.map +1 -0
  258. package/dist/types/src/types/schema.d.ts +317 -0
  259. package/dist/types/src/types/schema.d.ts.map +1 -0
  260. package/dist/types/src/types/types.d.ts +1015 -0
  261. package/dist/types/src/types/types.d.ts.map +1 -0
  262. package/dist/types/src/util.d.ts +2 -0
  263. package/dist/types/src/util.d.ts.map +1 -1
  264. package/dist/types/tsconfig.tsbuildinfo +1 -1
  265. package/package.json +60 -40
  266. package/src/ThreadPlugin.tsx +33 -14
  267. package/src/calls/call-manager.ts +242 -0
  268. package/src/calls/call-swarm-synchronizer.ts +350 -0
  269. package/src/calls/index.ts +10 -0
  270. package/src/calls/media-manager.ts +342 -0
  271. package/src/calls/speaking-monitor.ts +85 -0
  272. package/src/calls/types.ts +70 -0
  273. package/src/calls/util/audio.ts +58 -0
  274. package/src/calls/util/calls-service.ts +527 -0
  275. package/src/calls/util/history-cache.ts +27 -0
  276. package/src/calls/util/index.ts +8 -0
  277. package/src/calls/util/media.ts +52 -0
  278. package/src/calls/util/stub-media-streams.ts +73 -0
  279. package/src/calls/util/task-scheduling.ts +92 -0
  280. package/src/capabilities/app-graph-builder.ts +171 -25
  281. package/src/capabilities/call-manager.ts +19 -0
  282. package/src/capabilities/capabilities.ts +15 -1
  283. package/src/capabilities/index.ts +2 -0
  284. package/src/capabilities/intent-resolver.ts +77 -56
  285. package/src/capabilities/markdown.ts +54 -4
  286. package/src/capabilities/react-root.tsx +17 -0
  287. package/src/capabilities/react-surface.tsx +52 -27
  288. package/src/capabilities/settings.ts +2 -2
  289. package/src/capabilities/state.ts +3 -3
  290. package/src/components/Call/Call.tsx +88 -0
  291. package/src/components/Call/Toolbar.tsx +182 -0
  292. package/src/components/Call/index.ts +6 -0
  293. package/src/components/CallDebugPanel.tsx +115 -0
  294. package/src/components/CallSidebar.tsx +17 -0
  295. package/src/components/ChannelContainer.stories.tsx +58 -0
  296. package/src/components/ChannelContainer.tsx +203 -0
  297. package/src/components/Chat.stories.tsx +11 -12
  298. package/src/components/ChatContainer.tsx +37 -25
  299. package/src/components/CommentContainer.tsx +56 -61
  300. package/src/components/Comments.stories.tsx +20 -16
  301. package/src/components/CommentsContainer.tsx +20 -36
  302. package/src/components/Lobby/Lobby.tsx +119 -0
  303. package/src/components/Lobby/index.ts +5 -0
  304. package/src/components/Media/AudioStream.tsx +67 -0
  305. package/src/components/Media/VideoObject.stories.tsx +52 -0
  306. package/src/components/Media/VideoObject.tsx +58 -0
  307. package/src/components/Media/index.ts +6 -0
  308. package/src/components/MessageContainer.tsx +31 -50
  309. package/src/components/Participant/Participant.tsx +57 -0
  310. package/src/components/Participant/ParticipantGrid.tsx +88 -0
  311. package/src/components/Participant/index.ts +6 -0
  312. package/src/components/ResponsiveGrid/ResponsiveContainer.stories.tsx +54 -0
  313. package/src/components/ResponsiveGrid/ResponsiveContainer.tsx +31 -0
  314. package/src/components/ResponsiveGrid/ResponsiveGrid.stories.tsx +156 -0
  315. package/src/components/ResponsiveGrid/ResponsiveGrid.tsx +341 -0
  316. package/src/components/ResponsiveGrid/ResponsiveGridItem.tsx +131 -0
  317. package/src/components/ResponsiveGrid/index.ts +7 -0
  318. package/src/components/ThreadComplementary.tsx +37 -42
  319. package/src/components/index.ts +4 -0
  320. package/src/components/testing.ts +6 -5
  321. package/src/extensions/threads.ts +42 -24
  322. package/src/hooks/analytics.ts +4 -4
  323. package/src/hooks/index.ts +2 -1
  324. package/src/hooks/useDebugMode.ts +25 -0
  325. package/src/index.ts +1 -1
  326. package/src/meta.ts +4 -3
  327. package/src/peers.stories.tsx +189 -0
  328. package/src/testing/index.ts +5 -0
  329. package/src/testing/stories.ts +50 -0
  330. package/src/translations.ts +46 -5
  331. package/src/types/index.ts +6 -0
  332. package/src/types/schema.ts +29 -0
  333. package/src/types/types.ts +110 -0
  334. package/src/typings/peermetrics-webrtc-stats.d.ts +30 -0
  335. package/src/util.ts +12 -0
  336. package/dist/lib/browser/ChatContainer-IOOAQW6S.mjs +0 -138
  337. package/dist/lib/browser/ChatContainer-IOOAQW6S.mjs.map +0 -7
  338. package/dist/lib/browser/app-graph-builder-6W4UKJDI.mjs +0 -41
  339. package/dist/lib/browser/app-graph-builder-6W4UKJDI.mjs.map +0 -7
  340. package/dist/lib/browser/chunk-EP6MRLY7.mjs.map +0 -7
  341. package/dist/lib/browser/chunk-QDJ3Y6WF.mjs.map +0 -7
  342. package/dist/lib/browser/chunk-S5ZR4FYW.mjs +0 -17
  343. package/dist/lib/browser/chunk-S5ZR4FYW.mjs.map +0 -7
  344. package/dist/lib/browser/chunk-TFVPUPOO.mjs +0 -207
  345. package/dist/lib/browser/chunk-TFVPUPOO.mjs.map +0 -7
  346. package/dist/lib/browser/chunk-WBJLUUOK.mjs.map +0 -7
  347. package/dist/lib/browser/chunk-WOG72DWE.mjs +0 -93
  348. package/dist/lib/browser/chunk-WOG72DWE.mjs.map +0 -7
  349. package/dist/lib/browser/intent-resolver-QAY4FLLM.mjs.map +0 -7
  350. package/dist/lib/browser/markdown-7KXBXCUS.mjs +0 -111
  351. package/dist/lib/browser/markdown-7KXBXCUS.mjs.map +0 -7
  352. package/dist/lib/browser/react-surface-MT3OWULR.mjs +0 -437
  353. package/dist/lib/browser/react-surface-MT3OWULR.mjs.map +0 -7
  354. package/dist/lib/browser/settings-4FEC7EAX.mjs.map +0 -7
  355. package/dist/lib/browser/state-PNMSLKAH.mjs.map +0 -7
  356. package/dist/lib/browser/types.mjs +0 -10
  357. package/dist/lib/node/ChatContainer-4FNDRF3G.cjs +0 -163
  358. package/dist/lib/node/ChatContainer-4FNDRF3G.cjs.map +0 -7
  359. package/dist/lib/node/app-graph-builder-HZNWT4QU.cjs +0 -57
  360. package/dist/lib/node/app-graph-builder-HZNWT4QU.cjs.map +0 -7
  361. package/dist/lib/node/chunk-46BSFPBV.cjs +0 -113
  362. package/dist/lib/node/chunk-46BSFPBV.cjs.map +0 -7
  363. package/dist/lib/node/chunk-AKINTFBH.cjs.map +0 -7
  364. package/dist/lib/node/chunk-E7Z3BKRQ.cjs +0 -232
  365. package/dist/lib/node/chunk-E7Z3BKRQ.cjs.map +0 -7
  366. package/dist/lib/node/chunk-NQ5DTPOY.cjs.map +0 -7
  367. package/dist/lib/node/chunk-S2A6BXEA.cjs.map +0 -7
  368. package/dist/lib/node/intent-resolver-S6FE5OR7.cjs.map +0 -7
  369. package/dist/lib/node/markdown-L2WMCQKM.cjs +0 -121
  370. package/dist/lib/node/markdown-L2WMCQKM.cjs.map +0 -7
  371. package/dist/lib/node/react-surface-Z45BYECE.cjs +0 -439
  372. package/dist/lib/node/react-surface-Z45BYECE.cjs.map +0 -7
  373. package/dist/lib/node/settings-IXCPE55J.cjs.map +0 -7
  374. package/dist/lib/node/state-AT73KPGZ.cjs.map +0 -7
  375. package/dist/lib/node/types.cjs.map +0 -7
  376. package/dist/lib/node-esm/ChatContainer-NYLCL6QA.mjs +0 -139
  377. package/dist/lib/node-esm/ChatContainer-NYLCL6QA.mjs.map +0 -7
  378. package/dist/lib/node-esm/app-graph-builder-M3KK5QJH.mjs +0 -42
  379. package/dist/lib/node-esm/app-graph-builder-M3KK5QJH.mjs.map +0 -7
  380. package/dist/lib/node-esm/chunk-42F2DTMM.mjs.map +0 -7
  381. package/dist/lib/node-esm/chunk-ADTVMESP.mjs +0 -208
  382. package/dist/lib/node-esm/chunk-ADTVMESP.mjs.map +0 -7
  383. package/dist/lib/node-esm/chunk-E446MGLP.mjs +0 -94
  384. package/dist/lib/node-esm/chunk-E446MGLP.mjs.map +0 -7
  385. package/dist/lib/node-esm/chunk-J56FORYF.mjs.map +0 -7
  386. package/dist/lib/node-esm/chunk-WLY2HMDB.mjs.map +0 -7
  387. package/dist/lib/node-esm/chunk-WSE23GSG.mjs +0 -19
  388. package/dist/lib/node-esm/chunk-WSE23GSG.mjs.map +0 -7
  389. package/dist/lib/node-esm/intent-resolver-OURFRSSF.mjs.map +0 -7
  390. package/dist/lib/node-esm/markdown-ZKU23UVD.mjs +0 -112
  391. package/dist/lib/node-esm/markdown-ZKU23UVD.mjs.map +0 -7
  392. package/dist/lib/node-esm/react-surface-KIJ767JK.mjs +0 -438
  393. package/dist/lib/node-esm/react-surface-KIJ767JK.mjs.map +0 -7
  394. package/dist/lib/node-esm/settings-ZUJQ4LWI.mjs.map +0 -7
  395. package/dist/lib/node-esm/state-SSDX5O67.mjs.map +0 -7
  396. package/dist/lib/node-esm/types.mjs +0 -11
  397. package/dist/types/src/components/types.d.ts +0 -28
  398. package/dist/types/src/components/types.d.ts.map +0 -1
  399. package/dist/types/src/events.d.ts +0 -4
  400. package/dist/types/src/events.d.ts.map +0 -1
  401. package/dist/types/src/types.d.ts +0 -125
  402. package/dist/types/src/types.d.ts.map +0 -1
  403. package/src/components/types.ts +0 -32
  404. package/src/events.ts +0 -11
  405. package/src/types.ts +0 -100
  406. /package/dist/lib/browser/{types.mjs.map → ChannelContainer-XFNGSLHL.mjs.map} +0 -0
  407. /package/dist/lib/{node-esm/types.mjs.map → browser/ChatContainer-JWRI73OG.mjs.map} +0 -0
@@ -0,0 +1,371 @@
1
+ "use strict";
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __export = (target, all) => {
9
+ for (var name in all)
10
+ __defProp(target, name, { get: all[name], enumerable: true });
11
+ };
12
+ var __copyProps = (to, from, except, desc) => {
13
+ if (from && typeof from === "object" || typeof from === "function") {
14
+ for (let key of __getOwnPropNames(from))
15
+ if (!__hasOwnProp.call(to, key) && key !== except)
16
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
17
+ }
18
+ return to;
19
+ };
20
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
21
+ // If the importer is in node compatibility mode or this is not an ESM
22
+ // file that has been converted to a CommonJS file using a Babel-
23
+ // compatible transform (i.e. "__esModule" has not been set), then set
24
+ // "default" to the CommonJS "module.exports" for node compatibility.
25
+ isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
26
+ mod
27
+ ));
28
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
29
+ var chunk_4B3PPXA6_exports = {};
30
+ __export(chunk_4B3PPXA6_exports, {
31
+ ChatContainer: () => ChatContainer,
32
+ ChatContainer_default: () => ChatContainer_default,
33
+ ChatHeading: () => ChatHeading,
34
+ MessageContainer: () => MessageContainer,
35
+ command: () => command
36
+ });
37
+ module.exports = __toCommonJS(chunk_4B3PPXA6_exports);
38
+ var import_chunk_FUXJAVFZ = require("./chunk-FUXJAVFZ.cjs");
39
+ var import_chunk_LR5NENBE = require("./chunk-LR5NENBE.cjs");
40
+ var import_chunk_HLMCEE5K = require("./chunk-HLMCEE5K.cjs");
41
+ var import_tracking = require("@preact-signals/safe-react/tracking");
42
+ var import_react = __toESM(require("react"));
43
+ var import_live_object = require("@dxos/live-object");
44
+ var import_echo = require("@dxos/react-client/echo");
45
+ var import_halo = require("@dxos/react-client/halo");
46
+ var import_react_ui = require("@dxos/react-ui");
47
+ var import_react_ui_editor = require("@dxos/react-ui-editor");
48
+ var import_react_ui_stack = require("@dxos/react-ui-stack");
49
+ var import_react_ui_theme = require("@dxos/react-ui-theme");
50
+ var import_react_ui_thread = require("@dxos/react-ui-thread");
51
+ var import_schema = require("@dxos/schema");
52
+ var import_util = require("@dxos/util");
53
+ var import_tracking2 = require("@preact-signals/safe-react/tracking");
54
+ var import_view = require("@codemirror/view");
55
+ var import_react2 = require("@phosphor-icons/react");
56
+ var import_react3 = __toESM(require("react"));
57
+ var import_app_framework = require("@dxos/app-framework");
58
+ var import_live_object2 = require("@dxos/live-object");
59
+ var import_react_client = require("@dxos/react-client");
60
+ var import_halo2 = require("@dxos/react-client/halo");
61
+ var import_react_ui2 = require("@dxos/react-ui");
62
+ var import_react_ui_editor2 = require("@dxos/react-ui-editor");
63
+ var import_react_ui_theme2 = require("@dxos/react-ui-theme");
64
+ var import_react_ui_thread2 = require("@dxos/react-ui-thread");
65
+ var import_language = require("@codemirror/language");
66
+ var import_react_ui_editor3 = require("@dxos/react-ui-editor");
67
+ var import_react_ui_theme3 = require("@dxos/react-ui-theme");
68
+ var parser = import_language.StreamLanguage.define({
69
+ startState: () => ({
70
+ count: 0
71
+ }),
72
+ token: (stream, state) => {
73
+ state.count++;
74
+ if (stream.eatSpace()) {
75
+ return null;
76
+ }
77
+ if (state.count === 1 && stream.match(/^(\/\w+)/)) {
78
+ return "tagName";
79
+ }
80
+ stream.next();
81
+ return null;
82
+ }
83
+ });
84
+ var styles = import_language.HighlightStyle.define([
85
+ {
86
+ tag: import_react_ui_editor3.tags.tagName,
87
+ class: (0, import_react_ui_theme3.mx)("dx-tag dx-tag--indigo text-baseText font-medium")
88
+ }
89
+ ]);
90
+ var command = [
91
+ parser,
92
+ (0, import_language.syntaxHighlighting)(styles)
93
+ ];
94
+ var messageControlClassNames = [
95
+ "!p-1 !min-bs-0 transition-opacity",
96
+ import_react_ui_theme2.hoverableControlItem
97
+ ];
98
+ var MessageContainer = ({ message, members, editable = false, onDelete }) => {
99
+ var _effect = (0, import_tracking2.useSignals)();
100
+ try {
101
+ const senderIdentity = members.find((member) => message.sender.identityDid && member.identity.did === message.sender.identityDid || message.sender.identityKey && import_react_client.PublicKey.equals(member.identity.identityKey, message.sender.identityKey))?.identity;
102
+ const messageMetadata = (0, import_chunk_LR5NENBE.getMessageMetadata)(message.id, senderIdentity);
103
+ const userIsAuthor = (0, import_halo2.useIdentity)()?.did === messageMetadata.authorId;
104
+ const [editing, setEditing] = (0, import_react3.useState)(false);
105
+ const handleDelete = (0, import_react3.useCallback)(() => onDelete?.(message.id), [
106
+ message,
107
+ onDelete
108
+ ]);
109
+ const { t } = (0, import_react_ui2.useTranslation)(import_chunk_HLMCEE5K.THREAD_PLUGIN);
110
+ const editLabel = t(editing ? "save message label" : "edit message label");
111
+ const deleteLabel = t("delete message label");
112
+ const textBlock = message.blocks.find((block) => block.type === "text");
113
+ const references = message.blocks.filter((block) => block.type === "reference").map((block) => block.reference);
114
+ (0, import_chunk_FUXJAVFZ.useOnEditAnalytics)(message, textBlock, !!editing);
115
+ return /* @__PURE__ */ import_react3.default.createElement(import_react_ui_thread2.MessageRoot, {
116
+ ...messageMetadata,
117
+ classNames: [
118
+ import_react_ui_theme2.hoverableControls,
119
+ import_react_ui_theme2.hoverableFocusedWithinControls
120
+ ]
121
+ }, /* @__PURE__ */ import_react3.default.createElement(import_react_ui_thread2.MessageHeading, {
122
+ authorName: messageMetadata.authorName,
123
+ timestamp: messageMetadata.timestamp
124
+ }, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.ButtonGroup, {
125
+ classNames: "mie-1"
126
+ }, userIsAuthor && editable && /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Tooltip.Trigger, {
127
+ asChild: true,
128
+ content: editLabel
129
+ }, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Button, {
130
+ variant: "ghost",
131
+ "data-testid": editing ? "thread.message.save" : "thread.message.edit",
132
+ classNames: messageControlClassNames,
133
+ onClick: () => setEditing((editing2) => !editing2)
134
+ }, /* @__PURE__ */ import_react3.default.createElement("span", {
135
+ className: "sr-only"
136
+ }, editLabel), editing ? /* @__PURE__ */ import_react3.default.createElement(import_react2.Check, {
137
+ className: (0, import_react_ui_theme2.getSize)(4)
138
+ }) : /* @__PURE__ */ import_react3.default.createElement(import_react2.PencilSimple, {
139
+ className: (0, import_react_ui_theme2.getSize)(4)
140
+ }))), onDelete && /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Tooltip.Trigger, {
141
+ asChild: true,
142
+ content: deleteLabel
143
+ }, /* @__PURE__ */ import_react3.default.createElement(import_react_ui2.Button, {
144
+ variant: "ghost",
145
+ "data-testid": "thread.message.delete",
146
+ classNames: messageControlClassNames,
147
+ onClick: () => handleDelete()
148
+ }, /* @__PURE__ */ import_react3.default.createElement("span", {
149
+ className: "sr-only"
150
+ }, deleteLabel), /* @__PURE__ */ import_react3.default.createElement(import_react2.X, {
151
+ className: (0, import_react_ui_theme2.getSize)(4)
152
+ }))))), textBlock && /* @__PURE__ */ import_react3.default.createElement(TextboxBlock, {
153
+ block: textBlock,
154
+ isAuthor: userIsAuthor,
155
+ editing
156
+ }), import_live_object2.RefArray.targets(references).map((reference, index) => /* @__PURE__ */ import_react3.default.createElement(MessagePart, {
157
+ key: index,
158
+ part: reference
159
+ })));
160
+ } finally {
161
+ _effect.f();
162
+ }
163
+ };
164
+ var MessagePart = ({ part }) => {
165
+ var _effect = (0, import_tracking2.useSignals)();
166
+ try {
167
+ return /* @__PURE__ */ import_react3.default.createElement(MessageBlockObjectTile, {
168
+ subject: part
169
+ });
170
+ } finally {
171
+ _effect.f();
172
+ }
173
+ };
174
+ var TextboxBlock = ({ block, isAuthor, editing }) => {
175
+ var _effect = (0, import_tracking2.useSignals)();
176
+ try {
177
+ const { themeMode } = (0, import_react_ui2.useThemeContext)();
178
+ const inMemoryContentRef = (0, import_react3.useRef)(block.text);
179
+ const handleDocumentChange = (0, import_react3.useCallback)((newState) => {
180
+ inMemoryContentRef.current = newState;
181
+ }, []);
182
+ const saveDocumentChange = (0, import_react3.useCallback)(() => {
183
+ block.text = inMemoryContentRef.current;
184
+ }, [
185
+ block
186
+ ]);
187
+ (0, import_react_ui2.useOnTransition)(editing, true, false, saveDocumentChange);
188
+ const { parentRef, focusAttributes, view } = (0, import_react_ui_editor2.useTextEditor)(() => ({
189
+ initialValue: block.text,
190
+ extensions: [
191
+ (0, import_react_ui_editor2.createBasicExtensions)({
192
+ readOnly: !isAuthor || !editing
193
+ }),
194
+ (0, import_react_ui_editor2.createThemeExtensions)({
195
+ themeMode
196
+ }),
197
+ command,
198
+ import_view.EditorView.updateListener.of((update) => {
199
+ if (update.docChanged) {
200
+ handleDocumentChange(update.state.doc.toString());
201
+ }
202
+ })
203
+ ]
204
+ }), [
205
+ block.text,
206
+ editing,
207
+ isAuthor,
208
+ themeMode,
209
+ handleDocumentChange
210
+ ]);
211
+ (0, import_react3.useEffect)(() => {
212
+ editing && view?.focus();
213
+ }, [
214
+ editing,
215
+ view
216
+ ]);
217
+ return /* @__PURE__ */ import_react3.default.createElement("div", {
218
+ role: "none",
219
+ ref: parentRef,
220
+ className: "mie-4",
221
+ ...focusAttributes
222
+ });
223
+ } finally {
224
+ _effect.f();
225
+ }
226
+ };
227
+ var MessageBlockObjectTile = /* @__PURE__ */ (0, import_react3.forwardRef)(({ subject }, forwardedRef) => {
228
+ var _effect = (0, import_tracking2.useSignals)();
229
+ try {
230
+ let title = subject.name ?? subject.title ?? subject.type ?? "Object";
231
+ if (typeof title !== "string") {
232
+ title = title?.content ?? "";
233
+ }
234
+ return /* @__PURE__ */ import_react3.default.createElement("div", {
235
+ role: "group",
236
+ className: (0, import_react_ui_theme2.mx)("grid col-span-3 py-1 pr-4", import_react_ui_theme2.hoverableControls, import_react_ui_theme2.hoverableFocusedWithinControls),
237
+ ref: forwardedRef
238
+ }, /* @__PURE__ */ import_react3.default.createElement(import_app_framework.Surface, {
239
+ role: "card",
240
+ limit: 1,
241
+ data: {
242
+ subject
243
+ },
244
+ fallback: title
245
+ }));
246
+ } finally {
247
+ _effect.f();
248
+ }
249
+ });
250
+ var ChatHeading = ({ attendableId }) => {
251
+ var _effect = (0, import_tracking.useSignals)();
252
+ try {
253
+ const { t } = (0, import_react_ui.useTranslation)(import_chunk_HLMCEE5K.THREAD_PLUGIN);
254
+ return /* @__PURE__ */ import_react.default.createElement("div", {
255
+ role: "none",
256
+ className: "flex items-center"
257
+ }, /* @__PURE__ */ import_react.default.createElement(import_react_ui_stack.StackItem.SigilButton, {
258
+ attendableId
259
+ }, /* @__PURE__ */ import_react.default.createElement(import_react_ui.Icon, {
260
+ icon: "ph--chat--regular",
261
+ size: 5
262
+ })), /* @__PURE__ */ import_react.default.createElement(import_react_ui_stack.StackItem.HeadingLabel, {
263
+ attendableId
264
+ }, t("chat heading")));
265
+ } finally {
266
+ _effect.f();
267
+ }
268
+ };
269
+ var ChatContainer = ({ space, thread, context, current, autoFocusTextbox }) => {
270
+ var _effect = (0, import_tracking.useSignals)();
271
+ try {
272
+ const id = (0, import_echo.fullyQualifiedId)(thread);
273
+ const identity = (0, import_halo.useIdentity)();
274
+ const members = (0, import_echo.useMembers)(space?.key);
275
+ const activity = (0, import_chunk_FUXJAVFZ.useStatus)(space, id);
276
+ const { t } = (0, import_react_ui.useTranslation)(import_chunk_HLMCEE5K.THREAD_PLUGIN);
277
+ const [_count, _setCount] = (0, import_react.useState)(0);
278
+ const rerenderEditor = () => _setCount((count) => count + 1);
279
+ const [autoFocus, setAutoFocus] = (0, import_react.useState)(autoFocusTextbox);
280
+ const threadScrollRef = (0, import_react.useRef)(null);
281
+ const { themeMode } = (0, import_react_ui.useThemeContext)();
282
+ const textboxMetadata = (0, import_chunk_LR5NENBE.getMessageMetadata)(id, identity);
283
+ const messageRef = (0, import_react.useRef)("");
284
+ const extensions = (0, import_react.useMemo)(() => [
285
+ (0, import_react_ui_editor.createBasicExtensions)({
286
+ placeholder: t("message placeholder")
287
+ }),
288
+ (0, import_react_ui_editor.createThemeExtensions)({
289
+ themeMode
290
+ }),
291
+ (0, import_react_ui_editor.listener)({
292
+ onChange: (text) => messageRef.current = text
293
+ }),
294
+ command
295
+ ], [
296
+ themeMode,
297
+ _count
298
+ ]);
299
+ const scrollToEnd = (behavior) => setTimeout(() => threadScrollRef.current?.scrollIntoView({
300
+ behavior,
301
+ block: "end"
302
+ }), 10);
303
+ (0, import_react.useLayoutEffect)(() => {
304
+ scrollToEnd("instant");
305
+ }, []);
306
+ const handleCreate = () => {
307
+ if (!messageRef.current?.length) {
308
+ return false;
309
+ }
310
+ thread.messages.push((0, import_live_object.makeRef)((0, import_live_object.live)(import_schema.DataType.Message, {
311
+ sender: {
312
+ identityDid: identity.did
313
+ },
314
+ created: (/* @__PURE__ */ new Date()).toISOString(),
315
+ blocks: [
316
+ {
317
+ type: "text",
318
+ text: messageRef.current
319
+ }
320
+ ],
321
+ properties: context ? {
322
+ context: (0, import_live_object.makeRef)(context)
323
+ } : void 0
324
+ })));
325
+ messageRef.current = "";
326
+ setAutoFocus(true);
327
+ scrollToEnd("smooth");
328
+ rerenderEditor();
329
+ return true;
330
+ };
331
+ return /* @__PURE__ */ import_react.default.createElement(import_react_ui_thread.Thread, {
332
+ current,
333
+ id,
334
+ classNames: "bs-full grid-rows-[1fr_min-content_min-content] overflow-hidden transition-[padding-block-end] [[data-sidebar-inline-start-state=open]_&]:lg:pbe-0"
335
+ }, /* @__PURE__ */ import_react.default.createElement(import_react_ui.ScrollArea.Root, {
336
+ classNames: "col-span-2"
337
+ }, /* @__PURE__ */ import_react.default.createElement(import_react_ui.ScrollArea.Viewport, {
338
+ classNames: "overflow-anchored after:overflow-anchor after:block after:bs-px after:-mbs-px [&>div]:min-bs-full [&>div]:!grid [&>div]:grid-rows-[1fr_0]"
339
+ }, /* @__PURE__ */ import_react.default.createElement("div", {
340
+ role: "none",
341
+ className: (0, import_react_ui_theme.mx)(import_react_ui_thread.threadLayout, "place-self-end")
342
+ }, thread.messages.map((message) => message.target).filter(import_util.isNonNullable).map((message) => /* @__PURE__ */ import_react.default.createElement(MessageContainer, {
343
+ key: message.id,
344
+ message,
345
+ members
346
+ }))), /* @__PURE__ */ import_react.default.createElement("div", {
347
+ role: "none",
348
+ className: "bs-px -mbs-px",
349
+ ref: threadScrollRef
350
+ }), /* @__PURE__ */ import_react.default.createElement(import_react_ui.ScrollArea.Scrollbar, null, /* @__PURE__ */ import_react.default.createElement(import_react_ui.ScrollArea.Thumb, null)))), /* @__PURE__ */ import_react.default.createElement(import_react_ui_thread.MessageTextbox, {
351
+ extensions,
352
+ autoFocus,
353
+ onSend: handleCreate,
354
+ ...textboxMetadata
355
+ }), /* @__PURE__ */ import_react.default.createElement(import_react_ui_thread.ThreadFooter, {
356
+ activity
357
+ }, t("activity message")));
358
+ } finally {
359
+ _effect.f();
360
+ }
361
+ };
362
+ var ChatContainer_default = ChatContainer;
363
+ // Annotate the CommonJS export names for ESM import in node:
364
+ 0 && (module.exports = {
365
+ ChatContainer,
366
+ ChatContainer_default,
367
+ ChatHeading,
368
+ MessageContainer,
369
+ command
370
+ });
371
+ //# sourceMappingURL=chunk-4B3PPXA6.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/components/ChatContainer.tsx", "../../../src/components/MessageContainer.tsx", "../../../src/components/command-extension.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useLayoutEffect, useMemo, useRef, useState } from 'react';\n\nimport { live, makeRef } from '@dxos/live-object';\nimport { type AnyLiveObject, fullyQualifiedId, type Space, useMembers } from '@dxos/react-client/echo';\nimport { useIdentity } from '@dxos/react-client/halo';\nimport { Icon, ScrollArea, useThemeContext, useTranslation } from '@dxos/react-ui';\nimport { createBasicExtensions, createThemeExtensions, listener } from '@dxos/react-ui-editor';\nimport { StackItem } from '@dxos/react-ui-stack';\nimport { mx } from '@dxos/react-ui-theme';\nimport {\n MessageTextbox,\n type MessageTextboxProps,\n Thread,\n ThreadFooter,\n threadLayout,\n type ThreadProps,\n} from '@dxos/react-ui-thread';\nimport { DataType } from '@dxos/schema';\nimport { isNonNullable } from '@dxos/util';\n\nimport { MessageContainer } from './MessageContainer';\nimport { command } from './command-extension';\nimport { useStatus } from '../hooks';\nimport { THREAD_PLUGIN } from '../meta';\nimport { type ThreadType } from '../types';\nimport { getMessageMetadata } from '../util';\n\nexport const ChatHeading = ({ attendableId }: { attendableId?: string }) => {\n const { t } = useTranslation(THREAD_PLUGIN);\n return (\n <div role='none' className='flex items-center'>\n <StackItem.SigilButton attendableId={attendableId}>\n <Icon icon='ph--chat--regular' size={5} />\n </StackItem.SigilButton>\n <StackItem.HeadingLabel attendableId={attendableId}>{t('chat heading')}</StackItem.HeadingLabel>\n </div>\n );\n};\n\nexport type ChatContainerProps = {\n space: Space;\n thread: ThreadType;\n context?: AnyLiveObject<any>;\n autoFocusTextbox?: boolean;\n} & Pick<ThreadProps, 'current'>;\n\nexport const ChatContainer = ({ space, thread, context, current, autoFocusTextbox }: ChatContainerProps) => {\n const id = fullyQualifiedId(thread);\n const identity = useIdentity()!;\n const members = useMembers(space?.key);\n const activity = useStatus(space, id);\n const { t } = useTranslation(THREAD_PLUGIN);\n // TODO(wittjosiah): This is a hack to reset the editor after a message is sent.\n const [_count, _setCount] = useState(0);\n const rerenderEditor = () => _setCount((count) => count + 1);\n const [autoFocus, setAutoFocus] = useState(autoFocusTextbox);\n const threadScrollRef = useRef<HTMLDivElement | null>(null);\n const { themeMode } = useThemeContext();\n\n const textboxMetadata = getMessageMetadata(id, identity);\n const messageRef = useRef('');\n const extensions = useMemo(\n () => [\n createBasicExtensions({ placeholder: t('message placeholder') }),\n createThemeExtensions({ themeMode }),\n listener({ onChange: (text) => (messageRef.current = text) }),\n command,\n ],\n [themeMode, _count],\n );\n\n // TODO(thure): Factor out.\n // TODO(thure): `flex-col-reverse` does not work to start the container scrolled to the end while also using\n // `ScrollArea`. This is the least-bad way I found to scroll to the end on mount. Note that 0ms was insufficient\n // for the desired effect; this is likely hardware-dependent and should be reevaluated.\n const scrollToEnd = (behavior: ScrollBehavior) =>\n setTimeout(() => threadScrollRef.current?.scrollIntoView({ behavior, block: 'end' }), 10);\n\n useLayoutEffect(() => {\n scrollToEnd('instant');\n }, []);\n\n // TODO(burdon): Change to model.\n const handleCreate: MessageTextboxProps['onSend'] = () => {\n if (!messageRef.current?.length) {\n return false;\n }\n\n thread.messages.push(\n makeRef(\n live(DataType.Message, {\n sender: { identityDid: identity.did },\n created: new Date().toISOString(),\n blocks: [{ type: 'text', text: messageRef.current }],\n properties: context ? { context: makeRef(context) } : undefined,\n }),\n ),\n );\n\n messageRef.current = '';\n setAutoFocus(true);\n scrollToEnd('smooth');\n rerenderEditor();\n return true;\n };\n\n return (\n <Thread\n current={current}\n id={id}\n classNames='bs-full grid-rows-[1fr_min-content_min-content] overflow-hidden transition-[padding-block-end] [[data-sidebar-inline-start-state=open]_&]:lg:pbe-0'\n >\n <ScrollArea.Root classNames='col-span-2'>\n <ScrollArea.Viewport classNames='overflow-anchored after:overflow-anchor after:block after:bs-px after:-mbs-px [&>div]:min-bs-full [&>div]:!grid [&>div]:grid-rows-[1fr_0]'>\n <div role='none' className={mx(threadLayout, 'place-self-end')}>\n {thread.messages\n .map((message) => message.target)\n .filter(isNonNullable)\n .map((message) => (\n <MessageContainer key={message.id} message={message} members={members} />\n ))}\n </div>\n {/* NOTE(thure): This can’t also be the `overflow-anchor` because `ScrollArea` injects an interceding node that contains this necessary ref’d element. */}\n <div role='none' className='bs-px -mbs-px' ref={threadScrollRef} />\n <ScrollArea.Scrollbar>\n <ScrollArea.Thumb />\n </ScrollArea.Scrollbar>\n </ScrollArea.Viewport>\n </ScrollArea.Root>\n <MessageTextbox extensions={extensions} autoFocus={autoFocus} onSend={handleCreate} {...textboxMetadata} />\n <ThreadFooter activity={activity}>{t('activity message')}</ThreadFooter>\n </Thread>\n );\n};\n\nexport default ChatContainer;\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { EditorView } from '@codemirror/view';\nimport { Check, PencilSimple, X } from '@phosphor-icons/react';\nimport React, { forwardRef, useCallback, useEffect, useRef, useState } from 'react';\n\nimport { Surface } from '@dxos/app-framework';\nimport { RefArray } from '@dxos/live-object';\nimport { PublicKey } from '@dxos/react-client';\nimport { type AnyLiveObject, type Expando, type SpaceMember } from '@dxos/react-client/echo';\nimport { useIdentity, type Identity } from '@dxos/react-client/halo';\nimport { Button, ButtonGroup, Tooltip, useOnTransition, useThemeContext, useTranslation } from '@dxos/react-ui';\nimport { createBasicExtensions, createThemeExtensions, useTextEditor } from '@dxos/react-ui-editor';\nimport {\n getSize,\n hoverableControlItem,\n hoverableControls,\n hoverableFocusedWithinControls,\n mx,\n} from '@dxos/react-ui-theme';\nimport { MessageHeading, MessageRoot } from '@dxos/react-ui-thread';\nimport { type DataType } from '@dxos/schema';\n\nimport { command } from './command-extension';\nimport { useOnEditAnalytics } from '../hooks';\nimport { THREAD_PLUGIN } from '../meta';\nimport { getMessageMetadata } from '../util';\n\n// TODO(thure): #8149\nconst messageControlClassNames = ['!p-1 !min-bs-0 transition-opacity', hoverableControlItem];\n\nexport type MessageContainerProps = {\n message: DataType.Message;\n members: SpaceMember[];\n editable?: boolean;\n onDelete?: (id: string) => void;\n};\n\nexport const MessageContainer = ({ message, members, editable = false, onDelete }: MessageContainerProps) => {\n const senderIdentity = members.find(\n (member) =>\n (message.sender.identityDid && member.identity.did === message.sender.identityDid) ||\n (message.sender.identityKey && PublicKey.equals(member.identity.identityKey, message.sender.identityKey)),\n )?.identity;\n const messageMetadata = getMessageMetadata(message.id, senderIdentity);\n const userIsAuthor = useIdentity()?.did === messageMetadata.authorId;\n const [editing, setEditing] = useState(false);\n const handleDelete = useCallback(() => onDelete?.(message.id), [message, onDelete]);\n const { t } = useTranslation(THREAD_PLUGIN);\n const editLabel = t(editing ? 'save message label' : 'edit message label');\n const deleteLabel = t('delete message label');\n const textBlock = message.blocks.find((block) => block.type === 'text');\n const references = message.blocks.filter((block) => block.type === 'reference').map((block) => block.reference);\n\n useOnEditAnalytics(message, textBlock, !!editing);\n\n return (\n <MessageRoot {...messageMetadata} classNames={[hoverableControls, hoverableFocusedWithinControls]}>\n <MessageHeading authorName={messageMetadata.authorName} timestamp={messageMetadata.timestamp}>\n <ButtonGroup classNames='mie-1'>\n {userIsAuthor && editable && (\n <Tooltip.Trigger asChild content={editLabel}>\n <Button\n variant='ghost'\n data-testid={editing ? 'thread.message.save' : 'thread.message.edit'}\n classNames={messageControlClassNames}\n onClick={() => setEditing((editing) => !editing)}\n >\n <span className='sr-only'>{editLabel}</span>\n {editing ? <Check className={getSize(4)} /> : <PencilSimple className={getSize(4)} />}\n </Button>\n </Tooltip.Trigger>\n )}\n {onDelete && (\n <Tooltip.Trigger asChild content={deleteLabel}>\n <Button\n variant='ghost'\n data-testid='thread.message.delete'\n classNames={messageControlClassNames}\n onClick={() => handleDelete()}\n >\n <span className='sr-only'>{deleteLabel}</span>\n <X className={getSize(4)} />\n </Button>\n </Tooltip.Trigger>\n )}\n </ButtonGroup>\n </MessageHeading>\n {textBlock && <TextboxBlock block={textBlock} isAuthor={userIsAuthor} editing={editing} />}\n {RefArray.targets(references).map((reference, index) => (\n <MessagePart key={index} part={reference} />\n ))}\n </MessageRoot>\n );\n};\n\nconst MessagePart = ({ part }: { part: Expando }) => {\n return <MessageBlockObjectTile subject={part} />;\n};\n\nconst TextboxBlock = ({\n block,\n isAuthor,\n editing,\n}: {\n block: DataType.MessageBlock.Text;\n editing?: boolean;\n isAuthor?: boolean;\n identity?: Identity;\n}) => {\n const { themeMode } = useThemeContext();\n const inMemoryContentRef = useRef(block.text);\n\n const handleDocumentChange = useCallback((newState: string) => {\n inMemoryContentRef.current = newState;\n }, []);\n\n const saveDocumentChange = useCallback(() => {\n block.text = inMemoryContentRef.current;\n }, [block]);\n\n useOnTransition(editing, true, false, saveDocumentChange);\n\n const { parentRef, focusAttributes, view } = useTextEditor(\n () => ({\n initialValue: block.text,\n extensions: [\n createBasicExtensions({ readOnly: !isAuthor || !editing }),\n createThemeExtensions({ themeMode }),\n command,\n EditorView.updateListener.of((update) => {\n if (update.docChanged) {\n handleDocumentChange(update.state.doc.toString());\n }\n }),\n ],\n }),\n [block.text, editing, isAuthor, themeMode, handleDocumentChange],\n );\n\n useEffect(() => {\n editing && view?.focus();\n }, [editing, view]);\n\n return <div role='none' ref={parentRef} className='mie-4' {...focusAttributes} />;\n};\n\nconst MessageBlockObjectTile = forwardRef<HTMLDivElement, { subject: AnyLiveObject<any> }>(\n ({ subject }, forwardedRef) => {\n let title = subject.name ?? subject.title ?? subject.type ?? 'Object';\n if (typeof title !== 'string') {\n title = title?.content ?? '';\n }\n\n return (\n <div\n role='group'\n className={mx('grid col-span-3 py-1 pr-4', hoverableControls, hoverableFocusedWithinControls)}\n ref={forwardedRef}\n >\n <Surface role='card' limit={1} data={{ subject }} fallback={title} />\n </div>\n );\n },\n);\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport { StreamLanguage, HighlightStyle, syntaxHighlighting } from '@codemirror/language';\nimport { type Extension } from '@codemirror/state';\n\nimport { tags } from '@dxos/react-ui-editor';\nimport { mx } from '@dxos/react-ui-theme';\n\n/**\n * https://github.com/codemirror/stream-parser/blob/main/test/test-stream-parser.ts\n */\nconst parser = StreamLanguage.define<{ count: number }>({\n startState: () => ({ count: 0 }),\n token: (stream, state) => {\n state.count++;\n if (stream.eatSpace()) {\n return null;\n }\n if (state.count === 1 && stream.match(/^(\\/\\w+)/)) {\n return 'tagName';\n }\n stream.next();\n return null;\n },\n});\n\nconst styles = HighlightStyle.define([\n { tag: tags.tagName, class: mx('dx-tag dx-tag--indigo text-baseText font-medium') },\n]);\n\nexport const command: Extension = [parser, syntaxHighlighting(styles)];\n"],
5
+ "mappings": "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",
6
+ "names": ["import_react", "import_live_object", "import_halo", "import_react_ui", "import_react_ui_editor", "import_react_ui_theme", "import_react_ui_thread", "parser", "StreamLanguage", "define", "startState", "count", "token", "stream", "state", "eatSpace", "match", "next", "styles", "HighlightStyle", "tag", "tags", "tagName", "class", "mx", "command", "syntaxHighlighting", "messageControlClassNames", "hoverableControlItem", "MessageContainer", "message", "members", "editable", "onDelete", "senderIdentity", "find", "member", "sender", "identityDid", "identity", "did", "identityKey", "PublicKey", "equals", "messageMetadata", "getMessageMetadata", "id", "userIsAuthor", "useIdentity", "authorId", "editing", "setEditing", "useState", "handleDelete", "useCallback", "t", "useTranslation", "THREAD_PLUGIN", "editLabel", "deleteLabel", "textBlock", "blocks", "block", "type", "references", "filter", "map", "reference", "useOnEditAnalytics", "React", "MessageRoot", "classNames", "hoverableControls", "hoverableFocusedWithinControls", "MessageHeading", "authorName", "timestamp", "ButtonGroup", "Tooltip", "Trigger", "asChild", "content", "Button", "variant", "data-testid", "onClick", "span", "className", "Check", "getSize", "PencilSimple", "X", "TextboxBlock", "isAuthor", "RefArray", "targets", "index", "MessagePart", "key", "part", "MessageBlockObjectTile", "subject", "themeMode", "useThemeContext", "inMemoryContentRef", "useRef", "text", "handleDocumentChange", "newState", "current", "saveDocumentChange", "useOnTransition", "parentRef", "focusAttributes", "view", "useTextEditor", "initialValue", "extensions", "createBasicExtensions", "readOnly", "createThemeExtensions", "EditorView", "updateListener", "of", "update", "docChanged", "doc", "toString", "useEffect", "focus", "div", "role", "ref", "forwardRef", "forwardedRef", "title", "name", "Surface", "limit", "data", "fallback", "ChatHeading", "attendableId", "StackItem", "SigilButton", "Icon", "icon", "size", "HeadingLabel", "ChatContainer", "space", "thread", "context", "autoFocusTextbox", "fullyQualifiedId", "useMembers", "activity", "useStatus", "_count", "_setCount", "rerenderEditor", "autoFocus", "setAutoFocus", "threadScrollRef", "textboxMetadata", "messageRef", "useMemo", "placeholder", "listener", "onChange", "scrollToEnd", "behavior", "setTimeout", "scrollIntoView", "useLayoutEffect", "handleCreate", "length", "messages", "push", "makeRef", "live", "DataType", "Message", "created", "Date", "toISOString", "properties", "undefined", "Thread", "ScrollArea", "Root", "Viewport", "threadLayout", "target", "isNonNullable", "Scrollbar", "Thumb", "MessageTextbox", "onSend", "ThreadFooter"]
7
+ }
@@ -16,20 +16,22 @@ var __copyProps = (to, from, except, desc) => {
16
16
  return to;
17
17
  };
18
18
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var chunk_NQ5DTPOY_exports = {};
20
- __export(chunk_NQ5DTPOY_exports, {
19
+ var chunk_4YSNVPWU_exports = {};
20
+ __export(chunk_4YSNVPWU_exports, {
21
21
  ThreadCapabilities: () => ThreadCapabilities
22
22
  });
23
- module.exports = __toCommonJS(chunk_NQ5DTPOY_exports);
24
- var import_chunk_ONLWOUYZ = require("./chunk-ONLWOUYZ.cjs");
23
+ module.exports = __toCommonJS(chunk_4YSNVPWU_exports);
24
+ var import_chunk_HLMCEE5K = require("./chunk-HLMCEE5K.cjs");
25
25
  var import_app_framework = require("@dxos/app-framework");
26
- var ThreadCapabilities;
27
26
  (function(ThreadCapabilities2) {
28
- ThreadCapabilities2.State = (0, import_app_framework.defineCapability)(`${import_chunk_ONLWOUYZ.THREAD_PLUGIN}/capability/state`);
29
- ThreadCapabilities2.MutableState = (0, import_app_framework.defineCapability)(`${import_chunk_ONLWOUYZ.THREAD_PLUGIN}/capability/state`);
27
+ ThreadCapabilities2.CallManager = (0, import_app_framework.defineCapability)(`${import_chunk_HLMCEE5K.THREAD_PLUGIN}/capability/call-manager`);
28
+ ThreadCapabilities2.CallExtension = (0, import_app_framework.defineCapability)(`${import_chunk_HLMCEE5K.THREAD_PLUGIN}/capability/call-extension`);
29
+ ThreadCapabilities2.State = (0, import_app_framework.defineCapability)(`${import_chunk_HLMCEE5K.THREAD_PLUGIN}/capability/state`);
30
+ ThreadCapabilities2.MutableState = (0, import_app_framework.defineCapability)(`${import_chunk_HLMCEE5K.THREAD_PLUGIN}/capability/state`);
30
31
  })(ThreadCapabilities || (ThreadCapabilities = {}));
32
+ var ThreadCapabilities;
31
33
  // Annotate the CommonJS export names for ESM import in node:
32
34
  0 && (module.exports = {
33
35
  ThreadCapabilities
34
36
  });
35
- //# sourceMappingURL=chunk-NQ5DTPOY.cjs.map
37
+ //# sourceMappingURL=chunk-4YSNVPWU.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/capabilities.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { defineCapability } from '@dxos/app-framework';\nimport { type DeepReadonly } from '@dxos/util';\n\nimport { type CallState, type MediaState, type CallManager } from '../calls';\nimport { THREAD_PLUGIN } from '../meta';\nimport { type ViewState, type ThreadState, type ChannelType } from '../types';\n\nexport namespace ThreadCapabilities {\n export const CallManager = defineCapability<CallManager>(`${THREAD_PLUGIN}/capability/call-manager`);\n\n // TODO(burdon): Better way to define specific extensions for meeting companions.\n // TODO(burdon): This brings in deps from ../calls; how should we manage/minimize explicit type exposure to other plugins?\n // TODO(wittjosiah): These callbacks could be intents once we support broadcast.\n export type CallProperties = {\n onJoin: (state: { channel?: ChannelType; roomId?: string }) => Promise<void>;\n onLeave: (roomId?: string) => Promise<void>;\n onCallStateUpdated: (callState: CallState) => Promise<void>;\n onMediaStateUpdated: ([mediaState, isSpeaking]: [MediaState, boolean]) => Promise<void>;\n };\n export const CallExtension = defineCapability<CallProperties>(`${THREAD_PLUGIN}/capability/call-extension`);\n\n type GetViewState = (subjectId: string) => ViewState;\n export const State = defineCapability<{ state: DeepReadonly<ThreadState>; getViewState: GetViewState }>(\n `${THREAD_PLUGIN}/capability/state`,\n );\n export const MutableState = defineCapability<{ state: ThreadState; getViewState: GetViewState }>(\n `${THREAD_PLUGIN}/capability/state`,\n );\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;AAIA,2BAAiC;UAOhBA,qBAAAA;sBACFC,kBAAcC,uCAA8B,GAAGC,mCAAAA,0BAAuC;sBAWtFC,oBAAgBF,uCAAiC,GAAGC,mCAAAA,4BAAyC;sBAG7FE,YAAQH,uCACnB,GAAGC,mCAAAA,mBAAgC;sBAExBG,mBAAeJ,uCAC1B,GAAGC,mCAAAA,mBAAgC;AAEvC,GArBiBH,uBAAAA,qBAAAA,CAAAA,EAAAA;;",
6
+ "names": ["ThreadCapabilities", "CallManager", "defineCapability", "THREAD_PLUGIN", "CallExtension", "State", "MutableState"]
7
+ }