@dxos/plugin-thread 0.8.2-main.fbd8ed0 → 0.8.2-staging.42af850

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 (385) hide show
  1. package/dist/lib/browser/ChannelContainer-LGYSQMC7.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-APQAZWHT.mjs +23 -0
  6. package/dist/lib/browser/call-manager-APQAZWHT.mjs.map +7 -0
  7. package/dist/lib/browser/chunk-4H4A264L.mjs +1708 -0
  8. package/dist/lib/browser/chunk-4H4A264L.mjs.map +7 -0
  9. package/dist/lib/browser/{chunk-32EIWOAL.mjs → chunk-5P5BH5GE.mjs} +57 -35
  10. package/dist/lib/browser/chunk-5P5BH5GE.mjs.map +7 -0
  11. package/dist/lib/browser/chunk-5PGLGDIP.mjs +983 -0
  12. package/dist/lib/browser/chunk-5PGLGDIP.mjs.map +7 -0
  13. package/dist/lib/browser/chunk-CF2MXRCH.mjs +21 -0
  14. package/dist/lib/browser/chunk-CF2MXRCH.mjs.map +7 -0
  15. package/dist/lib/browser/chunk-G3TS64FP.mjs +351 -0
  16. package/dist/lib/browser/chunk-G3TS64FP.mjs.map +7 -0
  17. package/dist/lib/browser/{chunk-WBJLUUOK.mjs → chunk-IIUTBDVB.mjs} +4 -4
  18. package/dist/lib/browser/chunk-IIUTBDVB.mjs.map +7 -0
  19. package/dist/lib/browser/chunk-JKQUJOTX.mjs +31 -0
  20. package/dist/lib/browser/chunk-JKQUJOTX.mjs.map +7 -0
  21. package/dist/lib/browser/chunk-KMVGJG23.mjs +545 -0
  22. package/dist/lib/browser/chunk-KMVGJG23.mjs.map +7 -0
  23. package/dist/lib/browser/{chunk-EP6MRLY7.mjs → chunk-R5MDLUPC.mjs} +5 -3
  24. package/dist/lib/browser/chunk-R5MDLUPC.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 +101 -35
  28. package/dist/lib/browser/index.mjs.map +4 -4
  29. package/dist/lib/browser/{intent-resolver-PDOLX5B7.mjs → intent-resolver-YUYZCTLF.mjs} +95 -62
  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-EECCWHCW.mjs +27 -0
  35. package/dist/lib/browser/react-root-EECCWHCW.mjs.map +7 -0
  36. package/dist/lib/browser/react-surface-5QLZAFDL.mjs +108 -0
  37. package/dist/lib/browser/react-surface-5QLZAFDL.mjs.map +7 -0
  38. package/dist/lib/browser/{settings-K56QXNJ4.mjs → settings-KVBQQSO5.mjs} +3 -3
  39. package/dist/lib/browser/{state-KBGI3QTR.mjs → state-RKL5MSDP.mjs} +4 -4
  40. package/dist/lib/browser/{state-KBGI3QTR.mjs.map → state-RKL5MSDP.mjs.map} +3 -3
  41. package/dist/lib/browser/types/index.mjs +16 -0
  42. package/dist/lib/browser/types/index.mjs.map +7 -0
  43. package/dist/lib/node/ChannelContainer-5EKNEH56.cjs +36 -0
  44. package/dist/lib/node/ChannelContainer-5EKNEH56.cjs.map +7 -0
  45. package/dist/lib/node/ChatContainer-EE3FPSYO.cjs +35 -0
  46. package/dist/lib/node/ChatContainer-EE3FPSYO.cjs.map +7 -0
  47. package/dist/lib/node/app-graph-builder-IRE3GYKE.cjs +179 -0
  48. package/dist/lib/node/app-graph-builder-IRE3GYKE.cjs.map +7 -0
  49. package/dist/lib/node/call-manager-HV2XJW5O.cjs +37 -0
  50. package/dist/lib/node/call-manager-HV2XJW5O.cjs.map +7 -0
  51. package/dist/lib/node/chunk-44I33JDT.cjs +1731 -0
  52. package/dist/lib/node/chunk-44I33JDT.cjs.map +7 -0
  53. package/dist/lib/node/chunk-4B3PPXA6.cjs +371 -0
  54. package/dist/lib/node/chunk-4B3PPXA6.cjs.map +7 -0
  55. package/dist/lib/node/{chunk-NQ5DTPOY.cjs → chunk-4YSNVPWU.cjs} +10 -8
  56. package/dist/lib/node/chunk-4YSNVPWU.cjs.map +7 -0
  57. package/dist/lib/node/chunk-6B3M6XRE.cjs +984 -0
  58. package/dist/lib/node/chunk-6B3M6XRE.cjs.map +7 -0
  59. package/dist/lib/node/{chunk-NO6WQR36.cjs → chunk-FUXJAVFZ.cjs} +50 -29
  60. package/dist/lib/node/chunk-FUXJAVFZ.cjs.map +7 -0
  61. package/dist/lib/node/{chunk-ONLWOUYZ.cjs → chunk-HLMCEE5K.cjs} +7 -7
  62. package/dist/lib/node/{chunk-ONLWOUYZ.cjs.map → chunk-HLMCEE5K.cjs.map} +2 -2
  63. package/dist/lib/node/chunk-JLHENFGK.cjs +549 -0
  64. package/dist/lib/node/chunk-JLHENFGK.cjs.map +7 -0
  65. package/dist/lib/node/chunk-LR5NENBE.cjs +54 -0
  66. package/dist/lib/node/chunk-LR5NENBE.cjs.map +7 -0
  67. package/dist/lib/node/chunk-TKHJVC2C.cjs +147 -0
  68. package/dist/lib/node/chunk-TKHJVC2C.cjs.map +7 -0
  69. package/dist/lib/node/{chunk-AZ275P4V.cjs → chunk-U7NOIXN6.cjs} +16 -10
  70. package/dist/lib/node/chunk-U7NOIXN6.cjs.map +7 -0
  71. package/dist/lib/node/index.cjs +136 -74
  72. package/dist/lib/node/index.cjs.map +4 -4
  73. package/dist/lib/node/{intent-resolver-MNTL32W2.cjs → intent-resolver-MZ3HADNY.cjs} +107 -76
  74. package/dist/lib/node/intent-resolver-MZ3HADNY.cjs.map +7 -0
  75. package/dist/lib/node/markdown-NJDPXIKD.cjs +178 -0
  76. package/dist/lib/node/markdown-NJDPXIKD.cjs.map +7 -0
  77. package/dist/lib/node/meta.json +1 -1
  78. package/dist/lib/node/react-root-IAYQ2DBO.cjs +51 -0
  79. package/dist/lib/node/react-root-IAYQ2DBO.cjs.map +7 -0
  80. package/dist/lib/node/react-surface-AVC5VVIS.cjs +122 -0
  81. package/dist/lib/node/react-surface-AVC5VVIS.cjs.map +7 -0
  82. package/dist/lib/node/{settings-4WLSO726.cjs → settings-H45P5YO2.cjs} +8 -8
  83. package/dist/lib/node/{state-FOHMAVSU.cjs → state-IY5XX3H2.cjs} +8 -8
  84. package/dist/lib/node/{state-FOHMAVSU.cjs.map → state-IY5XX3H2.cjs.map} +3 -3
  85. package/dist/lib/node/{types.cjs → types/index.cjs} +12 -6
  86. package/dist/lib/node/types/index.cjs.map +7 -0
  87. package/dist/lib/node-esm/ChannelContainer-KFS2RWWW.mjs +16 -0
  88. package/dist/lib/node-esm/ChannelContainer-KFS2RWWW.mjs.map +7 -0
  89. package/dist/lib/node-esm/ChatContainer-UJYPQMLV.mjs +15 -0
  90. package/dist/lib/node-esm/ChatContainer-UJYPQMLV.mjs.map +7 -0
  91. package/dist/lib/node-esm/app-graph-builder-I5VMPLE4.mjs +172 -0
  92. package/dist/lib/node-esm/app-graph-builder-I5VMPLE4.mjs.map +7 -0
  93. package/dist/lib/node-esm/call-manager-UUYXLF4T.mjs +24 -0
  94. package/dist/lib/node-esm/call-manager-UUYXLF4T.mjs.map +7 -0
  95. package/dist/lib/node-esm/{chunk-42F2DTMM.mjs → chunk-ESQC6SYE.mjs} +4 -4
  96. package/dist/lib/node-esm/chunk-ESQC6SYE.mjs.map +7 -0
  97. package/dist/lib/node-esm/chunk-J323VQ4P.mjs +127 -0
  98. package/dist/lib/node-esm/chunk-J323VQ4P.mjs.map +7 -0
  99. package/dist/lib/node-esm/{chunk-WLY2HMDB.mjs → chunk-K4KAUOKT.mjs} +5 -3
  100. package/dist/lib/node-esm/chunk-K4KAUOKT.mjs.map +7 -0
  101. package/dist/lib/node-esm/chunk-MNJ3V4XM.mjs +546 -0
  102. package/dist/lib/node-esm/chunk-MNJ3V4XM.mjs.map +7 -0
  103. package/dist/lib/node-esm/{chunk-IZWN4KAY.mjs → chunk-O3V45YJP.mjs} +57 -35
  104. package/dist/lib/node-esm/chunk-O3V45YJP.mjs.map +7 -0
  105. package/dist/lib/node-esm/chunk-ODUB4GAB.mjs +23 -0
  106. package/dist/lib/node-esm/chunk-ODUB4GAB.mjs.map +7 -0
  107. package/dist/lib/node-esm/chunk-PGRP3O4O.mjs +33 -0
  108. package/dist/lib/node-esm/chunk-PGRP3O4O.mjs.map +7 -0
  109. package/dist/lib/node-esm/chunk-POKXRTII.mjs +352 -0
  110. package/dist/lib/node-esm/chunk-POKXRTII.mjs.map +7 -0
  111. package/dist/lib/node-esm/chunk-WXNPD542.mjs +1710 -0
  112. package/dist/lib/node-esm/chunk-WXNPD542.mjs.map +7 -0
  113. package/dist/lib/node-esm/chunk-X6AUQDTE.mjs +984 -0
  114. package/dist/lib/node-esm/chunk-X6AUQDTE.mjs.map +7 -0
  115. package/dist/lib/node-esm/index.mjs +101 -35
  116. package/dist/lib/node-esm/index.mjs.map +4 -4
  117. package/dist/lib/node-esm/{intent-resolver-X2FNKFSK.mjs → intent-resolver-CU22OPAH.mjs} +95 -62
  118. package/dist/lib/node-esm/intent-resolver-CU22OPAH.mjs.map +7 -0
  119. package/dist/lib/node-esm/markdown-HRGGO7IA.mjs +170 -0
  120. package/dist/lib/node-esm/markdown-HRGGO7IA.mjs.map +7 -0
  121. package/dist/lib/node-esm/meta.json +1 -1
  122. package/dist/lib/node-esm/react-root-NQMUEI6Z.mjs +28 -0
  123. package/dist/lib/node-esm/react-root-NQMUEI6Z.mjs.map +7 -0
  124. package/dist/lib/node-esm/react-surface-Z4X5VLMY.mjs +109 -0
  125. package/dist/lib/node-esm/react-surface-Z4X5VLMY.mjs.map +7 -0
  126. package/dist/lib/node-esm/{settings-5UA6FBMW.mjs → settings-IJGUOU3F.mjs} +3 -3
  127. package/dist/lib/node-esm/{state-IRLEO2SB.mjs → state-6AUTNROZ.mjs} +4 -4
  128. package/dist/lib/node-esm/{state-IRLEO2SB.mjs.map → state-6AUTNROZ.mjs.map} +3 -3
  129. package/dist/lib/node-esm/types/index.mjs +17 -0
  130. package/dist/lib/node-esm/types/index.mjs.map +7 -0
  131. package/dist/types/src/ThreadPlugin.d.ts.map +1 -1
  132. package/dist/types/src/calls/call-manager.d.ts +77 -0
  133. package/dist/types/src/calls/call-manager.d.ts.map +1 -0
  134. package/dist/types/src/calls/call-swarm-synchronizer.d.ts +66 -0
  135. package/dist/types/src/calls/call-swarm-synchronizer.d.ts.map +1 -0
  136. package/dist/types/src/calls/index.d.ts +7 -0
  137. package/dist/types/src/calls/index.d.ts.map +1 -0
  138. package/dist/types/src/calls/media-manager.d.ts +60 -0
  139. package/dist/types/src/calls/media-manager.d.ts.map +1 -0
  140. package/dist/types/src/calls/speaking-monitor.d.ts +24 -0
  141. package/dist/types/src/calls/speaking-monitor.d.ts.map +1 -0
  142. package/dist/types/src/calls/types.d.ts +45 -0
  143. package/dist/types/src/calls/types.d.ts.map +1 -0
  144. package/dist/types/src/calls/util/audio.d.ts +6 -0
  145. package/dist/types/src/calls/util/audio.d.ts.map +1 -0
  146. package/dist/types/src/calls/util/calls-service.d.ts +72 -0
  147. package/dist/types/src/calls/util/calls-service.d.ts.map +1 -0
  148. package/dist/types/src/calls/util/history-cache.d.ts +11 -0
  149. package/dist/types/src/calls/util/history-cache.d.ts.map +1 -0
  150. package/dist/types/src/calls/util/index.d.ts +5 -0
  151. package/dist/types/src/calls/util/index.d.ts.map +1 -0
  152. package/dist/types/src/calls/util/media.d.ts +6 -0
  153. package/dist/types/src/calls/util/media.d.ts.map +1 -0
  154. package/dist/types/src/calls/util/stub-media-streams.d.ts +18 -0
  155. package/dist/types/src/calls/util/stub-media-streams.d.ts.map +1 -0
  156. package/dist/types/src/calls/util/task-scheduling.d.ts +17 -0
  157. package/dist/types/src/calls/util/task-scheduling.d.ts.map +1 -0
  158. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  159. package/dist/types/src/capabilities/call-manager.d.ts +5 -0
  160. package/dist/types/src/capabilities/call-manager.d.ts.map +1 -0
  161. package/dist/types/src/capabilities/capabilities.d.ts +13 -1
  162. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  163. package/dist/types/src/capabilities/index.d.ts +5 -0
  164. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  165. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  166. package/dist/types/src/capabilities/markdown.d.ts.map +1 -1
  167. package/dist/types/src/capabilities/react-root.d.ts +7 -0
  168. package/dist/types/src/capabilities/react-root.d.ts.map +1 -0
  169. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  170. package/dist/types/src/components/Call/Call.d.ts +17 -0
  171. package/dist/types/src/components/Call/Call.d.ts.map +1 -0
  172. package/dist/types/src/components/Call/Toolbar.d.ts +16 -0
  173. package/dist/types/src/components/Call/Toolbar.d.ts.map +1 -0
  174. package/dist/types/src/components/Call/index.d.ts +3 -0
  175. package/dist/types/src/components/Call/index.d.ts.map +1 -0
  176. package/dist/types/src/components/CallDebugPanel.d.ts +8 -0
  177. package/dist/types/src/components/CallDebugPanel.d.ts.map +1 -0
  178. package/dist/types/src/components/CallSidebar.d.ts +4 -0
  179. package/dist/types/src/components/CallSidebar.d.ts.map +1 -0
  180. package/dist/types/src/components/ChannelContainer.d.ts +14 -0
  181. package/dist/types/src/components/ChannelContainer.d.ts.map +1 -0
  182. package/dist/types/src/components/ChannelContainer.stories.d.ts +10 -0
  183. package/dist/types/src/components/ChannelContainer.stories.d.ts.map +1 -0
  184. package/dist/types/src/components/ChatContainer.d.ts +9 -7
  185. package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
  186. package/dist/types/src/components/CommentContainer.d.ts +11 -2
  187. package/dist/types/src/components/CommentContainer.d.ts.map +1 -1
  188. package/dist/types/src/components/Comments.stories.d.ts.map +1 -1
  189. package/dist/types/src/components/CommentsContainer.d.ts +5 -9
  190. package/dist/types/src/components/CommentsContainer.d.ts.map +1 -1
  191. package/dist/types/src/components/Lobby/Lobby.d.ts +15 -0
  192. package/dist/types/src/components/Lobby/Lobby.d.ts.map +1 -0
  193. package/dist/types/src/components/Lobby/index.d.ts +2 -0
  194. package/dist/types/src/components/Lobby/index.d.ts.map +1 -0
  195. package/dist/types/src/components/Media/AudioStream.d.ts +6 -0
  196. package/dist/types/src/components/Media/AudioStream.d.ts.map +1 -0
  197. package/dist/types/src/components/Media/VideoObject.d.ts +15 -0
  198. package/dist/types/src/components/Media/VideoObject.d.ts.map +1 -0
  199. package/dist/types/src/components/Media/VideoObject.stories.d.ts +8 -0
  200. package/dist/types/src/components/Media/VideoObject.stories.d.ts.map +1 -0
  201. package/dist/types/src/components/Media/index.d.ts +3 -0
  202. package/dist/types/src/components/Media/index.d.ts.map +1 -0
  203. package/dist/types/src/components/Participant/Participant.d.ts +6 -0
  204. package/dist/types/src/components/Participant/Participant.d.ts.map +1 -0
  205. package/dist/types/src/components/Participant/ParticipantGrid.d.ts +11 -0
  206. package/dist/types/src/components/Participant/ParticipantGrid.d.ts.map +1 -0
  207. package/dist/types/src/components/Participant/index.d.ts +3 -0
  208. package/dist/types/src/components/Participant/index.d.ts.map +1 -0
  209. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.d.ts +12 -0
  210. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.d.ts.map +1 -0
  211. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts +10 -0
  212. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts.map +1 -0
  213. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.d.ts +32 -0
  214. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.d.ts.map +1 -0
  215. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts +23 -0
  216. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts.map +1 -0
  217. package/dist/types/src/components/ResponsiveGrid/ResponsiveGridItem.d.ts +21 -0
  218. package/dist/types/src/components/ResponsiveGrid/ResponsiveGridItem.d.ts.map +1 -0
  219. package/dist/types/src/components/ResponsiveGrid/index.d.ts +4 -0
  220. package/dist/types/src/components/ResponsiveGrid/index.d.ts.map +1 -0
  221. package/dist/types/src/components/ThreadComplementary.d.ts.map +1 -1
  222. package/dist/types/src/components/index.d.ts +5 -1
  223. package/dist/types/src/components/index.d.ts.map +1 -1
  224. package/dist/types/src/components/testing.d.ts +14 -14
  225. package/dist/types/src/components/testing.d.ts.map +1 -1
  226. package/dist/types/src/extensions/threads.d.ts.map +1 -1
  227. package/dist/types/src/hooks/index.d.ts +2 -1
  228. package/dist/types/src/hooks/index.d.ts.map +1 -1
  229. package/dist/types/src/hooks/useDebugMode.d.ts +2 -0
  230. package/dist/types/src/hooks/useDebugMode.d.ts.map +1 -0
  231. package/dist/types/src/index.d.ts +1 -1
  232. package/dist/types/src/index.d.ts.map +1 -1
  233. package/dist/types/src/meta.d.ts.map +1 -1
  234. package/dist/types/src/peers.stories.d.ts +11 -0
  235. package/dist/types/src/peers.stories.d.ts.map +1 -0
  236. package/dist/types/src/testing/index.d.ts +2 -0
  237. package/dist/types/src/testing/index.d.ts.map +1 -0
  238. package/dist/types/src/testing/stories.d.ts +2 -0
  239. package/dist/types/src/testing/stories.d.ts.map +1 -0
  240. package/dist/types/src/translations.d.ts +34 -1
  241. package/dist/types/src/translations.d.ts.map +1 -1
  242. package/dist/types/src/types/index.d.ts +3 -0
  243. package/dist/types/src/types/index.d.ts.map +1 -0
  244. package/dist/types/src/types/schema.d.ts +317 -0
  245. package/dist/types/src/types/schema.d.ts.map +1 -0
  246. package/dist/types/src/types/types.d.ts +1015 -0
  247. package/dist/types/src/types/types.d.ts.map +1 -0
  248. package/dist/types/src/util.d.ts +2 -0
  249. package/dist/types/src/util.d.ts.map +1 -1
  250. package/package.json +54 -41
  251. package/src/ThreadPlugin.tsx +28 -9
  252. package/src/calls/call-manager.ts +242 -0
  253. package/src/calls/call-swarm-synchronizer.ts +350 -0
  254. package/src/calls/index.ts +10 -0
  255. package/src/calls/media-manager.ts +342 -0
  256. package/src/calls/speaking-monitor.ts +85 -0
  257. package/src/calls/types.ts +70 -0
  258. package/src/calls/util/audio.ts +58 -0
  259. package/src/calls/util/calls-service.ts +527 -0
  260. package/src/calls/util/history-cache.ts +27 -0
  261. package/src/calls/util/index.ts +8 -0
  262. package/src/calls/util/media.ts +52 -0
  263. package/src/calls/util/stub-media-streams.ts +73 -0
  264. package/src/calls/util/task-scheduling.ts +92 -0
  265. package/src/capabilities/app-graph-builder.ts +148 -12
  266. package/src/capabilities/call-manager.ts +19 -0
  267. package/src/capabilities/capabilities.ts +15 -1
  268. package/src/capabilities/index.ts +2 -0
  269. package/src/capabilities/intent-resolver.ts +69 -47
  270. package/src/capabilities/markdown.ts +51 -1
  271. package/src/capabilities/react-root.tsx +17 -0
  272. package/src/capabilities/react-surface.tsx +52 -27
  273. package/src/capabilities/state.ts +1 -1
  274. package/src/components/Call/Call.tsx +88 -0
  275. package/src/components/Call/Toolbar.tsx +182 -0
  276. package/src/components/Call/index.ts +6 -0
  277. package/src/components/CallDebugPanel.tsx +115 -0
  278. package/src/components/CallSidebar.tsx +17 -0
  279. package/src/components/ChannelContainer.stories.tsx +58 -0
  280. package/src/components/ChannelContainer.tsx +203 -0
  281. package/src/components/Chat.stories.tsx +6 -6
  282. package/src/components/ChatContainer.tsx +36 -24
  283. package/src/components/CommentContainer.tsx +31 -12
  284. package/src/components/Comments.stories.tsx +13 -11
  285. package/src/components/CommentsContainer.tsx +18 -28
  286. package/src/components/Lobby/Lobby.tsx +119 -0
  287. package/src/components/Lobby/index.ts +5 -0
  288. package/src/components/Media/AudioStream.tsx +67 -0
  289. package/src/components/Media/VideoObject.stories.tsx +52 -0
  290. package/src/components/Media/VideoObject.tsx +58 -0
  291. package/src/components/Media/index.ts +6 -0
  292. package/src/components/Participant/Participant.tsx +57 -0
  293. package/src/components/Participant/ParticipantGrid.tsx +88 -0
  294. package/src/components/Participant/index.ts +6 -0
  295. package/src/components/ResponsiveGrid/ResponsiveContainer.stories.tsx +54 -0
  296. package/src/components/ResponsiveGrid/ResponsiveContainer.tsx +31 -0
  297. package/src/components/ResponsiveGrid/ResponsiveGrid.stories.tsx +156 -0
  298. package/src/components/ResponsiveGrid/ResponsiveGrid.tsx +341 -0
  299. package/src/components/ResponsiveGrid/ResponsiveGridItem.tsx +131 -0
  300. package/src/components/ResponsiveGrid/index.ts +7 -0
  301. package/src/components/ThreadComplementary.tsx +37 -42
  302. package/src/components/index.ts +4 -0
  303. package/src/components/testing.ts +2 -1
  304. package/src/extensions/threads.ts +42 -24
  305. package/src/hooks/index.ts +2 -1
  306. package/src/hooks/useDebugMode.ts +25 -0
  307. package/src/index.ts +1 -1
  308. package/src/meta.ts +4 -3
  309. package/src/peers.stories.tsx +189 -0
  310. package/src/testing/index.ts +5 -0
  311. package/src/testing/stories.ts +50 -0
  312. package/src/translations.ts +44 -3
  313. package/src/types/index.ts +6 -0
  314. package/src/types/schema.ts +29 -0
  315. package/src/{types.ts → types/types.ts} +24 -14
  316. package/src/typings/peermetrics-webrtc-stats.d.ts +30 -0
  317. package/src/util.ts +12 -0
  318. package/dist/lib/browser/ChatContainer-H4XTHM3A.mjs +0 -138
  319. package/dist/lib/browser/ChatContainer-H4XTHM3A.mjs.map +0 -7
  320. package/dist/lib/browser/app-graph-builder-V7UUHGUI.mjs +0 -44
  321. package/dist/lib/browser/app-graph-builder-V7UUHGUI.mjs.map +0 -7
  322. package/dist/lib/browser/chunk-32EIWOAL.mjs.map +0 -7
  323. package/dist/lib/browser/chunk-EP6MRLY7.mjs.map +0 -7
  324. package/dist/lib/browser/chunk-I3JK6CBS.mjs +0 -209
  325. package/dist/lib/browser/chunk-I3JK6CBS.mjs.map +0 -7
  326. package/dist/lib/browser/chunk-OO7PQPV5.mjs +0 -93
  327. package/dist/lib/browser/chunk-OO7PQPV5.mjs.map +0 -7
  328. package/dist/lib/browser/chunk-WBJLUUOK.mjs.map +0 -7
  329. package/dist/lib/browser/chunk-YRGWE35W.mjs +0 -17
  330. package/dist/lib/browser/chunk-YRGWE35W.mjs.map +0 -7
  331. package/dist/lib/browser/intent-resolver-PDOLX5B7.mjs.map +0 -7
  332. package/dist/lib/browser/markdown-XJJVUBDO.mjs +0 -111
  333. package/dist/lib/browser/markdown-XJJVUBDO.mjs.map +0 -7
  334. package/dist/lib/browser/react-surface-7DJZKIOK.mjs +0 -436
  335. package/dist/lib/browser/react-surface-7DJZKIOK.mjs.map +0 -7
  336. package/dist/lib/browser/types.mjs +0 -10
  337. package/dist/lib/node/ChatContainer-TUISUIY7.cjs +0 -163
  338. package/dist/lib/node/ChatContainer-TUISUIY7.cjs.map +0 -7
  339. package/dist/lib/node/app-graph-builder-MMM26FEH.cjs +0 -60
  340. package/dist/lib/node/app-graph-builder-MMM26FEH.cjs.map +0 -7
  341. package/dist/lib/node/chunk-AZ275P4V.cjs.map +0 -7
  342. package/dist/lib/node/chunk-ETDNE4Z6.cjs +0 -234
  343. package/dist/lib/node/chunk-ETDNE4Z6.cjs.map +0 -7
  344. package/dist/lib/node/chunk-GRMB5VRN.cjs +0 -113
  345. package/dist/lib/node/chunk-GRMB5VRN.cjs.map +0 -7
  346. package/dist/lib/node/chunk-NO6WQR36.cjs.map +0 -7
  347. package/dist/lib/node/chunk-NQ5DTPOY.cjs.map +0 -7
  348. package/dist/lib/node/intent-resolver-MNTL32W2.cjs.map +0 -7
  349. package/dist/lib/node/markdown-25NI6Q4Y.cjs +0 -121
  350. package/dist/lib/node/markdown-25NI6Q4Y.cjs.map +0 -7
  351. package/dist/lib/node/react-surface-KGUZJVRL.cjs +0 -438
  352. package/dist/lib/node/react-surface-KGUZJVRL.cjs.map +0 -7
  353. package/dist/lib/node/types.cjs.map +0 -7
  354. package/dist/lib/node-esm/ChatContainer-G7VTTRDN.mjs +0 -139
  355. package/dist/lib/node-esm/ChatContainer-G7VTTRDN.mjs.map +0 -7
  356. package/dist/lib/node-esm/app-graph-builder-QEFJ2KA4.mjs +0 -45
  357. package/dist/lib/node-esm/app-graph-builder-QEFJ2KA4.mjs.map +0 -7
  358. package/dist/lib/node-esm/chunk-42F2DTMM.mjs.map +0 -7
  359. package/dist/lib/node-esm/chunk-5XUQJWUG.mjs +0 -19
  360. package/dist/lib/node-esm/chunk-5XUQJWUG.mjs.map +0 -7
  361. package/dist/lib/node-esm/chunk-A7RLBTTZ.mjs +0 -94
  362. package/dist/lib/node-esm/chunk-A7RLBTTZ.mjs.map +0 -7
  363. package/dist/lib/node-esm/chunk-IZWN4KAY.mjs.map +0 -7
  364. package/dist/lib/node-esm/chunk-V7HLWNAO.mjs +0 -210
  365. package/dist/lib/node-esm/chunk-V7HLWNAO.mjs.map +0 -7
  366. package/dist/lib/node-esm/chunk-WLY2HMDB.mjs.map +0 -7
  367. package/dist/lib/node-esm/intent-resolver-X2FNKFSK.mjs.map +0 -7
  368. package/dist/lib/node-esm/markdown-2ERASVEO.mjs +0 -112
  369. package/dist/lib/node-esm/markdown-2ERASVEO.mjs.map +0 -7
  370. package/dist/lib/node-esm/react-surface-DLD2UJRM.mjs +0 -437
  371. package/dist/lib/node-esm/react-surface-DLD2UJRM.mjs.map +0 -7
  372. package/dist/lib/node-esm/types.mjs +0 -11
  373. package/dist/types/src/components/types.d.ts +0 -28
  374. package/dist/types/src/components/types.d.ts.map +0 -1
  375. package/dist/types/src/events.d.ts +0 -4
  376. package/dist/types/src/events.d.ts.map +0 -1
  377. package/dist/types/src/types.d.ts +0 -276
  378. package/dist/types/src/types.d.ts.map +0 -1
  379. package/src/components/types.ts +0 -32
  380. package/src/events.ts +0 -11
  381. /package/dist/lib/browser/{types.mjs.map → ChannelContainer-LGYSQMC7.mjs.map} +0 -0
  382. /package/dist/lib/{node-esm/types.mjs.map → browser/ChatContainer-JWRI73OG.mjs.map} +0 -0
  383. /package/dist/lib/browser/{settings-K56QXNJ4.mjs.map → settings-KVBQQSO5.mjs.map} +0 -0
  384. /package/dist/lib/node/{settings-4WLSO726.cjs.map → settings-H45P5YO2.cjs.map} +0 -0
  385. /package/dist/lib/node-esm/{settings-5UA6FBMW.mjs.map → settings-IJGUOU3F.mjs.map} +0 -0
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
- "sources": ["../../../src/events.ts", "../../../src/ThreadPlugin.tsx", "../../../src/translations.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Events } from '@dxos/app-framework';\n\nimport { THREAD_PLUGIN } from './meta';\n\nexport namespace ThreadEvents {\n export const SetupActivity = Events.createStateEvent(`${THREAD_PLUGIN}/setup-activity`);\n}\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { Capabilities, contributes, createIntent, defineModule, definePlugin, Events } from '@dxos/app-framework';\nimport { ClientCapabilities, ClientEvents } from '@dxos/plugin-client';\nimport { MarkdownEvents } from '@dxos/plugin-markdown';\nimport { SpaceCapabilities, ThreadEvents } from '@dxos/plugin-space';\nimport { ChannelType, defineObjectForm, ThreadType } from '@dxos/plugin-space/types';\nimport { type AnyLiveObject, RefArray } from '@dxos/react-client/echo';\nimport { translations as threadTranslations } from '@dxos/react-ui-thread';\nimport { DataType } from '@dxos/schema';\n\nimport { AppGraphBuilder, IntentResolver, Markdown, ReactSurface, ThreadState } from './capabilities';\nimport { ThreadEvents as LocalThreadEvents } from './events';\nimport { meta, THREAD_ITEM } from './meta';\nimport translations from './translations';\nimport { ThreadAction } from './types';\n\n// TODO(Zan): Every instance of `cursor` should be replaced with `anchor`.\n// NOTE(burdon): Review/discuss CursorConverter semantics.\nexport const ThreadPlugin = () =>\n definePlugin(meta, [\n // TODO(wittjosiah): Currently not used but leaving because there will likely be settings for threads again.\n // defineModule({\n // id: `${meta.id}/module/settings`,\n // activatesOn: Events.SetupSettings,\n // activate: ThreadSettings,\n // }),\n defineModule({\n id: `${meta.id}/module/state`,\n // TODO(wittjosiah): Does not integrate with settings store.\n // Should this be a different event?\n // Should settings store be renamed to be more generic?\n activatesOn: Events.SetupSettings,\n activate: ThreadState,\n }),\n defineModule({\n id: `${meta.id}/module/translations`,\n activatesOn: Events.SetupTranslations,\n activate: () => contributes(Capabilities.Translations, [...translations, ...threadTranslations]),\n }),\n defineModule({\n id: `${meta.id}/module/metadata`,\n activatesOn: Events.SetupMetadata,\n activate: () => [\n contributes(Capabilities.Metadata, {\n id: ChannelType.typename,\n metadata: {\n icon: 'ph--hash--regular',\n },\n }),\n contributes(Capabilities.Metadata, {\n id: ThreadType.typename,\n metadata: {\n // TODO(wittjosiah): Move out of metadata.\n loadReferences: async (thread: ThreadType) => await RefArray.loadAll(thread.messages ?? []),\n },\n }),\n contributes(Capabilities.Metadata, {\n id: DataType.Message.typename,\n metadata: {\n // TODO(wittjosiah): Move out of metadata.\n loadReferences: (message: DataType.Message) => [], // loadObjectReferences(message, (message) => [...message.parts, message.context]),\n },\n }),\n contributes(Capabilities.Metadata, {\n id: THREAD_ITEM,\n metadata: {\n parse: (item: AnyLiveObject<any>, type: string) => {\n switch (type) {\n case 'node':\n return { id: item.id, label: item.title, data: item };\n case 'object':\n return item;\n case 'view-object':\n return { id: `${item.id}-view`, object: item };\n }\n },\n },\n }),\n ],\n }),\n defineModule({\n id: `${meta.id}/module/object-form`,\n activatesOn: ClientEvents.SetupSchema,\n activate: () =>\n contributes(\n SpaceCapabilities.ObjectForm,\n defineObjectForm({\n objectSchema: ChannelType,\n getIntent: (_, options) => createIntent(ThreadAction.CreateChannel, { spaceId: options.space.id }),\n }),\n ),\n }),\n defineModule({\n id: `${meta.id}/module/schema`,\n activatesOn: ClientEvents.SetupSchema,\n activate: () => contributes(ClientCapabilities.Schema, [ThreadType, DataType.Message, DataType.MessageV1]),\n }),\n defineModule({\n id: `${meta.id}/module/migration`,\n activatesOn: ClientEvents.SetupMigration,\n activate: () => contributes(ClientCapabilities.Migration, [DataType.MessageV1ToV2]),\n }),\n defineModule({\n id: `${meta.id}/module/markdown`,\n activatesOn: MarkdownEvents.SetupExtensions,\n activate: Markdown,\n }),\n defineModule({\n id: `${meta.id}/module/react-surface`,\n activatesOn: Events.SetupReactSurface,\n // TODO(wittjosiah): Should occur before the comments thread is loaded when surfaces activation is more granular.\n activatesBefore: [ThreadEvents.SetupThread, LocalThreadEvents.SetupActivity],\n activate: ReactSurface,\n }),\n defineModule({\n id: `${meta.id}/module/intent-resolver`,\n activatesOn: Events.SetupIntentResolver,\n activate: IntentResolver,\n }),\n defineModule({\n id: `${meta.id}/module/app-graph-builder`,\n activatesOn: Events.SetupAppGraph,\n activate: AppGraphBuilder,\n }),\n ]);\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { ChannelType } from '@dxos/plugin-space/types';\n\nimport { THREAD_PLUGIN } from './meta';\n\nexport default [\n {\n 'en-US': {\n [ChannelType.typename]: {\n 'typename label': 'Channel',\n 'object name placeholder': 'New channel',\n },\n [THREAD_PLUGIN]: {\n 'plugin name': 'Threads',\n 'channel title label': 'Title',\n 'message placeholder': 'Reply…',\n 'activity message': 'Processing…',\n 'anonymous label': 'Anonymous',\n 'delete message block label': 'Delete message block',\n 'detached thread label': 'Referenced content was removed',\n 'delete thread label': 'Delete thread',\n 'thread deleted label': 'You deleted a thread.',\n 'message deleted label': 'You deleted a message.',\n 'comments heading': 'Comments',\n 'chat heading': 'Chat',\n 'draft button': 'DRAFT',\n 'no comments title': 'Comments',\n 'no comments message':\n 'Click on the <commentIcon></commentIcon> button in the document toolbar to create a comment thread on the selected text.',\n 'toggle show resolved': 'Show resolved',\n 'unnamed object threads label': 'Threads',\n 'mark as resolved label': 'Mark as resolved',\n 'mark as unresolved label': 'Mark as unresolved',\n 'save message label': 'Save',\n 'edit message label': 'Edit',\n 'delete message label': 'Delete message',\n 'open comments panel label': 'Show Comments',\n 'comments label': 'Comments',\n 'show all label': 'All comments',\n 'show unresolved label': 'Unresolved only',\n },\n },\n },\n];\n"],
5
- "mappings": "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",
6
- "names": ["import_app_framework", "import_types", "ThreadEvents", "SetupActivity", "Events", "createStateEvent", "THREAD_PLUGIN", "ChannelType", "typename", "ThreadPlugin", "definePlugin", "meta", "defineModule", "id", "activatesOn", "SetupSettings", "activate", "ThreadState", "SetupTranslations", "contributes", "Capabilities", "Translations", "translations", "threadTranslations", "SetupMetadata", "Metadata", "metadata", "icon", "ThreadType", "loadReferences", "thread", "RefArray", "loadAll", "messages", "DataType", "Message", "message", "THREAD_ITEM", "parse", "item", "type", "label", "title", "data", "object", "ClientEvents", "SetupSchema", "SpaceCapabilities", "ObjectForm", "defineObjectForm", "objectSchema", "getIntent", "_", "options", "createIntent", "ThreadAction", "CreateChannel", "spaceId", "space", "ClientCapabilities", "Schema", "MessageV1", "SetupMigration", "Migration", "MessageV1ToV2", "MarkdownEvents", "SetupExtensions", "Markdown", "SetupReactSurface", "activatesBefore", "SetupThread", "LocalThreadEvents", "ReactSurface", "SetupIntentResolver", "IntentResolver", "SetupAppGraph", "AppGraphBuilder"]
3
+ "sources": ["../../../src/ThreadPlugin.tsx", "../../../src/translations.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2023 DXOS.org\n//\n\nimport { Capabilities, contributes, createIntent, defineModule, definePlugin, Events } from '@dxos/app-framework';\nimport { ClientCapabilities, ClientEvents } from '@dxos/plugin-client';\nimport { MarkdownEvents } from '@dxos/plugin-markdown';\nimport { SpaceCapabilities } from '@dxos/plugin-space';\nimport { defineObjectForm } from '@dxos/plugin-space/types';\nimport { type AnyLiveObject, RefArray } from '@dxos/react-client/echo';\nimport { translations as threadTranslations } from '@dxos/react-ui-thread';\nimport { AnchoredTo, DataType } from '@dxos/schema';\n\nimport {\n AppGraphBuilder,\n CallManager,\n IntentResolver,\n Markdown,\n ReactRoot,\n ReactSurface,\n ThreadState,\n} from './capabilities';\nimport { meta, THREAD_ITEM } from './meta';\nimport translations from './translations';\nimport { ChannelType, ThreadAction, ThreadType } from './types';\n\n// TODO(Zan): Every instance of `cursor` should be replaced with `anchor`.\n// NOTE(burdon): Review/discuss CursorConverter semantics.\n\n// TODO(wittjosiah): Rename to ChatPlugin.\n// TODO(wittjosiah): Enabling comments should likely be factored out of this plugin but depend on it's capabilities.\nexport const ThreadPlugin = () =>\n definePlugin(meta, [\n defineModule({\n id: `${meta.id}/module/call-manager`,\n activatesOn: ClientEvents.ClientReady,\n activate: CallManager,\n }),\n // TODO(wittjosiah): Currently not used but leaving because there will likely be settings for threads again.\n // defineModule({\n // id: `${meta.id}/module/settings`,\n // activatesOn: Events.SetupSettings,\n // activate: ThreadSettings,\n // }),\n defineModule({\n id: `${meta.id}/module/state`,\n // TODO(wittjosiah): Does not integrate with settings store.\n // Should this be a different event?\n // Should settings store be renamed to be more generic?\n activatesOn: Events.SetupSettings,\n activate: ThreadState,\n }),\n defineModule({\n id: `${meta.id}/module/translations`,\n activatesOn: Events.SetupTranslations,\n activate: () => contributes(Capabilities.Translations, [...translations, ...threadTranslations]),\n }),\n defineModule({\n id: `${meta.id}/module/metadata`,\n activatesOn: Events.SetupMetadata,\n activate: () => [\n contributes(Capabilities.Metadata, {\n id: ChannelType.typename,\n metadata: {\n icon: 'ph--hash--regular',\n },\n }),\n contributes(Capabilities.Metadata, {\n id: ThreadType.typename,\n metadata: {\n // TODO(wittjosiah): Move out of metadata.\n loadReferences: async (thread: ThreadType) => await RefArray.loadAll(thread.messages ?? []),\n },\n }),\n contributes(Capabilities.Metadata, {\n id: DataType.Message.typename,\n metadata: {\n // TODO(wittjosiah): Move out of metadata.\n loadReferences: (message: DataType.Message) => [], // loadObjectReferences(message, (message) => [...message.parts, message.context]),\n },\n }),\n contributes(Capabilities.Metadata, {\n id: THREAD_ITEM,\n metadata: {\n parse: (item: AnyLiveObject<any>, type: string) => {\n switch (type) {\n case 'node':\n return { id: item.id, label: item.title, data: item };\n case 'object':\n return item;\n case 'view-object':\n return { id: `${item.id}-view`, object: item };\n }\n },\n },\n }),\n ],\n }),\n defineModule({\n id: `${meta.id}/module/object-form`,\n activatesOn: ClientEvents.SetupSchema,\n activate: () =>\n contributes(\n SpaceCapabilities.ObjectForm,\n defineObjectForm({\n objectSchema: ChannelType,\n getIntent: (_, options) => createIntent(ThreadAction.CreateChannel, { spaceId: options.space.id }),\n }),\n ),\n }),\n defineModule({\n id: `${meta.id}/module/schema`,\n activatesOn: ClientEvents.SetupSchema,\n activate: () =>\n contributes(ClientCapabilities.Schema, [AnchoredTo, ThreadType, DataType.Message, DataType.MessageV1]),\n }),\n defineModule({\n id: `${meta.id}/module/migration`,\n activatesOn: ClientEvents.SetupMigration,\n activate: () => contributes(ClientCapabilities.Migration, [DataType.MessageV1ToV2]),\n }),\n defineModule({\n id: `${meta.id}/module/markdown`,\n activatesOn: MarkdownEvents.SetupExtensions,\n activate: Markdown,\n }),\n defineModule({\n id: `${meta.id}/module/react-root`,\n activatesOn: Events.Startup,\n activate: ReactRoot,\n }),\n defineModule({\n id: `${meta.id}/module/react-surface`,\n activatesOn: Events.SetupReactSurface,\n activate: ReactSurface,\n }),\n defineModule({\n id: `${meta.id}/module/intent-resolver`,\n activatesOn: Events.SetupIntentResolver,\n activate: IntentResolver,\n }),\n defineModule({\n id: `${meta.id}/module/app-graph-builder`,\n activatesOn: Events.SetupAppGraph,\n activate: AppGraphBuilder,\n }),\n ]);\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { THREAD_PLUGIN } from './meta';\nimport { ChannelType } from './types';\n\nexport default [\n {\n 'en-US': {\n [ChannelType.typename]: {\n 'typename label': 'Channel',\n 'object name placeholder': 'New channel',\n },\n [THREAD_PLUGIN]: {\n 'plugin name': 'Chat',\n 'channel title label': 'Title',\n 'message placeholder': 'Reply…',\n 'activity message': 'Processing…',\n 'anonymous label': 'Anonymous',\n 'delete message block label': 'Delete message block',\n 'detached thread label': 'Referenced content was removed',\n 'delete thread label': 'Delete thread',\n 'thread deleted label': 'You deleted a thread.',\n 'message deleted label': 'You deleted a message.',\n 'comments heading': 'Comments',\n 'chat heading': 'Chat',\n 'draft button': 'DRAFT',\n 'no comments title': 'Comments',\n 'no comments message':\n 'Click on the <commentIcon></commentIcon> button in the document toolbar to create a comment thread on the selected text.',\n 'toggle show resolved': 'Show resolved',\n 'unnamed object threads label': 'Threads',\n 'mark as resolved label': 'Mark as resolved',\n 'mark as unresolved label': 'Mark as unresolved',\n 'save message label': 'Save',\n 'edit message label': 'Edit',\n 'delete message label': 'Delete message',\n 'open comments panel label': 'Show Comments',\n 'comments label': 'Comments',\n 'show all label': 'All comments',\n 'show unresolved label': 'Unresolved only',\n\n 'channel companion label': 'Channel',\n 'call panel label': 'Active Call',\n\n 'display name label': 'Display name',\n 'display name description': 'Set your display name before joining a meeting.',\n 'display name input placeholder': 'Enter your name',\n 'set display name label': 'Continue',\n\n 'call tab label': 'Call',\n 'meeting status title': 'Meeting',\n 'share meeting link label': 'Share meeting',\n 'show webrtc stats title': 'Detailed WebRTC Stats',\n\n 'meeting summary label': 'Summary',\n 'summarize label': 'Summarize',\n 'summarizing label': 'Creating summary...',\n 'create summary message': 'A summary doesn’t exist for this meeting yet. Create one now?',\n\n 'join call': 'Join',\n 'leave call': 'Leave',\n\n 'lobby participants_zero': 'No participants',\n 'lobby participants_one': '1 participant',\n 'lobby participants_other': '{{count}} participants',\n\n 'icon pin': 'Pin video',\n 'icon unpin': 'Unpin video',\n 'icon wave': 'Waving',\n 'icon muted': 'Muted',\n 'icon speaking': 'Speaking',\n\n 'mic on': 'Unmute',\n 'mic off': 'Mute',\n 'camera on': 'Turn camera on',\n 'camera off': 'Turn camera off',\n 'camera off label': 'Camera off',\n\n 'raise hand': 'Raise hand',\n 'lower hand': 'Lower hand',\n 'screenshare on': 'Share screen',\n 'screenshare off': 'Stop streaming',\n },\n },\n },\n];\n"],
5
+ "mappings": "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",
6
+ "names": ["ChannelType", "typename", "THREAD_PLUGIN", "ThreadPlugin", "definePlugin", "meta", "defineModule", "id", "activatesOn", "ClientEvents", "ClientReady", "activate", "CallManager", "Events", "SetupSettings", "ThreadState", "SetupTranslations", "contributes", "Capabilities", "Translations", "translations", "threadTranslations", "SetupMetadata", "Metadata", "metadata", "icon", "ThreadType", "loadReferences", "thread", "RefArray", "loadAll", "messages", "DataType", "Message", "message", "THREAD_ITEM", "parse", "item", "type", "label", "title", "data", "object", "SetupSchema", "SpaceCapabilities", "ObjectForm", "defineObjectForm", "objectSchema", "getIntent", "_", "options", "createIntent", "ThreadAction", "CreateChannel", "spaceId", "space", "ClientCapabilities", "Schema", "AnchoredTo", "MessageV1", "SetupMigration", "Migration", "MessageV1ToV2", "MarkdownEvents", "SetupExtensions", "Markdown", "Startup", "ReactRoot", "SetupReactSurface", "ReactSurface", "SetupIntentResolver", "IntentResolver", "SetupAppGraph", "AppGraphBuilder"]
7
7
  }
