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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (246) hide show
  1. package/dist/lib/browser/ChannelContainer-BGDGZHV4.mjs +16 -0
  2. package/dist/lib/browser/ChatContainer-75KJZ4XR.mjs +15 -0
  3. package/dist/lib/browser/{app-graph-builder-AF3M7UWN.mjs → app-graph-builder-ODKIAXR7.mjs} +17 -17
  4. package/dist/lib/browser/app-graph-builder-ODKIAXR7.mjs.map +7 -0
  5. package/dist/lib/browser/{call-manager-XRRCAVLI.mjs → call-manager-BCKLI4QD.mjs} +7 -7
  6. package/dist/lib/browser/{call-manager-XRRCAVLI.mjs.map → call-manager-BCKLI4QD.mjs.map} +1 -1
  7. package/dist/lib/browser/chunk-2MUYQOQE.mjs +23 -0
  8. package/dist/lib/browser/{chunk-2CWJBXBH.mjs.map → chunk-2MUYQOQE.mjs.map} +3 -3
  9. package/dist/lib/browser/chunk-B7YQ7QR2.mjs +376 -0
  10. package/dist/lib/browser/chunk-B7YQ7QR2.mjs.map +7 -0
  11. package/dist/lib/browser/{chunk-ZJ7QBXK6.mjs → chunk-CMCVHULC.mjs} +17 -15
  12. package/dist/lib/browser/chunk-CMCVHULC.mjs.map +7 -0
  13. package/dist/lib/browser/{chunk-GERVMFQW.mjs → chunk-CP7E2HRE.mjs} +2 -2
  14. package/dist/lib/browser/chunk-CP7E2HRE.mjs.map +7 -0
  15. package/dist/lib/browser/{chunk-X5PIP5YR.mjs → chunk-HDEQRBOC.mjs} +37 -5
  16. package/dist/lib/{node-esm/chunk-SED3O2XO.mjs.map → browser/chunk-HDEQRBOC.mjs.map} +4 -4
  17. package/dist/lib/browser/chunk-L326LSNS.mjs +18 -0
  18. package/dist/lib/browser/chunk-L326LSNS.mjs.map +7 -0
  19. package/dist/lib/browser/{chunk-EV4JWI7L.mjs → chunk-T4KJ5JR4.mjs} +5 -7
  20. package/dist/lib/browser/chunk-T4KJ5JR4.mjs.map +7 -0
  21. package/dist/lib/browser/chunk-VJMKS4CZ.mjs +619 -0
  22. package/dist/lib/browser/chunk-VJMKS4CZ.mjs.map +7 -0
  23. package/dist/lib/browser/{chunk-DW7JD64V.mjs → chunk-VTYX3SIM.mjs} +26 -16
  24. package/dist/lib/browser/chunk-VTYX3SIM.mjs.map +7 -0
  25. package/dist/lib/browser/{chunk-JGKMMI65.mjs → chunk-XYUJXHYV.mjs} +54 -4
  26. package/dist/lib/browser/chunk-XYUJXHYV.mjs.map +7 -0
  27. package/dist/lib/browser/{chunk-TUFWPOVS.mjs → chunk-ZCEU5K23.mjs} +460 -268
  28. package/dist/lib/browser/chunk-ZCEU5K23.mjs.map +7 -0
  29. package/dist/lib/browser/index.mjs +22 -13
  30. package/dist/lib/browser/index.mjs.map +3 -3
  31. package/dist/lib/browser/{intent-resolver-DCY4P4OX.mjs → intent-resolver-VOQD3TQ2.mjs} +73 -15
  32. package/dist/lib/browser/intent-resolver-VOQD3TQ2.mjs.map +7 -0
  33. package/dist/lib/browser/{markdown-WZSXCEZJ.mjs → markdown-R6MGRIA6.mjs} +6 -6
  34. package/dist/lib/browser/{markdown-WZSXCEZJ.mjs.map → markdown-R6MGRIA6.mjs.map} +1 -1
  35. package/dist/lib/browser/meta.json +1 -1
  36. package/dist/lib/browser/react-root-UMSBTN6H.mjs +28 -0
  37. package/dist/lib/browser/react-root-UMSBTN6H.mjs.map +7 -0
  38. package/dist/lib/browser/{react-surface-PYAMIADB.mjs → react-surface-SXMQEWKE.mjs} +22 -22
  39. package/dist/lib/browser/react-surface-SXMQEWKE.mjs.map +7 -0
  40. package/dist/lib/browser/{settings-AC6YSASL.mjs → settings-TCNF54PN.mjs} +5 -5
  41. package/dist/lib/browser/{settings-AC6YSASL.mjs.map → settings-TCNF54PN.mjs.map} +1 -1
  42. package/dist/lib/browser/{state-2T4KDWBX.mjs → state-ZQ4IPOJT.mjs} +5 -5
  43. package/dist/lib/browser/{state-2T4KDWBX.mjs.map → state-ZQ4IPOJT.mjs.map} +1 -1
  44. package/dist/lib/browser/toolkit-JF4B4QIO.mjs +84 -0
  45. package/dist/lib/browser/toolkit-JF4B4QIO.mjs.map +7 -0
  46. package/dist/lib/browser/types/index.mjs +2 -2
  47. package/dist/lib/node-esm/ChannelContainer-OXC6BTU7.mjs +17 -0
  48. package/dist/lib/node-esm/{ChatContainer-2CT4PJ7I.mjs → ChatContainer-SH6LTFQL.mjs} +6 -6
  49. package/dist/lib/node-esm/{app-graph-builder-OLSJVCWY.mjs → app-graph-builder-DMPT3MY6.mjs} +17 -17
  50. package/dist/lib/node-esm/app-graph-builder-DMPT3MY6.mjs.map +7 -0
  51. package/dist/lib/node-esm/{call-manager-EI7FXRAU.mjs → call-manager-Q7RY2YP4.mjs} +7 -7
  52. package/dist/lib/node-esm/{call-manager-EI7FXRAU.mjs.map → call-manager-Q7RY2YP4.mjs.map} +1 -1
  53. package/dist/lib/node-esm/{chunk-YIDU3DXK.mjs → chunk-2KZ4ODHU.mjs} +17 -15
  54. package/dist/lib/node-esm/chunk-2KZ4ODHU.mjs.map +7 -0
  55. package/dist/lib/node-esm/{chunk-SED3O2XO.mjs → chunk-2MMJF7DW.mjs} +37 -5
  56. package/dist/lib/node-esm/chunk-2MMJF7DW.mjs.map +7 -0
  57. package/dist/lib/node-esm/{chunk-QBHKLWGR.mjs → chunk-2V3WSLUZ.mjs} +54 -4
  58. package/dist/lib/node-esm/chunk-2V3WSLUZ.mjs.map +7 -0
  59. package/dist/lib/node-esm/{chunk-57XR3LEF.mjs → chunk-ABUFOZVX.mjs} +2 -2
  60. package/dist/lib/node-esm/chunk-ABUFOZVX.mjs.map +7 -0
  61. package/dist/lib/node-esm/{chunk-XVKWHTH4.mjs → chunk-BAMZXJS4.mjs} +26 -16
  62. package/dist/lib/node-esm/chunk-BAMZXJS4.mjs.map +7 -0
  63. package/dist/lib/node-esm/chunk-BTGKI5IK.mjs +377 -0
  64. package/dist/lib/node-esm/chunk-BTGKI5IK.mjs.map +7 -0
  65. package/dist/lib/node-esm/chunk-GZ4WL2IS.mjs +25 -0
  66. package/dist/lib/node-esm/{chunk-6CRHHOST.mjs.map → chunk-GZ4WL2IS.mjs.map} +3 -3
  67. package/dist/lib/node-esm/chunk-LCHTNRK7.mjs +19 -0
  68. package/dist/lib/node-esm/chunk-LCHTNRK7.mjs.map +7 -0
  69. package/dist/lib/node-esm/chunk-NHSIAEDW.mjs +620 -0
  70. package/dist/lib/node-esm/chunk-NHSIAEDW.mjs.map +7 -0
  71. package/dist/lib/node-esm/{chunk-GRLRWTRU.mjs → chunk-OBVAURUU.mjs} +5 -7
  72. package/dist/lib/node-esm/chunk-OBVAURUU.mjs.map +7 -0
  73. package/dist/lib/node-esm/{chunk-4TME3BR4.mjs → chunk-TIPIOH2J.mjs} +460 -268
  74. package/dist/lib/node-esm/chunk-TIPIOH2J.mjs.map +7 -0
  75. package/dist/lib/node-esm/index.mjs +22 -13
  76. package/dist/lib/node-esm/index.mjs.map +3 -3
  77. package/dist/lib/node-esm/{intent-resolver-QGTPU6QB.mjs → intent-resolver-AKVH66PH.mjs} +73 -15
  78. package/dist/lib/node-esm/intent-resolver-AKVH66PH.mjs.map +7 -0
  79. package/dist/lib/node-esm/{markdown-3MZXUGUA.mjs → markdown-MYGTDXT6.mjs} +6 -6
  80. package/dist/lib/node-esm/{markdown-3MZXUGUA.mjs.map → markdown-MYGTDXT6.mjs.map} +1 -1
  81. package/dist/lib/node-esm/meta.json +1 -1
  82. package/dist/lib/node-esm/react-root-W6AVTL5M.mjs +29 -0
  83. package/dist/lib/node-esm/react-root-W6AVTL5M.mjs.map +7 -0
  84. package/dist/lib/node-esm/{react-surface-UJFCSFNO.mjs → react-surface-NLSZJGMO.mjs} +22 -22
  85. package/dist/lib/node-esm/react-surface-NLSZJGMO.mjs.map +7 -0
  86. package/dist/lib/node-esm/{settings-N52O7MLS.mjs → settings-ZQHGVFBY.mjs} +5 -5
  87. package/dist/lib/node-esm/{settings-N52O7MLS.mjs.map → settings-ZQHGVFBY.mjs.map} +1 -1
  88. package/dist/lib/node-esm/{state-62TQKQVB.mjs → state-FSLLJ5TZ.mjs} +5 -5
  89. package/dist/lib/node-esm/{state-62TQKQVB.mjs.map → state-FSLLJ5TZ.mjs.map} +1 -1
  90. package/dist/lib/node-esm/toolkit-DHPKJITO.mjs +85 -0
  91. package/dist/lib/node-esm/toolkit-DHPKJITO.mjs.map +7 -0
  92. package/dist/lib/node-esm/types/index.mjs +2 -2
  93. package/dist/types/src/ThreadPlugin.d.ts +1 -1
  94. package/dist/types/src/ThreadPlugin.d.ts.map +1 -1
  95. package/dist/types/src/calls/media-manager.d.ts +1 -1
  96. package/dist/types/src/calls/media-manager.d.ts.map +1 -1
  97. package/dist/types/src/calls/types.d.ts.map +1 -1
  98. package/dist/types/src/calls/util/calls-service.d.ts +3 -1
  99. package/dist/types/src/calls/util/calls-service.d.ts.map +1 -1
  100. package/dist/types/src/calls/util/stub-media-streams.d.ts.map +1 -1
  101. package/dist/types/src/calls-service.stories.d.ts +10 -9
  102. package/dist/types/src/calls-service.stories.d.ts.map +1 -1
  103. package/dist/types/src/capabilities/app-graph-builder.d.ts +1 -1
  104. package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
  105. package/dist/types/src/capabilities/call-manager.d.ts +1 -1
  106. package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
  107. package/dist/types/src/capabilities/index.d.ts +11 -10
  108. package/dist/types/src/capabilities/index.d.ts.map +1 -1
  109. package/dist/types/src/capabilities/intent-resolver.d.ts +1 -1
  110. package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
  111. package/dist/types/src/capabilities/markdown.d.ts +1 -1
  112. package/dist/types/src/capabilities/react-root.d.ts +2 -2
  113. package/dist/types/src/capabilities/react-surface.d.ts +1 -1
  114. package/dist/types/src/capabilities/settings.d.ts +1 -1
  115. package/dist/types/src/capabilities/state.d.ts +2 -2
  116. package/dist/types/src/capabilities/toolkit.d.ts +6 -0
  117. package/dist/types/src/capabilities/toolkit.d.ts.map +1 -0
  118. package/dist/types/src/components/CallDebugPanel.d.ts +7 -0
  119. package/dist/types/src/components/CallDebugPanel.d.ts.map +1 -1
  120. package/dist/types/src/components/ChannelContainer.stories.d.ts +89 -5
  121. package/dist/types/src/components/ChannelContainer.stories.d.ts.map +1 -1
  122. package/dist/types/src/components/Chat.stories.d.ts +91 -5
  123. package/dist/types/src/components/Chat.stories.d.ts.map +1 -1
  124. package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
  125. package/dist/types/src/components/Comments.stories.d.ts +156 -4
  126. package/dist/types/src/components/Comments.stories.d.ts.map +1 -1
  127. package/dist/types/src/components/CommentsThreadContainer.d.ts +2 -2
  128. package/dist/types/src/components/CommentsThreadContainer.d.ts.map +1 -1
  129. package/dist/types/src/components/Media/VideoObject.d.ts +2 -2
  130. package/dist/types/src/components/Media/VideoObject.d.ts.map +1 -1
  131. package/dist/types/src/components/Media/VideoObject.stories.d.ts +18 -4
  132. package/dist/types/src/components/Media/VideoObject.stories.d.ts.map +1 -1
  133. package/dist/types/src/components/MessageContainer.d.ts +4 -1
  134. package/dist/types/src/components/MessageContainer.d.ts.map +1 -1
  135. package/dist/types/src/components/Participant/Participant.d.ts.map +1 -1
  136. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts +155 -3
  137. package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts.map +1 -1
  138. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts +157 -4
  139. package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts.map +1 -1
  140. package/dist/types/src/components/ThreadComplementary.d.ts.map +1 -1
  141. package/dist/types/src/components/ThreadSettings.d.ts +1 -1
  142. package/dist/types/src/components/ThreadSettings.d.ts.map +1 -1
  143. package/dist/types/src/components/command-extension.d.ts.map +1 -1
  144. package/dist/types/src/components/testing.d.ts +1 -0
  145. package/dist/types/src/components/testing.d.ts.map +1 -1
  146. package/dist/types/src/hooks/index.d.ts +1 -0
  147. package/dist/types/src/hooks/index.d.ts.map +1 -1
  148. package/dist/types/src/hooks/useBlackCanvasStreamTrack.d.ts +2 -0
  149. package/dist/types/src/hooks/useBlackCanvasStreamTrack.d.ts.map +1 -0
  150. package/dist/types/src/hooks/useVideoStreamTrack.d.ts +1 -1
  151. package/dist/types/src/hooks/useVideoStreamTrack.d.ts.map +1 -1
  152. package/dist/types/src/meta.d.ts +1 -2
  153. package/dist/types/src/meta.d.ts.map +1 -1
  154. package/dist/types/src/translations.d.ts +3 -1
  155. package/dist/types/src/translations.d.ts.map +1 -1
  156. package/dist/types/src/types/schema.d.ts +126 -111
  157. package/dist/types/src/types/schema.d.ts.map +1 -1
  158. package/dist/types/src/types/types.d.ts +259 -174
  159. package/dist/types/src/types/types.d.ts.map +1 -1
  160. package/dist/types/tsconfig.tsbuildinfo +1 -1
  161. package/package.json +60 -58
  162. package/src/ThreadPlugin.tsx +128 -122
  163. package/src/calls/call-manager.ts +1 -1
  164. package/src/calls/media-manager.ts +58 -32
  165. package/src/calls/types.ts +7 -3
  166. package/src/calls/util/calls-service.ts +61 -11
  167. package/src/calls/util/stub-media-streams.ts +60 -3
  168. package/src/calls-service.stories.tsx +76 -63
  169. package/src/capabilities/app-graph-builder.ts +13 -10
  170. package/src/capabilities/capabilities.ts +5 -5
  171. package/src/capabilities/index.ts +1 -0
  172. package/src/capabilities/intent-resolver.ts +39 -6
  173. package/src/capabilities/react-root.tsx +2 -2
  174. package/src/capabilities/react-surface.tsx +9 -9
  175. package/src/capabilities/toolkit.ts +82 -0
  176. package/src/components/Call/Toolbar.tsx +4 -4
  177. package/src/components/CallDebugPanel.tsx +108 -49
  178. package/src/components/ChannelContainer.stories.tsx +9 -9
  179. package/src/components/ChannelContainer.tsx +1 -1
  180. package/src/components/Chat.stories.tsx +31 -29
  181. package/src/components/ChatContainer.tsx +4 -1
  182. package/src/components/Comments.stories.tsx +33 -35
  183. package/src/components/CommentsThreadContainer.tsx +8 -7
  184. package/src/components/Media/VideoObject.stories.tsx +35 -28
  185. package/src/components/MessageContainer.tsx +40 -7
  186. package/src/components/Participant/Participant.tsx +13 -7
  187. package/src/components/ResponsiveGrid/ResponsiveContainer.stories.tsx +5 -6
  188. package/src/components/ResponsiveGrid/ResponsiveGrid.stories.tsx +41 -40
  189. package/src/components/ThreadComplementary.tsx +36 -6
  190. package/src/components/ThreadSettings.tsx +6 -7
  191. package/src/components/command-extension.ts +4 -1
  192. package/src/components/testing.ts +22 -0
  193. package/src/hooks/index.ts +1 -0
  194. package/src/hooks/useBlackCanvasStreamTrack.tsx +27 -0
  195. package/src/hooks/useVideoStreamTrack.tsx +6 -3
  196. package/src/meta.ts +3 -4
  197. package/src/testing/stories.ts +1 -1
  198. package/src/translations.ts +3 -1
  199. package/src/types/schema.ts +1 -1
  200. package/src/types/types.ts +21 -13
  201. package/src/typings/peermetrics-webrtc-stats.d.ts +17 -1
  202. package/src/util.ts +1 -1
  203. package/dist/lib/browser/ChannelContainer-O2SFQJU7.mjs +0 -16
  204. package/dist/lib/browser/ChatContainer-PVT3DUZJ.mjs +0 -15
  205. package/dist/lib/browser/app-graph-builder-AF3M7UWN.mjs.map +0 -7
  206. package/dist/lib/browser/chunk-2CWJBXBH.mjs +0 -21
  207. package/dist/lib/browser/chunk-4APCDRSH.mjs +0 -18
  208. package/dist/lib/browser/chunk-4APCDRSH.mjs.map +0 -7
  209. package/dist/lib/browser/chunk-DW7JD64V.mjs.map +0 -7
  210. package/dist/lib/browser/chunk-EV4JWI7L.mjs.map +0 -7
  211. package/dist/lib/browser/chunk-FY4ZRD5X.mjs +0 -367
  212. package/dist/lib/browser/chunk-FY4ZRD5X.mjs.map +0 -7
  213. package/dist/lib/browser/chunk-GERVMFQW.mjs.map +0 -7
  214. package/dist/lib/browser/chunk-J3JO5NWO.mjs +0 -477
  215. package/dist/lib/browser/chunk-J3JO5NWO.mjs.map +0 -7
  216. package/dist/lib/browser/chunk-JGKMMI65.mjs.map +0 -7
  217. package/dist/lib/browser/chunk-TUFWPOVS.mjs.map +0 -7
  218. package/dist/lib/browser/chunk-X5PIP5YR.mjs.map +0 -7
  219. package/dist/lib/browser/chunk-ZJ7QBXK6.mjs.map +0 -7
  220. package/dist/lib/browser/intent-resolver-DCY4P4OX.mjs.map +0 -7
  221. package/dist/lib/browser/react-root-QXPALOUQ.mjs +0 -28
  222. package/dist/lib/browser/react-root-QXPALOUQ.mjs.map +0 -7
  223. package/dist/lib/browser/react-surface-PYAMIADB.mjs.map +0 -7
  224. package/dist/lib/node-esm/ChannelContainer-B2ZGAE4P.mjs +0 -17
  225. package/dist/lib/node-esm/app-graph-builder-OLSJVCWY.mjs.map +0 -7
  226. package/dist/lib/node-esm/chunk-4TME3BR4.mjs.map +0 -7
  227. package/dist/lib/node-esm/chunk-57XR3LEF.mjs.map +0 -7
  228. package/dist/lib/node-esm/chunk-6CRHHOST.mjs +0 -23
  229. package/dist/lib/node-esm/chunk-BF4UKS55.mjs +0 -368
  230. package/dist/lib/node-esm/chunk-BF4UKS55.mjs.map +0 -7
  231. package/dist/lib/node-esm/chunk-GRLRWTRU.mjs.map +0 -7
  232. package/dist/lib/node-esm/chunk-PYTVBN5J.mjs +0 -19
  233. package/dist/lib/node-esm/chunk-PYTVBN5J.mjs.map +0 -7
  234. package/dist/lib/node-esm/chunk-QBHKLWGR.mjs.map +0 -7
  235. package/dist/lib/node-esm/chunk-VNG6M2IY.mjs +0 -478
  236. package/dist/lib/node-esm/chunk-VNG6M2IY.mjs.map +0 -7
  237. package/dist/lib/node-esm/chunk-XVKWHTH4.mjs.map +0 -7
  238. package/dist/lib/node-esm/chunk-YIDU3DXK.mjs.map +0 -7
  239. package/dist/lib/node-esm/intent-resolver-QGTPU6QB.mjs.map +0 -7
  240. package/dist/lib/node-esm/react-root-7ZFJYVUZ.mjs +0 -29
  241. package/dist/lib/node-esm/react-root-7ZFJYVUZ.mjs.map +0 -7
  242. package/dist/lib/node-esm/react-surface-UJFCSFNO.mjs.map +0 -7
  243. /package/dist/lib/browser/{ChannelContainer-O2SFQJU7.mjs.map → ChannelContainer-BGDGZHV4.mjs.map} +0 -0
  244. /package/dist/lib/browser/{ChatContainer-PVT3DUZJ.mjs.map → ChatContainer-75KJZ4XR.mjs.map} +0 -0
  245. /package/dist/lib/node-esm/{ChannelContainer-B2ZGAE4P.mjs.map → ChannelContainer-OXC6BTU7.mjs.map} +0 -0
  246. /package/dist/lib/node-esm/{ChatContainer-2CT4PJ7I.mjs.map → ChatContainer-SH6LTFQL.mjs.map} +0 -0
