@dxos/plugin-thread 0.8.4-main.28f8d3d → 0.8.4-main.406dc2a

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 (246) hide show
  1. package/dist/lib/browser/ChannelContainer-BGDGZHV4.mjs +16 -0
  2. package/dist/lib/browser/ChatContainer-75KJZ4XR.mjs +15 -0
  3. package/dist/lib/browser/{app-graph-builder-AF3M7UWN.mjs → app-graph-builder-ODKIAXR7.mjs} +17 -17
  4. package/dist/lib/browser/app-graph-builder-ODKIAXR7.mjs.map +7 -0
  5. package/dist/lib/browser/{call-manager-XRRCAVLI.mjs → call-manager-BCKLI4QD.mjs} +7 -7
  6. package/dist/lib/browser/{call-manager-XRRCAVLI.mjs.map → call-manager-BCKLI4QD.mjs.map} +1 -1
  7. package/dist/lib/browser/chunk-2MUYQOQE.mjs +23 -0
  8. package/dist/lib/browser/{chunk-2CWJBXBH.mjs.map → chunk-2MUYQOQE.mjs.map} +3 -3
  9. package/dist/lib/browser/chunk-B7YQ7QR2.mjs +376 -0
  10. package/dist/lib/browser/chunk-B7YQ7QR2.mjs.map +7 -0
  11. package/dist/lib/browser/{chunk-ZJ7QBXK6.mjs → chunk-CMCVHULC.mjs} +17 -15
  12. package/dist/lib/browser/chunk-CMCVHULC.mjs.map +7 -0
  13. package/dist/lib/browser/{chunk-GERVMFQW.mjs → chunk-CP7E2HRE.mjs} +2 -2
  14. package/dist/lib/browser/chunk-CP7E2HRE.mjs.map +7 -0
  15. package/dist/lib/browser/{chunk-X5PIP5YR.mjs → chunk-HDEQRBOC.mjs} +37 -5
  16. package/dist/lib/{node-esm/chunk-SED3O2XO.mjs.map → browser/chunk-HDEQRBOC.mjs.map} +4 -4
  17. package/dist/lib/browser/chunk-L326LSNS.mjs +18 -0
  18. package/dist/lib/browser/chunk-L326LSNS.mjs.map +7 -0
  19. package/dist/lib/browser/{chunk-EV4JWI7L.mjs → chunk-T4KJ5JR4.mjs} +5 -7
  20. package/dist/lib/browser/chunk-T4KJ5JR4.mjs.map +7 -0
  21. package/dist/lib/browser/chunk-VJMKS4CZ.mjs +619 -0
  22. package/dist/lib/browser/chunk-VJMKS4CZ.mjs.map +7 -0
  23. package/dist/lib/browser/{chunk-DW7JD64V.mjs → chunk-VTYX3SIM.mjs} +26 -16
  24. package/dist/lib/browser/chunk-VTYX3SIM.mjs.map +7 -0
  25. package/dist/lib/browser/{chunk-JGKMMI65.mjs → chunk-XYUJXHYV.mjs} +54 -4
  26. package/dist/lib/browser/chunk-XYUJXHYV.mjs.map +7 -0
  27. package/dist/lib/browser/{chunk-TUFWPOVS.mjs → chunk-ZCEU5K23.mjs} +460 -268
  28. package/dist/lib/browser/chunk-ZCEU5K23.mjs.map +7 -0
  29. package/dist/lib/browser/index.mjs +22 -13
  30. package/dist/lib/browser/index.mjs.map +3 -3
  31. package/dist/lib/browser/{intent-resolver-DCY4P4OX.mjs → intent-resolver-VOQD3TQ2.mjs} +73 -15
  32. package/dist/lib/browser/intent-resolver-VOQD3TQ2.mjs.map +7 -0
  33. package/dist/lib/browser/{markdown-WZSXCEZJ.mjs → markdown-R6MGRIA6.mjs} +6 -6
  34. package/dist/lib/browser/{markdown-WZSXCEZJ.mjs.map → markdown-R6MGRIA6.mjs.map} +1 -1
  35. package/dist/lib/browser/meta.json +1 -1
  36. package/dist/lib/browser/react-root-UMSBTN6H.mjs +28 -0
  37. package/dist/lib/browser/react-root-UMSBTN6H.mjs.map +7 -0
  38. package/dist/lib/browser/{react-surface-PYAMIADB.mjs → react-surface-SXMQEWKE.mjs} +22 -22
  39. package/dist/lib/browser/react-surface-SXMQEWKE.mjs.map +7 -0
  40. package/dist/lib/browser/{settings-AC6YSASL.mjs → settings-TCNF54PN.mjs} +5 -5
  41. package/dist/lib/browser/{settings-AC6YSASL.mjs.map → settings-TCNF54PN.mjs.map} +1 -1
  42. package/dist/lib/browser/{state-2T4KDWBX.mjs → state-ZQ4IPOJT.mjs} +5 -5
  43. package/dist/lib/browser/{state-2T4KDWBX.mjs.map → state-ZQ4IPOJT.mjs.map} +1 -1
  44. package/dist/lib/browser/toolkit-JF4B4QIO.mjs +84 -0
  45. package/dist/lib/browser/toolkit-JF4B4QIO.mjs.map +7 -0
  46. package/dist/lib/browser/types/index.mjs +2 -2
  47. package/dist/lib/node-esm/ChannelContainer-OXC6BTU7.mjs +17 -0
  48. package/dist/lib/node-esm/{ChatContainer-2CT4PJ7I.mjs → ChatContainer-SH6LTFQL.mjs} +6 -6
  49. package/dist/lib/node-esm/{app-graph-builder-OLSJVCWY.mjs → app-graph-builder-DMPT3MY6.mjs} +17 -17
  50. package/dist/lib/node-esm/app-graph-builder-DMPT3MY6.mjs.map +7 -0
  51. package/dist/lib/node-esm/{call-manager-EI7FXRAU.mjs → call-manager-Q7RY2YP4.mjs} +7 -7
  52. package/dist/lib/node-esm/{call-manager-EI7FXRAU.mjs.map → call-manager-Q7RY2YP4.mjs.map} +1 -1
  53. package/dist/lib/node-esm/{chunk-YIDU3DXK.mjs → chunk-2KZ4ODHU.mjs} +17 -15
  54. package/dist/lib/node-esm/chunk-2KZ4ODHU.mjs.map +7 -0
  55. package/dist/lib/node-esm/{chunk-SED3O2XO.mjs → chunk-2MMJF7DW.mjs} +37 -5
  56. package/dist/lib/node-esm/chunk-2MMJF7DW.mjs.map +7 -0
  57. package/dist/lib/node-esm/{chunk-QBHKLWGR.mjs → chunk-2V3WSLUZ.mjs} +54 -4
  58. package/dist/lib/node-esm/chunk-2V3WSLUZ.mjs.map +7 -0
  59. package/dist/lib/node-esm/{chunk-57XR3LEF.mjs → chunk-ABUFOZVX.mjs} +2 -2
  60. package/dist/lib/node-esm/chunk-ABUFOZVX.mjs.map +7 -0
  61. package/dist/lib/node-esm/{chunk-XVKWHTH4.mjs → chunk-BAMZXJS4.mjs} +26 -16
  62. package/dist/lib/node-esm/chunk-BAMZXJS4.mjs.map +7 -0
  63. package/dist/lib/node-esm/chunk-BTGKI5IK.mjs +377 -0
  64. package/dist/lib/node-esm/chunk-BTGKI5IK.mjs.map +7 -0
  65. package/dist/lib/node-esm/chunk-GZ4WL2IS.mjs +25 -0
  66. package/dist/lib/node-esm/{chunk-6CRHHOST.mjs.map → chunk-GZ4WL2IS.mjs.map} +3 -3
  67. package/dist/lib/node-esm/chunk-LCHTNRK7.mjs +19 -0
  68. package/dist/lib/node-esm/chunk-LCHTNRK7.mjs.map +7 -0
  69. package/dist/lib/node-esm/chunk-NHSIAEDW.mjs +620 -0
  70. package/dist/lib/node-esm/chunk-NHSIAEDW.mjs.map +7 -0
  71. package/dist/lib/node-esm/{chunk-GRLRWTRU.mjs → chunk-OBVAURUU.mjs} +5 -7
  72. package/dist/lib/node-esm/chunk-OBVAURUU.mjs.map +7 -0
  73. package/dist/lib/node-esm/{chunk-4TME3BR4.mjs → chunk-TIPIOH2J.mjs} +460 -268
  74. package/dist/lib/node-esm/chunk-TIPIOH2J.mjs.map +7 -0
  75. package/dist/lib/node-esm/index.mjs +22 -13
  76. package/dist/lib/node-esm/index.mjs.map +3 -3
  77. package/dist/lib/node-esm/{intent-resolver-QGTPU6QB.mjs → intent-resolver-AKVH66PH.mjs} +73 -15
  78. package/dist/lib/node-esm/intent-resolver-AKVH66PH.mjs.map +7 -0
  79. package/dist/lib/node-esm/{markdown-3MZXUGUA.mjs → markdown-MYGTDXT6.mjs} +6 -6
  80. package/dist/lib/node-esm/{markdown-3MZXUGUA.mjs.map → markdown-MYGTDXT6.mjs.map} +1 -1
  81. package/dist/lib/node-esm/meta.json +1 -1
  82. package/dist/lib/node-esm/react-root-W6AVTL5M.mjs +29 -0
  83. package/dist/lib/node-esm/react-root-W6AVTL5M.mjs.map +7 -0
  84. package/dist/lib/node-esm/{react-surface-UJFCSFNO.mjs → react-surface-NLSZJGMO.mjs} +22 -22
  85. package/dist/lib/node-esm/react-surface-NLSZJGMO.mjs.map +7 -0
  86. package/dist/lib/node-esm/{settings-N52O7MLS.mjs → settings-ZQHGVFBY.mjs} +5 -5
  87. package/dist/lib/node-esm/{settings-N52O7MLS.mjs.map → settings-ZQHGVFBY.mjs.map} +1 -1
  88. package/dist/lib/node-esm/{state-62TQKQVB.mjs → state-FSLLJ5TZ.mjs} +5 -5
  89. package/dist/lib/node-esm/{state-62TQKQVB.mjs.map → state-FSLLJ5TZ.mjs.map} +1 -1
  90. package/dist/lib/node-esm/toolkit-DHPKJITO.mjs +85 -0
  91. package/dist/lib/node-esm/toolkit-DHPKJITO.mjs.map +7 -0
  92. package/dist/lib/node-esm/types/index.mjs +2 -2
  93. package/dist/types/src/ThreadPlugin.d.ts +1 -1
  94. package/dist/types/src/ThreadPlugin.d.ts.map +1 -1
  95. package/dist/types/src/calls/media-manager.d.ts +1 -1
  96. package/dist/types/src/calls/media-manager.d.ts.map +1 -1
  97. package/dist/types/src/calls/types.d.ts.map +1 -1
  98. package/dist/types/src/calls/util/calls-service.d.ts +3 -1
  99. package/dist/types/src/calls/util/calls-service.d.ts.map +1 -1
  100. package/dist/types/src/calls/util/stub-media-streams.d.ts.map +1 -1
  101. package/dist/types/src/calls-service.stories.d.ts +10 -9
  102. package/dist/types/src/calls-service.stories.d.ts.map +1 -1
  103. package/dist/types/src/capabilities/app-graph-builder.d.ts +1 -1
  104. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  105. package/dist/types/src/capabilities/call-manager.d.ts +1 -1
  106. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  107. package/dist/types/src/capabilities/index.d.ts +11 -10
  108. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  109. package/dist/types/src/capabilities/intent-resolver.d.ts +1 -1
  110. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  111. package/dist/types/src/capabilities/markdown.d.ts +1 -1
  112. package/dist/types/src/capabilities/react-root.d.ts +2 -2
  113. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  114. package/dist/types/src/capabilities/settings.d.ts +1 -1
  115. package/dist/types/src/capabilities/state.d.ts +2 -2
  116. package/dist/types/src/capabilities/toolkit.d.ts +6 -0
  117. package/dist/types/src/capabilities/toolkit.d.ts.map +1 -0
  118. package/dist/types/src/components/CallDebugPanel.d.ts +7 -0
  119. package/dist/types/src/components/CallDebugPanel.d.ts.map +1 -1
  120. package/dist/types/src/components/ChannelContainer.stories.d.ts +89 -5
  121. package/dist/types/src/components/ChannelContainer.stories.d.ts.map +1 -1
  122. package/dist/types/src/components/Chat.stories.d.ts +91 -5
  123. package/dist/types/src/components/Chat.stories.d.ts.map +1 -1
  124. package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
  125. package/dist/types/src/components/Comments.stories.d.ts +156 -4
  126. package/dist/types/src/components/Comments.stories.d.ts.map +1 -1
  127. package/dist/types/src/components/CommentsThreadContainer.d.ts +2 -2
  128. package/dist/types/src/components/CommentsThreadContainer.d.ts.map +1 -1
  129. package/dist/types/src/components/Media/VideoObject.d.ts +2 -2
  130. package/dist/types/src/components/Media/VideoObject.d.ts.map +1 -1
  131. package/dist/types/src/components/Media/VideoObject.stories.d.ts +18 -4
  132. package/dist/types/src/components/Media/VideoObject.stories.d.ts.map +1 -1
  133. package/dist/types/src/components/MessageContainer.d.ts +4 -1
  134. package/dist/types/src/components/MessageContainer.d.ts.map +1 -1
  135. package/dist/types/src/components/Participant/Participant.d.ts.map +1 -1
  136. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts +155 -3
  137. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts.map +1 -1
  138. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts +157 -4
  139. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts.map +1 -1
  140. package/dist/types/src/components/ThreadComplementary.d.ts.map +1 -1
  141. package/dist/types/src/components/ThreadSettings.d.ts +1 -1
  142. package/dist/types/src/components/ThreadSettings.d.ts.map +1 -1
  143. package/dist/types/src/components/command-extension.d.ts.map +1 -1
  144. package/dist/types/src/components/testing.d.ts +1 -0
  145. package/dist/types/src/components/testing.d.ts.map +1 -1
  146. package/dist/types/src/hooks/index.d.ts +1 -0
  147. package/dist/types/src/hooks/index.d.ts.map +1 -1
  148. package/dist/types/src/hooks/useBlackCanvasStreamTrack.d.ts +2 -0
  149. package/dist/types/src/hooks/useBlackCanvasStreamTrack.d.ts.map +1 -0
  150. package/dist/types/src/hooks/useVideoStreamTrack.d.ts +1 -1
  151. package/dist/types/src/hooks/useVideoStreamTrack.d.ts.map +1 -1
  152. package/dist/types/src/meta.d.ts +1 -2
  153. package/dist/types/src/meta.d.ts.map +1 -1
  154. package/dist/types/src/translations.d.ts +3 -1
  155. package/dist/types/src/translations.d.ts.map +1 -1
  156. package/dist/types/src/types/schema.d.ts +126 -111
  157. package/dist/types/src/types/schema.d.ts.map +1 -1
  158. package/dist/types/src/types/types.d.ts +259 -174
  159. package/dist/types/src/types/types.d.ts.map +1 -1
  160. package/dist/types/tsconfig.tsbuildinfo +1 -1
  161. package/package.json +60 -58
  162. package/src/ThreadPlugin.tsx +128 -122
  163. package/src/calls/call-manager.ts +1 -1
  164. package/src/calls/media-manager.ts +58 -32
  165. package/src/calls/types.ts +7 -3
  166. package/src/calls/util/calls-service.ts +61 -11
  167. package/src/calls/util/stub-media-streams.ts +60 -3
  168. package/src/calls-service.stories.tsx +76 -63
  169. package/src/capabilities/app-graph-builder.ts +13 -10
  170. package/src/capabilities/capabilities.ts +5 -5
  171. package/src/capabilities/index.ts +1 -0
  172. package/src/capabilities/intent-resolver.ts +39 -6
  173. package/src/capabilities/react-root.tsx +2 -2
  174. package/src/capabilities/react-surface.tsx +9 -9
  175. package/src/capabilities/toolkit.ts +82 -0
  176. package/src/components/Call/Toolbar.tsx +4 -4
  177. package/src/components/CallDebugPanel.tsx +108 -49
  178. package/src/components/ChannelContainer.stories.tsx +9 -9
  179. package/src/components/ChannelContainer.tsx +1 -1
  180. package/src/components/Chat.stories.tsx +31 -29
  181. package/src/components/ChatContainer.tsx +4 -1
  182. package/src/components/Comments.stories.tsx +33 -35
  183. package/src/components/CommentsThreadContainer.tsx +8 -7
  184. package/src/components/Media/VideoObject.stories.tsx +35 -28
  185. package/src/components/MessageContainer.tsx +40 -7
  186. package/src/components/Participant/Participant.tsx +13 -7
  187. package/src/components/ResponsiveGrid/ResponsiveContainer.stories.tsx +5 -6
  188. package/src/components/ResponsiveGrid/ResponsiveGrid.stories.tsx +41 -40
  189. package/src/components/ThreadComplementary.tsx +36 -6
  190. package/src/components/ThreadSettings.tsx +6 -7
  191. package/src/components/command-extension.ts +4 -1
  192. package/src/components/testing.ts +22 -0
  193. package/src/hooks/index.ts +1 -0
  194. package/src/hooks/useBlackCanvasStreamTrack.tsx +27 -0
  195. package/src/hooks/useVideoStreamTrack.tsx +6 -3
  196. package/src/meta.ts +3 -4
  197. package/src/testing/stories.ts +1 -1
  198. package/src/translations.ts +3 -1
  199. package/src/types/schema.ts +1 -1
  200. package/src/types/types.ts +21 -13
  201. package/src/typings/peermetrics-webrtc-stats.d.ts +17 -1
  202. package/src/util.ts +1 -1
  203. package/dist/lib/browser/ChannelContainer-O2SFQJU7.mjs +0 -16
  204. package/dist/lib/browser/ChatContainer-PVT3DUZJ.mjs +0 -15
  205. package/dist/lib/browser/app-graph-builder-AF3M7UWN.mjs.map +0 -7
  206. package/dist/lib/browser/chunk-2CWJBXBH.mjs +0 -21
  207. package/dist/lib/browser/chunk-4APCDRSH.mjs +0 -18
  208. package/dist/lib/browser/chunk-4APCDRSH.mjs.map +0 -7
  209. package/dist/lib/browser/chunk-DW7JD64V.mjs.map +0 -7
  210. package/dist/lib/browser/chunk-EV4JWI7L.mjs.map +0 -7
  211. package/dist/lib/browser/chunk-FY4ZRD5X.mjs +0 -367
  212. package/dist/lib/browser/chunk-FY4ZRD5X.mjs.map +0 -7
  213. package/dist/lib/browser/chunk-GERVMFQW.mjs.map +0 -7
  214. package/dist/lib/browser/chunk-J3JO5NWO.mjs +0 -477
  215. package/dist/lib/browser/chunk-J3JO5NWO.mjs.map +0 -7
  216. package/dist/lib/browser/chunk-JGKMMI65.mjs.map +0 -7
  217. package/dist/lib/browser/chunk-TUFWPOVS.mjs.map +0 -7
  218. package/dist/lib/browser/chunk-X5PIP5YR.mjs.map +0 -7
  219. package/dist/lib/browser/chunk-ZJ7QBXK6.mjs.map +0 -7
  220. package/dist/lib/browser/intent-resolver-DCY4P4OX.mjs.map +0 -7
  221. package/dist/lib/browser/react-root-QXPALOUQ.mjs +0 -28
  222. package/dist/lib/browser/react-root-QXPALOUQ.mjs.map +0 -7
  223. package/dist/lib/browser/react-surface-PYAMIADB.mjs.map +0 -7
  224. package/dist/lib/node-esm/ChannelContainer-B2ZGAE4P.mjs +0 -17
  225. package/dist/lib/node-esm/app-graph-builder-OLSJVCWY.mjs.map +0 -7
  226. package/dist/lib/node-esm/chunk-4TME3BR4.mjs.map +0 -7
  227. package/dist/lib/node-esm/chunk-57XR3LEF.mjs.map +0 -7
  228. package/dist/lib/node-esm/chunk-6CRHHOST.mjs +0 -23
  229. package/dist/lib/node-esm/chunk-BF4UKS55.mjs +0 -368
  230. package/dist/lib/node-esm/chunk-BF4UKS55.mjs.map +0 -7
  231. package/dist/lib/node-esm/chunk-GRLRWTRU.mjs.map +0 -7
  232. package/dist/lib/node-esm/chunk-PYTVBN5J.mjs +0 -19
  233. package/dist/lib/node-esm/chunk-PYTVBN5J.mjs.map +0 -7
  234. package/dist/lib/node-esm/chunk-QBHKLWGR.mjs.map +0 -7
  235. package/dist/lib/node-esm/chunk-VNG6M2IY.mjs +0 -478
  236. package/dist/lib/node-esm/chunk-VNG6M2IY.mjs.map +0 -7
  237. package/dist/lib/node-esm/chunk-XVKWHTH4.mjs.map +0 -7
  238. package/dist/lib/node-esm/chunk-YIDU3DXK.mjs.map +0 -7
  239. package/dist/lib/node-esm/intent-resolver-QGTPU6QB.mjs.map +0 -7
  240. package/dist/lib/node-esm/react-root-7ZFJYVUZ.mjs +0 -29
  241. package/dist/lib/node-esm/react-root-7ZFJYVUZ.mjs.map +0 -7
  242. package/dist/lib/node-esm/react-surface-UJFCSFNO.mjs.map +0 -7
  243. /package/dist/lib/browser/{ChannelContainer-O2SFQJU7.mjs.map → ChannelContainer-BGDGZHV4.mjs.map} +0 -0
  244. /package/dist/lib/browser/{ChatContainer-PVT3DUZJ.mjs.map → ChatContainer-75KJZ4XR.mjs.map} +0 -0
  245. /package/dist/lib/node-esm/{ChannelContainer-B2ZGAE4P.mjs.map → ChannelContainer-OXC6BTU7.mjs.map} +0 -0
  246. /package/dist/lib/node-esm/{ChatContainer-2CT4PJ7I.mjs.map → ChatContainer-SH6LTFQL.mjs.map} +0 -0
