@dxos/plugin-thread 0.8.4-main.5ea62a8 → 0.8.4-main.72ec0f3
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.
- package/dist/lib/browser/ChannelContainer-MX5ABVGC.mjs +16 -0
- package/dist/lib/browser/ChatContainer-7F5Y6GXJ.mjs +15 -0
- package/dist/lib/browser/{app-graph-builder-FHAOPO57.mjs → app-graph-builder-HNYLII5E.mjs} +31 -32
- package/dist/lib/browser/app-graph-builder-HNYLII5E.mjs.map +7 -0
- package/dist/lib/browser/blueprint-definition-6BKYTMJS.mjs +104 -0
- package/dist/lib/browser/blueprint-definition-6BKYTMJS.mjs.map +7 -0
- package/dist/lib/browser/{call-manager-EW2QC6Q4.mjs → call-manager-MAXQLMMS.mjs} +7 -7
- package/dist/lib/browser/{call-manager-EW2QC6Q4.mjs.map → call-manager-MAXQLMMS.mjs.map} +1 -1
- package/dist/lib/browser/chunk-BBTXGRIR.mjs +18 -0
- package/dist/lib/browser/chunk-BBTXGRIR.mjs.map +7 -0
- package/dist/lib/browser/{chunk-J26C57ZY.mjs → chunk-BQWQFTWT.mjs} +165 -101
- package/dist/lib/browser/chunk-BQWQFTWT.mjs.map +7 -0
- package/dist/lib/browser/{chunk-GERVMFQW.mjs → chunk-CP7E2HRE.mjs} +2 -2
- package/dist/lib/browser/chunk-CP7E2HRE.mjs.map +7 -0
- package/dist/lib/browser/{chunk-H63NDV62.mjs → chunk-FR6MEAZI.mjs} +18 -17
- package/dist/lib/browser/chunk-FR6MEAZI.mjs.map +7 -0
- package/dist/lib/browser/{chunk-TQJYDFBU.mjs → chunk-INQVAYPN.mjs} +40 -37
- package/dist/lib/browser/chunk-INQVAYPN.mjs.map +7 -0
- package/dist/lib/browser/{chunk-KEXJGF2R.mjs → chunk-ISCHODBV.mjs} +53 -3
- package/dist/lib/browser/chunk-ISCHODBV.mjs.map +7 -0
- package/dist/lib/browser/chunk-K2DUJRFJ.mjs +27 -0
- package/dist/lib/browser/chunk-K2DUJRFJ.mjs.map +7 -0
- package/dist/lib/browser/{chunk-2P3GVRHP.mjs → chunk-KOBXMDCI.mjs} +68 -67
- package/dist/lib/browser/chunk-KOBXMDCI.mjs.map +7 -0
- package/dist/lib/browser/chunk-NMJEVD36.mjs +168 -0
- package/dist/lib/browser/chunk-NMJEVD36.mjs.map +7 -0
- package/dist/lib/browser/chunk-OOUDK7Q7.mjs +23 -0
- package/dist/lib/browser/chunk-OOUDK7Q7.mjs.map +7 -0
- package/dist/lib/browser/{chunk-TUSBPMNU.mjs → chunk-ZCW3NSDZ.mjs} +274 -374
- package/dist/lib/browser/chunk-ZCW3NSDZ.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +42 -42
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/{intent-resolver-IB5GYU2D.mjs → intent-resolver-BOUT4WGY.mjs} +32 -99
- package/dist/lib/browser/intent-resolver-BOUT4WGY.mjs.map +7 -0
- package/dist/lib/browser/{markdown-Z677YORA.mjs → markdown-74EUSQGV.mjs} +24 -22
- package/dist/lib/browser/markdown-74EUSQGV.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/react-root-BVG7B2LW.mjs +28 -0
- package/dist/lib/browser/react-root-BVG7B2LW.mjs.map +7 -0
- package/dist/lib/browser/{react-surface-X2VB6P37.mjs → react-surface-BCD5ODQ6.mjs} +37 -36
- package/dist/lib/browser/react-surface-BCD5ODQ6.mjs.map +7 -0
- package/dist/lib/browser/{settings-GRKEID73.mjs → settings-LGQUZITB.mjs} +5 -5
- package/dist/lib/browser/{settings-GRKEID73.mjs.map → settings-LGQUZITB.mjs.map} +1 -1
- package/dist/lib/browser/{state-2T4KDWBX.mjs → state-36REWXO5.mjs} +5 -5
- package/dist/lib/browser/{state-2T4KDWBX.mjs.map → state-36REWXO5.mjs.map} +1 -1
- package/dist/lib/browser/types/index.mjs +7 -9
- package/dist/lib/node-esm/ChannelContainer-2JJJ3IDK.mjs +17 -0
- package/dist/lib/node-esm/{ChatContainer-4EGHKHIU.mjs → ChatContainer-C526R4DI.mjs} +6 -6
- package/dist/lib/node-esm/{app-graph-builder-XEYWX5FC.mjs → app-graph-builder-SOCKP4ST.mjs} +31 -32
- package/dist/lib/node-esm/app-graph-builder-SOCKP4ST.mjs.map +7 -0
- package/dist/lib/node-esm/blueprint-definition-6LEAWSC7.mjs +105 -0
- package/dist/lib/node-esm/blueprint-definition-6LEAWSC7.mjs.map +7 -0
- package/dist/lib/node-esm/{call-manager-N3KASRDQ.mjs → call-manager-LC4OS2KD.mjs} +7 -7
- package/dist/lib/node-esm/{call-manager-N3KASRDQ.mjs.map → call-manager-LC4OS2KD.mjs.map} +1 -1
- package/dist/lib/node-esm/chunk-5DLH4MWN.mjs +25 -0
- package/dist/lib/node-esm/chunk-5DLH4MWN.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-JR7KESLL.mjs → chunk-7KZWZS2U.mjs} +274 -374
- package/dist/lib/node-esm/chunk-7KZWZS2U.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-57XR3LEF.mjs → chunk-ABUFOZVX.mjs} +2 -2
- package/dist/lib/node-esm/chunk-ABUFOZVX.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-CCE5LHBE.mjs → chunk-JF7THR7F.mjs} +40 -37
- package/dist/lib/node-esm/chunk-JF7THR7F.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-NNKKNW57.mjs → chunk-JJW6YMLC.mjs} +165 -101
- package/dist/lib/node-esm/chunk-JJW6YMLC.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-CTZ75IFK.mjs → chunk-PZH2EDU5.mjs} +68 -67
- package/dist/lib/node-esm/chunk-PZH2EDU5.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-TJKM5JZT.mjs +169 -0
- package/dist/lib/node-esm/chunk-TJKM5JZT.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-UHZQTPXU.mjs → chunk-TWKGDFCS.mjs} +18 -17
- package/dist/lib/node-esm/chunk-TWKGDFCS.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-S3D7DTBF.mjs → chunk-VBI32FGI.mjs} +53 -3
- package/dist/lib/node-esm/chunk-VBI32FGI.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-XI45H4IV.mjs +28 -0
- package/dist/lib/node-esm/chunk-XI45H4IV.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-ZQAGII7M.mjs +19 -0
- package/dist/lib/node-esm/chunk-ZQAGII7M.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +42 -42
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/{intent-resolver-VIMI5VLH.mjs → intent-resolver-45PLIFCJ.mjs} +32 -99
- package/dist/lib/node-esm/intent-resolver-45PLIFCJ.mjs.map +7 -0
- package/dist/lib/node-esm/{markdown-FL4IXLRP.mjs → markdown-566XXB55.mjs} +24 -22
- package/dist/lib/node-esm/markdown-566XXB55.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/react-root-DCY6DKLC.mjs +29 -0
- package/dist/lib/node-esm/react-root-DCY6DKLC.mjs.map +7 -0
- package/dist/lib/node-esm/{react-surface-OLN3XNND.mjs → react-surface-WZH7OAO3.mjs} +37 -36
- package/dist/lib/node-esm/react-surface-WZH7OAO3.mjs.map +7 -0
- package/dist/lib/node-esm/{settings-F2ODVNNW.mjs → settings-WKLJSP6R.mjs} +5 -5
- package/dist/lib/node-esm/{settings-F2ODVNNW.mjs.map → settings-WKLJSP6R.mjs.map} +1 -1
- package/dist/lib/node-esm/{state-62TQKQVB.mjs → state-X3W67GTL.mjs} +5 -5
- package/dist/lib/node-esm/{state-62TQKQVB.mjs.map → state-X3W67GTL.mjs.map} +1 -1
- package/dist/lib/node-esm/types/index.mjs +7 -9
- package/dist/types/src/ThreadPlugin.d.ts +1 -1
- package/dist/types/src/ThreadPlugin.d.ts.map +1 -1
- package/dist/types/src/calls/media-manager.d.ts.map +1 -1
- package/dist/types/src/calls/types.d.ts.map +1 -1
- package/dist/types/src/calls/util/calls-service.d.ts +2 -0
- package/dist/types/src/calls/util/calls-service.d.ts.map +1 -1
- package/dist/types/src/calls/util/stub-media-streams.d.ts.map +1 -1
- package/dist/types/src/calls-service.stories.d.ts +0 -1
- package/dist/types/src/calls-service.stories.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
- package/dist/types/src/capabilities/blueprint-definition.d.ts +5 -0
- package/dist/types/src/capabilities/blueprint-definition.d.ts.map +1 -0
- package/dist/types/src/capabilities/capabilities.d.ts +2 -2
- package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
- package/dist/types/src/capabilities/index.d.ts +1 -1
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
- package/dist/types/src/capabilities/markdown.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/components/Call/Toolbar.d.ts +2 -2
- package/dist/types/src/components/Call/Toolbar.d.ts.map +1 -1
- package/dist/types/src/components/CallDebugPanel.d.ts +7 -0
- package/dist/types/src/components/CallDebugPanel.d.ts.map +1 -1
- package/dist/types/src/components/ChannelContainer.d.ts +2 -2
- package/dist/types/src/components/ChannelContainer.d.ts.map +1 -1
- package/dist/types/src/components/ChannelContainer.stories.d.ts +75 -9
- package/dist/types/src/components/ChannelContainer.stories.d.ts.map +1 -1
- package/dist/types/src/components/Chat.stories.d.ts +75 -7
- package/dist/types/src/components/Chat.stories.d.ts.map +1 -1
- package/dist/types/src/components/ChatContainer.d.ts +6 -5
- package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
- package/dist/types/src/components/Comments.stories.d.ts +4 -3
- package/dist/types/src/components/Comments.stories.d.ts.map +1 -1
- package/dist/types/src/components/CommentsContainer.d.ts +2 -2
- package/dist/types/src/components/CommentsContainer.d.ts.map +1 -1
- package/dist/types/src/components/CommentsThreadContainer.d.ts +8 -8
- package/dist/types/src/components/CommentsThreadContainer.d.ts.map +1 -1
- package/dist/types/src/components/Media/VideoObject.d.ts +2 -2
- package/dist/types/src/components/Media/VideoObject.d.ts.map +1 -1
- package/dist/types/src/components/Media/VideoObject.stories.d.ts +5 -3
- package/dist/types/src/components/Media/VideoObject.stories.d.ts.map +1 -1
- package/dist/types/src/components/MessageContainer.d.ts +2 -2
- package/dist/types/src/components/MessageContainer.d.ts.map +1 -1
- package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts +5 -3
- package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts.map +1 -1
- package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts +5 -3
- package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts.map +1 -1
- package/dist/types/src/components/ResponsiveGrid/ResponsiveGridItem.d.ts.map +1 -1
- package/dist/types/src/components/ThreadCompanion.d.ts +5 -0
- package/dist/types/src/components/ThreadCompanion.d.ts.map +1 -0
- package/dist/types/src/components/ThreadSettings.d.ts +1 -1
- package/dist/types/src/components/ThreadSettings.d.ts.map +1 -1
- package/dist/types/src/components/index.d.ts +3 -3
- package/dist/types/src/components/index.d.ts.map +1 -1
- package/dist/types/src/components/testing.d.ts +3 -3
- package/dist/types/src/components/testing.d.ts.map +1 -1
- package/dist/types/src/extensions/threads.d.ts.map +1 -1
- package/dist/types/src/functions/create-proposals.d.ts +6 -0
- package/dist/types/src/functions/create-proposals.d.ts.map +1 -0
- package/dist/types/src/functions/index.d.ts +2 -0
- package/dist/types/src/functions/index.d.ts.map +1 -0
- package/dist/types/src/hooks/analytics.d.ts +2 -2
- package/dist/types/src/hooks/analytics.d.ts.map +1 -1
- package/dist/types/src/hooks/index.d.ts +2 -2
- package/dist/types/src/hooks/index.d.ts.map +1 -1
- package/dist/types/src/hooks/useVideoStreamTrack.d.ts +1 -1
- package/dist/types/src/hooks/useVideoStreamTrack.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +1 -2
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/testing/stories.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +74 -7
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/Channel.d.ts +16 -0
- package/dist/types/src/types/Channel.d.ts.map +1 -0
- package/dist/types/src/types/{schema.d.ts → Thread.d.ts} +18 -28
- package/dist/types/src/types/Thread.d.ts.map +1 -0
- package/dist/types/src/types/index.d.ts +2 -1
- package/dist/types/src/types/index.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +31 -117
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +64 -60
- package/src/ThreadPlugin.tsx +139 -132
- package/src/calls/call-manager.ts +1 -1
- package/src/calls/media-manager.ts +11 -7
- package/src/calls/types.ts +7 -3
- package/src/calls/util/calls-service.ts +12 -7
- package/src/calls/util/stub-media-streams.ts +61 -3
- package/src/calls-service.stories.tsx +2 -5
- package/src/capabilities/app-graph-builder.ts +41 -30
- package/src/capabilities/blueprint-definition.ts +38 -0
- package/src/capabilities/capabilities.ts +7 -7
- package/src/capabilities/index.ts +1 -1
- package/src/capabilities/intent-resolver.ts +22 -60
- package/src/capabilities/markdown.ts +5 -3
- package/src/capabilities/react-root.tsx +2 -2
- package/src/capabilities/react-surface.tsx +24 -23
- package/src/components/Call/Call.tsx +1 -1
- package/src/components/Call/Toolbar.tsx +9 -9
- package/src/components/CallDebugPanel.tsx +112 -55
- package/src/components/CallSidebar.tsx +1 -1
- package/src/components/ChannelContainer.stories.tsx +10 -10
- package/src/components/ChannelContainer.tsx +19 -15
- package/src/components/Chat.stories.tsx +14 -19
- package/src/components/ChatContainer.tsx +30 -21
- package/src/components/Comments.stories.tsx +12 -17
- package/src/components/CommentsContainer.tsx +6 -7
- package/src/components/CommentsThreadContainer.tsx +32 -27
- package/src/components/Lobby/Lobby.tsx +1 -1
- package/src/components/Media/VideoObject.stories.tsx +12 -7
- package/src/components/Media/VideoObject.tsx +1 -1
- package/src/components/MessageContainer.tsx +6 -6
- package/src/components/Participant/Participant.tsx +1 -1
- package/src/components/ResponsiveGrid/ResponsiveContainer.stories.tsx +3 -4
- package/src/components/ResponsiveGrid/ResponsiveContainer.tsx +2 -2
- package/src/components/ResponsiveGrid/ResponsiveGrid.stories.tsx +4 -5
- package/src/components/ResponsiveGrid/ResponsiveGrid.tsx +5 -5
- package/src/components/ResponsiveGrid/ResponsiveGridItem.tsx +5 -2
- package/src/components/{ThreadComplementary.tsx → ThreadCompanion.tsx} +41 -34
- package/src/components/ThreadSettings.tsx +4 -5
- package/src/components/index.ts +4 -4
- package/src/components/testing.ts +8 -8
- package/src/extensions/threads.ts +25 -16
- package/src/functions/create-proposals.ts +58 -0
- package/src/functions/index.ts +5 -0
- package/src/hooks/analytics.ts +4 -7
- package/src/hooks/index.ts +3 -2
- package/src/hooks/useVideoStreamTrack.tsx +1 -1
- package/src/meta.ts +9 -5
- package/src/testing/stories.ts +3 -6
- package/src/translations.ts +6 -4
- package/src/types/Channel.ts +27 -0
- package/src/types/Thread.ts +26 -0
- package/src/types/index.ts +2 -1
- package/src/types/types.ts +19 -27
- package/src/typings/peermetrics-webrtc-stats.d.ts +17 -1
- package/src/util.ts +1 -1
- package/dist/lib/browser/ChannelContainer-GHDNEZT2.mjs +0 -16
- package/dist/lib/browser/ChatContainer-42ALOWUA.mjs +0 -15
- package/dist/lib/browser/app-graph-builder-FHAOPO57.mjs.map +0 -7
- package/dist/lib/browser/chunk-2I277V52.mjs +0 -23
- package/dist/lib/browser/chunk-2I277V52.mjs.map +0 -7
- package/dist/lib/browser/chunk-2P3GVRHP.mjs.map +0 -7
- package/dist/lib/browser/chunk-4APCDRSH.mjs +0 -18
- package/dist/lib/browser/chunk-4APCDRSH.mjs.map +0 -7
- package/dist/lib/browser/chunk-EV4JWI7L.mjs +0 -17
- package/dist/lib/browser/chunk-EV4JWI7L.mjs.map +0 -7
- package/dist/lib/browser/chunk-GERVMFQW.mjs.map +0 -7
- package/dist/lib/browser/chunk-H63NDV62.mjs.map +0 -7
- package/dist/lib/browser/chunk-J26C57ZY.mjs.map +0 -7
- package/dist/lib/browser/chunk-KEXJGF2R.mjs.map +0 -7
- package/dist/lib/browser/chunk-KTWYVC5X.mjs +0 -147
- package/dist/lib/browser/chunk-KTWYVC5X.mjs.map +0 -7
- package/dist/lib/browser/chunk-TQJYDFBU.mjs.map +0 -7
- package/dist/lib/browser/chunk-TUSBPMNU.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-IB5GYU2D.mjs.map +0 -7
- package/dist/lib/browser/markdown-Z677YORA.mjs.map +0 -7
- package/dist/lib/browser/react-root-PTTTW2MO.mjs +0 -28
- package/dist/lib/browser/react-root-PTTTW2MO.mjs.map +0 -7
- package/dist/lib/browser/react-surface-X2VB6P37.mjs.map +0 -7
- package/dist/lib/browser/toolkit-KUPIIFC6.mjs +0 -80
- package/dist/lib/browser/toolkit-KUPIIFC6.mjs.map +0 -7
- package/dist/lib/node-esm/ChannelContainer-D5E2S6AI.mjs +0 -17
- package/dist/lib/node-esm/app-graph-builder-XEYWX5FC.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-57XR3LEF.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-CCE5LHBE.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-CTZ75IFK.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-GRLRWTRU.mjs +0 -19
- package/dist/lib/node-esm/chunk-GRLRWTRU.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-JR7KESLL.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-NNKKNW57.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-P6E247RF.mjs +0 -148
- package/dist/lib/node-esm/chunk-P6E247RF.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-PYTVBN5J.mjs +0 -19
- package/dist/lib/node-esm/chunk-PYTVBN5J.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-S3D7DTBF.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-UHZQTPXU.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-UJ2QNRLS.mjs +0 -25
- package/dist/lib/node-esm/chunk-UJ2QNRLS.mjs.map +0 -7
- package/dist/lib/node-esm/intent-resolver-VIMI5VLH.mjs.map +0 -7
- package/dist/lib/node-esm/markdown-FL4IXLRP.mjs.map +0 -7
- package/dist/lib/node-esm/react-root-2HHRRUME.mjs +0 -29
- package/dist/lib/node-esm/react-root-2HHRRUME.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-OLN3XNND.mjs.map +0 -7
- package/dist/lib/node-esm/toolkit-KZIS7G36.mjs +0 -81
- package/dist/lib/node-esm/toolkit-KZIS7G36.mjs.map +0 -7
- package/dist/types/src/capabilities/toolkit.d.ts +0 -5
- package/dist/types/src/capabilities/toolkit.d.ts.map +0 -1
- package/dist/types/src/components/ThreadComplementary.d.ts +0 -5
- package/dist/types/src/components/ThreadComplementary.d.ts.map +0 -1
- package/dist/types/src/types/schema.d.ts.map +0 -1
- package/src/capabilities/toolkit.ts +0 -78
- package/src/types/schema.ts +0 -33
- /package/dist/lib/browser/{ChannelContainer-GHDNEZT2.mjs.map → ChannelContainer-MX5ABVGC.mjs.map} +0 -0
- /package/dist/lib/browser/{ChatContainer-42ALOWUA.mjs.map → ChatContainer-7F5Y6GXJ.mjs.map} +0 -0
- /package/dist/lib/node-esm/{ChannelContainer-D5E2S6AI.mjs.map → ChannelContainer-2JJJ3IDK.mjs.map} +0 -0
- /package/dist/lib/node-esm/{ChatContainer-4EGHKHIU.mjs.map → ChatContainer-C526R4DI.mjs.map} +0 -0
|
@@ -1,55 +1,63 @@
|
|
|
1
|
-
import {
|
|
2
|
-
ThreadAction,
|
|
3
|
-
ThreadType
|
|
4
|
-
} from "./chunk-KTWYVC5X.mjs";
|
|
5
1
|
import {
|
|
6
2
|
ChannelContainer
|
|
7
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-INQVAYPN.mjs";
|
|
4
|
+
import {
|
|
5
|
+
ThreadAction,
|
|
6
|
+
Thread_exports
|
|
7
|
+
} from "./chunk-NMJEVD36.mjs";
|
|
8
8
|
import {
|
|
9
9
|
ThreadCapabilities
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-BBTXGRIR.mjs";
|
|
11
11
|
import {
|
|
12
12
|
MessageContainer,
|
|
13
13
|
buttonClassNames,
|
|
14
14
|
buttonGroupClassNames,
|
|
15
15
|
command
|
|
16
|
-
} from "./chunk-
|
|
16
|
+
} from "./chunk-FR6MEAZI.mjs";
|
|
17
17
|
import {
|
|
18
18
|
useStatus
|
|
19
|
-
} from "./chunk-
|
|
19
|
+
} from "./chunk-KOBXMDCI.mjs";
|
|
20
20
|
import {
|
|
21
21
|
getMessageMetadata
|
|
22
|
-
} from "./chunk-
|
|
22
|
+
} from "./chunk-CP7E2HRE.mjs";
|
|
23
23
|
import {
|
|
24
24
|
meta
|
|
25
|
-
} from "./chunk-
|
|
25
|
+
} from "./chunk-K2DUJRFJ.mjs";
|
|
26
26
|
|
|
27
27
|
// src/components/CallDebugPanel.tsx
|
|
28
28
|
import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
|
|
29
29
|
import { WebRTCStats } from "@peermetrics/webrtc-stats";
|
|
30
30
|
import React, { useEffect, useMemo, useState } from "react";
|
|
31
|
-
import {
|
|
31
|
+
import { truncateKey } from "@dxos/debug";
|
|
32
|
+
import { JsonView, Panel } from "@dxos/devtools";
|
|
32
33
|
import { log } from "@dxos/log";
|
|
33
|
-
import { Input, useTranslation } from "@dxos/react-ui";
|
|
34
|
-
import { Json } from "@dxos/react-ui-syntax-highlighter";
|
|
34
|
+
import { IconButton, Input, useTranslation } from "@dxos/react-ui";
|
|
35
35
|
var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/components/CallDebugPanel.tsx";
|
|
36
36
|
var CallDebugPanel = ({ state }) => {
|
|
37
37
|
var _effect = _useSignals();
|
|
38
38
|
try {
|
|
39
39
|
const { t } = useTranslation(meta.id);
|
|
40
|
-
const users = state?.call?.users;
|
|
41
|
-
const self = state?.call?.self;
|
|
42
40
|
const [open, setOpen] = useState(false);
|
|
43
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
|
+
};
|
|
44
50
|
const [showDetailedWebRTCStats, setShowDetailedWebRTCStats] = useState(false);
|
|
45
51
|
const handleShowDetailedWebRTCStats = () => setShowDetailedWebRTCStats(!showDetailedWebRTCStats);
|
|
46
52
|
const webrtcStats = useMemo(() => new WebRTCStats({
|
|
47
53
|
getStatsInterval: 1e3
|
|
48
54
|
}), []);
|
|
49
|
-
const [stats, setStats] = useState(
|
|
55
|
+
const [stats, setStats] = useState();
|
|
50
56
|
useEffect(() => {
|
|
51
57
|
const pc = state?.media.peer?.session?.peerConnection;
|
|
52
|
-
const handleStats = (stats2) =>
|
|
58
|
+
const handleStats = (stats2) => {
|
|
59
|
+
setStats(stats2.data);
|
|
60
|
+
};
|
|
53
61
|
let added = false;
|
|
54
62
|
if (pc && showDetailedWebRTCStats) {
|
|
55
63
|
webrtcStats.addConnection({
|
|
@@ -76,7 +84,7 @@ var CallDebugPanel = ({ state }) => {
|
|
|
76
84
|
connectionId: "1"
|
|
77
85
|
}, {
|
|
78
86
|
F: __dxlog_file,
|
|
79
|
-
L:
|
|
87
|
+
L: 60,
|
|
80
88
|
S: void 0,
|
|
81
89
|
C: (f, a) => f(...a)
|
|
82
90
|
});
|
|
@@ -86,65 +94,122 @@ var CallDebugPanel = ({ state }) => {
|
|
|
86
94
|
state?.media.peer?.session?.peerConnection,
|
|
87
95
|
showDetailedWebRTCStats
|
|
88
96
|
]);
|
|
97
|
+
const rows = useMemo(() => getCallStatusTable(state), [
|
|
98
|
+
state?.call.users,
|
|
99
|
+
state?.media.pulledAudioTracks
|
|
100
|
+
]);
|
|
89
101
|
return /* @__PURE__ */ React.createElement(Panel, {
|
|
90
102
|
id: "meeting-status",
|
|
91
103
|
icon: "ph--video-conference--regular",
|
|
92
104
|
open,
|
|
93
105
|
onToggle: handleToggle,
|
|
94
106
|
title: t("meeting status title"),
|
|
95
|
-
maxHeight: false,
|
|
96
107
|
info: /* @__PURE__ */ React.createElement("div", {
|
|
97
108
|
className: "flex items-center gap-2"
|
|
98
|
-
},
|
|
99
|
-
|
|
100
|
-
}, self?.joined ? "Active" : "Inactive"), users?.length !== void 0 && /* @__PURE__ */ React.createElement("span", {
|
|
101
|
-
title: "Users"
|
|
102
|
-
}, users?.length ?? 0, " User(s)"))
|
|
109
|
+
}, " ", state?.call.joined ? "Active" : "Inactive"),
|
|
110
|
+
maxHeight: 0
|
|
103
111
|
}, /* @__PURE__ */ React.createElement("div", {
|
|
104
|
-
className: "flex flex-col
|
|
112
|
+
className: "flex flex-col is-full text-xs"
|
|
105
113
|
}, /* @__PURE__ */ React.createElement("div", {
|
|
106
|
-
className: "flex items-
|
|
107
|
-
}, /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.
|
|
108
|
-
classNames: "text-sm"
|
|
109
|
-
}, t("show webrtc stats title")), /* @__PURE__ */ React.createElement(Input.Checkbox, {
|
|
114
|
+
className: "flex items-center gap-2 items-center"
|
|
115
|
+
}, /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.Switch, {
|
|
110
116
|
checked: showDetailedWebRTCStats,
|
|
111
117
|
onCheckedChange: handleShowDetailedWebRTCStats
|
|
112
|
-
}))), /* @__PURE__ */ React.createElement(
|
|
113
|
-
|
|
118
|
+
}), /* @__PURE__ */ React.createElement(Input.Label, null, t("show webrtc stats title")))), /* @__PURE__ */ React.createElement("div", {
|
|
119
|
+
className: "flex items-center gap-2 items-center"
|
|
120
|
+
}, /* @__PURE__ */ React.createElement(Input.Root, null, /* @__PURE__ */ React.createElement(Input.Switch, {
|
|
121
|
+
checked: showServiceHistory,
|
|
122
|
+
onCheckedChange: handleToggleServiceHistory
|
|
123
|
+
}), /* @__PURE__ */ React.createElement(Input.Label, null, t("show calls history title")))), /* @__PURE__ */ React.createElement("div", {
|
|
124
|
+
className: "flex items-center gap-2 items-center"
|
|
125
|
+
}, /* @__PURE__ */ React.createElement(IconButton, {
|
|
126
|
+
icon: "ph--copy--regular",
|
|
127
|
+
label: "copy raw",
|
|
128
|
+
onClick: handleCopyRaw
|
|
129
|
+
})), /* @__PURE__ */ React.createElement(Table, {
|
|
130
|
+
rows
|
|
131
|
+
}), showDetailedWebRTCStats && /* @__PURE__ */ React.createElement(JsonView, {
|
|
114
132
|
data: {
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
iceConnectionState: state?.media.peer?.session?.peerConnection.iceConnectionState,
|
|
121
|
-
stats
|
|
122
|
-
}
|
|
123
|
-
} : {},
|
|
124
|
-
tracks: state?.media.peer?.session?.peerConnection.getTransceivers().map((transceiver) => {
|
|
125
|
-
const track = transceiver.direction === "recvonly" ? transceiver.receiver.track : transceiver.sender.track;
|
|
126
|
-
return {
|
|
127
|
-
id: track?.id,
|
|
128
|
-
kind: track?.kind,
|
|
129
|
-
direction: transceiver.direction,
|
|
130
|
-
enabled: track?.enabled,
|
|
131
|
-
muted: track?.muted,
|
|
132
|
-
readyState: track?.readyState,
|
|
133
|
-
settings: track?.getSettings()
|
|
134
|
-
};
|
|
135
|
-
}),
|
|
136
|
-
callsServiceHistory: state?.media.peer?.history.get()
|
|
133
|
+
stats
|
|
134
|
+
}
|
|
135
|
+
}), showServiceHistory && /* @__PURE__ */ React.createElement(JsonView, {
|
|
136
|
+
data: {
|
|
137
|
+
history: state?.media.peer?.history.get()
|
|
137
138
|
}
|
|
138
139
|
})));
|
|
139
140
|
} finally {
|
|
140
141
|
_effect.f();
|
|
141
142
|
}
|
|
142
143
|
};
|
|
144
|
+
var getCallStatusTable = (state) => {
|
|
145
|
+
if (!state || !state.call?.users) {
|
|
146
|
+
return [];
|
|
147
|
+
}
|
|
148
|
+
const self = state.call.self;
|
|
149
|
+
const users = state.call.users.filter((user) => user.id !== self.id).map((user) => {
|
|
150
|
+
const isOk = {
|
|
151
|
+
audio: user.tracks?.audio && state.media.pulledAudioTracks[user.tracks?.audio]?.ctx.disposed === false,
|
|
152
|
+
video: user.tracks?.video && state.media.pulledVideoStreams[user.tracks?.video]?.ctx.disposed === false,
|
|
153
|
+
screenshare: user.tracks?.screenshare && state.media.pulledVideoStreams[user.tracks?.screenshare]?.ctx.disposed === false
|
|
154
|
+
};
|
|
155
|
+
return {
|
|
156
|
+
...user,
|
|
157
|
+
isOk
|
|
158
|
+
};
|
|
159
|
+
});
|
|
160
|
+
return [
|
|
161
|
+
[
|
|
162
|
+
"users",
|
|
163
|
+
state.call.users.length ?? 0
|
|
164
|
+
],
|
|
165
|
+
[
|
|
166
|
+
"*self* " + (self?.name ?? truncateKey(self.id, 8)),
|
|
167
|
+
self?.tracks?.audio && state.media.pushedAudioTrack ? "AUD \u2705" : "AUD \u274C",
|
|
168
|
+
self?.tracks?.video && state.media.pushedVideoTrack ? "VID \u2705" : "VID \u274C",
|
|
169
|
+
self?.tracks?.screenshareEnabled ? self.tracks.screenshareEnabled && state.media.pushedScreenshareTrack ? "SCR \u2705" : "SCR \u274C" : void 0
|
|
170
|
+
],
|
|
171
|
+
...users.map((user) => [
|
|
172
|
+
user.name ?? truncateKey(user.id, 8),
|
|
173
|
+
user.isOk.audio ? "AUD \u2705" : "AUD \u274C",
|
|
174
|
+
user.isOk.video ? "VID \u2705" : "VID \u274C",
|
|
175
|
+
user.tracks?.screenshareEnabled ? user.isOk.screenshare ? "SCR \u2705" : "SCR \u274C" : void 0
|
|
176
|
+
]),
|
|
177
|
+
[
|
|
178
|
+
"ICE",
|
|
179
|
+
state.media.peer?.session?.peerConnection.iceConnectionState ?? "no connection"
|
|
180
|
+
]
|
|
181
|
+
];
|
|
182
|
+
};
|
|
183
|
+
(function(Unit2) {
|
|
184
|
+
Unit2.KB = (n) => ((n ?? 0) / 1e3).toFixed(2);
|
|
185
|
+
})(Unit || (Unit = {}));
|
|
186
|
+
var Table = ({ rows }) => {
|
|
187
|
+
var _effect = _useSignals();
|
|
188
|
+
try {
|
|
189
|
+
return /* @__PURE__ */ React.createElement("div", {
|
|
190
|
+
className: "is-full text-xs font-mono"
|
|
191
|
+
}, rows.map(([prefix, label, value, unit], i) => /* @__PURE__ */ React.createElement("div", {
|
|
192
|
+
key: i,
|
|
193
|
+
className: "grid grid-cols-[3fr_1fr_1fr_1fr]"
|
|
194
|
+
}, /* @__PURE__ */ React.createElement("div", {
|
|
195
|
+
className: "p-1"
|
|
196
|
+
}, prefix), /* @__PURE__ */ React.createElement("div", {
|
|
197
|
+
className: "p-1"
|
|
198
|
+
}, label), /* @__PURE__ */ React.createElement("div", {
|
|
199
|
+
className: "p-1"
|
|
200
|
+
}, value), /* @__PURE__ */ React.createElement("div", {
|
|
201
|
+
className: "p-1"
|
|
202
|
+
}, unit))));
|
|
203
|
+
} finally {
|
|
204
|
+
_effect.f();
|
|
205
|
+
}
|
|
206
|
+
};
|
|
207
|
+
var Unit;
|
|
143
208
|
|
|
144
209
|
// src/components/CallSidebar.tsx
|
|
145
210
|
import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
|
|
146
211
|
import React2 from "react";
|
|
147
|
-
import { useCapability } from "@dxos/app-framework";
|
|
212
|
+
import { useCapability } from "@dxos/app-framework/react";
|
|
148
213
|
var CallSidebar = () => {
|
|
149
214
|
var _effect = _useSignals2();
|
|
150
215
|
try {
|
|
@@ -157,19 +222,20 @@ var CallSidebar = () => {
|
|
|
157
222
|
}
|
|
158
223
|
};
|
|
159
224
|
|
|
160
|
-
// src/components/
|
|
225
|
+
// src/components/ThreadCompanion.tsx
|
|
161
226
|
import { useSignals as _useSignals6 } from "@preact-signals/safe-react/tracking";
|
|
162
227
|
import React6, { useCallback as useCallback2, useMemo as useMemo3 } from "react";
|
|
163
|
-
import { Capabilities, CollaborationActions, LayoutAction, createIntent
|
|
164
|
-
import {
|
|
165
|
-
import {
|
|
228
|
+
import { Capabilities, CollaborationActions, LayoutAction, createIntent } from "@dxos/app-framework";
|
|
229
|
+
import { useCapabilities, useCapability as useCapability2, useIntentDispatcher } from "@dxos/app-framework/react";
|
|
230
|
+
import { Filter, Obj as Obj3, Query, Relation as Relation3 } from "@dxos/echo";
|
|
231
|
+
import { Ref as Ref2, getSpace as getSpace2, useQuery } from "@dxos/react-client/echo";
|
|
166
232
|
import { useIdentity as useIdentity2 } from "@dxos/react-client/halo";
|
|
167
|
-
import {
|
|
233
|
+
import { useTranslation as useTranslation5 } from "@dxos/react-ui";
|
|
168
234
|
import { useAttended } from "@dxos/react-ui-attention";
|
|
169
235
|
import { StackItem } from "@dxos/react-ui-stack";
|
|
170
236
|
import { Tabs } from "@dxos/react-ui-tabs";
|
|
171
237
|
import { mx as mx2 } from "@dxos/react-ui-theme";
|
|
172
|
-
import { AnchoredTo } from "@dxos/
|
|
238
|
+
import { AnchoredTo } from "@dxos/types";
|
|
173
239
|
|
|
174
240
|
// src/components/index.ts
|
|
175
241
|
import { lazy } from "react";
|
|
@@ -177,36 +243,34 @@ import { lazy } from "react";
|
|
|
177
243
|
// src/components/CommentsContainer.tsx
|
|
178
244
|
import { useSignals as _useSignals4 } from "@preact-signals/safe-react/tracking";
|
|
179
245
|
import React4, { useEffect as useEffect2 } from "react";
|
|
180
|
-
import { Relation as Relation2 } from "@dxos/echo";
|
|
181
|
-
import { fullyQualifiedId as fullyQualifiedId2 } from "@dxos/react-client/echo";
|
|
246
|
+
import { Obj as Obj2, Relation as Relation2 } from "@dxos/echo";
|
|
182
247
|
import { Callout, Icon, Trans, useTranslation as useTranslation3 } from "@dxos/react-ui";
|
|
183
248
|
|
|
184
249
|
// src/components/CommentsThreadContainer.tsx
|
|
185
250
|
import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
|
|
186
251
|
import React3, { useCallback, useMemo as useMemo2, useRef, useState as useState2 } from "react";
|
|
187
|
-
import { Ref, Relation } from "@dxos/echo";
|
|
188
|
-
import {
|
|
252
|
+
import { Obj, Ref, Relation } from "@dxos/echo";
|
|
253
|
+
import { getSpace, useMembers } from "@dxos/react-client/echo";
|
|
189
254
|
import { useIdentity } from "@dxos/react-client/halo";
|
|
190
|
-
import { IconButton, Tag, Tooltip, useThemeContext, useTranslation as useTranslation2 } from "@dxos/react-ui";
|
|
255
|
+
import { IconButton as IconButton2, Tag, Tooltip, useThemeContext, useTranslation as useTranslation2 } from "@dxos/react-ui";
|
|
191
256
|
import { createBasicExtensions, createThemeExtensions, listener } from "@dxos/react-ui-editor";
|
|
192
257
|
import { hoverableControlItem, hoverableControls, hoverableFocusedWithinControls, mx } from "@dxos/react-ui-theme";
|
|
193
|
-
import { MessageTextbox, Thread } from "@dxos/react-ui-thread";
|
|
258
|
+
import { MessageTextbox, Thread as ThreadComponent } from "@dxos/react-ui-thread";
|
|
194
259
|
import { isNonNullable } from "@dxos/util";
|
|
195
260
|
var CommentsThreadContainer = ({ anchor, current, onAttend, onComment, onResolve, onMessageDelete, onThreadDelete, onAcceptProposal }) => {
|
|
196
261
|
var _effect = _useSignals3();
|
|
197
262
|
try {
|
|
263
|
+
const { themeMode } = useThemeContext();
|
|
198
264
|
const { t } = useTranslation2(meta.id);
|
|
199
265
|
const identity = useIdentity();
|
|
200
266
|
const space = getSpace(anchor);
|
|
201
267
|
const members = useMembers(space?.key);
|
|
202
268
|
const detached = !anchor.anchor;
|
|
203
269
|
const thread = Relation.getSource(anchor);
|
|
204
|
-
const activity = useStatus(space,
|
|
270
|
+
const activity = useStatus(space, Obj.getDXN(thread).toString());
|
|
205
271
|
const threadScrollRef = useRef(null);
|
|
206
|
-
const
|
|
207
|
-
const
|
|
208
|
-
const [_count, _setCount] = useState2(0);
|
|
209
|
-
const rerenderEditor = () => _setCount((count) => count + 1);
|
|
272
|
+
const textboxMetadata = getMessageMetadata(Obj.getDXN(thread).toString(), identity);
|
|
273
|
+
const [state, setState] = useState2({});
|
|
210
274
|
const messageRef = useRef("");
|
|
211
275
|
const extensions = useMemo2(() => [
|
|
212
276
|
createBasicExtensions({
|
|
@@ -216,11 +280,11 @@ var CommentsThreadContainer = ({ anchor, current, onAttend, onComment, onResolve
|
|
|
216
280
|
themeMode
|
|
217
281
|
}),
|
|
218
282
|
listener({
|
|
219
|
-
onChange: (text) => messageRef.current = text
|
|
283
|
+
onChange: ({ text }) => messageRef.current = text
|
|
220
284
|
}),
|
|
221
285
|
command
|
|
222
286
|
], [
|
|
223
|
-
|
|
287
|
+
state
|
|
224
288
|
]);
|
|
225
289
|
const scrollToEnd = (behavior) => setTimeout(() => threadScrollRef.current?.scrollIntoView({
|
|
226
290
|
behavior,
|
|
@@ -253,14 +317,14 @@ var CommentsThreadContainer = ({ anchor, current, onAttend, onComment, onResolve
|
|
|
253
317
|
onComment?.(anchor, messageRef.current);
|
|
254
318
|
messageRef.current = "";
|
|
255
319
|
scrollToEnd("instant");
|
|
256
|
-
|
|
320
|
+
setState({});
|
|
257
321
|
return true;
|
|
258
322
|
}, [
|
|
259
323
|
anchor,
|
|
260
324
|
identity
|
|
261
325
|
]);
|
|
262
|
-
return /* @__PURE__ */ React3.createElement(
|
|
263
|
-
id:
|
|
326
|
+
return /* @__PURE__ */ React3.createElement(ThreadComponent.Root, {
|
|
327
|
+
id: Obj.getDXN(thread).toString(),
|
|
264
328
|
classNames: "pbs-2 border-be border-subduedSeparator last:border-none",
|
|
265
329
|
current,
|
|
266
330
|
onClickCapture: handleAttend,
|
|
@@ -272,14 +336,14 @@ var CommentsThreadContainer = ({ anchor, current, onAttend, onComment, onResolve
|
|
|
272
336
|
asChild: true,
|
|
273
337
|
content: t("detached thread label"),
|
|
274
338
|
side: "top"
|
|
275
|
-
}, /* @__PURE__ */ React3.createElement(
|
|
339
|
+
}, /* @__PURE__ */ React3.createElement(ThreadComponent.Header, {
|
|
276
340
|
detached: true
|
|
277
|
-
}, thread.name)) : /* @__PURE__ */ React3.createElement(
|
|
341
|
+
}, thread.name)) : /* @__PURE__ */ React3.createElement(ThreadComponent.Header, null, thread.name), /* @__PURE__ */ React3.createElement("div", {
|
|
278
342
|
role: "none",
|
|
279
343
|
className: buttonGroupClassNames
|
|
280
344
|
}, thread.status === "staged" && /* @__PURE__ */ React3.createElement(Tag, {
|
|
281
345
|
palette: "neutral"
|
|
282
|
-
}, t("draft button")), onResolve && !(thread?.status === "staged") && /* @__PURE__ */ React3.createElement(
|
|
346
|
+
}, t("draft button")), onResolve && !(thread?.status === "staged") && /* @__PURE__ */ React3.createElement(IconButton2, {
|
|
283
347
|
"data-testid": "thread.resolve",
|
|
284
348
|
variant: "ghost",
|
|
285
349
|
icon: thread?.status === "resolved" ? "ph--check--fill" : "ph--check--regular",
|
|
@@ -290,7 +354,7 @@ var CommentsThreadContainer = ({ anchor, current, onAttend, onComment, onResolve
|
|
|
290
354
|
thread?.status !== "resolved" && hoverableControlItem
|
|
291
355
|
],
|
|
292
356
|
onClick: handleResolve
|
|
293
|
-
}), onThreadDelete && /* @__PURE__ */ React3.createElement(
|
|
357
|
+
}), onThreadDelete && /* @__PURE__ */ React3.createElement(IconButton2, {
|
|
294
358
|
"data-testid": "thread.delete",
|
|
295
359
|
variant: "ghost",
|
|
296
360
|
icon: "ph--x--regular",
|
|
@@ -312,7 +376,7 @@ var CommentsThreadContainer = ({ anchor, current, onAttend, onComment, onResolve
|
|
|
312
376
|
extensions,
|
|
313
377
|
onSend: handleComment,
|
|
314
378
|
...textboxMetadata
|
|
315
|
-
}), /* @__PURE__ */ React3.createElement(
|
|
379
|
+
}), /* @__PURE__ */ React3.createElement(ThreadComponent.Status, {
|
|
316
380
|
activity
|
|
317
381
|
}, t("activity message")), /* @__PURE__ */ React3.createElement("div", {
|
|
318
382
|
role: "none",
|
|
@@ -361,7 +425,7 @@ var CommentsContainer = ({ anchors, currentId, showResolvedThreads, ...props })
|
|
|
361
425
|
}
|
|
362
426
|
return /* @__PURE__ */ React4.createElement("div", null, filteredAnchors.map((anchor) => {
|
|
363
427
|
const thread = Relation2.getSource(anchor);
|
|
364
|
-
const threadId =
|
|
428
|
+
const threadId = Obj2.getDXN(thread).toString();
|
|
365
429
|
return /* @__PURE__ */ React4.createElement(CommentsThreadContainer, {
|
|
366
430
|
key: threadId,
|
|
367
431
|
anchor,
|
|
@@ -377,10 +441,12 @@ var CommentsContainer = ({ anchors, currentId, showResolvedThreads, ...props })
|
|
|
377
441
|
// src/components/ThreadSettings.tsx
|
|
378
442
|
import { useSignals as _useSignals5 } from "@preact-signals/safe-react/tracking";
|
|
379
443
|
import React5 from "react";
|
|
444
|
+
import { useTranslation as useTranslation4 } from "@dxos/react-ui";
|
|
380
445
|
import { ControlPage } from "@dxos/react-ui-form";
|
|
381
|
-
var ThreadSettings = ({ settings }) => {
|
|
446
|
+
var ThreadSettings = ({ settings: _settings }) => {
|
|
382
447
|
var _effect = _useSignals5();
|
|
383
448
|
try {
|
|
449
|
+
const { t: _t } = useTranslation4(meta.id);
|
|
384
450
|
return /* @__PURE__ */ React5.createElement(ControlPage, null);
|
|
385
451
|
} finally {
|
|
386
452
|
_effect.f();
|
|
@@ -388,18 +454,17 @@ var ThreadSettings = ({ settings }) => {
|
|
|
388
454
|
};
|
|
389
455
|
|
|
390
456
|
// src/components/index.ts
|
|
391
|
-
var ChannelContainer2 = lazy(() => import("./ChannelContainer-
|
|
392
|
-
var ChatContainer = lazy(() => import("./ChatContainer-
|
|
457
|
+
var ChannelContainer2 = lazy(() => import("./ChannelContainer-MX5ABVGC.mjs"));
|
|
458
|
+
var ChatContainer = lazy(() => import("./ChatContainer-7F5Y6GXJ.mjs"));
|
|
393
459
|
|
|
394
|
-
// src/components/
|
|
395
|
-
var
|
|
460
|
+
// src/components/ThreadCompanion.tsx
|
|
461
|
+
var ThreadCompanion = ({ subject }) => {
|
|
396
462
|
var _effect = _useSignals6();
|
|
397
463
|
try {
|
|
398
|
-
const { t } =
|
|
464
|
+
const { t } = useTranslation5(meta.id);
|
|
399
465
|
const { dispatchPromise: dispatch } = useIntentDispatcher();
|
|
400
466
|
const identity = useIdentity2();
|
|
401
|
-
const
|
|
402
|
-
const subjectId = fullyQualifiedId3(subject);
|
|
467
|
+
const subjectId = Obj3.getDXN(subject).toString();
|
|
403
468
|
const { state, getViewState } = useCapability2(ThreadCapabilities.MutableState);
|
|
404
469
|
const drafts = state.drafts[subjectId];
|
|
405
470
|
const viewState = useMemo3(() => getViewState(subjectId), [
|
|
@@ -413,22 +478,22 @@ var ThreadComplementary = ({ subject }) => {
|
|
|
413
478
|
viewState
|
|
414
479
|
]);
|
|
415
480
|
const anchorSorts = useCapabilities(Capabilities.AnchorSort);
|
|
416
|
-
const sort = useMemo3(() => anchorSorts.find(({ key }) => key ===
|
|
481
|
+
const sort = useMemo3(() => anchorSorts.find(({ key }) => key === Obj3.getTypename(subject))?.sort, [
|
|
417
482
|
anchorSorts,
|
|
418
483
|
subject
|
|
419
484
|
]);
|
|
420
485
|
const space = getSpace2(subject);
|
|
421
|
-
const objectsAnchoredTo = useQuery(space, Query.select(Filter.ids(subject.id)).targetOf(AnchoredTo));
|
|
422
|
-
const anchors = objectsAnchoredTo.toSorted((a, b) => sort?.(a, b) ?? 0).filter((anchor) =>
|
|
486
|
+
const objectsAnchoredTo = useQuery(space, Query.select(Filter.ids(subject.id)).targetOf(AnchoredTo.AnchoredTo));
|
|
487
|
+
const anchors = objectsAnchoredTo.toSorted((a, b) => sort?.(a, b) ?? 0).filter((anchor) => Obj3.instanceOf(Thread_exports.Thread, Relation3.getSource(anchor))).concat(drafts ?? []);
|
|
423
488
|
const attended = useAttended();
|
|
424
489
|
const handleAttend = useCallback2((anchor) => {
|
|
425
490
|
const thread = Relation3.getSource(anchor);
|
|
426
|
-
const threadId =
|
|
491
|
+
const threadId = Obj3.getDXN(thread).toString();
|
|
427
492
|
if (state.current !== threadId) {
|
|
428
493
|
state.current = threadId;
|
|
429
494
|
void dispatch(createIntent(LayoutAction.ScrollIntoView, {
|
|
430
495
|
part: "current",
|
|
431
|
-
subject:
|
|
496
|
+
subject: Obj3.getDXN(subject).toString(),
|
|
432
497
|
options: {
|
|
433
498
|
cursor: anchor.anchor,
|
|
434
499
|
ref: threadId
|
|
@@ -450,7 +515,7 @@ var ThreadComplementary = ({ subject }) => {
|
|
|
450
515
|
text
|
|
451
516
|
}));
|
|
452
517
|
const thread = Relation3.getSource(anchor);
|
|
453
|
-
state.current =
|
|
518
|
+
state.current = Obj3.getDXN(thread).toString();
|
|
454
519
|
}, [
|
|
455
520
|
dispatch,
|
|
456
521
|
identity,
|
|
@@ -508,8 +573,7 @@ var ThreadComplementary = ({ subject }) => {
|
|
|
508
573
|
onAcceptProposal: handleAcceptProposal
|
|
509
574
|
});
|
|
510
575
|
return /* @__PURE__ */ React6.createElement(StackItem.Content, {
|
|
511
|
-
toolbar: true
|
|
512
|
-
classNames: "overflow-hidden"
|
|
576
|
+
toolbar: true
|
|
513
577
|
}, /* @__PURE__ */ React6.createElement(Tabs.Root, {
|
|
514
578
|
value: showResolvedThreads ? "all" : "unresolved",
|
|
515
579
|
orientation: "horizontal",
|
|
@@ -518,7 +582,7 @@ var ThreadComplementary = ({ subject }) => {
|
|
|
518
582
|
],
|
|
519
583
|
onValueChange: onChangeViewState
|
|
520
584
|
}, /* @__PURE__ */ React6.createElement(Tabs.Tablist, {
|
|
521
|
-
classNames: mx2("bg-toolbarSurface border-
|
|
585
|
+
classNames: mx2("bg-toolbarSurface border-be border-subduedSeparator")
|
|
522
586
|
}, /* @__PURE__ */ React6.createElement(Tabs.Tab, {
|
|
523
587
|
value: "unresolved",
|
|
524
588
|
classNames: "text-sm"
|
|
@@ -540,9 +604,9 @@ var ThreadComplementary = ({ subject }) => {
|
|
|
540
604
|
export {
|
|
541
605
|
CallDebugPanel,
|
|
542
606
|
CallSidebar,
|
|
543
|
-
|
|
607
|
+
ThreadCompanion,
|
|
544
608
|
ThreadSettings,
|
|
545
609
|
ChannelContainer2 as ChannelContainer,
|
|
546
610
|
ChatContainer
|
|
547
611
|
};
|
|
548
|
-
//# sourceMappingURL=chunk-
|
|
612
|
+
//# sourceMappingURL=chunk-BQWQFTWT.mjs.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../../src/components/CallDebugPanel.tsx", "../../../src/components/CallSidebar.tsx", "../../../src/components/ThreadCompanion.tsx", "../../../src/components/index.ts", "../../../src/components/CommentsContainer.tsx", "../../../src/components/CommentsThreadContainer.tsx", "../../../src/components/ThreadSettings.tsx"],
|
|
4
|
+
"sourcesContent": ["//\n// Copyright 2024 DXOS.org\n//\n\nimport { WebRTCStats, type WebRTCStatsEvent } from '@peermetrics/webrtc-stats';\nimport React, { useEffect, useMemo, useState } from 'react';\n\nimport { truncateKey } from '@dxos/debug';\nimport { JsonView, Panel } from '@dxos/devtools';\nimport { log } from '@dxos/log';\nimport { IconButton, Input, type ThemedClassName, useTranslation } from '@dxos/react-ui';\n\nimport { type EncodedTrackName, type GlobalState } from '../calls';\nimport { meta } from '../meta';\n\nexport type CallDebugPanelProps = ThemedClassName<{ state?: GlobalState }>;\n\nexport const CallDebugPanel = ({ state }: CallDebugPanelProps) => {\n const { t } = useTranslation(meta.id);\n\n const [open, setOpen] = useState(false);\n const handleToggle = () => setOpen(!open);\n const [showServiceHistory, setShowServiceHistory] = useState(false);\n const handleToggleServiceHistory = () => setShowServiceHistory(!showServiceHistory);\n\n const handleCopyRaw = async () => {\n await navigator.clipboard.writeText(JSON.stringify({ users: state?.call?.users, stats }, null, 2));\n };\n\n const [showDetailedWebRTCStats, setShowDetailedWebRTCStats] = useState(false);\n const handleShowDetailedWebRTCStats = () => setShowDetailedWebRTCStats(!showDetailedWebRTCStats);\n\n const webrtcStats = useMemo(\n () =>\n new WebRTCStats({\n getStatsInterval: 1000,\n }),\n [],\n );\n const [stats, setStats] = useState<WebRTCStatsEvent['data']>();\n\n useEffect(() => {\n const pc = state?.media.peer?.session?.peerConnection;\n const handleStats = (stats: WebRTCStatsEvent) => {\n setStats(stats.data);\n };\n let added = false;\n if (pc && showDetailedWebRTCStats) {\n webrtcStats.addConnection({ pc, peerId: 1, connectionId: '1' });\n webrtcStats.on('stats', handleStats as never);\n added = true;\n }\n return () => {\n try {\n if (pc && added) {\n webrtcStats.removeConnection({ pc });\n webrtcStats.removeListener('stats', handleStats as never);\n }\n } catch (error) {\n log.error('error removing webrtc stats', { error, pc, peerId: 1, connectionId: '1' });\n }\n };\n }, [state?.media.peer?.session?.peerConnection, showDetailedWebRTCStats]);\n\n const rows = useMemo(() => getCallStatusTable(state), [state?.call.users, state?.media.pulledAudioTracks]);\n\n return (\n <Panel\n id='meeting-status'\n icon='ph--video-conference--regular'\n open={open}\n onToggle={handleToggle}\n title={t('meeting status title')}\n info={<div className='flex items-center gap-2'> {state?.call.joined ? 'Active' : 'Inactive'}</div>}\n maxHeight={0}\n >\n <div className='flex flex-col is-full text-xs'>\n <div className='flex items-center gap-2 items-center'>\n <Input.Root>\n <Input.Switch checked={showDetailedWebRTCStats} onCheckedChange={handleShowDetailedWebRTCStats} />\n <Input.Label>{t('show webrtc stats title')}</Input.Label>\n </Input.Root>\n </div>\n <div className='flex items-center gap-2 items-center'>\n <Input.Root>\n <Input.Switch checked={showServiceHistory} onCheckedChange={handleToggleServiceHistory} />\n <Input.Label>{t('show calls history title')}</Input.Label>\n </Input.Root>\n </div>\n <div className='flex items-center gap-2 items-center'>\n <IconButton icon='ph--copy--regular' label={'copy raw'} onClick={handleCopyRaw} />\n </div>\n <Table rows={rows} />\n {showDetailedWebRTCStats && <JsonView data={{ stats }} />}\n {showServiceHistory && <JsonView data={{ history: state?.media.peer?.history.get() }} />}\n </div>\n </Panel>\n );\n};\n\nconst getCallStatusTable = (state?: GlobalState): TableProps['rows'] => {\n if (!state || !state.call?.users) {\n return [];\n }\n\n const self = state.call.self;\n const users = state.call.users\n .filter((user) => user.id !== self!.id)\n .map((user) => {\n const isOk = {\n audio:\n user.tracks?.audio &&\n state.media.pulledAudioTracks[user.tracks?.audio as EncodedTrackName]?.ctx.disposed === false,\n video:\n user.tracks?.video &&\n state.media.pulledVideoStreams[user.tracks?.video as EncodedTrackName]?.ctx.disposed === false,\n screenshare:\n user.tracks?.screenshare &&\n state.media.pulledVideoStreams[user.tracks?.screenshare as EncodedTrackName]?.ctx.disposed === false,\n };\n\n return {\n ...user,\n isOk,\n };\n });\n\n return [\n ['users', state.call.users.length ?? 0],\n [\n '*self* ' + (self?.name ?? truncateKey(self!.id, 8)),\n self?.tracks?.audio && state.media.pushedAudioTrack ? 'AUD ✅' : 'AUD ❌',\n self?.tracks?.video && state.media.pushedVideoTrack ? 'VID ✅' : 'VID ❌',\n self?.tracks?.screenshareEnabled\n ? self.tracks.screenshareEnabled && state.media.pushedScreenshareTrack\n ? 'SCR ✅'\n : 'SCR ❌'\n : undefined,\n ],\n\n ...users.map((user) => [\n user.name ?? truncateKey(user.id, 8),\n user.isOk.audio ? 'AUD ✅' : 'AUD ❌',\n user.isOk.video ? 'VID ✅' : 'VID ❌',\n user.tracks?.screenshareEnabled ? (user.isOk.screenshare ? 'SCR ✅' : 'SCR ❌') : undefined,\n ]),\n ['ICE', state.media.peer?.session?.peerConnection.iceConnectionState ?? 'no connection'],\n ];\n};\n\nexport namespace Unit {\n export const KB = (n?: number) => ((n ?? 0) / 1_000).toFixed(2);\n}\n\nexport type TableProps = {\n rows: (string | number | undefined)[][];\n};\n\nexport const Table = ({ rows }: TableProps) => {\n return (\n <div className='is-full text-xs font-mono'>\n {rows.map(([prefix, label, value, unit], i) => (\n <div key={i} className='grid grid-cols-[3fr_1fr_1fr_1fr]'>\n <div className='p-1'>{prefix}</div>\n <div className='p-1'>{label}</div>\n <div className='p-1'>{value}</div>\n <div className='p-1'>{unit}</div>\n </div>\n ))}\n </div>\n );\n};\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React from 'react';\n\nimport { useCapability } from '@dxos/app-framework/react';\n\nimport { ThreadCapabilities } from '../capabilities';\n\nimport { ChannelContainer } from './ChannelContainer';\n\nexport const CallSidebar = () => {\n const call = useCapability(ThreadCapabilities.CallManager);\n return <ChannelContainer roomId={call.roomId} />;\n};\n\nexport default CallSidebar;\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useCallback, useMemo } from 'react';\n\nimport { Capabilities, CollaborationActions, LayoutAction, createIntent } from '@dxos/app-framework';\nimport { useCapabilities, useCapability, useIntentDispatcher } from '@dxos/app-framework/react';\nimport { Filter, Obj, Query, Relation } from '@dxos/echo';\nimport { Ref, getSpace, useQuery } from '@dxos/react-client/echo';\nimport { useIdentity } from '@dxos/react-client/halo';\nimport { useTranslation } from '@dxos/react-ui';\nimport { useAttended } from '@dxos/react-ui-attention';\nimport { StackItem } from '@dxos/react-ui-stack';\nimport { Tabs } from '@dxos/react-ui-tabs';\nimport { mx } from '@dxos/react-ui-theme';\nimport { AnchoredTo } from '@dxos/types';\n\nimport { ThreadCapabilities } from '../capabilities';\nimport { CommentsContainer, type CommentsContainerProps } from '../components';\nimport { meta } from '../meta';\nimport { Thread, ThreadAction } from '../types';\n\nexport const ThreadCompanion = ({ subject }: { subject: any }) => {\n const { t } = useTranslation(meta.id);\n const { dispatchPromise: dispatch } = useIntentDispatcher();\n const identity = useIdentity();\n const subjectId = Obj.getDXN(subject).toString();\n\n const { state, getViewState } = useCapability(ThreadCapabilities.MutableState);\n const drafts = state.drafts[subjectId];\n const viewState = useMemo(() => getViewState(subjectId), [getViewState, subjectId]);\n const { showResolvedThreads } = viewState;\n const onChangeViewState = useCallback(\n (nextValue: string) => {\n viewState.showResolvedThreads = nextValue === 'all';\n },\n [viewState],\n );\n\n const anchorSorts = useCapabilities(Capabilities.AnchorSort);\n const sort = useMemo(\n () => anchorSorts.find(({ key }) => key === Obj.getTypename(subject))?.sort,\n [anchorSorts, subject],\n );\n\n const space = getSpace(subject);\n const objectsAnchoredTo = useQuery(space, Query.select(Filter.ids(subject.id)).targetOf(AnchoredTo.AnchoredTo));\n const anchors = objectsAnchoredTo\n .toSorted((a, b) => sort?.(a, b) ?? 0)\n .filter((anchor) => Obj.instanceOf(Thread.Thread, Relation.getSource(anchor)))\n .concat(drafts ?? []);\n\n const attended = useAttended();\n\n const handleAttend = useCallback(\n (anchor: AnchoredTo.AnchoredTo) => {\n const thread = Relation.getSource(anchor) as Thread.Thread;\n const threadId = Obj.getDXN(thread).toString();\n\n if (state.current !== threadId) {\n state.current = threadId;\n\n // TODO(wittjosiah): Should this be a thread-specific intent?\n // The layout doesn't know about threads and this working depends on other plugins conditionally handling it.\n // This may be overloading this intent or highjacking its intended purpose.\n void dispatch(\n createIntent(LayoutAction.ScrollIntoView, {\n part: 'current',\n subject: Obj.getDXN(subject).toString(),\n options: {\n cursor: anchor.anchor,\n ref: threadId,\n },\n }),\n );\n }\n },\n [state.current, dispatch, subject],\n );\n\n const handleComment = useCallback(\n async (anchor: AnchoredTo.AnchoredTo, text: string) => {\n await dispatch(\n createIntent(ThreadAction.AddMessage, {\n anchor,\n subject,\n sender: { identityDid: identity?.did },\n text,\n }),\n );\n\n const thread = Relation.getSource(anchor) as Thread.Thread;\n state.current = Obj.getDXN(thread).toString();\n },\n [dispatch, identity, subject],\n );\n\n const handleResolve = useCallback(\n (anchor: AnchoredTo.AnchoredTo) =>\n dispatch(\n createIntent(ThreadAction.ToggleResolved, {\n thread: Relation.getSource(anchor) as Thread.Thread,\n }),\n ),\n [dispatch],\n );\n\n const handleThreadDelete = useCallback(\n (anchor: AnchoredTo.AnchoredTo) => dispatch(createIntent(ThreadAction.Delete, { anchor, subject })),\n [dispatch, subject],\n );\n\n const handleMessageDelete = useCallback(\n (anchor: AnchoredTo.AnchoredTo, messageId: string) =>\n dispatch(\n createIntent(ThreadAction.DeleteMessage, {\n anchor,\n subject,\n messageId,\n }),\n ),\n [dispatch, subject],\n );\n\n const handleAcceptProposal = useCallback<NonNullable<CommentsContainerProps['onAcceptProposal']>>(\n async (anchor, messageId) => {\n const thread = Relation.getSource(anchor) as Thread.Thread;\n const messageIndex = thread.messages.findIndex(Ref.hasObjectId(messageId));\n const message = thread.messages[messageIndex]?.target;\n const proposal = message?.blocks.find((block) => block._tag === 'proposal');\n if (!proposal || !anchor.anchor) {\n return;\n }\n\n await dispatch(\n createIntent(CollaborationActions.AcceptProposal, {\n subject,\n anchor: anchor.anchor,\n proposal,\n }),\n );\n await dispatch(createIntent(ThreadAction.ToggleResolved, { thread }));\n },\n [dispatch, subject],\n );\n\n const comments = (\n <CommentsContainer\n anchors={anchors}\n currentId={attended.includes(subjectId) ? state.current : undefined}\n showResolvedThreads={showResolvedThreads}\n onAttend={handleAttend}\n onComment={handleComment}\n onResolve={handleResolve}\n onMessageDelete={handleMessageDelete}\n onThreadDelete={handleThreadDelete}\n onAcceptProposal={handleAcceptProposal}\n />\n );\n\n return (\n <StackItem.Content toolbar>\n <Tabs.Root\n value={showResolvedThreads ? 'all' : 'unresolved'}\n orientation='horizontal'\n classNames={[\n 'contents [&_[role=\"tabpanel\"]]:min-bs-0 [&_[role=\"tabpanel\"]]:overflow-y-auto [&_[role=\"tabpanel\"]]:scrollbar-thin',\n ]}\n onValueChange={onChangeViewState}\n >\n {/* TODO(burdon): Standardize (like Tollbar). */}\n <Tabs.Tablist classNames={mx('bg-toolbarSurface border-be border-subduedSeparator')}>\n <Tabs.Tab value='unresolved' classNames='text-sm'>\n {t('show unresolved label')}\n </Tabs.Tab>\n <Tabs.Tab value='all' classNames='text-sm'>\n {t('show all label')}\n </Tabs.Tab>\n </Tabs.Tablist>\n <div className='overflow-y-auto'>\n <Tabs.Tabpanel value='all'>{showResolvedThreads && comments}</Tabs.Tabpanel>\n <Tabs.Tabpanel value='unresolved'>{!showResolvedThreads && comments}</Tabs.Tabpanel>\n </div>\n </Tabs.Root>\n </StackItem.Content>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport { lazy } from 'react';\n\n// TODO(wittjosiah): Suspense boundary for sidebar?\nexport * from './Call';\nexport * from './CallDebugPanel';\nexport * from './CallSidebar';\nexport * from './CommentsContainer';\nexport * from './CommentsThreadContainer';\nexport * from './MessageContainer';\nexport * from './ThreadCompanion';\nexport * from './ThreadSettings';\n\nexport const ChannelContainer = lazy(() => import('./ChannelContainer'));\nexport const ChatContainer = lazy(() => import('./ChatContainer'));\n", "//\n// Copyright 2024 DXOS.org\n//\n\nimport React, { useEffect } from 'react';\n\nimport { Obj, Relation } from '@dxos/echo';\nimport { Callout, Icon, Trans, useTranslation } from '@dxos/react-ui';\nimport { type AnchoredTo } from '@dxos/types';\n\nimport { meta } from '../meta';\nimport { type Thread } from '../types';\n\nimport { CommentsThreadContainer, type CommentsThreadContainerProps } from './CommentsThreadContainer';\n\nexport type CommentsContainerProps = Omit<CommentsThreadContainerProps, 'anchor' | 'current'> & {\n anchors: AnchoredTo.AnchoredTo[];\n currentId?: string;\n showResolvedThreads?: boolean;\n};\n\n/**\n * Root container for collection of comment threads.\n */\nexport const CommentsContainer = ({ anchors, currentId, showResolvedThreads, ...props }: CommentsContainerProps) => {\n const { t } = useTranslation(meta.id);\n\n // TODO(wittjosiah): There seems to be a race between thread and anchor being deleted.\n const filteredAnchors = showResolvedThreads\n ? anchors.filter((anchor) => !!Relation.getSource(anchor))\n : anchors.filter((anchor) => {\n const thread = Relation.getSource(anchor);\n return thread && thread.status !== 'resolved';\n });\n\n useEffect(() => {\n if (currentId) {\n document.getElementById(currentId)?.scrollIntoView({ behavior: 'smooth', block: 'end' });\n }\n }, [currentId]);\n\n if (filteredAnchors.length === 0) {\n return (\n <div role='none' className='plb-cardSpacingBlock pli-cardSpacingInline'>\n <Callout.Root>\n <Callout.Title>\n <Trans\n {...{\n t,\n i18nKey: 'no comments message',\n components: {\n commentIcon: <Icon icon='ph--chat-text--regular' size={4} classNames='inline-block' />,\n },\n }}\n />\n </Callout.Title>\n </Callout.Root>\n </div>\n );\n }\n\n return (\n <div>\n {filteredAnchors.map((anchor) => {\n const thread = Relation.getSource(anchor) as Thread.Thread;\n const threadId = Obj.getDXN(thread).toString();\n return <CommentsThreadContainer key={threadId} anchor={anchor} current={currentId === threadId} {...props} />;\n })}\n </div>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React, { useCallback, useMemo, useRef, useState } from 'react';\n\nimport { Obj, Ref, Relation } from '@dxos/echo';\nimport { getSpace, useMembers } from '@dxos/react-client/echo';\nimport { useIdentity } from '@dxos/react-client/halo';\nimport { IconButton, Tag, Tooltip, useThemeContext, useTranslation } from '@dxos/react-ui';\nimport { createBasicExtensions, createThemeExtensions, listener } from '@dxos/react-ui-editor';\nimport { hoverableControlItem, hoverableControls, hoverableFocusedWithinControls, mx } from '@dxos/react-ui-theme';\nimport {\n MessageTextbox,\n type MessageTextboxProps,\n Thread as ThreadComponent,\n type ThreadRootProps,\n} from '@dxos/react-ui-thread';\nimport { type AnchoredTo } from '@dxos/types';\nimport { isNonNullable } from '@dxos/util';\n\nimport { useStatus } from '../hooks';\nimport { meta } from '../meta';\nimport { type Thread } from '../types';\nimport { getMessageMetadata } from '../util';\n\nimport { command } from './command-extension';\nimport { MessageContainer, buttonClassNames, buttonGroupClassNames } from './MessageContainer';\n\nexport type CommentsThreadContainerProps = {\n anchor: AnchoredTo.AnchoredTo;\n onAttend?: (anchor: AnchoredTo.AnchoredTo) => void;\n onComment?: (anchor: AnchoredTo.AnchoredTo, message: string) => void;\n onResolve?: (anchor: AnchoredTo.AnchoredTo) => void;\n onMessageDelete?: (anchor: AnchoredTo.AnchoredTo, messageId: string) => void;\n onThreadDelete?: (anchor: AnchoredTo.AnchoredTo) => void;\n onAcceptProposal?: (anchor: AnchoredTo.AnchoredTo, messageId: string) => void;\n} & Pick<ThreadRootProps, 'current'>;\n\nexport const CommentsThreadContainer = ({\n anchor,\n current,\n onAttend,\n onComment,\n onResolve,\n onMessageDelete,\n onThreadDelete,\n onAcceptProposal,\n}: CommentsThreadContainerProps) => {\n const { themeMode } = useThemeContext();\n const { t } = useTranslation(meta.id);\n const identity = useIdentity()!;\n const space = getSpace(anchor);\n const members = useMembers(space?.key);\n const detached = !anchor.anchor;\n const thread = Relation.getSource(anchor) as Thread.Thread;\n const activity = useStatus(space, Obj.getDXN(thread).toString());\n const threadScrollRef = useRef<HTMLDivElement | null>(null);\n\n const textboxMetadata = getMessageMetadata(Obj.getDXN(thread).toString(), identity);\n\n // TODO(wittjosiah): This is a hack to reset the editor after a message is sent.\n const [state, setState] = useState({});\n const messageRef = useRef('');\n const extensions = useMemo(\n () => [\n createBasicExtensions({ placeholder: t('message placeholder') }),\n createThemeExtensions({ themeMode }),\n listener({ onChange: ({ text }) => (messageRef.current = text) }),\n command,\n ],\n [state],\n );\n\n // TODO(thure): Factor out.\n const scrollToEnd = (behavior: ScrollBehavior) =>\n setTimeout(() => threadScrollRef.current?.scrollIntoView({ behavior, block: 'end' }), 10);\n\n const handleAttend = useCallback(() => onAttend?.(anchor), [onAttend, anchor]);\n const handleResolve = useCallback(() => onResolve?.(anchor), [onResolve, anchor]);\n const handleMessageDelete = useCallback((id: string) => onMessageDelete?.(anchor, id), [onMessageDelete, anchor]);\n const handleThreadDelete = useCallback(() => onThreadDelete?.(anchor), [onThreadDelete, anchor]);\n const handleAcceptProposal = useCallback((id: string) => onAcceptProposal?.(anchor, id), [onAcceptProposal, anchor]);\n\n const handleComment: MessageTextboxProps['onSend'] = useCallback(() => {\n if (!messageRef.current) {\n return false;\n }\n\n onComment?.(anchor, messageRef.current);\n messageRef.current = '';\n scrollToEnd('instant');\n setState({});\n\n return true;\n }, [anchor, identity]);\n\n return (\n <ThreadComponent.Root\n id={Obj.getDXN(thread).toString()}\n classNames='pbs-2 border-be border-subduedSeparator last:border-none'\n current={current}\n onClickCapture={handleAttend}\n onFocusCapture={handleAttend}\n >\n <div\n role='none'\n className={mx(\n 'col-span-2 grid grid-cols-[var(--rail-size)_1fr_min-content]',\n hoverableControls,\n hoverableFocusedWithinControls,\n )}\n >\n {detached ? (\n <Tooltip.Trigger asChild content={t('detached thread label')} side='top'>\n <ThreadComponent.Header detached>{thread.name}</ThreadComponent.Header>\n </Tooltip.Trigger>\n ) : (\n <ThreadComponent.Header>{thread.name}</ThreadComponent.Header>\n )}\n <div role='none' className={buttonGroupClassNames}>\n {thread.status === 'staged' && <Tag palette='neutral'>{t('draft button')}</Tag>}\n {onResolve && !(thread?.status === 'staged') && (\n <IconButton\n data-testid='thread.resolve'\n variant='ghost'\n icon={thread?.status === 'resolved' ? 'ph--check--fill' : 'ph--check--regular'}\n iconOnly\n label={t('resolve thread label')}\n classNames={[buttonClassNames, thread?.status !== 'resolved' && hoverableControlItem]}\n onClick={handleResolve}\n />\n )}\n {onThreadDelete && (\n <IconButton\n data-testid='thread.delete'\n variant='ghost'\n icon='ph--x--regular'\n iconOnly\n label={t('delete thread label')}\n classNames={[buttonClassNames, hoverableControlItem]}\n onClick={handleThreadDelete}\n />\n )}\n </div>\n </div>\n\n {/** TODO(dmaretskyi): How's `thread.messages` undefined? */}\n {Ref.Array.targets(thread.messages?.filter(isNonNullable) ?? []).map((message) => (\n <MessageContainer\n key={message.id}\n editable\n message={message}\n members={members}\n onDelete={handleMessageDelete}\n onAcceptProposal={handleAcceptProposal}\n />\n ))}\n\n {/*\n TODO(wittjosiah): Can't autofocus this generally.\n There can be multiple threads with inputs and they can't all be focused.\n Also, it steals focus from documents when first rendered.\n Need to find a way to autofocus in one scenario only: when a new thread is created.\n */}\n <MessageTextbox extensions={extensions} onSend={handleComment} {...textboxMetadata} />\n\n <ThreadComponent.Status activity={activity}>{t('activity message')}</ThreadComponent.Status>\n\n {/* NOTE(thure): This can’t also be the `overflow-anchor` because `ScrollArea` injects an interceding node that contains this necessary ref’d element. */}\n <div role='none' className='bs-px -mbs-px' ref={threadScrollRef} />\n </ThreadComponent.Root>\n );\n};\n", "//\n// Copyright 2023 DXOS.org\n//\n\nimport React from 'react';\n\nimport { useTranslation } from '@dxos/react-ui';\nimport { ControlPage } from '@dxos/react-ui-form';\n\nimport { meta } from '../meta';\nimport type { ThreadSettingsProps } from '../types';\n\nexport const ThreadSettings = ({ settings: _settings }: { settings: ThreadSettingsProps }) => {\n const { t: _t } = useTranslation(meta.id);\n return <ControlPage></ControlPage>;\n};\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": ["WebRTCStats", "React", "useEffect", "useMemo", "useState", "truncateKey", "JsonView", "Panel", "log", "IconButton", "Input", "useTranslation", "CallDebugPanel", "state", "t", "useTranslation", "meta", "id", "open", "setOpen", "useState", "handleToggle", "showServiceHistory", "setShowServiceHistory", "handleToggleServiceHistory", "handleCopyRaw", "navigator", "clipboard", "writeText", "JSON", "stringify", "users", "call", "stats", "showDetailedWebRTCStats", "setShowDetailedWebRTCStats", "handleShowDetailedWebRTCStats", "webrtcStats", "useMemo", "WebRTCStats", "getStatsInterval", "setStats", "useEffect", "pc", "media", "peer", "session", "peerConnection", "handleStats", "data", "added", "addConnection", "peerId", "connectionId", "on", "removeConnection", "removeListener", "error", "log", "rows", "getCallStatusTable", "pulledAudioTracks", "Panel", "icon", "onToggle", "title", "info", "div", "className", "joined", "maxHeight", "Input", "Root", "Switch", "checked", "onCheckedChange", "Label", "IconButton", "label", "onClick", "Table", "JsonView", "history", "get", "self", "filter", "user", "map", "isOk", "audio", "tracks", "ctx", "disposed", "video", "pulledVideoStreams", "screenshare", "length", "name", "truncateKey", "pushedAudioTrack", "pushedVideoTrack", "screenshareEnabled", "pushedScreenshareTrack", "undefined", "iceConnectionState", "Unit", "KB", "n", "toFixed", "prefix", "value", "unit", "i", "key", "React", "useCapability", "CallSidebar", "call", "useCapability", "ThreadCapabilities", "CallManager", "React", "ChannelContainer", "roomId", "React", "useCallback", "useMemo", "Capabilities", "CollaborationActions", "LayoutAction", "createIntent", "useCapabilities", "useCapability", "useIntentDispatcher", "Filter", "Obj", "Query", "Relation", "Ref", "getSpace", "useQuery", "useIdentity", "useTranslation", "useAttended", "StackItem", "Tabs", "mx", "AnchoredTo", "lazy", "React", "useEffect", "Obj", "Relation", "Callout", "Icon", "Trans", "useTranslation", "React", "useCallback", "useMemo", "useRef", "useState", "Obj", "Ref", "Relation", "getSpace", "useMembers", "useIdentity", "IconButton", "Tag", "Tooltip", "useThemeContext", "useTranslation", "createBasicExtensions", "createThemeExtensions", "listener", "hoverableControlItem", "hoverableControls", "hoverableFocusedWithinControls", "mx", "MessageTextbox", "Thread", "ThreadComponent", "isNonNullable", "CommentsThreadContainer", "anchor", "current", "onAttend", "onComment", "onResolve", "onMessageDelete", "onThreadDelete", "onAcceptProposal", "themeMode", "useThemeContext", "t", "useTranslation", "meta", "id", "identity", "useIdentity", "space", "getSpace", "members", "useMembers", "key", "detached", "thread", "Relation", "getSource", "activity", "useStatus", "Obj", "getDXN", "toString", "threadScrollRef", "useRef", "textboxMetadata", "getMessageMetadata", "state", "setState", "useState", "messageRef", "extensions", "useMemo", "createBasicExtensions", "placeholder", "createThemeExtensions", "listener", "onChange", "text", "command", "scrollToEnd", "behavior", "setTimeout", "scrollIntoView", "block", "handleAttend", "useCallback", "handleResolve", "handleMessageDelete", "handleThreadDelete", "handleAcceptProposal", "handleComment", "React", "ThreadComponent", "Root", "classNames", "onClickCapture", "onFocusCapture", "div", "role", "className", "mx", "hoverableControls", "hoverableFocusedWithinControls", "Tooltip", "Trigger", "asChild", "content", "side", "Header", "name", "buttonGroupClassNames", "status", "Tag", "palette", "IconButton", "data-testid", "variant", "icon", "iconOnly", "label", "buttonClassNames", "hoverableControlItem", "onClick", "Ref", "Array", "targets", "messages", "filter", "isNonNullable", "map", "message", "MessageContainer", "editable", "onDelete", "MessageTextbox", "onSend", "Status", "ref", "CommentsContainer", "anchors", "currentId", "showResolvedThreads", "props", "t", "useTranslation", "meta", "id", "filteredAnchors", "filter", "anchor", "Relation", "getSource", "thread", "status", "useEffect", "document", "getElementById", "scrollIntoView", "behavior", "block", "length", "React", "div", "role", "className", "Callout", "Root", "Title", "Trans", "i18nKey", "components", "commentIcon", "Icon", "icon", "size", "classNames", "map", "threadId", "Obj", "getDXN", "toString", "CommentsThreadContainer", "key", "current", "React", "useTranslation", "ControlPage", "ThreadSettings", "settings", "_settings", "t", "_t", "useTranslation", "meta", "id", "React", "ControlPage", "ChannelContainer", "lazy", "ChatContainer", "ThreadCompanion", "subject", "t", "useTranslation", "meta", "id", "dispatchPromise", "dispatch", "useIntentDispatcher", "identity", "useIdentity", "subjectId", "Obj", "getDXN", "toString", "state", "getViewState", "useCapability", "ThreadCapabilities", "MutableState", "drafts", "viewState", "useMemo", "showResolvedThreads", "onChangeViewState", "useCallback", "nextValue", "anchorSorts", "useCapabilities", "Capabilities", "AnchorSort", "sort", "find", "key", "getTypename", "space", "getSpace", "objectsAnchoredTo", "useQuery", "Query", "select", "Filter", "ids", "targetOf", "AnchoredTo", "anchors", "toSorted", "a", "b", "filter", "anchor", "instanceOf", "Thread", "Relation", "getSource", "concat", "attended", "useAttended", "handleAttend", "thread", "threadId", "current", "createIntent", "LayoutAction", "ScrollIntoView", "part", "options", "cursor", "ref", "handleComment", "text", "ThreadAction", "AddMessage", "sender", "identityDid", "did", "handleResolve", "ToggleResolved", "handleThreadDelete", "Delete", "handleMessageDelete", "messageId", "DeleteMessage", "handleAcceptProposal", "messageIndex", "messages", "findIndex", "Ref", "hasObjectId", "message", "target", "proposal", "blocks", "block", "_tag", "CollaborationActions", "AcceptProposal", "comments", "React", "CommentsContainer", "currentId", "includes", "undefined", "onAttend", "onComment", "onResolve", "onMessageDelete", "onThreadDelete", "onAcceptProposal", "StackItem", "Content", "toolbar", "Tabs", "Root", "value", "orientation", "classNames", "onValueChange", "Tablist", "mx", "Tab", "div", "className", "Tabpanel"]
|
|
7
|
+
}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// src/util.ts
|
|
2
|
-
import
|
|
2
|
+
import * as Match from "effect/Match";
|
|
3
3
|
import { generateName } from "@dxos/display-name";
|
|
4
4
|
import { hexToFallback } from "@dxos/util";
|
|
5
5
|
var getMessageMetadata = (id, identity) => {
|
|
@@ -28,4 +28,4 @@ export {
|
|
|
28
28
|
getMessageMetadata,
|
|
29
29
|
getAnchor
|
|
30
30
|
};
|
|
31
|
-
//# sourceMappingURL=chunk-
|
|
31
|
+
//# sourceMappingURL=chunk-CP7E2HRE.mjs.map
|