@@ -0,0 +1,619 @@
1
+ import {
2
+ ThreadAction,
3
+ ThreadType
4
+ } from "./chunk-VTYX3SIM.mjs";
5
+ import {
6
+ ChannelContainer
7
+ } from "./chunk-CMCVHULC.mjs";
8
+ import {
9
+ ThreadCapabilities
10
+ } from "./chunk-L326LSNS.mjs";
11
+ import {
12
+ MessageContainer,
13
+ buttonClassNames,
14
+ buttonGroupClassNames,
15
+ command
16
+ } from "./chunk-B7YQ7QR2.mjs";
17
+ import {
18
+ useStatus
19
+ } from "./chunk-HDEQRBOC.mjs";
20
+ import {
21
+ getMessageMetadata
22
+ } from "./chunk-CP7E2HRE.mjs";
23
+ import {
24
+ meta
25
+ } from "./chunk-T4KJ5JR4.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 useTranslation5 } 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 { useTranslation as useTranslation4 } from "@dxos/react-ui";
451
+ import { ControlPage } from "@dxos/react-ui-form";
452
+ var ThreadSettings = ({ settings: _settings }) => {
453
+ var _effect = _useSignals5();
454
+ try {
455
+ const { t: _t } = useTranslation4(meta.id);
456
+ return /* @__PURE__ */ React5.createElement(ControlPage, null);
457
+ } finally {
458
+ _effect.f();
459
+ }
460
+ };
461
+
462
+ // src/components/index.ts
463
+ var ChannelContainer2 = lazy(() => import("./ChannelContainer-BGDGZHV4.mjs"));
464
+ var ChatContainer = lazy(() => import("./ChatContainer-75KJZ4XR.mjs"));
465
+
466
+ // src/components/ThreadComplementary.tsx
467
+ var ThreadComplementary = ({ subject }) => {
468
+ var _effect = _useSignals6();
469
+ try {
470
+ const { t } = useTranslation5(meta.id);
471
+ const { dispatchPromise: dispatch } = useIntentDispatcher();
472
+ const identity = useIdentity2();
473
+ const { tx } = useThemeContext2();
474
+ const subjectId = fullyQualifiedId3(subject);
475
+ const { state, getViewState } = useCapability2(ThreadCapabilities.MutableState);
476
+ const drafts = state.drafts[subjectId];
477
+ const viewState = useMemo3(() => getViewState(subjectId), [
478
+ getViewState,
479
+ subjectId
480
+ ]);
481
+ const { showResolvedThreads } = viewState;
482
+ const onChangeViewState = useCallback2((nextValue) => {
483
+ viewState.showResolvedThreads = nextValue === "all";
484
+ }, [
485
+ viewState
486
+ ]);
487
+ const anchorSorts = useCapabilities(Capabilities.AnchorSort);
488
+ const sort = useMemo3(() => anchorSorts.find(({ key }) => key === Obj.getTypename(subject))?.sort, [
489
+ anchorSorts,
490
+ subject
491
+ ]);
492
+ const space = getSpace2(subject);
493
+ const objectsAnchoredTo = useQuery(space, Query.select(Filter.ids(subject.id)).targetOf(AnchoredTo));
494
+ const anchors = objectsAnchoredTo.toSorted((a, b) => sort?.(a, b) ?? 0).filter((anchor) => Obj.instanceOf(ThreadType, Relation3.getSource(anchor))).concat(drafts ?? []);
495
+ const attended = useAttended();
496
+ const handleAttend = useCallback2((anchor) => {
497
+ const thread = Relation3.getSource(anchor);
498
+ const threadId = fullyQualifiedId3(thread);
499
+ if (state.current !== threadId) {
500
+ state.current = threadId;
501
+ void dispatch(createIntent(LayoutAction.ScrollIntoView, {
502
+ part: "current",
503
+ subject: fullyQualifiedId3(subject),
504
+ options: {
505
+ cursor: anchor.anchor,
506
+ ref: threadId
507
+ }
508
+ }));
509
+ }
510
+ }, [
511
+ state.current,
512
+ dispatch,
513
+ subject
514
+ ]);
515
+ const handleComment = useCallback2(async (anchor, text) => {
516
+ await dispatch(createIntent(ThreadAction.AddMessage, {
517
+ anchor,
518
+ subject,
519
+ sender: {
520
+ identityDid: identity?.did
521
+ },
522
+ text
523
+ }));
524
+ const thread = Relation3.getSource(anchor);
525
+ state.current = fullyQualifiedId3(thread);
526
+ }, [
527
+ dispatch,
528
+ identity,
529
+ subject
530
+ ]);
531
+ const handleResolve = useCallback2((anchor) => dispatch(createIntent(ThreadAction.ToggleResolved, {
532
+ thread: Relation3.getSource(anchor)
533
+ })), [
534
+ dispatch
535
+ ]);
536
+ const handleThreadDelete = useCallback2((anchor) => dispatch(createIntent(ThreadAction.Delete, {
537
+ anchor,
538
+ subject
539
+ })), [
540
+ dispatch,
541
+ subject
542
+ ]);
543
+ const handleMessageDelete = useCallback2((anchor, messageId) => dispatch(createIntent(ThreadAction.DeleteMessage, {
544
+ anchor,
545
+ subject,
546
+ messageId
547
+ })), [
548
+ dispatch,
549
+ subject
550
+ ]);
551
+ const handleAcceptProposal = useCallback2(async (anchor, messageId) => {
552
+ const thread = Relation3.getSource(anchor);
553
+ const messageIndex = thread.messages.findIndex(Ref2.hasObjectId(messageId));
554
+ const message = thread.messages[messageIndex]?.target;
555
+ const proposal = message?.blocks.find((block) => block._tag === "proposal");
556
+ if (!proposal || !anchor.anchor) {
557
+ return;
558
+ }
559
+ await dispatch(createIntent(CollaborationActions.AcceptProposal, {
560
+ subject,
561
+ anchor: anchor.anchor,
562
+ proposal
563
+ }));
564
+ await dispatch(createIntent(ThreadAction.ToggleResolved, {
565
+ thread
566
+ }));
567
+ }, [
568
+ dispatch,
569
+ subject
570
+ ]);
571
+ const comments = /* @__PURE__ */ React6.createElement(CommentsContainer, {
572
+ anchors,
573
+ currentId: attended.includes(subjectId) ? state.current : void 0,
574
+ showResolvedThreads,
575
+ onAttend: handleAttend,
576
+ onComment: handleComment,
577
+ onResolve: handleResolve,
578
+ onMessageDelete: handleMessageDelete,
579
+ onThreadDelete: handleThreadDelete,
580
+ onAcceptProposal: handleAcceptProposal
581
+ });
582
+ return /* @__PURE__ */ React6.createElement(StackItem.Content, {
583
+ toolbar: true
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-VJMKS4CZ.mjs.map