@dxos/plugin-thread 0.8.4-main.67995b8 → 0.8.4-main.dedc0f3

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 (248) hide show
  1. package/dist/lib/browser/ChannelContainer-4PYFOIDK.mjs +16 -0
  2. package/dist/lib/browser/{ChatContainer-AIGIWAUG.mjs → ChatContainer-EXNNREYB.mjs} +4 -4
  3. package/dist/lib/browser/{app-graph-builder-N7BE5TYW.mjs → app-graph-builder-FHAOPO57.mjs} +5 -5
  4. package/dist/lib/browser/app-graph-builder-FHAOPO57.mjs.map +7 -0
  5. package/dist/lib/browser/{call-manager-NIPDYUVD.mjs → call-manager-RMPTWSTF.mjs} +4 -4
  6. package/dist/lib/browser/call-manager-RMPTWSTF.mjs.map +7 -0
  7. package/dist/lib/browser/{chunk-LGSDKXPF.mjs → chunk-4APCDRSH.mjs} +1 -1
  8. package/dist/lib/browser/{chunk-LGSDKXPF.mjs.map → chunk-4APCDRSH.mjs.map} +1 -1
  9. package/dist/lib/browser/{chunk-KWPRNHTK.mjs → chunk-7W7QK5ZP.mjs} +232 -230
  10. package/dist/lib/browser/chunk-7W7QK5ZP.mjs.map +7 -0
  11. package/dist/lib/browser/chunk-G4CNILRR.mjs +23 -0
  12. package/dist/lib/browser/{chunk-FR7KJPNY.mjs.map → chunk-G4CNILRR.mjs.map} +3 -3
  13. package/dist/lib/browser/{chunk-GCLD5ESP.mjs → chunk-KTWYVC5X.mjs} +22 -12
  14. package/dist/lib/browser/chunk-KTWYVC5X.mjs.map +7 -0
  15. package/dist/lib/browser/chunk-PBMNFG3B.mjs +376 -0
  16. package/dist/lib/browser/chunk-PBMNFG3B.mjs.map +7 -0
  17. package/dist/lib/browser/{chunk-ERWASUQK.mjs → chunk-RI3Z6MK3.mjs} +38 -6
  18. package/dist/lib/{node-esm/chunk-25ABSYP2.mjs.map → browser/chunk-RI3Z6MK3.mjs.map} +4 -4
  19. package/dist/lib/browser/{chunk-6NSMBO3B.mjs → chunk-XYUJXHYV.mjs} +55 -5
  20. package/dist/lib/browser/chunk-XYUJXHYV.mjs.map +7 -0
  21. package/dist/lib/browser/{chunk-ZE7KWN36.mjs → chunk-ZCEU5K23.mjs} +461 -240
  22. package/dist/lib/browser/chunk-ZCEU5K23.mjs.map +7 -0
  23. package/dist/lib/browser/chunk-ZH2WPTNP.mjs +618 -0
  24. package/dist/lib/browser/chunk-ZH2WPTNP.mjs.map +7 -0
  25. package/dist/lib/browser/index.mjs +20 -9
  26. package/dist/lib/browser/index.mjs.map +3 -3
  27. package/dist/lib/browser/{intent-resolver-JFGLZ6VI.mjs → intent-resolver-J7OCP2P6.mjs} +67 -9
  28. package/dist/lib/browser/intent-resolver-J7OCP2P6.mjs.map +7 -0
  29. package/dist/lib/browser/{markdown-M3FMR7OD.mjs → markdown-Z677YORA.mjs} +4 -4
  30. package/dist/lib/browser/markdown-Z677YORA.mjs.map +7 -0
  31. package/dist/lib/browser/meta.json +1 -1
  32. package/dist/lib/browser/{react-root-JEUSQXI6.mjs → react-root-XKOD4KRB.mjs} +9 -9
  33. package/dist/lib/browser/{react-surface-XWS6GIZY.mjs → react-surface-GVGZRBDK.mjs} +9 -9
  34. package/dist/lib/browser/react-surface-GVGZRBDK.mjs.map +7 -0
  35. package/dist/lib/browser/{settings-E32MTL7A.mjs → settings-GRKEID73.mjs} +2 -2
  36. package/dist/lib/browser/{state-H6CYONWE.mjs → state-2T4KDWBX.mjs} +2 -2
  37. package/dist/lib/browser/{state-H6CYONWE.mjs.map → state-2T4KDWBX.mjs.map} +2 -2
  38. package/dist/lib/browser/toolkit-KUPIIFC6.mjs +80 -0
  39. package/dist/lib/browser/toolkit-KUPIIFC6.mjs.map +7 -0
  40. package/dist/lib/browser/types/index.mjs +1 -1
  41. package/dist/lib/node-esm/{ChannelContainer-7FXCKO7X.mjs → ChannelContainer-KQQEZWUN.mjs} +7 -7
  42. package/dist/lib/node-esm/{ChatContainer-IQUWU426.mjs → ChatContainer-QVQKFBWA.mjs} +4 -4
  43. package/dist/lib/node-esm/{app-graph-builder-VCW76Z6V.mjs → app-graph-builder-XEYWX5FC.mjs} +5 -5
  44. package/dist/lib/node-esm/app-graph-builder-XEYWX5FC.mjs.map +7 -0
  45. package/dist/lib/node-esm/{call-manager-D6O5ZJJ4.mjs → call-manager-QAREJFVX.mjs} +4 -4
  46. package/dist/lib/node-esm/call-manager-QAREJFVX.mjs.map +7 -0
  47. package/dist/lib/node-esm/{chunk-OU5BYIDO.mjs → chunk-2V3WSLUZ.mjs} +55 -5
  48. package/dist/lib/node-esm/chunk-2V3WSLUZ.mjs.map +7 -0
  49. package/dist/lib/node-esm/chunk-4T45PCKP.mjs +25 -0
  50. package/dist/lib/node-esm/{chunk-2CXOK2TD.mjs.map → chunk-4T45PCKP.mjs.map} +3 -3
  51. package/dist/lib/node-esm/chunk-DKCQCENK.mjs +377 -0
  52. package/dist/lib/node-esm/chunk-DKCQCENK.mjs.map +7 -0
  53. package/dist/lib/node-esm/{chunk-25ABSYP2.mjs → chunk-JNPKMT7O.mjs} +38 -6
  54. package/dist/lib/node-esm/chunk-JNPKMT7O.mjs.map +7 -0
  55. package/dist/lib/node-esm/chunk-LE2LIYGX.mjs +619 -0
  56. package/dist/lib/node-esm/chunk-LE2LIYGX.mjs.map +7 -0
  57. package/dist/lib/node-esm/{chunk-TDFHTCZZ.mjs → chunk-P6E247RF.mjs} +22 -12
  58. package/dist/lib/node-esm/chunk-P6E247RF.mjs.map +7 -0
  59. package/dist/lib/node-esm/{chunk-75RJ5DJI.mjs → chunk-PYTVBN5J.mjs} +1 -1
  60. package/dist/lib/node-esm/{chunk-75RJ5DJI.mjs.map → chunk-PYTVBN5J.mjs.map} +1 -1
  61. package/dist/lib/node-esm/{chunk-C3XFMUAY.mjs → chunk-SNKFZQST.mjs} +232 -230
  62. package/dist/lib/node-esm/chunk-SNKFZQST.mjs.map +7 -0
  63. package/dist/lib/node-esm/{chunk-IHDNQLLR.mjs → chunk-TIPIOH2J.mjs} +461 -240
  64. package/dist/lib/node-esm/chunk-TIPIOH2J.mjs.map +7 -0
  65. package/dist/lib/node-esm/index.mjs +20 -9
  66. package/dist/lib/node-esm/index.mjs.map +3 -3
  67. package/dist/lib/node-esm/{intent-resolver-OXGNQ44Y.mjs → intent-resolver-SR2LW4HF.mjs} +67 -9
  68. package/dist/lib/node-esm/intent-resolver-SR2LW4HF.mjs.map +7 -0
  69. package/dist/lib/node-esm/{markdown-INKTE4MH.mjs → markdown-FL4IXLRP.mjs} +4 -4
  70. package/dist/lib/node-esm/markdown-FL4IXLRP.mjs.map +7 -0
  71. package/dist/lib/node-esm/meta.json +1 -1
  72. package/dist/lib/node-esm/{react-root-XYYY2JXZ.mjs → react-root-4JWDRIQB.mjs} +9 -9
  73. package/dist/lib/node-esm/{react-surface-MJ33KPYE.mjs → react-surface-WLQUVRAX.mjs} +9 -9
  74. package/dist/lib/node-esm/react-surface-WLQUVRAX.mjs.map +7 -0
  75. package/dist/lib/node-esm/{settings-SJ24YG7M.mjs → settings-F2ODVNNW.mjs} +2 -2
  76. package/dist/lib/node-esm/{state-D7WNDT3N.mjs → state-62TQKQVB.mjs} +2 -2
  77. package/dist/lib/node-esm/{state-D7WNDT3N.mjs.map → state-62TQKQVB.mjs.map} +2 -2
  78. package/dist/lib/node-esm/toolkit-KZIS7G36.mjs +81 -0
  79. package/dist/lib/node-esm/toolkit-KZIS7G36.mjs.map +7 -0
  80. package/dist/lib/node-esm/types/index.mjs +1 -1
  81. package/dist/types/src/ThreadPlugin.d.ts.map +1 -1
  82. package/dist/types/src/calls/call-manager.d.ts.map +1 -1
  83. package/dist/types/src/calls/call-swarm-synchronizer.d.ts.map +1 -1
  84. package/dist/types/src/calls/media-manager.d.ts +1 -1
  85. package/dist/types/src/calls/media-manager.d.ts.map +1 -1
  86. package/dist/types/src/calls/types.d.ts +1 -1
  87. package/dist/types/src/calls/types.d.ts.map +1 -1
  88. package/dist/types/src/calls/util/calls-service.d.ts +4 -2
  89. package/dist/types/src/calls/util/calls-service.d.ts.map +1 -1
  90. package/dist/types/src/calls/util/stub-media-streams.d.ts.map +1 -1
  91. package/dist/types/src/calls-service.stories.d.ts +10 -8
  92. package/dist/types/src/calls-service.stories.d.ts.map +1 -1
  93. package/dist/types/src/capabilities/app-graph-builder.d.ts +1 -1
  94. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  95. package/dist/types/src/capabilities/call-manager.d.ts +1 -1
  96. package/dist/types/src/capabilities/call-manager.d.ts.map +1 -1
  97. package/dist/types/src/capabilities/capabilities.d.ts +2 -2
  98. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  99. package/dist/types/src/capabilities/index.d.ts +11 -10
  100. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  101. package/dist/types/src/capabilities/intent-resolver.d.ts +1 -1
  102. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  103. package/dist/types/src/capabilities/markdown.d.ts +1 -1
  104. package/dist/types/src/capabilities/markdown.d.ts.map +1 -1
  105. package/dist/types/src/capabilities/react-root.d.ts +2 -2
  106. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  107. package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
  108. package/dist/types/src/capabilities/settings.d.ts +1 -1
  109. package/dist/types/src/capabilities/state.d.ts +2 -2
  110. package/dist/types/src/capabilities/state.d.ts.map +1 -1
  111. package/dist/types/src/capabilities/toolkit.d.ts +5 -0
  112. package/dist/types/src/capabilities/toolkit.d.ts.map +1 -0
  113. package/dist/types/src/components/Call/Call.d.ts.map +1 -1
  114. package/dist/types/src/components/Call/Toolbar.d.ts.map +1 -1
  115. package/dist/types/src/components/CallDebugPanel.d.ts +7 -0
  116. package/dist/types/src/components/CallDebugPanel.d.ts.map +1 -1
  117. package/dist/types/src/components/CallSidebar.d.ts.map +1 -1
  118. package/dist/types/src/components/ChannelContainer.d.ts.map +1 -1
  119. package/dist/types/src/components/ChannelContainer.stories.d.ts +88 -3
  120. package/dist/types/src/components/ChannelContainer.stories.d.ts.map +1 -1
  121. package/dist/types/src/components/Chat.stories.d.ts +90 -4
  122. package/dist/types/src/components/Chat.stories.d.ts.map +1 -1
  123. package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
  124. package/dist/types/src/components/Comments.stories.d.ts +156 -3
  125. package/dist/types/src/components/Comments.stories.d.ts.map +1 -1
  126. package/dist/types/src/components/CommentsContainer.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/Lobby/Lobby.d.ts.map +1 -1
  130. package/dist/types/src/components/Media/VideoObject.d.ts +1 -1
  131. package/dist/types/src/components/Media/VideoObject.stories.d.ts +15 -3
  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/Participant/ParticipantGrid.d.ts.map +1 -1
  137. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts +154 -2
  138. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts.map +1 -1
  139. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts +156 -3
  140. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts.map +1 -1
  141. package/dist/types/src/components/ResponsiveGrid/ResponsiveGridItem.d.ts.map +1 -1
  142. package/dist/types/src/components/ThreadComplementary.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/extensions/threads.d.ts.map +1 -1
  147. package/dist/types/src/hooks/index.d.ts +1 -0
  148. package/dist/types/src/hooks/index.d.ts.map +1 -1
  149. package/dist/types/src/hooks/useBlackCanvasStreamTrack.d.ts +2 -0
  150. package/dist/types/src/hooks/useBlackCanvasStreamTrack.d.ts.map +1 -0
  151. package/dist/types/src/hooks/useVideoStreamTrack.d.ts.map +1 -1
  152. package/dist/types/src/translations.d.ts +3 -1
  153. package/dist/types/src/translations.d.ts.map +1 -1
  154. package/dist/types/src/types/schema.d.ts +123 -108
  155. package/dist/types/src/types/schema.d.ts.map +1 -1
  156. package/dist/types/src/types/types.d.ts +255 -170
  157. package/dist/types/src/types/types.d.ts.map +1 -1
  158. package/dist/types/tsconfig.tsbuildinfo +1 -1
  159. package/package.json +56 -54
  160. package/src/ThreadPlugin.tsx +9 -2
  161. package/src/calls/call-manager.ts +2 -2
  162. package/src/calls/call-swarm-synchronizer.ts +1 -1
  163. package/src/calls/media-manager.ts +60 -34
  164. package/src/calls/types.ts +8 -4
  165. package/src/calls/util/calls-service.ts +65 -14
  166. package/src/calls/util/stub-media-streams.ts +62 -5
  167. package/src/calls-service.stories.tsx +76 -60
  168. package/src/capabilities/app-graph-builder.ts +8 -5
  169. package/src/capabilities/call-manager.ts +3 -2
  170. package/src/capabilities/capabilities.ts +2 -2
  171. package/src/capabilities/index.ts +1 -0
  172. package/src/capabilities/intent-resolver.ts +38 -4
  173. package/src/capabilities/markdown.ts +4 -3
  174. package/src/capabilities/react-surface.tsx +5 -4
  175. package/src/capabilities/state.ts +2 -1
  176. package/src/capabilities/toolkit.ts +78 -0
  177. package/src/components/Call/Call.tsx +3 -2
  178. package/src/components/Call/Toolbar.tsx +5 -5
  179. package/src/components/CallDebugPanel.tsx +108 -49
  180. package/src/components/CallSidebar.tsx +2 -1
  181. package/src/components/ChannelContainer.stories.tsx +6 -5
  182. package/src/components/ChannelContainer.tsx +7 -6
  183. package/src/components/Chat.stories.tsx +28 -26
  184. package/src/components/ChatContainer.tsx +8 -4
  185. package/src/components/Comments.stories.tsx +33 -29
  186. package/src/components/CommentsContainer.tsx +2 -1
  187. package/src/components/CommentsThreadContainer.tsx +9 -7
  188. package/src/components/Lobby/Lobby.tsx +1 -1
  189. package/src/components/Media/VideoObject.stories.tsx +30 -27
  190. package/src/components/MessageContainer.tsx +43 -9
  191. package/src/components/Participant/Participant.tsx +13 -7
  192. package/src/components/Participant/ParticipantGrid.tsx +2 -1
  193. package/src/components/ResponsiveGrid/ResponsiveContainer.stories.tsx +6 -5
  194. package/src/components/ResponsiveGrid/ResponsiveGrid.stories.tsx +42 -39
  195. package/src/components/ResponsiveGrid/ResponsiveGrid.tsx +1 -1
  196. package/src/components/ResponsiveGrid/ResponsiveGridItem.tsx +2 -2
  197. package/src/components/ThreadComplementary.tsx +38 -8
  198. package/src/components/ThreadSettings.tsx +2 -2
  199. package/src/components/command-extension.ts +5 -2
  200. package/src/components/testing.ts +22 -0
  201. package/src/extensions/threads.ts +3 -3
  202. package/src/hooks/index.ts +1 -0
  203. package/src/hooks/useBlackCanvasStreamTrack.tsx +27 -0
  204. package/src/hooks/useDebugMode.ts +1 -1
  205. package/src/hooks/useVideoStreamTrack.tsx +5 -2
  206. package/src/testing/stories.ts +2 -2
  207. package/src/translations.ts +3 -1
  208. package/src/types/types.ts +21 -12
  209. package/src/typings/peermetrics-webrtc-stats.d.ts +17 -1
  210. package/src/typings.d.ts +8 -0
  211. package/dist/lib/browser/ChannelContainer-3GIE7ASU.mjs +0 -16
  212. package/dist/lib/browser/app-graph-builder-N7BE5TYW.mjs.map +0 -7
  213. package/dist/lib/browser/call-manager-NIPDYUVD.mjs.map +0 -7
  214. package/dist/lib/browser/chunk-3SGRT4NM.mjs +0 -367
  215. package/dist/lib/browser/chunk-3SGRT4NM.mjs.map +0 -7
  216. package/dist/lib/browser/chunk-6NSMBO3B.mjs.map +0 -7
  217. package/dist/lib/browser/chunk-ERWASUQK.mjs.map +0 -7
  218. package/dist/lib/browser/chunk-FR7KJPNY.mjs +0 -21
  219. package/dist/lib/browser/chunk-GCLD5ESP.mjs.map +0 -7
  220. package/dist/lib/browser/chunk-KWPRNHTK.mjs.map +0 -7
  221. package/dist/lib/browser/chunk-VUWC4IJM.mjs +0 -479
  222. package/dist/lib/browser/chunk-VUWC4IJM.mjs.map +0 -7
  223. package/dist/lib/browser/chunk-ZE7KWN36.mjs.map +0 -7
  224. package/dist/lib/browser/intent-resolver-JFGLZ6VI.mjs.map +0 -7
  225. package/dist/lib/browser/markdown-M3FMR7OD.mjs.map +0 -7
  226. package/dist/lib/browser/react-surface-XWS6GIZY.mjs.map +0 -7
  227. package/dist/lib/node-esm/app-graph-builder-VCW76Z6V.mjs.map +0 -7
  228. package/dist/lib/node-esm/call-manager-D6O5ZJJ4.mjs.map +0 -7
  229. package/dist/lib/node-esm/chunk-2CXOK2TD.mjs +0 -23
  230. package/dist/lib/node-esm/chunk-2MFNK53T.mjs +0 -480
  231. package/dist/lib/node-esm/chunk-2MFNK53T.mjs.map +0 -7
  232. package/dist/lib/node-esm/chunk-C3XFMUAY.mjs.map +0 -7
  233. package/dist/lib/node-esm/chunk-FLBFYGBK.mjs +0 -368
  234. package/dist/lib/node-esm/chunk-FLBFYGBK.mjs.map +0 -7
  235. package/dist/lib/node-esm/chunk-IHDNQLLR.mjs.map +0 -7
  236. package/dist/lib/node-esm/chunk-OU5BYIDO.mjs.map +0 -7
  237. package/dist/lib/node-esm/chunk-TDFHTCZZ.mjs.map +0 -7
  238. package/dist/lib/node-esm/intent-resolver-OXGNQ44Y.mjs.map +0 -7
  239. package/dist/lib/node-esm/markdown-INKTE4MH.mjs.map +0 -7
  240. package/dist/lib/node-esm/react-surface-MJ33KPYE.mjs.map +0 -7
  241. /package/dist/lib/browser/{ChannelContainer-3GIE7ASU.mjs.map → ChannelContainer-4PYFOIDK.mjs.map} +0 -0
  242. /package/dist/lib/browser/{ChatContainer-AIGIWAUG.mjs.map → ChatContainer-EXNNREYB.mjs.map} +0 -0
  243. /package/dist/lib/browser/{react-root-JEUSQXI6.mjs.map → react-root-XKOD4KRB.mjs.map} +0 -0
  244. /package/dist/lib/browser/{settings-E32MTL7A.mjs.map → settings-GRKEID73.mjs.map} +0 -0
  245. /package/dist/lib/node-esm/{ChannelContainer-7FXCKO7X.mjs.map → ChannelContainer-KQQEZWUN.mjs.map} +0 -0
  246. /package/dist/lib/node-esm/{ChatContainer-IQUWU426.mjs.map → ChatContainer-QVQKFBWA.mjs.map} +0 -0
  247. /package/dist/lib/node-esm/{react-root-XYYY2JXZ.mjs.map → react-root-4JWDRIQB.mjs.map} +0 -0
  248. /package/dist/lib/node-esm/{settings-SJ24YG7M.mjs.map → settings-F2ODVNNW.mjs.map} +0 -0
