@dxos/plugin-thread 0.8.4-main.c1de068 → 0.8.4-main.e098934

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