@@ -0,0 +1,16 @@
1
+ import {
2
+ ChannelContainer,
3
+ ChannelContainer_default
4
+ } from "./chunk-CMCVHULC.mjs";
5
+ import "./chunk-2MUYQOQE.mjs";
6
+ import "./chunk-L326LSNS.mjs";
7
+ import "./chunk-B7YQ7QR2.mjs";
8
+ import "./chunk-HDEQRBOC.mjs";
9
+ import "./chunk-CP7E2HRE.mjs";
10
+ import "./chunk-XYUJXHYV.mjs";
11
+ import "./chunk-T4KJ5JR4.mjs";
12
+ export {
13
+ ChannelContainer,
14
+ ChannelContainer_default as default
15
+ };
16
+ //# sourceMappingURL=ChannelContainer-BGDGZHV4.mjs.map
@@ -0,0 +1,15 @@
1
+ import {
2
+ ChatContainer,
3
+ ChatContainer_default,
4
+ ChatHeading
5
+ } from "./chunk-B7YQ7QR2.mjs";
6
+ import "./chunk-HDEQRBOC.mjs";
7
+ import "./chunk-CP7E2HRE.mjs";
8
+ import "./chunk-XYUJXHYV.mjs";
9
+ import "./chunk-T4KJ5JR4.mjs";
10
+ export {
11
+ ChatContainer,
12
+ ChatHeading,
13
+ ChatContainer_default as default
14
+ };
15
+ //# sourceMappingURL=ChatContainer-75KJZ4XR.mjs.map
@@ -1,33 +1,33 @@
1
1
  import {
2
2
  ChannelType,
3
3
  ThreadAction
4
- } from "./chunk-DW7JD64V.mjs";
4
+ } from "./chunk-VTYX3SIM.mjs";
5
5
  import {
6
6
  ThreadCapabilities
7
- } from "./chunk-4APCDRSH.mjs";
7
+ } from "./chunk-L326LSNS.mjs";
8
8
  import {
9
9
  getAnchor
10
- } from "./chunk-GERVMFQW.mjs";
10
+ } from "./chunk-CP7E2HRE.mjs";
11
11
  import {
12
- THREAD_PLUGIN,
13
12
  meta
14
- } from "./chunk-EV4JWI7L.mjs";
13
+ } from "./chunk-T4KJ5JR4.mjs";
15
14
 
