@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
@@ -0,0 +1,618 @@
1
+ import {
2
+ ThreadAction,
3
+ ThreadType
4
+ } from "./chunk-KTWYVC5X.mjs";
5
+ import {
6
+ ChannelContainer
7
+ } from "./chunk-7W7QK5ZP.mjs";
8
+ import {
9
+ ThreadCapabilities
10
+ } from "./chunk-4APCDRSH.mjs";
11
+ import {
12
+ MessageContainer,
13
+ buttonClassNames,
14
+ buttonGroupClassNames,
15
+ command
16
+ } from "./chunk-PBMNFG3B.mjs";
17
+ import {
18
+ useStatus
19
+ } from "./chunk-RI3Z6MK3.mjs";
20
+ import {
21
+ getMessageMetadata
22
+ } from "./chunk-GERVMFQW.mjs";
23
+ import {
24
+ meta
25
+ } from "./chunk-EV4JWI7L.mjs";
26
+
27
+ // src/components/CallDebugPanel.tsx
28
+ import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
29
+ import { WebRTCStats } from "@peermetrics/webrtc-stats";
30
+ import React, { useEffect, useMemo, useState } from "react";
31
+ import { truncateKey } from "@dxos/debug";
32
+ import { JsonView, Panel } from "@dxos/devtools";
33
+ import { log } from "@dxos/log";
34
+ import { IconButton, Input, useTranslation } from "@dxos/react-ui";
35
+ var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/components/CallDebugPanel.tsx";
36
+ var CallDebugPanel = ({ state }) => {
37
+ var _effect = _useSignals();
38
+ try {
39
+ const { t } = useTranslation(meta.id);
40
+ const [open, setOpen] = useState(false);
41
+ const handleToggle = () => setOpen(!open);
42
+ const [showServiceHistory, setShowServiceHistory] = useState(false);
43
+ const handleToggleServiceHistory = () => setShowServiceHistory(!showServiceHistory);
44
+ const handleCopyRaw = async () => {
45
+ await navigator.clipboard.writeText(JSON.stringify({
46
+ users: state?.call?.users,
47
+ stats
48
+ }, null, 2));
49
+ };
50
+ const [showDetailedWebRTCStats, setShowDetailedWebRTCStats] = useState(false);
51
+ const handleShowDetailedWebRTCStats = () => setShowDetailedWebRTCStats(!showDetailedWebRTCStats);
52
+ const webrtcStats = useMemo(() => new WebRTCStats({
53
+ getStatsInterval: 1e3
54
+ }), []);
55
+ const [stats, setStats] = useState();
56
+ useEffect(() => {
57
+ const pc = state?.media.peer?.session?.peerConnection;
58
+ const handleStats = (stats2) => {
59
+ setStats(stats2.data);
60
+ };
61
+ let added = false;
62
+ if (pc && showDetailedWebRTCStats) {
63
+ webrtcStats.addConnection({
64
+ pc,
65
+ peerId: 1,
66
+ connectionId: "1"
67
+ });
68
+ webrtcStats.on("stats", handleStats);
69
+ added = true;
70
+ }
71
+ return () => {
72
+ try {
73
+ if (pc && added) {
74
+ webrtcStats.removeConnection({
75
+ pc
76
+ });
77
+ webrtcStats.removeListener("stats", handleStats);
78
+ }
79
+ } catch (error) {
80
+ log.error("error removing webrtc stats", {
81
+ error,
82
+ pc,
83
+ peerId: 1,
84
+ connectionId: "1"
85
+ }, {
86
+ F: __dxlog_file,
87
+ L: 62,
88
+ S: void 0,
89
+ C: (f, a) => f(...a)
90
+ });
91
+ }
92
+ };
93
+ }, [
94
+ state?.media.peer?.session?.peerConnection,
95
+ showDetailedWebRTCStats
96
+ ]);
97
+ const rows = useMemo(() => getCallStatusTable(state), [
98
+ state?.call.users,
99
+ state?.media.pulledAudioTracks
100
+ ]);
101
+ return /* @__PURE__ */ React.createElement(Panel, {
102
+ id: "meeting-status",
103
+ icon: "ph--video-conference--regular",
104
+ open,
105
+ onToggle: handleToggle,
106
+ title: t("meeting status title"),
107
+ maxHeight: false,
108
+ info: /* @__PURE__ */ React.createElement("div", {
109
+ className: "flex items-center gap-2"
110
+ }, " ", state?.call.joined ? "Active" : "Inactive")
111
+ }, /* @__PURE__ */ React.createElement("div", {
112
+ className: "flex flex-col w-full gap-2 text-xs"
113
+ }, /* @__PURE__ */ React.createElement("div", {
114
+ className: "flex items-center gap-2"
115
+ }, /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.Label, {
116
+ classNames: "text-sm"
117
+ }, t("show webrtc stats title")), /* @__PURE__ */ React.createElement(Input.Checkbox, {
118
+ checked: showDetailedWebRTCStats,
119
+ onCheckedChange: handleShowDetailedWebRTCStats
120
+ }))), /* @__PURE__ */ React.createElement("div", {
121
+ className: "flex items-center gap-2"
122
+ }, /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.Label, {
123
+ classNames: "text-sm"
124
+ }, t("show calls history title")), /* @__PURE__ */ React.createElement(Input.Checkbox, {
125
+ checked: showServiceHistory,
126
+ onCheckedChange: handleToggleServiceHistory
127
+ }))), /* @__PURE__ */ React.createElement("div", {
128
+ className: "flex items-center gap-2"
129
+ }, /* @__PURE__ */ React.createElement(IconButton, {
130
+ classNames: "text-sm",
131
+ icon: "ph--copy--regular",
132
+ label: "copy raw",
133
+ onClick: handleCopyRaw
134
+ })), /* @__PURE__ */ React.createElement(Table, {
135
+ rows
136
+ }), showDetailedWebRTCStats && /* @__PURE__ */ React.createElement(JsonView, {
137
+ data: {
138
+ stats
139
+ }
140
+ }), showServiceHistory && /* @__PURE__ */ React.createElement(JsonView, {
141
+ data: {
142
+ history: state?.media.peer?.history.get()
143
+ }
144
+ })));
145
+ } finally {
146
+ _effect.f();
147
+ }
148
+ };
149
+ var getCallStatusTable = (state) => {
150
+ if (!state || !state.call?.users) {
151
+ return [];
152
+ }
153
+ const self = state.call.self;
154
+ const users = state.call.users.filter((user) => user.id !== self.id).map((user) => {
155
+ const isOk = {
156
+ audio: user.tracks?.audio && state.media.pulledAudioTracks[user.tracks?.audio]?.ctx.disposed === false,
157
+ video: user.tracks?.video && state.media.pulledVideoStreams[user.tracks?.video]?.ctx.disposed === false,
158
+ screenshare: user.tracks?.screenshare && state.media.pulledVideoStreams[user.tracks?.screenshare]?.ctx.disposed === false
159
+ };
160
+ return {
161
+ ...user,
162
+ isOk
163
+ };
164
+ });
165
+ return [
166
+ [
167
+ "users",
168
+ state.call.users.length ?? 0
169
+ ],
170
+ [
171
+ "*self* " + (self?.name ?? truncateKey(self.id, 8)),
172
+ self?.tracks?.audio && state.media.pushedAudioTrack ? "AUD \u2705" : "AUD \u274C",
173
+ self?.tracks?.video && state.media.pushedVideoTrack ? "VID \u2705" : "VID \u274C",
174
+ self?.tracks?.screenshareEnabled ? self.tracks.screenshareEnabled && state.media.pushedScreenshareTrack ? "SCR \u2705" : "SCR \u274C" : void 0
175
+ ],
176
+ ...users.map((user) => [
177
+ user.name ?? truncateKey(user.id, 8),
178
+ user.isOk.audio ? "AUD \u2705" : "AUD \u274C",
179
+ user.isOk.video ? "VID \u2705" : "VID \u274C",
180
+ user.tracks?.screenshareEnabled ? user.isOk.screenshare ? "SCR \u2705" : "SCR \u274C" : void 0
181
+ ]),
182
+ [
183
+ "ICE",
184
+ state.media.peer?.session?.peerConnection.iceConnectionState ?? "no connection"
185
+ ]
186
+ ];
187
+ };
188
+ (function(Unit2) {
189
+ Unit2.KB = (n) => ((n ?? 0) / 1e3).toFixed(2);
190
+ })(Unit || (Unit = {}));
191
+ var Table = ({ rows }) => {
192
+ var _effect = _useSignals();
193
+ try {
194
+ return /* @__PURE__ */ React.createElement("div", {
195
+ className: "w-full text-xs font-mono"
196
+ }, rows.map(([prefix, label, value, unit], i) => /* @__PURE__ */ React.createElement("div", {
197
+ key: i,
198
+ className: "grid grid-cols-[3fr_1fr_1fr_1fr]"
199
+ }, /* @__PURE__ */ React.createElement("div", {
200
+ className: "p-1"
201
+ }, prefix), /* @__PURE__ */ React.createElement("div", {
202
+ className: "p-1"
203
+ }, label), /* @__PURE__ */ React.createElement("div", {
204
+ className: "p-1"
205
+ }, value), /* @__PURE__ */ React.createElement("div", {
206
+ className: "p-1"
207
+ }, unit))));
208
+ } finally {
209
+ _effect.f();
210
+ }
211
+ };
212
+ var Unit;
213
+
214
+ // src/components/CallSidebar.tsx
215
+ import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
216
+ import React2 from "react";
217
+ import { useCapability } from "@dxos/app-framework";
218
+ var CallSidebar = () => {
219
+ var _effect = _useSignals2();
220
+ try {
221
+ const call = useCapability(ThreadCapabilities.CallManager);
222
+ return /* @__PURE__ */ React2.createElement(ChannelContainer, {
223
+ roomId: call.roomId
224
+ });
225
+ } finally {
226
+ _effect.f();
227
+ }
228
+ };
229
+
230
+ // src/components/ThreadComplementary.tsx
231
+ import { useSignals as _useSignals6 } from "@preact-signals/safe-react/tracking";
232
+ import React6, { useCallback as useCallback2, useMemo as useMemo3 } from "react";
233
+ import { Capabilities, CollaborationActions, LayoutAction, createIntent, useCapabilities, useCapability as useCapability2, useIntentDispatcher } from "@dxos/app-framework";
234
+ import { Filter, Obj, Query, Relation as Relation3 } from "@dxos/echo";
235
+ import { Ref as Ref2, fullyQualifiedId as fullyQualifiedId3, getSpace as getSpace2, useQuery } from "@dxos/react-client/echo";
236
+ import { useIdentity as useIdentity2 } from "@dxos/react-client/halo";
237
+ import { useThemeContext as useThemeContext2, useTranslation as useTranslation4 } from "@dxos/react-ui";
238
+ import { useAttended } from "@dxos/react-ui-attention";
239
+ import { StackItem } from "@dxos/react-ui-stack";
240
+ import { Tabs } from "@dxos/react-ui-tabs";
241
+ import { mx as mx2 } from "@dxos/react-ui-theme";
242
+ import { AnchoredTo } from "@dxos/schema";
243
+
244
+ // src/components/index.ts
245
+ import { lazy } from "react";
246
+
247
+ // src/components/CommentsContainer.tsx
248
+ import { useSignals as _useSignals4 } from "@preact-signals/safe-react/tracking";
249
+ import React4, { useEffect as useEffect2 } from "react";
250
+ import { Relation as Relation2 } from "@dxos/echo";
251
+ import { fullyQualifiedId as fullyQualifiedId2 } from "@dxos/react-client/echo";
252
+ import { Callout, Icon, Trans, useTranslation as useTranslation3 } from "@dxos/react-ui";
253
+
254
+ // src/components/CommentsThreadContainer.tsx
255
+ import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
256
+ import React3, { useCallback, useMemo as useMemo2, useRef, useState as useState2 } from "react";
257
+ import { Ref, Relation } from "@dxos/echo";
258
+ import { fullyQualifiedId, getSpace, useMembers } from "@dxos/react-client/echo";
259
+ import { useIdentity } from "@dxos/react-client/halo";
260
+ import { IconButton as IconButton2, Tag, Tooltip, useThemeContext, useTranslation as useTranslation2 } from "@dxos/react-ui";
261
+ import { createBasicExtensions, createThemeExtensions, listener } from "@dxos/react-ui-editor";
262
+ import { hoverableControlItem, hoverableControls, hoverableFocusedWithinControls, mx } from "@dxos/react-ui-theme";
263
+ import { MessageTextbox, Thread } from "@dxos/react-ui-thread";
264
+ import { isNonNullable } from "@dxos/util";
265
+ var CommentsThreadContainer = ({ anchor, current, onAttend, onComment, onResolve, onMessageDelete, onThreadDelete, onAcceptProposal }) => {
266
+ var _effect = _useSignals3();
267
+ try {
268
+ const { t } = useTranslation2(meta.id);
269
+ const identity = useIdentity();
270
+ const space = getSpace(anchor);
271
+ const members = useMembers(space?.key);
272
+ const detached = !anchor.anchor;
273
+ const thread = Relation.getSource(anchor);
274
+ const activity = useStatus(space, fullyQualifiedId(thread));
275
+ const threadScrollRef = useRef(null);
276
+ const { themeMode } = useThemeContext();
277
+ const textboxMetadata = getMessageMetadata(fullyQualifiedId(thread), identity);
278
+ const [_count, _setCount] = useState2(0);
279
+ const rerenderEditor = () => _setCount((count) => count + 1);
280
+ const messageRef = useRef("");
281
+ const extensions = useMemo2(() => [
282
+ createBasicExtensions({
283
+ placeholder: t("message placeholder")
284
+ }),
285
+ createThemeExtensions({
286
+ themeMode
287
+ }),
288
+ listener({
289
+ onChange: (text) => messageRef.current = text
290
+ }),
291
+ command
292
+ ], [
293
+ _count
294
+ ]);
295
+ const scrollToEnd = (behavior) => setTimeout(() => threadScrollRef.current?.scrollIntoView({
296
+ behavior,
297
+ block: "end"
298
+ }), 10);
299
+ const handleAttend = useCallback(() => onAttend?.(anchor), [
300
+ onAttend,
301
+ anchor
302
+ ]);
303
+ const handleResolve = useCallback(() => onResolve?.(anchor), [
304
+ onResolve,
305
+ anchor
306
+ ]);
307
+ const handleMessageDelete = useCallback((id) => onMessageDelete?.(anchor, id), [
308
+ onMessageDelete,
309
+ anchor
310
+ ]);
311
+ const handleThreadDelete = useCallback(() => onThreadDelete?.(anchor), [
312
+ onThreadDelete,
313
+ anchor
314
+ ]);
315
+ const handleAcceptProposal = useCallback((id) => onAcceptProposal?.(anchor, id), [
316
+ onAcceptProposal,
317
+ anchor
318
+ ]);
319
+ const handleComment = useCallback(() => {
320
+ if (!messageRef.current) {
321
+ return false;
322
+ }
323
+ onComment?.(anchor, messageRef.current);
324
+ messageRef.current = "";
325
+ scrollToEnd("instant");
326
+ rerenderEditor();
327
+ return true;
328
+ }, [
329
+ anchor,
330
+ identity
331
+ ]);
332
+ return /* @__PURE__ */ React3.createElement(Thread.Root, {
333
+ id: fullyQualifiedId(thread),
334
+ classNames: "pbs-2 border-be border-subduedSeparator last:border-none",
335
+ current,
336
+ onClickCapture: handleAttend,
337
+ onFocusCapture: handleAttend
338
+ }, /* @__PURE__ */ React3.createElement("div", {
339
+ role: "none",
340
+ className: mx("col-span-2 grid grid-cols-[var(--rail-size)_1fr_min-content]", hoverableControls, hoverableFocusedWithinControls)
341
+ }, detached ? /* @__PURE__ */ React3.createElement(Tooltip.Trigger, {
342
+ asChild: true,
343
+ content: t("detached thread label"),
344
+ side: "top"
345
+ }, /* @__PURE__ */ React3.createElement(Thread.Header, {
346
+ detached: true
347
+ }, thread.name)) : /* @__PURE__ */ React3.createElement(Thread.Header, null, thread.name), /* @__PURE__ */ React3.createElement("div", {
348
+ role: "none",
349
+ className: buttonGroupClassNames
350
+ }, thread.status === "staged" && /* @__PURE__ */ React3.createElement(Tag, {
351
+ palette: "neutral"
352
+ }, t("draft button")), onResolve && !(thread?.status === "staged") && /* @__PURE__ */ React3.createElement(IconButton2, {
353
+ "data-testid": "thread.resolve",
354
+ variant: "ghost",
355
+ icon: thread?.status === "resolved" ? "ph--check--fill" : "ph--check--regular",
356
+ iconOnly: true,
357
+ label: t("resolve thread label"),
358
+ classNames: [
359
+ buttonClassNames,
360
+ thread?.status !== "resolved" && hoverableControlItem
361
+ ],
362
+ onClick: handleResolve
363
+ }), onThreadDelete && /* @__PURE__ */ React3.createElement(IconButton2, {
364
+ "data-testid": "thread.delete",
365
+ variant: "ghost",
366
+ icon: "ph--x--regular",
367
+ iconOnly: true,
368
+ label: t("delete thread label"),
369
+ classNames: [
370
+ buttonClassNames,
371
+ hoverableControlItem
372
+ ],
373
+ onClick: handleThreadDelete
374
+ }))), Ref.Array.targets(thread.messages?.filter(isNonNullable) ?? []).map((message) => /* @__PURE__ */ React3.createElement(MessageContainer, {
375
+ key: message.id,
376
+ editable: true,
377
+ message,
378
+ members,
379
+ onDelete: handleMessageDelete,
380
+ onAcceptProposal: handleAcceptProposal
381
+ })), /* @__PURE__ */ React3.createElement(MessageTextbox, {
382
+ extensions,
383
+ onSend: handleComment,
384
+ ...textboxMetadata
385
+ }), /* @__PURE__ */ React3.createElement(Thread.Status, {
386
+ activity
387
+ }, t("activity message")), /* @__PURE__ */ React3.createElement("div", {
388
+ role: "none",
389
+ className: "bs-px -mbs-px",
390
+ ref: threadScrollRef
391
+ }));
392
+ } finally {
393
+ _effect.f();
394
+ }
395
+ };
396
+
397
+ // src/components/CommentsContainer.tsx
398
+ var CommentsContainer = ({ anchors, currentId, showResolvedThreads, ...props }) => {
399
+ var _effect = _useSignals4();
400
+ try {
401
+ const { t } = useTranslation3(meta.id);
402
+ const filteredAnchors = showResolvedThreads ? anchors.filter((anchor) => !!Relation2.getSource(anchor)) : anchors.filter((anchor) => {
403
+ const thread = Relation2.getSource(anchor);
404
+ return thread && thread.status !== "resolved";
405
+ });
406
+ useEffect2(() => {
407
+ if (currentId) {
408
+ document.getElementById(currentId)?.scrollIntoView({
409
+ behavior: "smooth",
410
+ block: "end"
411
+ });
412
+ }
413
+ }, [
414
+ currentId
415
+ ]);
416
+ if (filteredAnchors.length === 0) {
417
+ return /* @__PURE__ */ React4.createElement("div", {
418
+ role: "none",
419
+ className: "plb-cardSpacingBlock pli-cardSpacingInline"
420
+ }, /* @__PURE__ */ React4.createElement(Callout.Root, null, /* @__PURE__ */ React4.createElement(Callout.Title, null, /* @__PURE__ */ React4.createElement(Trans, {
421
+ t,
422
+ i18nKey: "no comments message",
423
+ components: {
424
+ commentIcon: /* @__PURE__ */ React4.createElement(Icon, {
425
+ icon: "ph--chat-text--regular",
426
+ size: 4,
427
+ classNames: "inline-block"
428
+ })
429
+ }
430
+ }))));
431
+ }
432
+ return /* @__PURE__ */ React4.createElement("div", null, filteredAnchors.map((anchor) => {
433
+ const thread = Relation2.getSource(anchor);
434
+ const threadId = fullyQualifiedId2(thread);
435
+ return /* @__PURE__ */ React4.createElement(CommentsThreadContainer, {
436
+ key: threadId,
437
+ anchor,
438
+ current: currentId === threadId,
439
+ ...props
440
+ });
441
+ }));
442
+ } finally {
443
+ _effect.f();
444
+ }
445
+ };
446
+
447
+ // src/components/ThreadSettings.tsx
448
+ import { useSignals as _useSignals5 } from "@preact-signals/safe-react/tracking";
449
+ import React5 from "react";
450
+ import { ControlPage } from "@dxos/react-ui-form";
451
+ var ThreadSettings = ({ settings }) => {
452
+ var _effect = _useSignals5();
453
+ try {
454
+ return /* @__PURE__ */ React5.createElement(ControlPage, null);
455
+ } finally {
456
+ _effect.f();
457
+ }
458
+ };
459
+
460
+ // src/components/index.ts
461
+ var ChannelContainer2 = lazy(() => import("./ChannelContainer-4PYFOIDK.mjs"));
462
+ var ChatContainer = lazy(() => import("./ChatContainer-EXNNREYB.mjs"));
463
+
464
+ // src/components/ThreadComplementary.tsx
465
+ var ThreadComplementary = ({ subject }) => {
466
+ var _effect = _useSignals6();
467
+ try {
468
+ const { t } = useTranslation4(meta.id);
469
+ const { dispatchPromise: dispatch } = useIntentDispatcher();
470
+ const identity = useIdentity2();
471
+ const { tx } = useThemeContext2();
472
+ const subjectId = fullyQualifiedId3(subject);
473
+ const { state, getViewState } = useCapability2(ThreadCapabilities.MutableState);
474
+ const drafts = state.drafts[subjectId];
475
+ const viewState = useMemo3(() => getViewState(subjectId), [
476
+ getViewState,
477
+ subjectId
478
+ ]);
479
+ const { showResolvedThreads } = viewState;
480
+ const onChangeViewState = useCallback2((nextValue) => {
481
+ viewState.showResolvedThreads = nextValue === "all";
482
+ }, [
483
+ viewState
484
+ ]);
485
+ const anchorSorts = useCapabilities(Capabilities.AnchorSort);
486
+ const sort = useMemo3(() => anchorSorts.find(({ key }) => key === Obj.getTypename(subject))?.sort, [
487
+ anchorSorts,
488
+ subject
489
+ ]);
490
+ const space = getSpace2(subject);
491
+ const objectsAnchoredTo = useQuery(space, Query.select(Filter.ids(subject.id)).targetOf(AnchoredTo));
492
+ const anchors = objectsAnchoredTo.toSorted((a, b) => sort?.(a, b) ?? 0).filter((anchor) => Obj.instanceOf(ThreadType, Relation3.getSource(anchor))).concat(drafts ?? []);
493
+ const attended = useAttended();
494
+ const handleAttend = useCallback2((anchor) => {
495
+ const thread = Relation3.getSource(anchor);
496
+ const threadId = fullyQualifiedId3(thread);
497
+ if (state.current !== threadId) {
498
+ state.current = threadId;
499
+ void dispatch(createIntent(LayoutAction.ScrollIntoView, {
500
+ part: "current",
501
+ subject: fullyQualifiedId3(subject),
502
+ options: {
503
+ cursor: anchor.anchor,
504
+ ref: threadId
505
+ }
506
+ }));
507
+ }
508
+ }, [
509
+ state.current,
510
+ dispatch,
511
+ subject
512
+ ]);
513
+ const handleComment = useCallback2(async (anchor, text) => {
514
+ await dispatch(createIntent(ThreadAction.AddMessage, {
515
+ anchor,
516
+ subject,
517
+ sender: {
518
+ identityDid: identity?.did
519
+ },
520
+ text
521
+ }));
522
+ const thread = Relation3.getSource(anchor);
523
+ state.current = fullyQualifiedId3(thread);
524
+ }, [
525
+ dispatch,
526
+ identity,
527
+ subject
528
+ ]);
529
+ const handleResolve = useCallback2((anchor) => dispatch(createIntent(ThreadAction.ToggleResolved, {
530
+ thread: Relation3.getSource(anchor)
531
+ })), [
532
+ dispatch
533
+ ]);
534
+ const handleThreadDelete = useCallback2((anchor) => dispatch(createIntent(ThreadAction.Delete, {
535
+ anchor,
536
+ subject
537
+ })), [
538
+ dispatch,
539
+ subject
540
+ ]);
541
+ const handleMessageDelete = useCallback2((anchor, messageId) => dispatch(createIntent(ThreadAction.DeleteMessage, {
542
+ anchor,
543
+ subject,
544
+ messageId
545
+ })), [
546
+ dispatch,
547
+ subject
548
+ ]);
549
+ const handleAcceptProposal = useCallback2(async (anchor, messageId) => {
550
+ const thread = Relation3.getSource(anchor);
551
+ const messageIndex = thread.messages.findIndex(Ref2.hasObjectId(messageId));
552
+ const message = thread.messages[messageIndex]?.target;
553
+ const proposal = message?.blocks.find((block) => block._tag === "proposal");
554
+ if (!proposal || !anchor.anchor) {
555
+ return;
556
+ }
557
+ await dispatch(createIntent(CollaborationActions.AcceptProposal, {
558
+ subject,
559
+ anchor: anchor.anchor,
560
+ proposal
561
+ }));
562
+ await dispatch(createIntent(ThreadAction.ToggleResolved, {
563
+ thread
564
+ }));
565
+ }, [
566
+ dispatch,
567
+ subject
568
+ ]);
569
+ const comments = /* @__PURE__ */ React6.createElement(CommentsContainer, {
570
+ anchors,
571
+ currentId: attended.includes(subjectId) ? state.current : void 0,
572
+ showResolvedThreads,
573
+ onAttend: handleAttend,
574
+ onComment: handleComment,
575
+ onResolve: handleResolve,
576
+ onMessageDelete: handleMessageDelete,
577
+ onThreadDelete: handleThreadDelete,
578
+ onAcceptProposal: handleAcceptProposal
579
+ });
580
+ return /* @__PURE__ */ React6.createElement(StackItem.Content, {
581
+ toolbar: true,
582
+ classNames: "overflow-hidden"
583
+ }, /* @__PURE__ */ React6.createElement(Tabs.Root, {
584
+ value: showResolvedThreads ? "all" : "unresolved",
585
+ orientation: "horizontal",
586
+ classNames: [
587
+ 'contents [&_[role="tabpanel"]]:min-bs-0 [&_[role="tabpanel"]]:overflow-y-auto [&_[role="tabpanel"]]:scrollbar-thin'
588
+ ],
589
+ onValueChange: onChangeViewState
590
+ }, /* @__PURE__ */ React6.createElement(Tabs.Tablist, {
591
+ classNames: mx2("bg-toolbarSurface border-b border-subduedSeparator")
592
+ }, /* @__PURE__ */ React6.createElement(Tabs.Tab, {
593
+ value: "unresolved",
594
+ classNames: "text-sm"
595
+ }, t("show unresolved label")), /* @__PURE__ */ React6.createElement(Tabs.Tab, {
596
+ value: "all",
597
+ classNames: "text-sm"
598
+ }, t("show all label"))), /* @__PURE__ */ React6.createElement("div", {
599
+ className: "overflow-y-auto"
600
+ }, /* @__PURE__ */ React6.createElement(Tabs.Tabpanel, {
601
+ value: "all"
602
+ }, showResolvedThreads && comments), /* @__PURE__ */ React6.createElement(Tabs.Tabpanel, {
603
+ value: "unresolved"
604
+ }, !showResolvedThreads && comments))));
605
+ } finally {
606
+ _effect.f();
607
+ }
608
+ };
609
+
610
+ export {
611
+ CallDebugPanel,
612
+ CallSidebar,
613
+ ThreadComplementary,
614
+ ThreadSettings,
615
+ ChannelContainer2 as ChannelContainer,
616
+ ChatContainer
617
+ };
618
+ //# sourceMappingURL=chunk-ZH2WPTNP.mjs.map