@@ -18,10 +18,10 @@ import { ChannelType, ThreadType } from '../types';
18
18
  export const createThreadPlugins = async () => [
19
19
  ThemePlugin({ tx: defaultTx }),
20
20
  ClientPlugin({
21
- onClientInitialized: async (_, client) => {
21
+ onClientInitialized: async ({ client }) => {
22
22
  await client.halo.createIdentity({ displayName: 'Test User' });
23
23
  },
24
- onSpacesReady: async (_, client) => {
24
+ onSpacesReady: async ({ client }) => {
25
25
  await client.spaces.default.waitUntilReady();
26
26
  const thread = Obj.make(ThreadType, { messages: [] });
27
27
  client.spaces.default.db.add(Obj.make(ChannelType, { defaultThread: Ref.make(thread), threads: [] }));
@@ -44,6 +44,7 @@ export const translations = [
44
44
  'save message label': 'Save',
45
45
  'edit message label': 'Edit',
46
46
  'delete message label': 'Delete message',
47
+ 'accept proposal label': 'Accept proposal',
47
48
  'open comments panel label': 'Show Comments',
48
49
  'comments label': 'Comments',
49
50
  'show all label': 'All comments',
@@ -60,7 +61,8 @@ export const translations = [
60
61
  'call tab label': 'Call',
61
62
  'meeting status title': 'Meeting',
62
63
  'share meeting link label': 'Share meeting',
63
- 'show webrtc stats title': 'Detailed WebRTC Stats',
64
+ 'show webrtc stats title': 'WebRTC Stats',
65
+ 'show calls history title': 'Service History',
64
66
 
65
67
  'meeting summary label': 'Summary',
66
68
  'summarize label': 'Summarize',
@@ -8,13 +8,12 @@ import { Type } from '@dxos/echo';
8
8
  import { EchoObjectSchema, SpaceSchema } from '@dxos/react-client/echo';
9
9
  import { AnchoredTo, DataType } from '@dxos/schema';
10
10
 
11
+ import { meta } from '../meta';
12
+
11
13
  import { ChannelType, ThreadType } from './schema';
12
- import { THREAD_PLUGIN } from '../meta';
13
14
 
14
15
  export namespace ThreadAction {
15
- const THREAD_ACTION = `${THREAD_PLUGIN}/action`;
16
-
17
- export class OnSpaceCreated extends Schema.TaggedClass<OnSpaceCreated>()(`${THREAD_ACTION}/on-space-created`, {
16
+ export class OnSpaceCreated extends Schema.TaggedClass<OnSpaceCreated>()(`${meta.id}/action/on-space-created`, {
18
17
  input: Schema.Struct({
19
18
  space: SpaceSchema,
20
19
  rootCollection: DataType.Collection,
@@ -22,7 +21,7 @@ export namespace ThreadAction {
22
21
  output: Schema.Void,
23
22
  }) {}
24
23
 
25
- export class CreateChannel extends Schema.TaggedClass<CreateChannel>()(`${THREAD_ACTION}/create-channel`, {
24
+ export class CreateChannel extends Schema.TaggedClass<CreateChannel>()(`${meta.id}/action/create-channel`, {
26
25
  input: Schema.Struct({
27
26
  spaceId: Type.SpaceId,
28
27
  name: Schema.optional(Schema.String),
@@ -33,7 +32,7 @@ export namespace ThreadAction {
33
32
  }) {}
34
33
 
35
34
  export class CreateChannelThread extends Schema.TaggedClass<CreateChannelThread>()(
36
- `${THREAD_ACTION}/create-channel-thread`,
35
+ `${meta.id}/action/create-channel-thread`,
37
36
  {
38
37
  input: Schema.Struct({
39
38
  channel: ChannelType,
@@ -44,7 +43,7 @@ export namespace ThreadAction {
44
43
  },
45
44
  ) {}
46
45
 
47
- export class Create extends Schema.TaggedClass<Create>()(`${THREAD_ACTION}/create`, {
46
+ export class Create extends Schema.TaggedClass<Create>()(`${meta.id}/action/create`, {
48
47
  input: Schema.Struct({
49
48
  name: Schema.optional(Schema.String),
50
49
  anchor: Schema.optional(Schema.String),
@@ -53,7 +52,7 @@ export namespace ThreadAction {
53
52
  output: Schema.Void,
54
53
  }) {}
55
54
 
56
- export class Delete extends Schema.TaggedClass<Delete>()(`${THREAD_ACTION}/delete`, {
55
+ export class Delete extends Schema.TaggedClass<Delete>()(`${meta.id}/action/delete`, {
57
56
  input: Schema.Struct({
58
57
  anchor: AnchoredTo,
59
58
  subject: EchoObjectSchema,
@@ -62,21 +61,31 @@ export namespace ThreadAction {
62
61
  output: Schema.Void,
63
62
  }) {}
64
63
 
65
- export class Select extends Schema.TaggedClass<Select>()(`${THREAD_ACTION}/select`, {
64
+ export class Select extends Schema.TaggedClass<Select>()(`${meta.id}/action/select`, {
66
65
  input: Schema.Struct({
67
66
  current: Schema.String,
68
67
  }),
69
68
  output: Schema.Void,
70
69
  }) {}
71
70
 
72
- export class ToggleResolved extends Schema.TaggedClass<ToggleResolved>()(`${THREAD_ACTION}/toggle-resolved`, {
71
+ export class ToggleResolved extends Schema.TaggedClass<ToggleResolved>()(`${meta.id}/action/toggle-resolved`, {
73
72
  input: Schema.Struct({
74
73
  thread: ThreadType,
75
74
  }),
76
75
  output: Schema.Void,
77
76
  }) {}
78
77
 
79
- export class AddMessage extends Schema.TaggedClass<AddMessage>()(`${THREAD_ACTION}/add-message`, {
78
+ export class AddProposal extends Schema.TaggedClass<AddProposal>()(`${meta.id}/action/add-proposal`, {
79
+ input: Schema.Struct({
80
+ text: Schema.String,
81
+ anchor: Schema.String,
82
+ sender: DataType.Actor,
83
+ subject: EchoObjectSchema,
84
+ }),
85
+ output: Schema.Void,
86
+ }) {}
87
+
88
+ export class AddMessage extends Schema.TaggedClass<AddMessage>()(`${meta.id}/action/add-message`, {
80
89
  input: Schema.Struct({
81
90
  subject: EchoObjectSchema,
82
91
  anchor: AnchoredTo,
@@ -86,7 +95,7 @@ export namespace ThreadAction {
86
95
  output: Schema.Void,
87
96
  }) {}
88
97
 
89
- export class DeleteMessage extends Schema.TaggedClass<DeleteMessage>()(`${THREAD_ACTION}/delete-message`, {
98
+ export class DeleteMessage extends Schema.TaggedClass<DeleteMessage>()(`${meta.id}/action/delete-message`, {
90
99
  input: Schema.Struct({
91
100
  anchor: AnchoredTo,
92
101
  subject: EchoObjectSchema,
@@ -22,7 +22,23 @@ declare module '@peermetrics/webrtc-stats' {
22
22
  connectionId: string;
23
23
  }
24
24
 
25
- export class WebRTCStats extends EventEmitter {
25
+ type TrackStats = {
26
+ id: string;
27
+ kind: 'audio' | 'video';
28
+ codecId: string;
29
+ mid: string;
30
+ bytesSent: number;
31
+ bytesReceived: number;
32
+ };
33
+
34
+ export type WebRTCStatsEvent = {
35
+ data: {
36
+ audio: { inbound: TrackStats[]; outbound: TrackStats[] };
37
+ video: { inbound: TrackStats[]; outbound: TrackStats[] };
38
+ };
39
+ };
40
+
41
+ export class WebRTCStats extends EventEmitter<{ stats: WebRTCStatsEvent }> {
26
42
  constructor(options: WebRTCStatsConstructorOptions);
27
43
  addConnection(info: ConnectionInfo): void;
28
44
  removeConnection(info: Pick<ConnectionInfo, 'pc'>): void;
@@ -0,0 +1,8 @@
1
+ //
2
+ // Copyright 2025 DXOS.org
3
+ //
4
+
5
+ declare module '*.mp4?raw' {
6
+ const content: string;
7
+ export default content;
8
+ }
@@ -1,16 +0,0 @@
1
- import {
2
- ChannelContainer,
3
- ChannelContainer_default
4
- } from "./chunk-KWPRNHTK.mjs";
5
- import "./chunk-FR7KJPNY.mjs";
6
- import "./chunk-LGSDKXPF.mjs";
7
- import "./chunk-VUWC4IJM.mjs";
8
- import "./chunk-ERWASUQK.mjs";
9
- import "./chunk-GERVMFQW.mjs";
10
- import "./chunk-6NSMBO3B.mjs";
11
- import "./chunk-EV4JWI7L.mjs";
12
- export {
13
- ChannelContainer,
14
- ChannelContainer_default as default
15
- };
16
- //# sourceMappingURL=ChannelContainer-3GIE7ASU.mjs.map
@@ -1,7 +0,0 @@
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 { Option, pipe } from 'effect';\n\nimport { Capabilities, contributes, createIntent, type PluginContext } from '@dxos/app-framework';\nimport { Obj } from '@dxos/echo';\nimport { AttentionCapabilities } from '@dxos/plugin-attention';\nimport { PLANK_COMPANION_TYPE, ATTENDABLE_PATH_SEPARATOR, DECK_COMPANION_TYPE } from '@dxos/plugin-deck/types';\nimport { createExtension, ROOT_ID, rxFromSignal } from '@dxos/plugin-graph';\nimport { fullyQualifiedId } from '@dxos/react-client/echo';\n\nimport { ThreadCapabilities } from './capabilities';\nimport { meta, THREAD_PLUGIN } from '../meta';\nimport { ChannelType, ThreadAction } from '../types';\nimport { getAnchor } from '../util';\n\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: `${THREAD_PLUGIN}/active-call`,\n connector: (node) =>\n Rx.make((get) =>\n 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: THREAD_PLUGIN }],\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: `${THREAD_PLUGIN}/channel-chat-companion`,\n connector: (node) => {\n return Rx.make((get) => {\n return 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: THREAD_PLUGIN }],\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 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 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", "Option", "pipe", "Capabilities", "contributes", "createIntent", "Obj", "AttentionCapabilities", "PLANK_COMPANION_TYPE", "ATTENDABLE_PATH_SEPARATOR", "DECK_COMPANION_TYPE", "createExtension", "ROOT_ID", "rxFromSignal", "fullyQualifiedId", "context", "resolve", "typename", "getCapabilities", "Capabilities", "Metadata", "find", "id", "metadata", "contributes", "AppGraphBuilder", "createExtension", "THREAD_PLUGIN", "connector", "node", "Rx", "make", "get", "pipe", "Option", "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", "meta", "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,7 +0,0 @@
1
- {
2
- "version": 3,
3
- "sources": ["../../../src/capabilities/call-manager.ts"],
4
- "sourcesContent": ["//\n// Copyright 2025 DXOS.org\n//\n\nimport { contributes, type PluginContext } from '@dxos/app-framework';\nimport { ClientCapabilities } from '@dxos/plugin-client';\n\nimport { ThreadCapabilities } from './capabilities';\nimport { CallManager } from '../calls';\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,SAASA,mBAAuC;AAChD,SAASC,0BAA0B;AAKnC,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;",
6
- "names": ["contributes", "ClientCapabilities", "context", "client", "getCapability", "ClientCapabilities", "Client", "callManager", "CallManager", "open", "contributes", "ThreadCapabilities", "close"]
7
- }
@@ -1,367 +0,0 @@
1
- import {
2
- ThreadAction,
3
- ThreadType
4
- } from "./chunk-GCLD5ESP.mjs";
5
- import {
6
- ChannelContainer
7
- } from "./chunk-KWPRNHTK.mjs";
8
- import {
9
- ThreadCapabilities
10
- } from "./chunk-LGSDKXPF.mjs";
11
- import {
12
- CommentsThreadContainer
13
- } from "./chunk-VUWC4IJM.mjs";
14
- import {
15
- meta
16
- } from "./chunk-EV4JWI7L.mjs";
17
-
18
- // src/components/CallDebugPanel.tsx
19
- import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
20
- import { WebRTCStats } from "@peermetrics/webrtc-stats";
21
- import React, { useEffect, useMemo, useState } from "react";
22
- import { Panel } from "@dxos/devtools";
23
- import { log } from "@dxos/log";
24
- import { Input, useTranslation } from "@dxos/react-ui";
25
- import { Json } from "@dxos/react-ui-syntax-highlighter";
26
- var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/components/CallDebugPanel.tsx";
27
- var CallDebugPanel = ({ state }) => {
28
- var _effect = _useSignals();
29
- try {
30
- const { t } = useTranslation(meta.id);
31
- const users = state?.call?.users;
32
- const self = state?.call?.self;
33
- const [open, setOpen] = useState(false);
34
- const handleToggle = () => setOpen(!open);
35
- const [showDetailedWebRTCStats, setShowDetailedWebRTCStats] = useState(false);
36
- const handleShowDetailedWebRTCStats = () => setShowDetailedWebRTCStats(!showDetailedWebRTCStats);
37
- const webrtcStats = useMemo(() => new WebRTCStats({
38
- getStatsInterval: 1e3
39
- }), []);
40
- const [stats, setStats] = useState({});
41
- useEffect(() => {
42
- const pc = state?.media.peer?.session?.peerConnection;
43
- const handleStats = (stats2) => setStats(stats2.data);
44
- let added = false;
45
- if (pc && showDetailedWebRTCStats) {
46
- webrtcStats.addConnection({
47
- pc,
48
- peerId: 1,
49
- connectionId: "1"
50
- });
51
- webrtcStats.on("stats", handleStats);
52
- added = true;
53
- }
54
- return () => {
55
- try {
56
- if (pc && added) {
57
- webrtcStats.removeConnection({
58
- pc
59
- });
60
- webrtcStats.removeListener("stats", handleStats);
61
- }
62
- } catch (error) {
63
- log.error("error removing webrtc stats", {
64
- error,
65
- pc,
66
- peerId: 1,
67
- connectionId: "1"
68
- }, {
69
- F: __dxlog_file,
70
- L: 55,
71
- S: void 0,
72
- C: (f, a) => f(...a)
73
- });
74
- }
75
- };
76
- }, [
77
- state?.media.peer?.session?.peerConnection,
78
- showDetailedWebRTCStats
79
- ]);
80
- return /* @__PURE__ */ React.createElement(Panel, {
81
- id: "meeting-status",
82
- icon: "ph--video-conference--regular",
83
- open,
84
- onToggle: handleToggle,
85
- title: t("meeting status title"),
86
- maxHeight: false,
87
- info: /* @__PURE__ */ React.createElement("div", {
88
- className: "flex items-center gap-2"
89
- }, /* @__PURE__ */ React.createElement("span", {
90
- title: "Joined"
91
- }, self?.joined ? "Active" : "Inactive"), users?.length !== void 0 && /* @__PURE__ */ React.createElement("span", {
92
- title: "Users"
93
- }, users?.length ?? 0, " User(s)"))
94
- }, /* @__PURE__ */ React.createElement("div", {
95
- className: "flex flex-col gap-2 overflow-y-auto"
96
- }, /* @__PURE__ */ React.createElement("div", {
97
- className: "flex items-row gap-2"
98
- }, /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.Label, {
99
- classNames: "text-sm"
100
- }, t("show webrtc stats title")), /* @__PURE__ */ React.createElement(Input.Checkbox, {
101
- checked: showDetailedWebRTCStats,
102
- onCheckedChange: handleShowDetailedWebRTCStats
103
- }))), /* @__PURE__ */ React.createElement(Json, {
104
- classNames: "text-sm",
105
- data: {
106
- users,
107
- activities: state?.call?.activities,
108
- ...showDetailedWebRTCStats ? {
109
- webrtc: {
110
- connectionState: state?.media.peer?.session?.peerConnection.connectionState,
111
- iceConnectionState: state?.media.peer?.session?.peerConnection.iceConnectionState,
112
- stats
113
- }
114
- } : {},
115
- tracks: state?.media.peer?.session?.peerConnection.getTransceivers().map((transceiver) => {
116
- const track = transceiver.direction === "recvonly" ? transceiver.receiver.track : transceiver.sender.track;
117
- return {
118
- id: track?.id,
119
- kind: track?.kind,
120
- direction: transceiver.direction,
121
- enabled: track?.enabled,
122
- muted: track?.muted,
123
- readyState: track?.readyState,
124
- settings: track?.getSettings()
125
- };
126
- }),
127
- callsServiceHistory: state?.media.peer?.history.get()
128
- }
129
- })));
130
- } finally {
131
- _effect.f();
132
- }
133
- };
134
-
135
- // src/components/CallSidebar.tsx
136
- import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
137
- import React2 from "react";
138
- import { useCapability } from "@dxos/app-framework";
139
- var CallSidebar = () => {
140
- var _effect = _useSignals2();
141
- try {
142
- const call = useCapability(ThreadCapabilities.CallManager);
143
- return /* @__PURE__ */ React2.createElement(ChannelContainer, {
144
- roomId: call.roomId
145
- });
146
- } finally {
147
- _effect.f();
148
- }
149
- };
150
-
151
- // src/components/ThreadComplementary.tsx
152
- import { useSignals as _useSignals5 } from "@preact-signals/safe-react/tracking";
153
- import React5, { useCallback, useMemo as useMemo2 } from "react";
154
- import { Capabilities, LayoutAction, createIntent, useCapability as useCapability2, useCapabilities, useIntentDispatcher } from "@dxos/app-framework";
155
- import { Filter, Obj, Query, Relation as Relation2 } from "@dxos/echo";
156
- import { fullyQualifiedId as fullyQualifiedId2, getSpace, useQuery } from "@dxos/react-client/echo";
157
- import { useIdentity } from "@dxos/react-client/halo";
158
- import { useThemeContext, useTranslation as useTranslation3 } from "@dxos/react-ui";
159
- import { useAttended } from "@dxos/react-ui-attention";
160
- import { StackItem } from "@dxos/react-ui-stack";
161
- import { Tabs } from "@dxos/react-ui-tabs";
162
- import { AnchoredTo } from "@dxos/schema";
163
-
164
- // src/components/index.ts
165
- import { lazy } from "react";
166
-
167
- // src/components/CommentsContainer.tsx
168
- import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
169
- import React3, { useEffect as useEffect2 } from "react";
170
- import { Relation } from "@dxos/echo";
171
- import { fullyQualifiedId } from "@dxos/react-client/echo";
172
- import { Callout, Icon, Trans, useTranslation as useTranslation2 } from "@dxos/react-ui";
173
- var CommentsContainer = ({ anchors, currentId, showResolvedThreads, ...props }) => {
174
- var _effect = _useSignals3();
175
- try {
176
- const { t } = useTranslation2(meta.id);
177
- const filteredAnchors = showResolvedThreads ? anchors.filter((anchor) => !!Relation.getSource(anchor)) : anchors.filter((anchor) => {
178
- const thread = Relation.getSource(anchor);
179
- return thread && thread.status !== "resolved";
180
- });
181
- useEffect2(() => {
182
- if (currentId) {
183
- document.getElementById(currentId)?.scrollIntoView({
184
- behavior: "smooth",
185
- block: "end"
186
- });
187
- }
188
- }, [
189
- currentId
190
- ]);
191
- if (filteredAnchors.length === 0) {
192
- return /* @__PURE__ */ React3.createElement("div", {
193
- role: "none",
194
- className: "plb-cardSpacingBlock pli-cardSpacingInline"
195
- }, /* @__PURE__ */ React3.createElement(Callout.Root, null, /* @__PURE__ */ React3.createElement(Callout.Title, null, /* @__PURE__ */ React3.createElement(Trans, {
196
- t,
197
- i18nKey: "no comments message",
198
- components: {
199
- commentIcon: /* @__PURE__ */ React3.createElement(Icon, {
200
- icon: "ph--chat-text--regular",
201
- size: 4,
202
- classNames: "inline-block"
203
- })
204
- }
205
- }))));
206
- }
207
- return /* @__PURE__ */ React3.createElement("div", null, filteredAnchors.map((anchor) => {
208
- const thread = Relation.getSource(anchor);
209
- const threadId = fullyQualifiedId(thread);
210
- return /* @__PURE__ */ React3.createElement(CommentsThreadContainer, {
211
- key: threadId,
212
- anchor,
213
- current: currentId === threadId,
214
- ...props
215
- });
216
- }));
217
- } finally {
218
- _effect.f();
219
- }
220
- };
221
-
222
- // src/components/ThreadSettings.tsx
223
- import { useSignals as _useSignals4 } from "@preact-signals/safe-react/tracking";
224
- import React4 from "react";
225
- import { DeprecatedFormContainer } from "@dxos/react-ui-form";
226
- var ThreadSettings = ({ settings }) => {
227
- var _effect = _useSignals4();
228
- try {
229
- return /* @__PURE__ */ React4.createElement(DeprecatedFormContainer, null);
230
- } finally {
231
- _effect.f();
232
- }
233
- };
234
-
235
- // src/components/index.ts
236
- var ChannelContainer2 = lazy(() => import("./ChannelContainer-3GIE7ASU.mjs"));
237
- var ChatContainer = lazy(() => import("./ChatContainer-AIGIWAUG.mjs"));
238
-
239
- // src/components/ThreadComplementary.tsx
240
- var ThreadComplementary = ({ subject }) => {
241
- var _effect = _useSignals5();
242
- try {
243
- const { t } = useTranslation3(meta.id);
244
- const { dispatchPromise: dispatch } = useIntentDispatcher();
245
- const identity = useIdentity();
246
- const { tx } = useThemeContext();
247
- const subjectId = fullyQualifiedId2(subject);
248
- const { state, getViewState } = useCapability2(ThreadCapabilities.MutableState);
249
- const drafts = state.drafts[subjectId];
250
- const viewState = useMemo2(() => getViewState(subjectId), [
251
- getViewState,
252
- subjectId
253
- ]);
254
- const { showResolvedThreads } = viewState;
255
- const onChangeViewState = useCallback((nextValue) => {
256
- viewState.showResolvedThreads = nextValue === "all";
257
- }, [
258
- viewState
259
- ]);
260
- const anchorSorts = useCapabilities(Capabilities.AnchorSort);
261
- const sort = useMemo2(() => anchorSorts.find(({ key }) => key === Obj.getTypename(subject))?.sort, [
262
- anchorSorts,
263
- subject
264
- ]);
265
- const space = getSpace(subject);
266
- const objectsAnchoredTo = useQuery(space, Query.select(Filter.ids(subject.id)).targetOf(AnchoredTo));
267
- const anchors = objectsAnchoredTo.toSorted((a, b) => sort?.(a, b) ?? 0).filter((anchor) => Obj.instanceOf(ThreadType, Relation2.getSource(anchor))).concat(drafts ?? []);
268
- const attended = useAttended();
269
- const handleAttend = useCallback((anchor) => {
270
- const thread = Relation2.getSource(anchor);
271
- const threadId = fullyQualifiedId2(thread);
272
- if (state.current !== threadId) {
273
- state.current = threadId;
274
- void dispatch(createIntent(LayoutAction.ScrollIntoView, {
275
- part: "current",
276
- subject: fullyQualifiedId2(subject),
277
- options: {
278
- cursor: anchor.anchor,
279
- ref: threadId
280
- }
281
- }));
282
- }
283
- }, [
284
- state.current,
285
- dispatch,
286
- subject
287
- ]);
288
- const handleComment = useCallback(async (anchor, text) => {
289
- await dispatch(createIntent(ThreadAction.AddMessage, {
290
- anchor,
291
- subject,
292
- sender: {
293
- identityDid: identity?.did
294
- },
295
- text
296
- }));
297
- const thread = Relation2.getSource(anchor);
298
- state.current = fullyQualifiedId2(thread);
299
- }, [
300
- dispatch,
301
- identity,
302
- subject
303
- ]);
304
- const handleResolve = useCallback((anchor) => dispatch(createIntent(ThreadAction.ToggleResolved, {
305
- thread: Relation2.getSource(anchor)
306
- })), [
307
- dispatch
308
- ]);
309
- const handleThreadDelete = useCallback((anchor) => dispatch(createIntent(ThreadAction.Delete, {
310
- anchor,
311
- subject
312
- })), [
313
- dispatch,
314
- subject
315
- ]);
316
- const handleMessageDelete = useCallback((anchor, messageId) => dispatch(createIntent(ThreadAction.DeleteMessage, {
317
- anchor,
318
- subject,
319
- messageId
320
- })), [
321
- dispatch,
322
- subject
323
- ]);
324
- const comments = /* @__PURE__ */ React5.createElement(CommentsContainer, {
325
- anchors,
326
- currentId: attended.includes(subjectId) ? state.current : void 0,
327
- showResolvedThreads,
328
- onAttend: handleAttend,
329
- onComment: handleComment,
330
- onResolve: handleResolve,
331
- onMessageDelete: handleMessageDelete,
332
- onThreadDelete: handleThreadDelete
333
- });
334
- return /* @__PURE__ */ React5.createElement(StackItem.Content, {
335
- toolbar: true
336
- }, /* @__PURE__ */ React5.createElement(Tabs.Root, {
337
- value: showResolvedThreads ? "all" : "unresolved",
338
- orientation: "horizontal",
339
- classNames: 'contents [&_[role="tabpanel"]]:min-bs-0 [&_[role="tabpanel"]]:overflow-y-auto [&_[role="tabpanel"]]:scrollbar-thin',
340
- onValueChange: onChangeViewState
341
- }, /* @__PURE__ */ React5.createElement(Tabs.Tablist, {
342
- classNames: tx("toolbar.root", "toolbar", {})
343
- }, /* @__PURE__ */ React5.createElement(Tabs.Tab, {
344
- value: "unresolved",
345
- classNames: "text-sm"
346
- }, t("show unresolved label")), /* @__PURE__ */ React5.createElement(Tabs.Tab, {
347
- value: "all",
348
- classNames: "text-sm"
349
- }, t("show all label"))), /* @__PURE__ */ React5.createElement(Tabs.Tabpanel, {
350
- value: "all"
351
- }, showResolvedThreads && comments), /* @__PURE__ */ React5.createElement(Tabs.Tabpanel, {
352
- value: "unresolved"
353
- }, !showResolvedThreads && comments)));
354
- } finally {
355
- _effect.f();
356
- }
357
- };
358
-
359
- export {
360
- CallDebugPanel,
361
- CallSidebar,
362
- ThreadComplementary,
363
- ThreadSettings,
364
- ChannelContainer2 as ChannelContainer,
365
- ChatContainer
366
- };
367
- //# sourceMappingURL=chunk-3SGRT4NM.mjs.map