@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,620 @@
1
+ import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
2
+ import {
3
+ ThreadAction,
4
+ ThreadType
5
+ } from "./chunk-BAMZXJS4.mjs";
6
+ import {
7
+ ChannelContainer
8
+ } from "./chunk-2KZ4ODHU.mjs";
9
+ import {
10
+ ThreadCapabilities
11
+ } from "./chunk-LCHTNRK7.mjs";
12
+ import {
13
+ MessageContainer,
14
+ buttonClassNames,
15
+ buttonGroupClassNames,
16
+ command
17
+ } from "./chunk-BTGKI5IK.mjs";
18
+ import {
19
+ useStatus
20
+ } from "./chunk-2MMJF7DW.mjs";
21
+ import {
22
+ getMessageMetadata
23
+ } from "./chunk-ABUFOZVX.mjs";
24
+ import {
25
+ meta
26
+ } from "./chunk-OBVAURUU.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 useTranslation5 } 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 { useTranslation as useTranslation4 } from "@dxos/react-ui";
452
+ import { ControlPage } from "@dxos/react-ui-form";
453
+ var ThreadSettings = ({ settings: _settings }) => {
454
+ var _effect = _useSignals5();
455
+ try {
456
+ const { t: _t } = useTranslation4(meta.id);
457
+ return /* @__PURE__ */ React5.createElement(ControlPage, null);
458
+ } finally {
459
+ _effect.f();
460
+ }
461
+ };
462
+
463
+ // src/components/index.ts
464
+ var ChannelContainer2 = lazy(() => import("./ChannelContainer-OXC6BTU7.mjs"));
465
+ var ChatContainer = lazy(() => import("./ChatContainer-SH6LTFQL.mjs"));
466
+
467
+ // src/components/ThreadComplementary.tsx
468
+ var ThreadComplementary = ({ subject }) => {
469
+ var _effect = _useSignals6();
470
+ try {
471
+ const { t } = useTranslation5(meta.id);
472
+ const { dispatchPromise: dispatch } = useIntentDispatcher();
473
+ const identity = useIdentity2();
474
+ const { tx } = useThemeContext2();
475
+ const subjectId = fullyQualifiedId3(subject);
476
+ const { state, getViewState } = useCapability2(ThreadCapabilities.MutableState);
477
+ const drafts = state.drafts[subjectId];
478
+ const viewState = useMemo3(() => getViewState(subjectId), [
479
+ getViewState,
480
+ subjectId
481
+ ]);
482
+ const { showResolvedThreads } = viewState;
483
+ const onChangeViewState = useCallback2((nextValue) => {
484
+ viewState.showResolvedThreads = nextValue === "all";
485
+ }, [
486
+ viewState
487
+ ]);
488
+ const anchorSorts = useCapabilities(Capabilities.AnchorSort);
489
+ const sort = useMemo3(() => anchorSorts.find(({ key }) => key === Obj.getTypename(subject))?.sort, [
490
+ anchorSorts,
491
+ subject
492
+ ]);
493
+ const space = getSpace2(subject);
494
+ const objectsAnchoredTo = useQuery(space, Query.select(Filter.ids(subject.id)).targetOf(AnchoredTo));
495
+ const anchors = objectsAnchoredTo.toSorted((a, b) => sort?.(a, b) ?? 0).filter((anchor) => Obj.instanceOf(ThreadType, Relation3.getSource(anchor))).concat(drafts ?? []);
496
+ const attended = useAttended();
497
+ const handleAttend = useCallback2((anchor) => {
498
+ const thread = Relation3.getSource(anchor);
499
+ const threadId = fullyQualifiedId3(thread);
500
+ if (state.current !== threadId) {
501
+ state.current = threadId;
502
+ void dispatch(createIntent(LayoutAction.ScrollIntoView, {
503
+ part: "current",
504
+ subject: fullyQualifiedId3(subject),
505
+ options: {
506
+ cursor: anchor.anchor,
507
+ ref: threadId
508
+ }
509
+ }));
510
+ }
511
+ }, [
512
+ state.current,
513
+ dispatch,
514
+ subject
515
+ ]);
516
+ const handleComment = useCallback2(async (anchor, text) => {
517
+ await dispatch(createIntent(ThreadAction.AddMessage, {
518
+ anchor,
519
+ subject,
520
+ sender: {
521
+ identityDid: identity?.did
522
+ },
523
+ text
524
+ }));
525
+ const thread = Relation3.getSource(anchor);
526
+ state.current = fullyQualifiedId3(thread);
527
+ }, [
528
+ dispatch,
529
+ identity,
530
+ subject
531
+ ]);
532
+ const handleResolve = useCallback2((anchor) => dispatch(createIntent(ThreadAction.ToggleResolved, {
533
+ thread: Relation3.getSource(anchor)
534
+ })), [
535
+ dispatch
536
+ ]);
537
+ const handleThreadDelete = useCallback2((anchor) => dispatch(createIntent(ThreadAction.Delete, {
538
+ anchor,
539
+ subject
540
+ })), [
541
+ dispatch,
542
+ subject
543
+ ]);
544
+ const handleMessageDelete = useCallback2((anchor, messageId) => dispatch(createIntent(ThreadAction.DeleteMessage, {
545
+ anchor,
546
+ subject,
547
+ messageId
548
+ })), [
549
+ dispatch,
550
+ subject
551
+ ]);
552
+ const handleAcceptProposal = useCallback2(async (anchor, messageId) => {
553
+ const thread = Relation3.getSource(anchor);
554
+ const messageIndex = thread.messages.findIndex(Ref2.hasObjectId(messageId));
555
+ const message = thread.messages[messageIndex]?.target;
556
+ const proposal = message?.blocks.find((block) => block._tag === "proposal");
557
+ if (!proposal || !anchor.anchor) {
558
+ return;
559
+ }
560
+ await dispatch(createIntent(CollaborationActions.AcceptProposal, {
561
+ subject,
562
+ anchor: anchor.anchor,
563
+ proposal
564
+ }));
565
+ await dispatch(createIntent(ThreadAction.ToggleResolved, {
566
+ thread
567
+ }));
568
+ }, [
569
+ dispatch,
570
+ subject
571
+ ]);
572
+ const comments = /* @__PURE__ */ React6.createElement(CommentsContainer, {
573
+ anchors,
574
+ currentId: attended.includes(subjectId) ? state.current : void 0,
575
+ showResolvedThreads,
576
+ onAttend: handleAttend,
577
+ onComment: handleComment,
578
+ onResolve: handleResolve,
579
+ onMessageDelete: handleMessageDelete,
580
+ onThreadDelete: handleThreadDelete,
581
+ onAcceptProposal: handleAcceptProposal
582
+ });
583
+ return /* @__PURE__ */ React6.createElement(StackItem.Content, {
584
+ toolbar: true
585
+ }, /* @__PURE__ */ React6.createElement(Tabs.Root, {
586
+ value: showResolvedThreads ? "all" : "unresolved",
587
+ orientation: "horizontal",
588
+ classNames: [
589
+ 'contents [&_[role="tabpanel"]]:min-bs-0 [&_[role="tabpanel"]]:overflow-y-auto [&_[role="tabpanel"]]:scrollbar-thin'
590
+ ],
591
+ onValueChange: onChangeViewState
592
+ }, /* @__PURE__ */ React6.createElement(Tabs.Tablist, {
593
+ classNames: mx2("bg-toolbarSurface border-b border-subduedSeparator")
594
+ }, /* @__PURE__ */ React6.createElement(Tabs.Tab, {
595
+ value: "unresolved",
596
+ classNames: "text-sm"
597
+ }, t("show unresolved label")), /* @__PURE__ */ React6.createElement(Tabs.Tab, {
598
+ value: "all",
599
+ classNames: "text-sm"
600
+ }, t("show all label"))), /* @__PURE__ */ React6.createElement("div", {
601
+ className: "overflow-y-auto"
602
+ }, /* @__PURE__ */ React6.createElement(Tabs.Tabpanel, {
603
+ value: "all"
604
+ }, showResolvedThreads && comments), /* @__PURE__ */ React6.createElement(Tabs.Tabpanel, {
605
+ value: "unresolved"
606
+ }, !showResolvedThreads && comments))));
607
+ } finally {
608
+ _effect.f();
609
+ }
610
+ };
611
+
612
+ export {
613
+ CallDebugPanel,
614
+ CallSidebar,
615
+ ThreadComplementary,
616
+ ThreadSettings,
617
+ ChannelContainer2 as ChannelContainer,
618
+ ChatContainer
619
+ };
620
+ //# sourceMappingURL=chunk-NHSIAEDW.mjs.map