@@ -16,19 +16,18 @@ 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 intent_resolver_MNTL32W2_exports = {};
20
- __export(intent_resolver_MNTL32W2_exports, {
19
+ var intent_resolver_MZ3HADNY_exports = {};
20
+ __export(intent_resolver_MZ3HADNY_exports, {
21
21
  default: () => intent_resolver_default
22
22
  });
23
- module.exports = __toCommonJS(intent_resolver_MNTL32W2_exports);
24
- var import_chunk_NQ5DTPOY = require("./chunk-NQ5DTPOY.cjs");
25
- var import_chunk_GRMB5VRN = require("./chunk-GRMB5VRN.cjs");
26
- var import_chunk_ONLWOUYZ = require("./chunk-ONLWOUYZ.cjs");
23
+ module.exports = __toCommonJS(intent_resolver_MZ3HADNY_exports);
24
+ var import_chunk_TKHJVC2C = require("./chunk-TKHJVC2C.cjs");
25
+ var import_chunk_4YSNVPWU = require("./chunk-4YSNVPWU.cjs");
26
+ var import_chunk_HLMCEE5K = require("./chunk-HLMCEE5K.cjs");
27
+ var import_signals_core = require("@preact/signals-core");
27
28
  var import_app_framework = require("@dxos/app-framework");
28
29
  var import_echo_schema = require("@dxos/echo-schema");
29
30
  var import_invariant = require("@dxos/invariant");
30
- var import_live_object = require("@dxos/live-object");
31
- var import_log = require("@dxos/log");
32
31
  var import_types = require("@dxos/plugin-deck/types");
33
32
  var import_types2 = require("@dxos/plugin-observability/types");
34
33
  var import_types3 = require("@dxos/plugin-space/types");
@@ -37,56 +36,72 @@ var import_schema = require("@dxos/schema");
37
36
  var __dxlog_file = "/home/runner/work/dxos/dxos/packages/plugins/plugin-thread/src/capabilities/intent-resolver.ts";
38
37
  var intent_resolver_default = (context) => (0, import_app_framework.contributes)(import_app_framework.Capabilities.IntentResolver, [
39
38
  (0, import_app_framework.createResolver)({
40
- intent: import_chunk_GRMB5VRN.ThreadAction.CreateChannel,
41
- resolve: ({ spaceId, name }) => ({
39
+ intent: import_chunk_TKHJVC2C.ThreadAction.CreateChannel,
40
+ resolve: ({ name }) => ({
42
41
  data: {
43
- object: (0, import_echo.live)(import_types3.ChannelType, {
42
+ object: (0, import_echo.live)(import_chunk_TKHJVC2C.ChannelType, {
44
43
  name,
45
- queue: (0, import_live_object.refFromDXN)((0, import_echo_schema.createQueueDxn)(spaceId))
44
+ defaultThread: import_echo.Ref.make((0, import_echo.live)(import_chunk_TKHJVC2C.ThreadType, {
45
+ messages: [],
46
+ status: "active"
47
+ })),
48
+ threads: []
46
49
  })
47
50
  }
48
51
  })
49
52
  }),
50
53
  (0, import_app_framework.createResolver)({
51
- intent: import_chunk_GRMB5VRN.ThreadAction.Create,
52
- resolve: ({ name, cursor, subject }) => {
53
- if (subject?.threads === void 0) {
54
- try {
55
- subject.threads = [];
56
- } catch (err) {
57
- import_log.log.error("Subject does not support threads array", {
58
- typename: subject?.typename
59
- }, {
60
- F: __dxlog_file,
61
- L: 42,
62
- S: void 0,
63
- C: (f, a) => f(...a)
64
- });
65
- return;
54
+ intent: import_chunk_TKHJVC2C.ThreadAction.CreateChannelThread,
55
+ resolve: ({ channel }) => {
56
+ const thread = (0, import_echo.live)(import_chunk_TKHJVC2C.ThreadType, {
57
+ messages: [],
58
+ status: "active"
59
+ });
60
+ channel.threads.push(import_echo.Ref.make(thread));
61
+ return {
62
+ data: {
63
+ object: thread
66
64
  }
67
- }
68
- const { state } = context.getCapability(import_chunk_NQ5DTPOY.ThreadCapabilities.MutableState);
65
+ };
66
+ }
67
+ }),
68
+ // TODO(wittjosiah): Break this up into more composable pieces.
69
+ (0, import_app_framework.createResolver)({
70
+ intent: import_chunk_TKHJVC2C.ThreadAction.Create,
71
+ resolve: ({ name, anchor: _anchor, subject }) => {
72
+ const space = (0, import_echo.getSpace)(subject);
73
+ (0, import_invariant.invariant)(space, "Space not found", {
74
+ F: __dxlog_file,
75
+ L: 51,
76
+ S: void 0,
77
+ A: [
78
+ "space",
79
+ "'Space not found'"
80
+ ]
81
+ });
82
+ const { state } = context.getCapability(import_chunk_4YSNVPWU.ThreadCapabilities.MutableState);
69
83
  const subjectId = (0, import_echo.fullyQualifiedId)(subject);
70
- const thread = (0, import_echo.live)(import_types3.ThreadType, {
84
+ const thread = (0, import_echo.live)(import_chunk_TKHJVC2C.ThreadType, {
71
85
  name,
72
- anchor: cursor,
73
86
  messages: [],
74
87
  status: "staged"
75
88
  });
89
+ const anchor = (0, import_echo.live)(import_schema.AnchoredTo, {
90
+ [import_echo_schema.RelationSourceId]: thread,
91
+ [import_echo_schema.RelationTargetId]: subject,
92
+ anchor: _anchor
93
+ });
76
94
  const draft = state.drafts[subjectId];
77
95
  if (draft) {
78
- draft.push(thread);
96
+ draft.push(anchor);
79
97
  } else {
80
98
  state.drafts[subjectId] = [
81
- thread
99
+ anchor
82
100
  ];
83
101
  }
84
102
  return {
85
- data: {
86
- object: thread
87
- },
88
103
  intents: [
89
- (0, import_app_framework.createIntent)(import_chunk_GRMB5VRN.ThreadAction.Select, {
104
+ (0, import_app_framework.createIntent)(import_chunk_TKHJVC2C.ThreadAction.Select, {
90
105
  current: (0, import_echo.fullyQualifiedId)(thread)
91
106
  }),
92
107
  (0, import_app_framework.createIntent)(import_types.DeckAction.ChangeCompanion, {
@@ -98,14 +113,14 @@ var intent_resolver_default = (context) => (0, import_app_framework.contributes)
98
113
  }
99
114
  }),
100
115
  (0, import_app_framework.createResolver)({
101
- intent: import_chunk_GRMB5VRN.ThreadAction.Select,
116
+ intent: import_chunk_TKHJVC2C.ThreadAction.Select,
102
117
  resolve: ({ current }) => {
103
- const { state } = context.getCapability(import_chunk_NQ5DTPOY.ThreadCapabilities.MutableState);
118
+ const { state } = context.getCapability(import_chunk_4YSNVPWU.ThreadCapabilities.MutableState);
104
119
  state.current = current;
105
120
  }
106
121
  }),
107
122
  (0, import_app_framework.createResolver)({
108
- intent: import_chunk_GRMB5VRN.ThreadAction.ToggleResolved,
123
+ intent: import_chunk_TKHJVC2C.ThreadAction.ToggleResolved,
109
124
  resolve: ({ thread }) => {
110
125
  if (thread.status === "active" || thread.status === void 0) {
111
126
  thread.status = "resolved";
@@ -115,7 +130,7 @@ var intent_resolver_default = (context) => (0, import_app_framework.contributes)
115
130
  const space = (0, import_echo.getSpace)(thread);
116
131
  (0, import_invariant.invariant)(space, "Space not found", {
117
132
  F: __dxlog_file,
118
- L: 86,
133
+ L: 96,
119
134
  S: void 0,
120
135
  A: [
121
136
  "space",
@@ -137,39 +152,39 @@ var intent_resolver_default = (context) => (0, import_app_framework.contributes)
137
152
  }
138
153
  }),
139
154
  (0, import_app_framework.createResolver)({
140
- intent: import_chunk_GRMB5VRN.ThreadAction.Delete,
141
- resolve: ({ subject, thread }, undo) => {
142
- const { state } = context.getCapability(import_chunk_NQ5DTPOY.ThreadCapabilities.MutableState);
155
+ intent: import_chunk_TKHJVC2C.ThreadAction.Delete,
156
+ resolve: ({ subject, anchor, thread: _thread }, undo) => {
157
+ const thread = _thread ?? anchor[import_echo_schema.RelationSourceId];
158
+ const { state } = context.getCapability(import_chunk_4YSNVPWU.ThreadCapabilities.MutableState);
143
159
  const subjectId = (0, import_echo.fullyQualifiedId)(subject);
144
160
  const draft = state.drafts[subjectId];
145
161
  if (draft) {
146
- const index = draft.findIndex((t) => t.id === thread.id);
162
+ const index = draft.findIndex((a) => a.id === anchor.id);
147
163
  if (index !== -1) {
148
164
  draft.splice(index, 1);
149
165
  return;
150
166
  }
151
167
  }
152
- const space = (0, import_echo.getSpace)(thread);
153
- if (!space || !subject.threads) {
168
+ const space = (0, import_echo.getSpace)(anchor);
169
+ if (!space) {
154
170
  return;
155
171
  }
156
172
  if (!undo) {
157
- const index = subject.threads.findIndex((t) => t?.id === thread.id);
158
- const cursor = subject.threads[index]?.anchor;
159
- if (index !== -1) {
160
- subject.threads?.splice(index, 1);
161
- }
162
- space.db.remove(thread);
173
+ (0, import_signals_core.batch)(() => {
174
+ space.db.remove(thread);
175
+ space.db.remove(anchor);
176
+ });
163
177
  return {
164
178
  undoable: {
165
179
  message: [
166
180
  "thread deleted label",
167
181
  {
168
- ns: import_chunk_ONLWOUYZ.THREAD_PLUGIN
182
+ ns: import_chunk_HLMCEE5K.THREAD_PLUGIN
169
183
  }
170
184
  ],
171
185
  data: {
172
- cursor
186
+ thread,
187
+ anchor
173
188
  }
174
189
  },
175
190
  intents: [
@@ -183,8 +198,10 @@ var intent_resolver_default = (context) => (0, import_app_framework.contributes)
183
198
  ]
184
199
  };
185
200
  } else {
186
- const savedThread = space.db.add(thread);
187
- subject.threads.push(savedThread);
201
+ (0, import_signals_core.batch)(() => {
202
+ space.db.add(thread);
203
+ space.db.add(anchor);
204
+ });
188
205
  return {
189
206
  intents: [
190
207
  (0, import_app_framework.createIntent)(import_types2.ObservabilityAction.SendEvent, {
@@ -200,14 +217,15 @@ var intent_resolver_default = (context) => (0, import_app_framework.contributes)
200
217
  }
201
218
  }),
202
219
  (0, import_app_framework.createResolver)({
203
- intent: import_chunk_GRMB5VRN.ThreadAction.AddMessage,
204
- resolve: ({ thread, subject, sender, text }) => {
205
- const { state } = context.getCapability(import_chunk_NQ5DTPOY.ThreadCapabilities.MutableState);
220
+ intent: import_chunk_TKHJVC2C.ThreadAction.AddMessage,
221
+ resolve: ({ anchor, subject, sender, text }) => {
222
+ const thread = anchor[import_echo_schema.RelationSourceId];
223
+ const { state } = context.getCapability(import_chunk_4YSNVPWU.ThreadCapabilities.MutableState);
206
224
  const subjectId = (0, import_echo.fullyQualifiedId)(subject);
207
225
  const space = (0, import_echo.getSpace)(subject);
208
226
  (0, import_invariant.invariant)(space, "Space not found", {
209
227
  F: __dxlog_file,
210
- L: 171,
228
+ L: 181,
211
229
  S: void 0,
212
230
  A: [
213
231
  "space",
@@ -225,13 +243,25 @@ var intent_resolver_default = (context) => (0, import_app_framework.contributes)
225
243
  }
226
244
  ]
227
245
  });
228
- thread.messages.push((0, import_echo.makeRef)(message));
229
- if (state.drafts[subjectId]?.find((t) => t === thread)) {
246
+ thread.messages.push(import_echo.Ref.make(message));
247
+ const draft = state.drafts[subjectId]?.find((a) => a.id === anchor.id);
248
+ if (draft) {
230
249
  thread.status = "active";
231
- subject.threads ? subject.threads.push((0, import_echo.makeRef)(thread)) : subject.threads = [
232
- (0, import_echo.makeRef)(thread)
233
- ];
234
- state.drafts[subjectId] = state.drafts[subjectId]?.filter(({ id }) => id !== thread.id);
250
+ state.drafts[subjectId] = state.drafts[subjectId]?.filter((a) => a.id !== anchor.id);
251
+ intents.push((0, import_app_framework.createIntent)(import_types3.SpaceAction.AddObject, {
252
+ object: thread,
253
+ target: space,
254
+ hidden: true
255
+ }));
256
+ intents.push((0, import_app_framework.createIntent)(import_types3.SpaceAction.AddRelation, {
257
+ space,
258
+ schema: import_schema.AnchoredTo,
259
+ source: thread,
260
+ target: subject,
261
+ fields: {
262
+ anchor: draft.anchor
263
+ }
264
+ }));
235
265
  intents.push((0, import_app_framework.createIntent)(import_types2.ObservabilityAction.SendEvent, {
236
266
  name: "threads.create",
237
267
  properties: {
@@ -256,12 +286,13 @@ var intent_resolver_default = (context) => (0, import_app_framework.contributes)
256
286
  }
257
287
  }),
258
288
  (0, import_app_framework.createResolver)({
259
- intent: import_chunk_GRMB5VRN.ThreadAction.DeleteMessage,
260
- resolve: ({ subject, thread, messageId, message, messageIndex }, undo) => {
289
+ intent: import_chunk_TKHJVC2C.ThreadAction.DeleteMessage,
290
+ resolve: ({ subject, anchor, messageId, message, messageIndex }, undo) => {
291
+ const thread = anchor[import_echo_schema.RelationSourceId];
261
292
  const space = (0, import_echo.getSpace)(subject);
262
293
  (0, import_invariant.invariant)(space, "Space not found", {
263
294
  F: __dxlog_file,
264
- L: 219,
295
+ L: 241,
265
296
  S: void 0,
266
297
  A: [
267
298
  "space",
@@ -269,7 +300,7 @@ var intent_resolver_default = (context) => (0, import_app_framework.contributes)
269
300
  ]
270
301
  });
271
302
  if (!undo) {
272
- const messageIndex2 = thread.messages.findIndex(import_echo_schema.Ref.hasObjectId(messageId));
303
+ const messageIndex2 = thread.messages.findIndex(import_echo.Ref.hasObjectId(messageId));
273
304
  const message2 = thread.messages[messageIndex2]?.target;
274
305
  if (!message2) {
275
306
  return;
@@ -277,9 +308,9 @@ var intent_resolver_default = (context) => (0, import_app_framework.contributes)
277
308
  if (messageIndex2 === 0 && thread.messages.length === 1) {
278
309
  return {
279
310
  intents: [
280
- (0, import_app_framework.createIntent)(import_chunk_GRMB5VRN.ThreadAction.Delete, {
311
+ (0, import_app_framework.createIntent)(import_chunk_TKHJVC2C.ThreadAction.Delete, {
281
312
  subject,
282
- thread
313
+ anchor
283
314
  })
284
315
  ]
285
316
  };
@@ -291,7 +322,7 @@ var intent_resolver_default = (context) => (0, import_app_framework.contributes)
291
322
  message: [
292
323
  "message deleted label",
293
324
  {
294
- ns: import_chunk_ONLWOUYZ.THREAD_PLUGIN
325
+ ns: import_chunk_HLMCEE5K.THREAD_PLUGIN
295
326
  }
296
327
  ],
297
328
  data: {
@@ -314,7 +345,7 @@ var intent_resolver_default = (context) => (0, import_app_framework.contributes)
314
345
  if (messageIndex === void 0 || !message) {
315
346
  return;
316
347
  }
317
- thread.messages.splice(messageIndex, 0, (0, import_echo.makeRef)(message));
348
+ thread.messages.splice(messageIndex, 0, import_echo.Ref.make(message));
318
349
  return {
319
350
  intents: [
320
351
  (0, import_app_framework.createIntent)(import_types2.ObservabilityAction.SendEvent, {
@@ -331,4 +362,4 @@ var intent_resolver_default = (context) => (0, import_app_framework.contributes)
331
362
  }
332
363
  })
333
364
  ]);
334
- //# sourceMappingURL=intent-resolver-MNTL32W2.cjs.map
365
+ //# sourceMappingURL=intent-resolver-MZ3HADNY.cjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/intent-resolver.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { batch } from '@preact/signals-core';\n\nimport { Capabilities, contributes, createIntent, createResolver, type PluginContext } from '@dxos/app-framework';\nimport { RelationSourceId, RelationTargetId } from '@dxos/echo-schema';\nimport { invariant } from '@dxos/invariant';\nimport { ATTENDABLE_PATH_SEPARATOR, DeckAction } from '@dxos/plugin-deck/types';\nimport { ObservabilityAction } from '@dxos/plugin-observability/types';\nimport { SpaceAction } from '@dxos/plugin-space/types';\nimport { live, fullyQualifiedId, getSpace, Ref } from '@dxos/react-client/echo';\nimport { AnchoredTo, DataType } from '@dxos/schema';\n\nimport { ThreadCapabilities } from './capabilities';\nimport { THREAD_PLUGIN } from '../meta';\nimport { ChannelType, ThreadAction, ThreadType } from '../types';\n\nexport default (context: PluginContext) =>\n contributes(Capabilities.IntentResolver, [\n createResolver({\n intent: ThreadAction.CreateChannel,\n resolve: ({ name }) => ({\n data: {\n object: live(ChannelType, {\n name,\n defaultThread: Ref.make(live(ThreadType, { messages: [], status: 'active' })),\n threads: [],\n }),\n },\n }),\n }),\n createResolver({\n intent: ThreadAction.CreateChannelThread,\n resolve: ({ channel }) => {\n const thread = live(ThreadType, { messages: [], status: 'active' });\n channel.threads.push(Ref.make(thread));\n return {\n data: {\n object: thread,\n },\n };\n },\n }),\n // TODO(wittjosiah): Break this up into more composable pieces.\n createResolver({\n intent: ThreadAction.Create,\n resolve: ({ name, anchor: _anchor, subject }) => {\n const space = getSpace(subject);\n invariant(space, 'Space not found');\n\n const { state } = context.getCapability(ThreadCapabilities.MutableState);\n const subjectId = fullyQualifiedId(subject);\n const thread = live(ThreadType, { name, messages: [], status: 'staged' });\n const anchor = live(AnchoredTo, {\n [RelationSourceId]: thread,\n [RelationTargetId]: subject,\n anchor: _anchor,\n });\n const draft = state.drafts[subjectId];\n if (draft) {\n draft.push(anchor);\n } else {\n state.drafts[subjectId] = [anchor];\n }\n\n return {\n intents: [\n createIntent(ThreadAction.Select, { current: fullyQualifiedId(thread) }),\n createIntent(DeckAction.ChangeCompanion, {\n primary: subjectId,\n companion: `${subjectId}${ATTENDABLE_PATH_SEPARATOR}comments`,\n }),\n ],\n };\n },\n }),\n createResolver({\n intent: ThreadAction.Select,\n resolve: ({ current }) => {\n const { state } = context.getCapability(ThreadCapabilities.MutableState);\n state.current = current;\n },\n }),\n createResolver({\n intent: ThreadAction.ToggleResolved,\n resolve: ({ thread }) => {\n if (thread.status === 'active' || thread.status === undefined) {\n thread.status = 'resolved';\n } else if (thread.status === 'resolved') {\n thread.status = 'active';\n }\n\n const space = getSpace(thread);\n invariant(space, 'Space not found');\n const spaceId = space.id;\n\n return {\n intents: [\n createIntent(ObservabilityAction.SendEvent, {\n name: 'threads.toggle-resolved',\n properties: {\n spaceId,\n threadId: thread.id,\n },\n }),\n ],\n };\n },\n }),\n createResolver({\n intent: ThreadAction.Delete,\n resolve: ({ subject, anchor, thread: _thread }, undo) => {\n const thread = _thread ?? (anchor[RelationSourceId] as ThreadType);\n const { state } = context.getCapability(ThreadCapabilities.MutableState);\n const subjectId = fullyQualifiedId(subject);\n const draft = state.drafts[subjectId];\n if (draft) {\n // Check if we're deleting a draft; if so, remove it.\n const index = draft.findIndex((a) => a.id === anchor.id);\n if (index !== -1) {\n draft.splice(index, 1);\n return;\n }\n }\n\n const space = getSpace(anchor);\n if (!space) {\n return;\n }\n\n if (!undo) {\n batch(() => {\n space.db.remove(thread);\n space.db.remove(anchor);\n });\n\n return {\n undoable: {\n message: ['thread deleted label', { ns: THREAD_PLUGIN }],\n data: { thread, anchor },\n },\n intents: [\n createIntent(ObservabilityAction.SendEvent, {\n name: 'threads.delete',\n properties: {\n spaceId: space.id,\n threadId: thread.id,\n },\n }),\n ],\n };\n } else {\n batch(() => {\n space.db.add(thread);\n space.db.add(anchor);\n });\n\n return {\n intents: [\n createIntent(ObservabilityAction.SendEvent, {\n name: 'threads.undo-delete',\n properties: {\n spaceId: space.id,\n threadId: thread.id,\n },\n }),\n ],\n };\n }\n },\n }),\n createResolver({\n intent: ThreadAction.AddMessage,\n resolve: ({ anchor, subject, sender, text }) => {\n const thread = anchor[RelationSourceId] as ThreadType;\n const { state } = context.getCapability(ThreadCapabilities.MutableState);\n const subjectId = fullyQualifiedId(subject);\n const space = getSpace(subject);\n invariant(space, 'Space not found');\n const intents = [];\n\n const message = live(DataType.Message, {\n sender,\n created: new Date().toISOString(),\n blocks: [{ type: 'text', text }],\n // TODO(wittjosiah): Context based on attention.\n // context: context ? makeRef(context) : undefined,\n });\n thread.messages.push(Ref.make(message));\n\n const draft = state.drafts[subjectId]?.find((a) => a.id === anchor.id);\n if (draft) {\n // Move draft to document.\n thread.status = 'active';\n // TODO(wittjosiah): This causes the thread to flash as it transitions from draft to db.\n state.drafts[subjectId] = state.drafts[subjectId]?.filter((a) => a.id !== anchor.id);\n intents.push(createIntent(SpaceAction.AddObject, { object: thread, target: space, hidden: true }));\n intents.push(\n createIntent(SpaceAction.AddRelation, {\n space,\n schema: AnchoredTo,\n source: thread,\n target: subject,\n fields: { anchor: draft.anchor },\n }),\n );\n intents.push(\n createIntent(ObservabilityAction.SendEvent, {\n name: 'threads.create',\n properties: {\n spaceId: space.id,\n threadId: thread.id,\n },\n }),\n );\n }\n\n intents.push(\n createIntent(ObservabilityAction.SendEvent, {\n name: 'threads.message.add',\n properties: {\n spaceId: space.id,\n threadId: thread.id,\n threadLength: thread.messages.length,\n messageId: message.id,\n messageLength: text.length,\n },\n }),\n );\n\n return { intents };\n },\n }),\n createResolver({\n intent: ThreadAction.DeleteMessage,\n resolve: ({ subject, anchor, messageId, message, messageIndex }, undo) => {\n const thread = anchor[RelationSourceId] as ThreadType;\n const space = getSpace(subject);\n invariant(space, 'Space not found');\n\n if (!undo) {\n const messageIndex = thread.messages.findIndex(Ref.hasObjectId(messageId));\n const message = thread.messages[messageIndex]?.target;\n if (!message) {\n return;\n }\n\n if (messageIndex === 0 && thread.messages.length === 1) {\n // If the message is the only message in the thread, delete the thread.\n return {\n intents: [createIntent(ThreadAction.Delete, { subject, anchor })],\n };\n } else {\n thread.messages.splice(messageIndex, 1);\n }\n\n return {\n undoable: {\n message: ['message deleted label', { ns: THREAD_PLUGIN }],\n data: { message, messageIndex },\n },\n intents: [\n createIntent(ObservabilityAction.SendEvent, {\n name: 'threads.message.delete',\n properties: {\n spaceId: space.id,\n threadId: thread.id,\n messageId: message.id,\n },\n }),\n ],\n };\n } else {\n if (messageIndex === undefined || !message) {\n return;\n }\n\n thread.messages.splice(messageIndex, 0, Ref.make(message));\n return {\n intents: [\n createIntent(ObservabilityAction.SendEvent, {\n name: 'threads.message.undo-delete',\n properties: {\n spaceId: space.id,\n threadId: thread.id,\n messageId: message.id,\n },\n }),\n ],\n };\n }\n },\n }),\n ]);\n"],
5
+ "mappings": "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",
6
+ "names": ["import_types", "context", "contributes", "Capabilities", "IntentResolver", "createResolver", "intent", "ThreadAction", "CreateChannel", "resolve", "name", "data", "object", "live", "ChannelType", "defaultThread", "Ref", "make", "ThreadType", "messages", "status", "threads", "CreateChannelThread", "channel", "thread", "push", "Create", "anchor", "_anchor", "subject", "space", "getSpace", "invariant", "state", "getCapability", "ThreadCapabilities", "MutableState", "subjectId", "fullyQualifiedId", "AnchoredTo", "RelationSourceId", "RelationTargetId", "draft", "drafts", "intents", "createIntent", "Select", "current", "DeckAction", "ChangeCompanion", "primary", "companion", "ATTENDABLE_PATH_SEPARATOR", "ToggleResolved", "undefined", "spaceId", "id", "ObservabilityAction", "SendEvent", "properties", "threadId", "Delete", "_thread", "undo", "index", "findIndex", "a", "splice", "batch", "db", "remove", "undoable", "message", "ns", "THREAD_PLUGIN", "add", "AddMessage", "sender", "text", "DataType", "Message", "created", "Date", "toISOString", "blocks", "type", "find", "filter", "SpaceAction", "AddObject", "target", "hidden", "AddRelation", "schema", "source", "fields", "threadLength", "length", "messageId", "messageLength", "DeleteMessage", "messageIndex", "hasObjectId"]
7
+ }
@@ -0,0 +1,178 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var markdown_NJDPXIKD_exports = {};
20
+ __export(markdown_NJDPXIKD_exports, {
21
+ default: () => markdown_default
22
+ });
23
+ module.exports = __toCommonJS(markdown_NJDPXIKD_exports);
24
+ var import_chunk_TKHJVC2C = require("./chunk-TKHJVC2C.cjs");
25
+ var import_chunk_4YSNVPWU = require("./chunk-4YSNVPWU.cjs");
26
+ var import_chunk_HLMCEE5K = require("./chunk-HLMCEE5K.cjs");
27
+ var import_view = require("@codemirror/view");
28
+ var import_app_framework = require("@dxos/app-framework");
29
+ var import_types = require("@dxos/plugin-deck/types");
30
+ var import_plugin_markdown = require("@dxos/plugin-markdown");
31
+ var import_echo = require("@dxos/react-client/echo");
32
+ var import_react_ui_editor = require("@dxos/react-ui-editor");
33
+ var import_view2 = require("@codemirror/view");
34
+ var import_signals_core = require("@preact/signals-core");
35
+ var import_app_framework2 = require("@dxos/app-framework");
36
+ var import_echo_schema = require("@dxos/echo-schema");
37
+ var import_echo2 = require("@dxos/react-client/echo");
38
+ var import_react_ui_editor2 = require("@dxos/react-ui-editor");
39
+ var import_schema = require("@dxos/schema");
40
+ var getName = (doc, anchor) => {
41
+ if (doc.content) {
42
+ const [start, end] = anchor.split(":");
43
+ return (0, import_echo2.getTextInRange)((0, import_echo2.createDocAccessor)(doc.content.target, [
44
+ "content"
45
+ ]), start, end);
46
+ }
47
+ };
48
+ var threads = (state, doc, dispatch) => {
49
+ const space = doc && (0, import_echo2.getSpace)(doc);
50
+ if (!doc || !space || !dispatch) {
51
+ return [
52
+ (0, import_react_ui_editor2.comments)()
53
+ ];
54
+ }
55
+ const query = space.db.query(import_echo_schema.Query.select(import_echo_schema.Filter.ids(doc.id)).targetOf(import_schema.AnchoredTo));
56
+ const unsubscribe = query.subscribe();
57
+ const anchors = (0, import_signals_core.computed)(() => query.objects.filter((anchor) => {
58
+ const thread = anchor[import_echo_schema.RelationSourceId];
59
+ return (0, import_echo_schema.isInstanceOf)(import_chunk_TKHJVC2C.ThreadType, thread) && thread.status !== "resolved";
60
+ }).concat(state.drafts[(0, import_echo2.fullyQualifiedId)(doc)] ?? []));
61
+ return [
62
+ import_view2.EditorView.domEventHandlers({
63
+ destroy: () => {
64
+ unsubscribe();
65
+ }
66
+ }),
67
+ import_view2.EditorView.updateListener.of((update) => {
68
+ if (update.docChanged) {
69
+ anchors.value.forEach((anchor) => {
70
+ if (anchor.anchor) {
71
+ const name = getName(doc, anchor.anchor);
72
+ const thread = anchor[import_echo_schema.RelationSourceId];
73
+ if (name && name !== thread.name) {
74
+ thread.name = name;
75
+ }
76
+ }
77
+ });
78
+ }
79
+ }),
80
+ (0, import_react_ui_editor2.createExternalCommentSync)((0, import_echo2.fullyQualifiedId)(doc), (sink) => (0, import_signals_core.effect)(() => sink()), () => anchors.value.filter((anchor) => anchor.anchor).map((anchor) => ({
81
+ id: (0, import_echo2.fullyQualifiedId)(anchor[import_echo_schema.RelationSourceId]),
82
+ cursor: anchor.anchor
83
+ }))),
84
+ (0, import_react_ui_editor2.comments)({
85
+ id: (0, import_echo2.fullyQualifiedId)(doc),
86
+ onCreate: ({ cursor }) => {
87
+ const name = getName(doc, cursor);
88
+ void dispatch((0, import_app_framework2.createIntent)(import_chunk_TKHJVC2C.ThreadAction.Create, {
89
+ anchor: cursor,
90
+ name,
91
+ subject: doc
92
+ }));
93
+ },
94
+ onDelete: ({ id }) => {
95
+ const draft = state.drafts[(0, import_echo2.fullyQualifiedId)(doc)];
96
+ if (draft) {
97
+ const index = draft.findIndex((thread2) => (0, import_echo2.fullyQualifiedId)(thread2) === id);
98
+ if (index !== -1) {
99
+ draft.splice(index, 1);
100
+ }
101
+ }
102
+ const thread = query.objects.find((object) => (0, import_echo2.getSource)(object).id === id);
103
+ if (thread) {
104
+ thread.anchor = void 0;
105
+ }
106
+ },
107
+ onUpdate: ({ id, cursor }) => {
108
+ const draft = state.drafts[(0, import_echo2.fullyQualifiedId)(doc)]?.find((thread) => (0, import_echo2.fullyQualifiedId)(thread) === id);
109
+ if (draft) {
110
+ const thread = draft[import_echo_schema.RelationSourceId];
111
+ thread.name = getName(doc, cursor);
112
+ draft.anchor = cursor;
113
+ }
114
+ const relation = query.objects.find((object) => (0, import_echo2.getSource)(object).id === id);
115
+ if (relation) {
116
+ const thread = (0, import_echo2.getSource)(relation);
117
+ if ((0, import_echo_schema.isInstanceOf)(import_chunk_TKHJVC2C.ThreadType, thread)) {
118
+ thread.name = getName(doc, cursor);
119
+ relation.anchor = cursor;
120
+ }
121
+ }
122
+ },
123
+ onSelect: ({ selection }) => {
124
+ const current = selection.current ?? selection.closest;
125
+ if (current) {
126
+ void dispatch((0, import_app_framework2.createIntent)(import_chunk_TKHJVC2C.ThreadAction.Select, {
127
+ current
128
+ }));
129
+ }
130
+ }
131
+ })
132
+ ];
133
+ };
134
+ var markdown_default = (context) => (0, import_app_framework.contributes)(import_plugin_markdown.MarkdownCapabilities.Extensions, [
135
+ ({ document: doc }) => {
136
+ const { dispatchPromise: dispatch } = context.getCapability(import_app_framework.Capabilities.IntentDispatcher);
137
+ const { state } = context.getCapability(import_chunk_4YSNVPWU.ThreadCapabilities.MutableState);
138
+ return threads(state, doc, dispatch);
139
+ },
140
+ ({ document: doc }) => {
141
+ const { state } = context.getCapability(import_chunk_4YSNVPWU.ThreadCapabilities.MutableState);
142
+ return import_view.EditorView.updateListener.of((update) => {
143
+ if (update.docChanged || update.selectionSet) {
144
+ state.toolbar[(0, import_echo.fullyQualifiedId)(doc)] = selectionOverlapsComment(update.state);
145
+ }
146
+ });
147
+ },
148
+ ({ document: doc }) => {
149
+ const { dispatchPromise: dispatch } = context.getCapability(import_app_framework.Capabilities.IntentDispatcher);
150
+ const id = (0, import_echo.fullyQualifiedId)(doc);
151
+ return import_view.EditorView.updateListener.of((update) => {
152
+ update.transactions.forEach((transaction) => {
153
+ transaction.effects.forEach(async (effect2) => {
154
+ if (effect2.is(import_react_ui_editor.commentClickedEffect)) {
155
+ void dispatch((0, import_app_framework.createIntent)(import_types.DeckAction.ChangeCompanion, {
156
+ primary: id,
157
+ companion: `${id}${import_types.ATTENDABLE_PATH_SEPARATOR}comments`
158
+ }));
159
+ }
160
+ });
161
+ });
162
+ });
163
+ }
164
+ ]);
165
+ var selectionOverlapsComment = (state) => {
166
+ const commentState = state.field(import_react_ui_editor.commentsState, false);
167
+ if (commentState === void 0) {
168
+ return false;
169
+ }
170
+ const { selection } = state;
171
+ for (const range of selection.ranges) {
172
+ if (commentState.comments.some(({ range: commentRange }) => (0, import_react_ui_editor.overlap)(commentRange, range))) {
173
+ return true;
174
+ }
175
+ }
176
+ return false;
177
+ };
178
+ //# sourceMappingURL=markdown-NJDPXIKD.cjs.map