16
15
  // src/capabilities/app-graph-builder.ts
17
16
  import { Rx } from "@effect-rx/rx-react";
18
- import { Option, pipe } from "effect";
17
+ import * as Function from "effect/Function";
18
+ import * as Option from "effect/Option";
19
19
  import { Capabilities, contributes, createIntent } from "@dxos/app-framework";
20
20
  import { Obj } from "@dxos/echo";
21
21
  import { AttentionCapabilities } from "@dxos/plugin-attention";
22
22
  import { ATTENDABLE_PATH_SEPARATOR, DECK_COMPANION_TYPE, PLANK_COMPANION_TYPE } from "@dxos/plugin-deck/types";
23
23
  import { ROOT_ID, createExtension, rxFromSignal } from "@dxos/plugin-graph";
24
24
  import { fullyQualifiedId } from "@dxos/react-client/echo";
25
- var app_graph_builder_default = (context) => {
25
+ var app_graph_builder_default = ((context) => {
26
26
  const resolve = (typename) => context.getCapabilities(Capabilities.Metadata).find(({ id }) => id === typename)?.metadata ?? {};
27
27
  return contributes(Capabilities.AppGraphBuilder, [
28
28
  createExtension({
29
- id: `${THREAD_PLUGIN}/active-call`,
30
- connector: (node) => Rx.make((get) => pipe(get(node), Option.flatMap((node2) => node2.id === ROOT_ID ? Option.some(node2) : Option.none()), Option.map((node2) => {
29
+ id: `${meta.id}/active-call`,
30
+ connector: (node) => Rx.make((get) => Function.pipe(get(node), Option.flatMap((node2) => node2.id === ROOT_ID ? Option.some(node2) : Option.none()), Option.map((node2) => {
31
31
  const [call] = get(context.capabilities(ThreadCapabilities.CallManager));
32
32
  return get(rxFromSignal(() => call?.joined ? [
33
33
  {
@@ -38,7 +38,7 @@ var app_graph_builder_default = (context) => {
38
38
  label: [
39
39
  "call panel label",
40
40
  {
41
- ns: THREAD_PLUGIN
41
+ ns: meta.id
42
42
  }
43
43
  ],
44
44
  icon: "ph--video-conference--regular",
@@ -52,10 +52,10 @@ var app_graph_builder_default = (context) => {
52
52
  // TODO(wittjosiah): The channel shouldn't become the companion during a call.
53
53
  // Alternative: the call/meeting/thread should be a child node of the channel and that should be opened.
54
54
  createExtension({
55
- id: `${THREAD_PLUGIN}/channel-chat-companion`,
55
+ id: `${meta.id}/channel-chat-companion`,
56
56
  connector: (node) => {
57
57
  return Rx.make((get) => {
58
- return pipe(get(node), Option.flatMap((node2) => Obj.instanceOf(ChannelType, node2.data) ? Option.some(node2.data) : Option.none()), Option.map((channel) => {
58
+ return Function.pipe(get(node), Option.flatMap((node2) => Obj.instanceOf(ChannelType, node2.data) ? Option.some(node2.data) : Option.none()), Option.map((channel) => {
59
59
  const callManager = context.getCapability(ThreadCapabilities.CallManager);
60
60
  const joined = get(rxFromSignal(() => callManager.joined && callManager.roomId === fullyQualifiedId(channel)));
61
61
  if (!joined) {
@@ -70,7 +70,7 @@ var app_graph_builder_default = (context) => {
70
70
  label: [
71
71
  "channel companion label",
72
72
  {
73
- ns: THREAD_PLUGIN
73
+ ns: meta.id
74
74
  }
75
75
  ],
76
76
  icon: "ph--hash--regular",
@@ -85,7 +85,7 @@ var app_graph_builder_default = (context) => {
85
85
  }),
86
86
  createExtension({
87
87
  id: `${meta.id}/comments-companion`,
88
- connector: (node) => Rx.make((get) => pipe(get(node), Option.flatMap((node2) => {
88
+ connector: (node) => Rx.make((get) => Function.pipe(get(node), Option.flatMap((node2) => {
89
89
  if (!Obj.isObject(node2.data) || Obj.instanceOf(ChannelType, node2.data)) {
90
90
  return Option.none();
91
91
  }
@@ -115,7 +115,7 @@ var app_graph_builder_default = (context) => {
115
115
  }),
116
116
  createExtension({
117
117
  id: `${meta.id}/comment-toolbar`,
118
- actions: (node) => Rx.make((get) => pipe(get(node), Option.flatMap((node2) => {
118
+ actions: (node) => Rx.make((get) => Function.pipe(get(node), Option.flatMap((node2) => {
119
119
  if (!Obj.isObject(node2.data) || Obj.instanceOf(ChannelType, node2.data)) {
120
120
  return Option.none();
121
121
  }
@@ -164,8 +164,8 @@ var app_graph_builder_default = (context) => {
164
164
  }), Option.getOrElse(() => [])))
165
165
  })
166
166
  ]);
167
- };
167
+ });
168
168
  export {
169
169
  app_graph_builder_default as default
170
170
  };
171
- //# sourceMappingURL=app-graph-builder-AF3M7UWN.mjs.map
171
+ //# sourceMappingURL=app-graph-builder-ODKIAXR7.mjs.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/capabilities/app-graph-builder.ts"],
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { Rx } from '@effect-rx/rx-react';\nimport * as Function from 'effect/Function';\nimport * as Option from 'effect/Option';\n\nimport { Capabilities, type PluginContext, contributes, createIntent } from '@dxos/app-framework';\nimport { Obj } from '@dxos/echo';\nimport { AttentionCapabilities } from '@dxos/plugin-attention';\nimport { ATTENDABLE_PATH_SEPARATOR, DECK_COMPANION_TYPE, PLANK_COMPANION_TYPE } from '@dxos/plugin-deck/types';\nimport { ROOT_ID, createExtension, rxFromSignal } from '@dxos/plugin-graph';\nimport { fullyQualifiedId } from '@dxos/react-client/echo';\n\nimport { meta } from '../meta';\nimport { ChannelType, ThreadAction } from '../types';\nimport { getAnchor } from '../util';\n\nimport { ThreadCapabilities } from './capabilities';\n\n// TODO(wittjosiah): Highlight active calls in L1.\n// Track active meetings by subscribing to meetings query and polling the swarms of recent meetings in the space.\nexport default (context: PluginContext) => {\n const resolve = (typename: string) =>\n context.getCapabilities(Capabilities.Metadata).find(({ id }) => id === typename)?.metadata ?? {};\n\n return contributes(Capabilities.AppGraphBuilder, [\n createExtension({\n id: `${meta.id}/active-call`,\n connector: (node) =>\n Rx.make((get) =>\n Function.pipe(\n get(node),\n Option.flatMap((node) => (node.id === ROOT_ID ? Option.some(node) : Option.none())),\n Option.map((node) => {\n const [call] = get(context.capabilities(ThreadCapabilities.CallManager));\n return get(\n rxFromSignal(() =>\n call?.joined\n ? [\n {\n id: `${node.id}${ATTENDABLE_PATH_SEPARATOR}active-call`,\n type: DECK_COMPANION_TYPE,\n data: null,\n properties: {\n label: ['call panel label', { ns: meta.id }],\n icon: 'ph--video-conference--regular',\n position: 'hoist',\n disposition: 'hidden',\n },\n },\n ]\n : [],\n ),\n );\n }),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n // TODO(wittjosiah): The channel shouldn't become the companion during a call.\n // Alternative: the call/meeting/thread should be a child node of the channel and that should be opened.\n createExtension({\n id: `${meta.id}/channel-chat-companion`,\n connector: (node) => {\n return Rx.make((get) => {\n return Function.pipe(\n get(node),\n Option.flatMap((node) => (Obj.instanceOf(ChannelType, node.data) ? Option.some(node.data) : Option.none())),\n Option.map((channel) => {\n const callManager = context.getCapability(ThreadCapabilities.CallManager);\n const joined = get(\n rxFromSignal(() => callManager.joined && callManager.roomId === fullyQualifiedId(channel)),\n );\n if (!joined) {\n return [];\n }\n\n return [\n {\n id: `${fullyQualifiedId(channel)}${ATTENDABLE_PATH_SEPARATOR}chat`,\n type: PLANK_COMPANION_TYPE,\n data: 'chat',\n properties: {\n label: ['channel companion label', { ns: meta.id }],\n icon: 'ph--hash--regular',\n position: 'hoist',\n disposition: 'hidden',\n },\n },\n ];\n }),\n Option.getOrElse(() => []),\n );\n });\n },\n }),\n createExtension({\n id: `${meta.id}/comments-companion`,\n connector: (node) =>\n Rx.make((get) =>\n Function.pipe(\n get(node),\n Option.flatMap((node) => {\n if (!Obj.isObject(node.data) || Obj.instanceOf(ChannelType, node.data)) {\n return Option.none();\n }\n const metadata = resolve(Obj.getTypename(node.data)!);\n return typeof metadata.comments === 'string' ? Option.some(node) : Option.none();\n }),\n Option.map((node) => [\n {\n id: [node.id, 'comments'].join(ATTENDABLE_PATH_SEPARATOR),\n type: PLANK_COMPANION_TYPE,\n data: 'comments',\n properties: {\n label: ['comments label', { ns: meta.id }],\n icon: 'ph--chat-text--regular',\n disposition: 'hidden',\n position: 'hoist',\n },\n },\n ]),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n createExtension({\n id: `${meta.id}/comment-toolbar`,\n actions: (node) =>\n Rx.make((get) =>\n Function.pipe(\n get(node),\n Option.flatMap((node) => {\n if (!Obj.isObject(node.data) || Obj.instanceOf(ChannelType, node.data)) {\n return Option.none();\n }\n const metadata = resolve(Obj.getTypename(node.data)!);\n return typeof metadata.comments === 'string' ? Option.some(node.data) : Option.none();\n }),\n Option.map((object) => {\n const selectionManager = context.getCapability(AttentionCapabilities.Selection);\n const toolbar = get(context.capabilities(ThreadCapabilities.State))[0]?.state.toolbar ?? {};\n const disabled = get(\n rxFromSignal(() => {\n const metadata = resolve(Obj.getTypename(object)!);\n const selection = selectionManager.getSelection(fullyQualifiedId(object), metadata.selectionMode);\n const anchor = getAnchor(selection);\n const invalidSelection = !anchor;\n const overlappingComment = toolbar[fullyQualifiedId(object)];\n return (metadata.comments === 'anchored' && invalidSelection) || overlappingComment;\n }),\n );\n\n return [\n {\n id: `${fullyQualifiedId(object)}/comment`,\n data: () => {\n const { dispatchPromise: dispatch } = context.getCapability(Capabilities.IntentDispatcher);\n const metadata = resolve(Obj.getTypename(object)!);\n const selection = selectionManager.getSelection(fullyQualifiedId(object));\n // TODO(wittjosiah): Use presence of selection to determine if the comment should be anchored.\n // Requires all components which support selection (e.g. table/kanban) to support anchored comments.\n const anchor = metadata.comments === 'anchored' ? getAnchor(selection) : Date.now().toString();\n const name = metadata.getAnchorLabel?.(object, anchor);\n void dispatch(createIntent(ThreadAction.Create, { anchor, name, subject: object }));\n },\n properties: {\n label: ['add comment label', { ns: meta.id }],\n icon: 'ph--chat-text--regular',\n disposition: 'toolbar',\n disabled,\n testId: 'thread.comment.add',\n },\n },\n ];\n }),\n Option.getOrElse(() => []),\n ),\n ),\n }),\n ]);\n};\n"],
5
+ "mappings": "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",
6
+ "names": ["Rx", "Function", "Option", "Capabilities", "contributes", "createIntent", "Obj", "AttentionCapabilities", "ATTENDABLE_PATH_SEPARATOR", "DECK_COMPANION_TYPE", "PLANK_COMPANION_TYPE", "ROOT_ID", "createExtension", "rxFromSignal", "fullyQualifiedId", "context", "resolve", "typename", "getCapabilities", "Capabilities", "Metadata", "find", "id", "metadata", "contributes", "AppGraphBuilder", "createExtension", "meta", "connector", "node", "Rx", "make", "get", "pipe", "flatMap", "ROOT_ID", "some", "none", "map", "call", "capabilities", "ThreadCapabilities", "CallManager", "rxFromSignal", "joined", "ATTENDABLE_PATH_SEPARATOR", "type", "DECK_COMPANION_TYPE", "data", "properties", "label", "ns", "icon", "position", "disposition", "getOrElse", "Obj", "instanceOf", "ChannelType", "channel", "callManager", "getCapability", "roomId", "fullyQualifiedId", "PLANK_COMPANION_TYPE", "isObject", "getTypename", "comments", "join", "actions", "object", "selectionManager", "AttentionCapabilities", "Selection", "toolbar", "State", "state", "disabled", "selection", "getSelection", "selectionMode", "anchor", "getAnchor", "invalidSelection", "overlappingComment", "dispatchPromise", "dispatch", "IntentDispatcher", "Date", "now", "toString", "name", "getAnchorLabel", "createIntent", "ThreadAction", "Create", "subject", "testId"]
7
+ }
@@ -1,24 +1,24 @@
1
1
  import {
2
2
  CallManager
3
- } from "./chunk-TUFWPOVS.mjs";
3
+ } from "./chunk-ZCEU5K23.mjs";
4
4
  import {
5
5
  ThreadCapabilities
6
- } from "./chunk-4APCDRSH.mjs";
7
- import "./chunk-JGKMMI65.mjs";
8
- import "./chunk-EV4JWI7L.mjs";
6
+ } from "./chunk-L326LSNS.mjs";
7
+ import "./chunk-XYUJXHYV.mjs";
8
+ import "./chunk-T4KJ5JR4.mjs";
9
9
 
10
10
  // src/capabilities/call-manager.ts
11
11
  import { contributes } from "@dxos/app-framework";
12
12
  import { ClientCapabilities } from "@dxos/plugin-client";
13
- var call_manager_default = async (context) => {
13
+ var call_manager_default = (async (context) => {
14
14
  const client = context.getCapability(ClientCapabilities.Client);
15
15
  const callManager = new CallManager(client);
16
16
  await callManager.open();
17
17
  return contributes(ThreadCapabilities.CallManager, callManager, () => {
18
18
  void callManager.close();
19
19
  });
20
- };
20
+ });
21
21
  export {
22
22
  call_manager_default as default
23
23
  };
24
- //# sourceMappingURL=call-manager-XRRCAVLI.mjs.map
24
+ //# sourceMappingURL=call-manager-BCKLI4QD.mjs.map
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/capabilities/call-manager.ts"],
4
4
  "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { type PluginContext, contributes } from '@dxos/app-framework';\nimport { ClientCapabilities } from '@dxos/plugin-client';\n\nimport { CallManager } from '../calls';\n\nimport { ThreadCapabilities } from './capabilities';\n\nexport default async (context: PluginContext) => {\n const client = context.getCapability(ClientCapabilities.Client);\n const callManager = new CallManager(client);\n await callManager.open();\n\n return contributes(ThreadCapabilities.CallManager, callManager, () => {\n void callManager.close();\n });\n};\n"],
5
- "mappings": ";;;;;;;;;;AAIA,SAA6BA,mBAAmB;AAChD,SAASC,0BAA0B;AAMnC,IAAA,uBAAe,OAAOC,YAAAA;AACpB,QAAMC,SAASD,QAAQE,cAAcC,mBAAmBC,MAAM;AAC9D,QAAMC,cAAc,IAAIC,YAAYL,MAAAA;AACpC,QAAMI,YAAYE,KAAI;AAEtB,SAAOC,YAAYC,mBAAmBH,aAAaD,aAAa,MAAA;AAC9D,SAAKA,YAAYK,MAAK;EACxB,CAAA;AACF;",
5
+ "mappings": ";;;;;;;;;;AAIA,SAA6BA,mBAAmB;AAChD,SAASC,0BAA0B;AAMnC,IAAA,wBAAe,OAAOC,YAAAA;AACpB,QAAMC,SAASD,QAAQE,cAAcC,mBAAmBC,MAAM;AAC9D,QAAMC,cAAc,IAAIC,YAAYL,MAAAA;AACpC,QAAMI,YAAYE,KAAI;AAEtB,SAAOC,YAAYC,mBAAmBH,aAAaD,aAAa,MAAA;AAC9D,SAAKA,YAAYK,MAAK;EACxB,CAAA;AACF;",
6
6
  "names": ["contributes", "ClientCapabilities", "context", "client", "getCapability", "ClientCapabilities", "Client", "callManager", "CallManager", "open", "contributes", "ThreadCapabilities", "close"]
7
7
  }
@@ -0,0 +1,23 @@
1
+ // src/capabilities/index.ts
2
+ import { lazy } from "@dxos/app-framework";
3
+ var AppGraphBuilder = lazy(() => import("./app-graph-builder-ODKIAXR7.mjs"));
4
+ var CallManager = lazy(() => import("./call-manager-BCKLI4QD.mjs"));
5
+ var IntentResolver = lazy(() => import("./intent-resolver-VOQD3TQ2.mjs"));
6
+ var Markdown = lazy(() => import("./markdown-R6MGRIA6.mjs"));
7
+ var ReactRoot = lazy(() => import("./react-root-UMSBTN6H.mjs"));
8
+ var ReactSurface = lazy(() => import("./react-surface-SXMQEWKE.mjs"));
9
+ var ThreadSettings = lazy(() => import("./settings-TCNF54PN.mjs"));
10
+ var ThreadState = lazy(() => import("./state-ZQ4IPOJT.mjs"));
11
+ var Toolkit = lazy(() => import("./toolkit-JF4B4QIO.mjs"));
12
+
13
+ export {
14
+ AppGraphBuilder,
15
+ CallManager,
16
+ IntentResolver,
17
+ Markdown,
18
+ ReactRoot,
19
+ ReactSurface,
20
+ ThreadState,
21
+ Toolkit
22
+ };
23
+ //# sourceMappingURL=chunk-2MUYQOQE.mjs.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/capabilities/index.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { lazy } from '@dxos/app-framework';\n\nexport const AppGraphBuilder = lazy(() => import('./app-graph-builder'));\nexport const CallManager = lazy(() => import('./call-manager'));\nexport const IntentResolver = lazy(() => import('./intent-resolver'));\nexport const Markdown = lazy(() => import('./markdown'));\nexport const ReactRoot = lazy(() => import('./react-root'));\nexport const ReactSurface = lazy(() => import('./react-surface'));\nexport const ThreadSettings = lazy(() => import('./settings'));\nexport const ThreadState = lazy(() => import('./state'));\n\nexport * from './capabilities';\n"],
5
- "mappings": ";AAIA,SAASA,YAAY;AAEd,IAAMC,kBAAkBC,KAAK,MAAM,OAAO,kCAAA,CAAA;AAC1C,IAAMC,cAAcD,KAAK,MAAM,OAAO,6BAAA,CAAA;AACtC,IAAME,iBAAiBF,KAAK,MAAM,OAAO,gCAAA,CAAA;AACzC,IAAMG,WAAWH,KAAK,MAAM,OAAO,yBAAA,CAAA;AACnC,IAAMI,YAAYJ,KAAK,MAAM,OAAO,2BAAA,CAAA;AACpC,IAAMK,eAAeL,KAAK,MAAM,OAAO,8BAAA,CAAA;AACvC,IAAMM,iBAAiBN,KAAK,MAAM,OAAO,yBAAA,CAAA;AACzC,IAAMO,cAAcP,KAAK,MAAM,OAAO,sBAAA,CAAA;",
6
- "names": ["lazy", "AppGraphBuilder", "lazy", "CallManager", "IntentResolver", "Markdown", "ReactRoot", "ReactSurface", "ThreadSettings", "ThreadState"]
4
+ "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { lazy } from '@dxos/app-framework';\n\nexport const AppGraphBuilder = lazy(() => import('./app-graph-builder'));\nexport const CallManager = lazy(() => import('./call-manager'));\nexport const IntentResolver = lazy(() => import('./intent-resolver'));\nexport const Markdown = lazy(() => import('./markdown'));\nexport const ReactRoot = lazy(() => import('./react-root'));\nexport const ReactSurface = lazy(() => import('./react-surface'));\nexport const ThreadSettings = lazy(() => import('./settings'));\nexport const ThreadState = lazy(() => import('./state'));\nexport const Toolkit = lazy(() => import('./toolkit'));\n\nexport * from './capabilities';\n"],
5
+ "mappings": ";AAIA,SAASA,YAAY;AAEd,IAAMC,kBAAkBC,KAAK,MAAM,OAAO,kCAAA,CAAA;AAC1C,IAAMC,cAAcD,KAAK,MAAM,OAAO,6BAAA,CAAA;AACtC,IAAME,iBAAiBF,KAAK,MAAM,OAAO,gCAAA,CAAA;AACzC,IAAMG,WAAWH,KAAK,MAAM,OAAO,yBAAA,CAAA;AACnC,IAAMI,YAAYJ,KAAK,MAAM,OAAO,2BAAA,CAAA;AACpC,IAAMK,eAAeL,KAAK,MAAM,OAAO,8BAAA,CAAA;AACvC,IAAMM,iBAAiBN,KAAK,MAAM,OAAO,yBAAA,CAAA;AACzC,IAAMO,cAAcP,KAAK,MAAM,OAAO,sBAAA,CAAA;AACtC,IAAMQ,UAAUR,KAAK,MAAM,OAAO,wBAAA,CAAA;",
6
+ "names": ["lazy", "AppGraphBuilder", "lazy", "CallManager", "IntentResolver", "Markdown", "ReactRoot", "ReactSurface", "ThreadSettings", "ThreadState", "Toolkit"]
7
7
  }
@@ -0,0 +1,376 @@
1
+ import {
2
+ useOnEditAnalytics,
3
+ useStatus
4
+ } from "./chunk-HDEQRBOC.mjs";
5
+ import {
6
+ getMessageMetadata
7
+ } from "./chunk-CP7E2HRE.mjs";
8
+ import {
9
+ meta
10
+ } from "./chunk-T4KJ5JR4.mjs";
11
+
12
+ // src/components/ChatContainer.tsx
13
+ import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
14
+ import React2, { useLayoutEffect, useMemo, useRef as useRef2, useState as useState2 } from "react";
15
+ import { Obj, Ref as Ref2 } from "@dxos/echo";
16
+ import { fullyQualifiedId, useMembers } from "@dxos/react-client/echo";
17
+ import { useIdentity as useIdentity2 } from "@dxos/react-client/halo";
18
+ import { Icon, ScrollArea, useThemeContext as useThemeContext2, useTranslation as useTranslation2 } from "@dxos/react-ui";
19
+ import { createBasicExtensions as createBasicExtensions2, createThemeExtensions as createThemeExtensions2, listener } from "@dxos/react-ui-editor";
20
+ import { StackItem } from "@dxos/react-ui-stack";
21
+ import { mx as mx3 } from "@dxos/react-ui-theme";
22
+ import { MessageTextbox, Thread, threadLayout } from "@dxos/react-ui-thread";
23
+ import { DataType } from "@dxos/schema";
24
+ import { isNonNullable } from "@dxos/util";
25
+
26
+ // src/components/command-extension.ts
27
+ import { HighlightStyle, StreamLanguage, syntaxHighlighting } from "@codemirror/language";
28
+ import { tags } from "@dxos/react-ui-editor";
29
+ import { mx } from "@dxos/react-ui-theme";
30
+ var parser = StreamLanguage.define({
31
+ startState: () => ({
32
+ count: 0
33
+ }),
34
+ token: (stream, state) => {
35
+ state.count++;
36
+ if (stream.eatSpace()) {
37
+ return null;
38
+ }
39
+ if (state.count === 1 && stream.match(/^(\/\w+)/)) {
40
+ return "tagName";
41
+ }
42
+ stream.next();
43
+ return null;
44
+ }
45
+ });
46
+ var styles = HighlightStyle.define([
47
+ {
48
+ tag: tags.tagName,
49
+ class: mx("dx-tag dx-tag--indigo text-baseText font-medium")
50
+ }
51
+ ]);
52
+ var command = [
53
+ parser,
54
+ syntaxHighlighting(styles)
55
+ ];
56
+
57
+ // src/components/MessageContainer.tsx
58
+ import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
59
+ import { EditorView } from "@codemirror/view";
60
+ import React, { forwardRef, useCallback, useEffect, useRef, useState } from "react";
61
+ import { Surface } from "@dxos/app-framework";
62
+ import { Ref } from "@dxos/echo";
63
+ import { PublicKey } from "@dxos/react-client";
64
+ import { useIdentity } from "@dxos/react-client/halo";
65
+ import { IconButton, useOnTransition, useThemeContext, useTranslation } from "@dxos/react-ui";
66
+ import { createBasicExtensions, createThemeExtensions, useTextEditor } from "@dxos/react-ui-editor";
67
+ import { hoverableControlItem, hoverableControls, hoverableFocusedWithinControls, mx as mx2 } from "@dxos/react-ui-theme";
68
+ import { MessageHeading, MessageRoot } from "@dxos/react-ui-thread";
69
+ var buttonGroupClassNames = "flex flex-row items-center gap-0.5 pie-2";
70
+ var buttonClassNames = "!p-1 transition-opacity";
71
+ var MessageContainer = ({ message, members, editable = false, onDelete, onAcceptProposal }) => {
72
+ var _effect = _useSignals();
73
+ try {
74
+ const { t } = useTranslation(meta.id);
75
+ const senderIdentity = members.find((member) => message.sender.identityDid && member.identity.did === message.sender.identityDid || message.sender.identityKey && PublicKey.equals(member.identity.identityKey, message.sender.identityKey))?.identity;
76
+ const messageMetadata = getMessageMetadata(message.id, senderIdentity);
77
+ const userIsAuthor = useIdentity()?.did === messageMetadata.authorId;
78
+ const [editing, setEditing] = useState(false);
79
+ const handleEdit = useCallback(() => setEditing((editing2) => !editing2), []);
80
+ const handleDelete = useCallback(() => onDelete?.(message.id), [
81
+ message,
82
+ onDelete
83
+ ]);
84
+ const handleAcceptProposal = useCallback(() => onAcceptProposal?.(message.id), [
85
+ message,
86
+ onAcceptProposal
87
+ ]);
88
+ const textBlock = message.blocks.find((block) => block._tag === "text");
89
+ const proposalBlock = message.blocks.find((block) => block._tag === "proposal");
90
+ const references = message.blocks.filter((block) => block._tag === "reference").map((block) => block.reference);
91
+ useOnEditAnalytics(message, textBlock, !!editing);
92
+ return /* @__PURE__ */ React.createElement(MessageRoot, {
93
+ ...messageMetadata,
94
+ classNames: [
95
+ hoverableControls,
96
+ hoverableFocusedWithinControls
97
+ ]
98
+ }, /* @__PURE__ */ React.createElement(MessageHeading, {
99
+ authorName: messageMetadata.authorName,
100
+ timestamp: messageMetadata.timestamp
101
+ }, /* @__PURE__ */ React.createElement("div", {
102
+ role: "none",
103
+ className: buttonGroupClassNames
104
+ }, userIsAuthor && editable && /* @__PURE__ */ React.createElement(IconButton, {
105
+ "data-testid": editing ? "thread.message.save" : "thread.message.edit",
106
+ variant: "ghost",
107
+ icon: editing ? "ph--check--regular" : "ph--pencil-simple--regular",
108
+ iconOnly: true,
109
+ label: t(editing ? "save message label" : "edit message label"),
110
+ classNames: [
111
+ buttonClassNames,
112
+ hoverableControlItem
113
+ ],
114
+ onClick: handleEdit
115
+ }), proposalBlock && onAcceptProposal && /* @__PURE__ */ React.createElement(IconButton, {
116
+ "data-testid": "thread.message.accept",
117
+ variant: "ghost",
118
+ icon: "ph--check--regular",
119
+ iconOnly: true,
120
+ label: t("accept proposal label"),
121
+ classNames: [
122
+ buttonClassNames,
123
+ hoverableControlItem
124
+ ],
125
+ onClick: handleAcceptProposal
126
+ }), onDelete && /* @__PURE__ */ React.createElement(IconButton, {
127
+ "data-testid": "thread.message.delete",
128
+ variant: "ghost",
129
+ icon: "ph--x--regular",
130
+ iconOnly: true,
131
+ label: t("delete message label"),
132
+ classNames: [
133
+ buttonClassNames,
134
+ hoverableControlItem
135
+ ],
136
+ onClick: handleDelete
137
+ }))), textBlock && /* @__PURE__ */ React.createElement(TextboxBlock, {
138
+ block: textBlock,
139
+ isAuthor: userIsAuthor,
140
+ editing
141
+ }), proposalBlock && /* @__PURE__ */ React.createElement(ProposalBlock, {
142
+ block: proposalBlock
143
+ }), Ref.Array.targets(references).map((reference, index) => /* @__PURE__ */ React.createElement(MessagePart, {
144
+ key: index,
145
+ part: reference
146
+ })));
147
+ } finally {
148
+ _effect.f();
149
+ }
150
+ };
151
+ var MessagePart = ({ part }) => {
152
+ var _effect = _useSignals();
153
+ try {
154
+ return /* @__PURE__ */ React.createElement(MessageBlockObjectTile, {
155
+ subject: part
156
+ });
157
+ } finally {
158
+ _effect.f();
159
+ }
160
+ };
161
+ var TextboxBlock = ({ block, isAuthor, editing }) => {
162
+ var _effect = _useSignals();
163
+ try {
164
+ const { themeMode } = useThemeContext();
165
+ const inMemoryContentRef = useRef(block.text);
166
+ const handleDocumentChange = useCallback((newState) => {
167
+ inMemoryContentRef.current = newState;
168
+ }, []);
169
+ const saveDocumentChange = useCallback(() => {
170
+ block.text = inMemoryContentRef.current;
171
+ }, [
172
+ block
173
+ ]);
174
+ useOnTransition(editing, true, false, saveDocumentChange);
175
+ const { parentRef, focusAttributes, view } = useTextEditor(() => ({
176
+ initialValue: block.text,
177
+ extensions: [
178
+ createBasicExtensions({
179
+ readOnly: !isAuthor || !editing
180
+ }),
181
+ createThemeExtensions({
182
+ themeMode
183
+ }),
184
+ command,
185
+ EditorView.updateListener.of((update) => {
186
+ if (update.docChanged) {
187
+ handleDocumentChange(update.state.doc.toString());
188
+ }
189
+ })
190
+ ]
191
+ }), [
192
+ block.text,
193
+ editing,
194
+ isAuthor,
195
+ themeMode,
196
+ handleDocumentChange
197
+ ]);
198
+ useEffect(() => {
199
+ editing && view?.focus();
200
+ }, [
201
+ editing,
202
+ view
203
+ ]);
204
+ return /* @__PURE__ */ React.createElement("div", {
205
+ role: "none",
206
+ ref: parentRef,
207
+ className: "mie-4",
208
+ ...focusAttributes
209
+ });
210
+ } finally {
211
+ _effect.f();
212
+ }
213
+ };
214
+ var ProposalBlock = ({ block }) => {
215
+ var _effect = _useSignals();
216
+ try {
217
+ return /* @__PURE__ */ React.createElement("div", {
218
+ role: "none",
219
+ className: "mie-4 italic"
220
+ }, block.text);
221
+ } finally {
222
+ _effect.f();
223
+ }
224
+ };
225
+ var MessageBlockObjectTile = /* @__PURE__ */ forwardRef(({ subject }, forwardedRef) => {
226
+ var _effect = _useSignals();
227
+ try {
228
+ let title = subject.name ?? subject.title ?? subject.type ?? "Object";
229
+ if (typeof title !== "string") {
230
+ title = title?.content ?? "";
231
+ }
232
+ return /* @__PURE__ */ React.createElement("div", {
233
+ role: "group",
234
+ className: mx2("grid col-span-3 py-1 pr-4", hoverableControls, hoverableFocusedWithinControls),
235
+ ref: forwardedRef
236
+ }, /* @__PURE__ */ React.createElement(Surface, {
237
+ role: "card",
238
+ limit: 1,
239
+ data: {
240
+ subject
241
+ },
242
+ fallback: title
243
+ }));
244
+ } finally {
245
+ _effect.f();
246
+ }
247
+ });
248
+
249
+ // src/components/ChatContainer.tsx
250
+ var ChatHeading = ({ attendableId }) => {
251
+ var _effect = _useSignals2();
252
+ try {
253
+ const { t } = useTranslation2(meta.id);
254
+ return /* @__PURE__ */ React2.createElement("div", {
255
+ role: "none",
256
+ className: "flex items-center"
257
+ }, /* @__PURE__ */ React2.createElement(StackItem.SigilButton, {
258
+ attendableId
259
+ }, /* @__PURE__ */ React2.createElement(Icon, {
260
+ icon: "ph--chat--regular",
261
+ size: 5
262
+ })), /* @__PURE__ */ React2.createElement(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 = _useSignals2();
271
+ try {
272
+ const { t } = useTranslation2(meta.id);
273
+ const id = fullyQualifiedId(thread);
274
+ const identity = useIdentity2();
275
+ const members = useMembers(space?.key);
276
+ const activity = useStatus(space, id);
277
+ const [_count, _setCount] = useState2(0);
278
+ const rerenderEditor = () => _setCount((count) => count + 1);
279
+ const [autoFocus, setAutoFocus] = useState2(autoFocusTextbox);
280
+ const threadScrollRef = useRef2(null);
281
+ const { themeMode } = useThemeContext2();
282
+ const textboxMetadata = getMessageMetadata(id, identity);
283
+ const messageRef = useRef2("");
284
+ const extensions = useMemo(() => [
285
+ createBasicExtensions2({
286
+ placeholder: t("message placeholder")
287
+ }),
288
+ createThemeExtensions2({
289
+ themeMode
290
+ }),
291
+ 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
+ useLayoutEffect(() => {
304
+ scrollToEnd("instant");
305
+ }, []);
306
+ const handleCreate = () => {
307
+ if (!messageRef.current?.length) {
308
+ return false;
309
+ }
310
+ thread.messages.push(Ref2.make(Obj.make(DataType.Message, {
311
+ created: (/* @__PURE__ */ new Date()).toISOString(),
312
+ sender: {
313
+ identityDid: identity.did
314
+ },
315
+ blocks: [
316
+ {
317
+ _tag: "text",
318
+ text: messageRef.current
319
+ }
320
+ ],
321
+ properties: context ? {
322
+ context: Ref2.make(context)
323
+ } : void 0
324
+ })));
325
+ messageRef.current = "";
326
+ setAutoFocus(true);
327
+ scrollToEnd("smooth");
328
+ rerenderEditor();
329
+ return true;
330
+ };
331
+ return /* @__PURE__ */ React2.createElement(Thread.Root, {
332
+ current,
333
+ id,
334
+ classNames: [
335
+ "bs-full is-full max-is-prose mli-auto grid-rows-[1fr_min-content_min-content] overflow-hidden",
336
+ "transition-[padding-block-end] [[data-sidebar-inline-start-state=open]_&]:lg:pbe-0"
337
+ ]
338
+ }, /* @__PURE__ */ React2.createElement(ScrollArea.Root, {
339
+ classNames: "col-span-2"
340
+ }, /* @__PURE__ */ React2.createElement(ScrollArea.Viewport, {
341
+ 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]"
342
+ }, /* @__PURE__ */ React2.createElement("div", {
343
+ role: "none",
344
+ className: mx3(threadLayout, "place-self-end")
345
+ }, thread.messages.map((message) => message.target).filter(isNonNullable).map((message) => /* @__PURE__ */ React2.createElement(MessageContainer, {
346
+ key: message.id,
347
+ message,
348
+ members
349
+ }))), /* @__PURE__ */ React2.createElement("div", {
350
+ role: "none",
351
+ className: "bs-px -mbs-px",
352
+ ref: threadScrollRef
353
+ }), /* @__PURE__ */ React2.createElement(ScrollArea.Scrollbar, null, /* @__PURE__ */ React2.createElement(ScrollArea.Thumb, null)))), /* @__PURE__ */ React2.createElement(MessageTextbox, {
354
+ extensions,
355
+ autoFocus,
356
+ onSend: handleCreate,
357
+ ...textboxMetadata
358
+ }), /* @__PURE__ */ React2.createElement(Thread.Status, {
359
+ activity
360
+ }, t("activity message")));
361
+ } finally {
362
+ _effect.f();
363
+ }
364
+ };
365
+ var ChatContainer_default = ChatContainer;
366
+
367
+ export {
368
+ command,
369
+ buttonGroupClassNames,
370
+ buttonClassNames,
371
+ MessageContainer,
372
+ ChatHeading,
373
+ ChatContainer,
374
+ ChatContainer_default
375
+ };
376
+ //# sourceMappingURL=chunk-B7YQ7QR2.mjs.map