@dxos/plugin-thread 0.8.4-main.67995b8 → 0.8.4-main.70d3990
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-L7MKV7DS.mjs +17 -0
- package/dist/lib/browser/ChatContainer-KPY4BAUE.mjs +16 -0
- package/dist/lib/browser/{app-graph-builder-N7BE5TYW.mjs → app-graph-builder-TWJ2UCOZ.mjs} +33 -33
- package/dist/lib/browser/app-graph-builder-TWJ2UCOZ.mjs.map +7 -0
- package/dist/lib/browser/blueprint-definition-TQ4JFMZZ.mjs +101 -0
- package/dist/lib/browser/blueprint-definition-TQ4JFMZZ.mjs.map +7 -0
- package/dist/lib/browser/{call-manager-NIPDYUVD.mjs → call-manager-4YFT4XA6.mjs} +8 -7
- package/dist/lib/browser/call-manager-4YFT4XA6.mjs.map +7 -0
- package/dist/lib/browser/{chunk-KWPRNHTK.mjs → chunk-ALZKJOZK.mjs} +251 -246
- package/dist/lib/browser/chunk-ALZKJOZK.mjs.map +7 -0
- package/dist/lib/browser/chunk-ANTFU4JB.mjs +25 -0
- package/dist/lib/browser/chunk-ANTFU4JB.mjs.map +7 -0
- package/dist/lib/browser/chunk-CFC7LEPD.mjs +18 -0
- package/dist/lib/browser/chunk-CFC7LEPD.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-6NSMBO3B.mjs → chunk-ISCHODBV.mjs} +55 -5
- package/dist/lib/browser/chunk-ISCHODBV.mjs.map +7 -0
- package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
- package/dist/lib/browser/chunk-JDJPMI7V.mjs +143 -0
- package/dist/lib/browser/chunk-JDJPMI7V.mjs.map +7 -0
- package/dist/lib/browser/{chunk-ERWASUQK.mjs → chunk-KOBXMDCI.mjs} +74 -41
- package/dist/lib/browser/chunk-KOBXMDCI.mjs.map +7 -0
- package/dist/lib/browser/chunk-NPT5S6N4.mjs +611 -0
- package/dist/lib/browser/chunk-NPT5S6N4.mjs.map +7 -0
- package/dist/lib/browser/chunk-QM34EZQK.mjs +20 -0
- package/dist/lib/browser/chunk-QM34EZQK.mjs.map +7 -0
- package/dist/lib/browser/chunk-TLOOZTRD.mjs +377 -0
- package/dist/lib/browser/chunk-TLOOZTRD.mjs.map +7 -0
- package/dist/lib/browser/{chunk-ZE7KWN36.mjs → chunk-ZCW3NSDZ.mjs} +310 -186
- package/dist/lib/browser/chunk-ZCW3NSDZ.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +61 -53
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/{intent-resolver-JFGLZ6VI.mjs → intent-resolver-G33FT3NO.mjs} +41 -55
- package/dist/lib/browser/intent-resolver-G33FT3NO.mjs.map +7 -0
- package/dist/lib/browser/{markdown-M3FMR7OD.mjs → markdown-WFZFYJBQ.mjs} +30 -27
- package/dist/lib/browser/markdown-WFZFYJBQ.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/react-root-ED7PHA44.mjs +29 -0
- package/dist/lib/browser/react-root-ED7PHA44.mjs.map +7 -0
- package/dist/lib/browser/{react-surface-XWS6GIZY.mjs → react-surface-AUQQSQQC.mjs} +38 -36
- package/dist/lib/browser/react-surface-AUQQSQQC.mjs.map +7 -0
- package/dist/lib/browser/repair-JFJLEM2O.mjs +35 -0
- package/dist/lib/browser/repair-JFJLEM2O.mjs.map +7 -0
- package/dist/lib/browser/{settings-E32MTL7A.mjs → settings-E6IOLK46.mjs} +6 -5
- package/dist/lib/{node-esm/settings-SJ24YG7M.mjs.map → browser/settings-E6IOLK46.mjs.map} +1 -1
- package/dist/lib/browser/{state-H6CYONWE.mjs → state-UYPLBGZJ.mjs} +6 -5
- package/dist/lib/browser/state-UYPLBGZJ.mjs.map +7 -0
- package/dist/lib/browser/types/index.mjs +7 -10
- package/dist/lib/node-esm/ChannelContainer-FYONOOZ6.mjs +18 -0
- package/dist/lib/node-esm/ChatContainer-TLQG23K7.mjs +17 -0
- package/dist/lib/node-esm/ChatContainer-TLQG23K7.mjs.map +7 -0
- package/dist/lib/node-esm/{app-graph-builder-VCW76Z6V.mjs → app-graph-builder-VD6I2V5H.mjs} +33 -33
- package/dist/lib/node-esm/app-graph-builder-VD6I2V5H.mjs.map +7 -0
- package/dist/lib/node-esm/blueprint-definition-TSX5HHW7.mjs +102 -0
- package/dist/lib/node-esm/blueprint-definition-TSX5HHW7.mjs.map +7 -0
- package/dist/lib/node-esm/{call-manager-D6O5ZJJ4.mjs → call-manager-UMUXEYH5.mjs} +8 -7
- package/dist/lib/node-esm/call-manager-UMUXEYH5.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-2AEIN5MI.mjs +22 -0
- package/dist/lib/node-esm/chunk-2AEIN5MI.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-IHDNQLLR.mjs → chunk-7KZWZS2U.mjs} +310 -186
- package/dist/lib/node-esm/chunk-7KZWZS2U.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-C3XFMUAY.mjs → chunk-AB42KYF3.mjs} +251 -246
- package/dist/lib/node-esm/chunk-AB42KYF3.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-ATNY37UV.mjs +27 -0
- package/dist/lib/node-esm/chunk-ATNY37UV.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-E5HNHFYH.mjs +378 -0
- package/dist/lib/node-esm/chunk-E5HNHFYH.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-FF3QVPY4.mjs +612 -0
- package/dist/lib/node-esm/chunk-FF3QVPY4.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
- package/dist/lib/node-esm/chunk-HSLMI22Q.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-P2M364TO.mjs +144 -0
- package/dist/lib/node-esm/chunk-P2M364TO.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-25ABSYP2.mjs → chunk-PZH2EDU5.mjs} +74 -41
- package/dist/lib/node-esm/chunk-PZH2EDU5.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-RT6NRL2I.mjs +19 -0
- package/dist/lib/node-esm/chunk-RT6NRL2I.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-OU5BYIDO.mjs → chunk-VBI32FGI.mjs} +55 -5
- package/dist/lib/node-esm/chunk-VBI32FGI.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +61 -53
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/{intent-resolver-OXGNQ44Y.mjs → intent-resolver-4PX3WXQG.mjs} +41 -55
- package/dist/lib/node-esm/intent-resolver-4PX3WXQG.mjs.map +7 -0
- package/dist/lib/node-esm/{markdown-INKTE4MH.mjs → markdown-CSR5MAPZ.mjs} +30 -27
- package/dist/lib/node-esm/markdown-CSR5MAPZ.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/react-root-DZN324JA.mjs +30 -0
- package/dist/lib/node-esm/react-root-DZN324JA.mjs.map +7 -0
- package/dist/lib/node-esm/{react-surface-MJ33KPYE.mjs → react-surface-AMVESEF4.mjs} +38 -36
- package/dist/lib/node-esm/react-surface-AMVESEF4.mjs.map +7 -0
- package/dist/lib/node-esm/repair-RMLR24YR.mjs +36 -0
- package/dist/lib/node-esm/repair-RMLR24YR.mjs.map +7 -0
- package/dist/lib/node-esm/{settings-SJ24YG7M.mjs → settings-RGZHWDSO.mjs} +6 -5
- package/dist/lib/{browser/settings-E32MTL7A.mjs.map → node-esm/settings-RGZHWDSO.mjs.map} +1 -1
- package/dist/lib/node-esm/{state-D7WNDT3N.mjs → state-XNWOLBNE.mjs} +6 -5
- package/dist/lib/node-esm/state-XNWOLBNE.mjs.map +7 -0
- package/dist/lib/node-esm/types/index.mjs +7 -10
- package/dist/types/src/ThreadPlugin.d.ts +1 -1
- package/dist/types/src/ThreadPlugin.d.ts.map +1 -1
- package/dist/types/src/calls/call-manager.d.ts.map +1 -1
- package/dist/types/src/calls/call-swarm-synchronizer.d.ts.map +1 -1
- package/dist/types/src/calls/media-manager.d.ts +1 -1
- package/dist/types/src/calls/media-manager.d.ts.map +1 -1
- package/dist/types/src/calls/types.d.ts +1 -1
- package/dist/types/src/calls/types.d.ts.map +1 -1
- package/dist/types/src/calls/util/calls-service.d.ts +4 -2
- 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 +10 -9
- package/dist/types/src/calls-service.stories.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-builder.d.ts +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/call-manager.d.ts +1 -1
- package/dist/types/src/capabilities/call-manager.d.ts.map +1 -1
- package/dist/types/src/capabilities/capabilities.d.ts +3 -3
- package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
- package/dist/types/src/capabilities/index.d.ts +12 -10
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts +1 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
- package/dist/types/src/capabilities/markdown.d.ts +1 -1
- package/dist/types/src/capabilities/markdown.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-root.d.ts +2 -2
- package/dist/types/src/capabilities/react-surface.d.ts +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/capabilities/repair.d.ts +4 -0
- package/dist/types/src/capabilities/repair.d.ts.map +1 -0
- package/dist/types/src/capabilities/settings.d.ts +1 -1
- package/dist/types/src/capabilities/state.d.ts +2 -2
- package/dist/types/src/capabilities/state.d.ts.map +1 -1
- package/dist/types/src/components/Call/Call.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/CallSidebar.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 +159 -5
- package/dist/types/src/components/ChannelContainer.stories.d.ts.map +1 -1
- package/dist/types/src/components/Chat.stories.d.ts +162 -5
- 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 +160 -4
- 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 +9 -9
- package/dist/types/src/components/CommentsThreadContainer.d.ts.map +1 -1
- package/dist/types/src/components/Lobby/Lobby.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 +18 -4
- package/dist/types/src/components/Media/VideoObject.stories.d.ts.map +1 -1
- package/dist/types/src/components/MessageContainer.d.ts +8 -3
- package/dist/types/src/components/MessageContainer.d.ts.map +1 -1
- package/dist/types/src/components/Participant/Participant.d.ts.map +1 -1
- package/dist/types/src/components/Participant/ParticipantGrid.d.ts.map +1 -1
- package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts +159 -3
- package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts.map +1 -1
- package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts +161 -4
- 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/command-extension.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 -2
- 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 -1
- package/dist/types/src/hooks/index.d.ts.map +1 -1
- package/dist/types/src/hooks/useBlackCanvasStreamTrack.d.ts +2 -0
- package/dist/types/src/hooks/useBlackCanvasStreamTrack.d.ts.map +1 -0
- 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 +79 -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/index.d.ts +1 -1
- package/dist/types/src/types/index.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +236 -265
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +69 -63
- package/src/ThreadPlugin.tsx +137 -129
- package/src/calls/call-manager.ts +2 -2
- package/src/calls/call-swarm-synchronizer.ts +1 -1
- package/src/calls/media-manager.ts +66 -37
- package/src/calls/types.ts +8 -4
- package/src/calls/util/calls-service.ts +65 -14
- package/src/calls/util/stub-media-streams.ts +64 -7
- package/src/calls-service.stories.tsx +78 -65
- package/src/capabilities/app-graph-builder.ts +47 -33
- package/src/capabilities/blueprint-definition.ts +38 -0
- package/src/capabilities/call-manager.ts +3 -2
- package/src/capabilities/capabilities.ts +8 -8
- package/src/capabilities/index.ts +2 -0
- package/src/capabilities/intent-resolver.ts +32 -35
- package/src/capabilities/markdown.ts +9 -6
- package/src/capabilities/react-root.tsx +2 -2
- package/src/capabilities/react-surface.tsx +29 -26
- package/src/capabilities/repair.ts +40 -0
- package/src/capabilities/state.ts +2 -1
- package/src/components/Call/Call.tsx +4 -3
- package/src/components/Call/Toolbar.tsx +10 -10
- package/src/components/CallDebugPanel.tsx +112 -55
- package/src/components/CallSidebar.tsx +3 -2
- package/src/components/ChannelContainer.stories.tsx +15 -14
- package/src/components/ChannelContainer.tsx +25 -20
- package/src/components/Chat.stories.tsx +33 -36
- package/src/components/ChatContainer.tsx +35 -23
- package/src/components/Comments.stories.tsx +39 -41
- package/src/components/CommentsContainer.tsx +7 -8
- package/src/components/CommentsThreadContainer.tsx +39 -33
- package/src/components/Lobby/Lobby.tsx +2 -2
- package/src/components/Media/VideoObject.stories.tsx +36 -28
- package/src/components/Media/VideoObject.tsx +1 -1
- package/src/components/MessageContainer.tsx +53 -17
- package/src/components/Participant/Participant.tsx +14 -8
- package/src/components/Participant/ParticipantGrid.tsx +2 -1
- package/src/components/ResponsiveGrid/ResponsiveContainer.stories.tsx +8 -8
- package/src/components/ResponsiveGrid/ResponsiveContainer.tsx +2 -2
- package/src/components/ResponsiveGrid/ResponsiveGrid.stories.tsx +45 -43
- package/src/components/ResponsiveGrid/ResponsiveGrid.tsx +6 -6
- package/src/components/ResponsiveGrid/ResponsiveGridItem.tsx +7 -4
- package/src/components/{ThreadComplementary.tsx → ThreadCompanion.tsx} +72 -35
- package/src/components/ThreadSettings.tsx +6 -7
- package/src/components/command-extension.ts +5 -2
- package/src/components/index.ts +4 -4
- package/src/components/testing.ts +26 -6
- package/src/extensions/threads.ts +31 -21
- package/src/functions/create-proposals.ts +56 -0
- package/src/functions/index.ts +5 -0
- package/src/hooks/analytics.ts +4 -7
- package/src/hooks/index.ts +3 -1
- package/src/hooks/useBlackCanvasStreamTrack.tsx +27 -0
- package/src/hooks/useDebugMode.ts +1 -1
- package/src/hooks/useVideoStreamTrack.tsx +6 -3
- package/src/meta.ts +9 -5
- package/src/testing/stories.ts +5 -8
- package/src/translations.ts +9 -4
- package/src/types/Channel.ts +26 -0
- package/src/types/index.ts +1 -1
- package/src/types/types.ts +31 -30
- package/src/typings/peermetrics-webrtc-stats.d.ts +17 -1
- package/src/typings.d.ts +8 -0
- package/src/util.ts +1 -1
- package/dist/lib/browser/ChannelContainer-3GIE7ASU.mjs +0 -16
- package/dist/lib/browser/ChatContainer-AIGIWAUG.mjs +0 -15
- package/dist/lib/browser/app-graph-builder-N7BE5TYW.mjs.map +0 -7
- package/dist/lib/browser/call-manager-NIPDYUVD.mjs.map +0 -7
- package/dist/lib/browser/chunk-3SGRT4NM.mjs +0 -367
- package/dist/lib/browser/chunk-3SGRT4NM.mjs.map +0 -7
- package/dist/lib/browser/chunk-6NSMBO3B.mjs.map +0 -7
- package/dist/lib/browser/chunk-ERWASUQK.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-FR7KJPNY.mjs +0 -21
- package/dist/lib/browser/chunk-FR7KJPNY.mjs.map +0 -7
- package/dist/lib/browser/chunk-GCLD5ESP.mjs +0 -137
- package/dist/lib/browser/chunk-GCLD5ESP.mjs.map +0 -7
- package/dist/lib/browser/chunk-GERVMFQW.mjs.map +0 -7
- package/dist/lib/browser/chunk-KWPRNHTK.mjs.map +0 -7
- package/dist/lib/browser/chunk-LGSDKXPF.mjs +0 -18
- package/dist/lib/browser/chunk-LGSDKXPF.mjs.map +0 -7
- package/dist/lib/browser/chunk-VUWC4IJM.mjs +0 -479
- package/dist/lib/browser/chunk-VUWC4IJM.mjs.map +0 -7
- package/dist/lib/browser/chunk-ZE7KWN36.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-JFGLZ6VI.mjs.map +0 -7
- package/dist/lib/browser/markdown-M3FMR7OD.mjs.map +0 -7
- package/dist/lib/browser/react-root-JEUSQXI6.mjs +0 -28
- package/dist/lib/browser/react-root-JEUSQXI6.mjs.map +0 -7
- package/dist/lib/browser/react-surface-XWS6GIZY.mjs.map +0 -7
- package/dist/lib/browser/state-H6CYONWE.mjs.map +0 -7
- package/dist/lib/node-esm/ChannelContainer-7FXCKO7X.mjs +0 -17
- package/dist/lib/node-esm/ChatContainer-IQUWU426.mjs +0 -16
- package/dist/lib/node-esm/app-graph-builder-VCW76Z6V.mjs.map +0 -7
- package/dist/lib/node-esm/call-manager-D6O5ZJJ4.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-25ABSYP2.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-2CXOK2TD.mjs +0 -23
- package/dist/lib/node-esm/chunk-2CXOK2TD.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-2MFNK53T.mjs +0 -480
- package/dist/lib/node-esm/chunk-2MFNK53T.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-57XR3LEF.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-75RJ5DJI.mjs +0 -19
- package/dist/lib/node-esm/chunk-75RJ5DJI.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-C3XFMUAY.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-FLBFYGBK.mjs +0 -368
- package/dist/lib/node-esm/chunk-FLBFYGBK.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-IHDNQLLR.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-OU5BYIDO.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-TDFHTCZZ.mjs +0 -138
- package/dist/lib/node-esm/chunk-TDFHTCZZ.mjs.map +0 -7
- package/dist/lib/node-esm/intent-resolver-OXGNQ44Y.mjs.map +0 -7
- package/dist/lib/node-esm/markdown-INKTE4MH.mjs.map +0 -7
- package/dist/lib/node-esm/react-root-XYYY2JXZ.mjs +0 -29
- package/dist/lib/node-esm/react-root-XYYY2JXZ.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-MJ33KPYE.mjs.map +0 -7
- package/dist/lib/node-esm/state-D7WNDT3N.mjs.map +0 -7
- 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 +0 -162
- package/dist/types/src/types/schema.d.ts.map +0 -1
- package/src/types/schema.ts +0 -33
- /package/dist/lib/browser/{ChannelContainer-3GIE7ASU.mjs.map → ChannelContainer-L7MKV7DS.mjs.map} +0 -0
- /package/dist/lib/browser/{ChatContainer-AIGIWAUG.mjs.map → ChatContainer-KPY4BAUE.mjs.map} +0 -0
- /package/dist/lib/{node-esm/ChannelContainer-7FXCKO7X.mjs.map → browser/chunk-J5LGTIGS.mjs.map} +0 -0
- /package/dist/lib/node-esm/{ChatContainer-IQUWU426.mjs.map → ChannelContainer-FYONOOZ6.mjs.map} +0 -0
|
@@ -2,25 +2,25 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import '@
|
|
6
|
-
|
|
7
|
-
import { type StoryObj, type Meta } from '@storybook/react-vite';
|
|
5
|
+
import { type Meta, type StoryObj } from '@storybook/react-vite';
|
|
8
6
|
import React from 'react';
|
|
9
7
|
|
|
10
|
-
import { withTheme
|
|
8
|
+
import { withTheme } from '@dxos/react-ui/testing';
|
|
11
9
|
|
|
12
|
-
import { ResponsiveContainer } from './ResponsiveContainer';
|
|
13
10
|
import { translations } from '../../translations';
|
|
14
11
|
import { VideoObject as VideoObjectComponent } from '../Media';
|
|
15
12
|
|
|
16
|
-
|
|
13
|
+
import { ResponsiveContainer } from './ResponsiveContainer';
|
|
14
|
+
|
|
15
|
+
const meta = {
|
|
17
16
|
title: 'plugins/plugin-thread/ResponsiveContainer',
|
|
18
17
|
component: ResponsiveContainer,
|
|
19
|
-
decorators: [withTheme
|
|
18
|
+
decorators: [withTheme],
|
|
20
19
|
parameters: {
|
|
20
|
+
layout: 'fullscreen',
|
|
21
21
|
translations,
|
|
22
22
|
},
|
|
23
|
-
}
|
|
23
|
+
} satisfies Meta<typeof ResponsiveContainer>;
|
|
24
24
|
|
|
25
25
|
export default meta;
|
|
26
26
|
|
|
@@ -18,11 +18,11 @@ import { mx } from '@dxos/react-ui-theme';
|
|
|
18
18
|
export const ResponsiveContainer = ({ children }: PropsWithChildren) => {
|
|
19
19
|
return (
|
|
20
20
|
// Outer container that takes full size of parent.
|
|
21
|
-
<div role='none' className='relative flex
|
|
21
|
+
<div role='none' className='relative flex is-full bs-full'>
|
|
22
22
|
{/* Absolute positioning layer for centering content. */}
|
|
23
23
|
<div role='none' className='absolute inset-0 flex justify-center items-center'>
|
|
24
24
|
{/* Content container that maintains given aspect ratio and proper scaling. */}
|
|
25
|
-
<div role='none' className={mx('max-
|
|
25
|
+
<div role='none' className={mx('max-bs-full max-is-full is-auto bs-auto aspect-video')}>
|
|
26
26
|
{children}
|
|
27
27
|
</div>
|
|
28
28
|
</div>
|
|
@@ -2,17 +2,16 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import '@
|
|
6
|
-
|
|
7
|
-
import { type StoryObj, type Meta } from '@storybook/react-vite';
|
|
5
|
+
import { type Meta, type StoryObj } from '@storybook/react-vite';
|
|
8
6
|
import React, { useEffect, useState } from 'react';
|
|
9
7
|
|
|
10
8
|
import { faker } from '@dxos/random';
|
|
11
|
-
import { withTheme
|
|
9
|
+
import { withTheme } from '@dxos/react-ui/testing';
|
|
10
|
+
|
|
11
|
+
import { translations } from '../../translations';
|
|
12
12
|
|
|
13
13
|
import { ResponsiveGrid, type ResponsiveGridProps } from './ResponsiveGrid';
|
|
14
14
|
import { ResponsiveGridItem, type ResponsiveGridItemProps } from './ResponsiveGridItem';
|
|
15
|
-
import { translations } from '../../translations';
|
|
16
15
|
|
|
17
16
|
type TestItem = {
|
|
18
17
|
id: string;
|
|
@@ -42,7 +41,7 @@ const TestCell = ({ item, ...props }: ResponsiveGridItemProps<TestItem>) => {
|
|
|
42
41
|
{item.type === 'image' && <img className='aspect-video object-contain' src={item.imageUrl} />}
|
|
43
42
|
{item.type === 'video' && (
|
|
44
43
|
<video
|
|
45
|
-
className='
|
|
44
|
+
className='is-full aspect-video object-cover rounded-md'
|
|
46
45
|
src={item.videoUrl}
|
|
47
46
|
playsInline
|
|
48
47
|
autoPlay
|
|
@@ -56,46 +55,49 @@ const TestCell = ({ item, ...props }: ResponsiveGridItemProps<TestItem>) => {
|
|
|
56
55
|
|
|
57
56
|
type StoryProps = ResponsiveGridProps<TestItem> & { random?: boolean; autoHideGallery?: boolean };
|
|
58
57
|
|
|
59
|
-
const
|
|
58
|
+
const DefaultStory = (props: StoryProps) => {
|
|
59
|
+
const [pinned, setPinned] = useState<string | undefined>(
|
|
60
|
+
(props.pinned ?? props.items.length > 1) ? props.items[0]?.id : undefined,
|
|
61
|
+
);
|
|
62
|
+
const [items, setItems] = useState<TestItem[]>(props.items);
|
|
63
|
+
useEffect(() => {
|
|
64
|
+
if (!props.random) {
|
|
65
|
+
return;
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
const interval = setInterval(() => {
|
|
69
|
+
setItems((items) => {
|
|
70
|
+
const p = Math.random();
|
|
71
|
+
if (p < 0.5) {
|
|
72
|
+
return items;
|
|
73
|
+
} else if (p < 0.99 && items.length > 1) {
|
|
74
|
+
return items.slice(0, -1);
|
|
75
|
+
} else {
|
|
76
|
+
return [...items, createItem(items[0]?.type)];
|
|
77
|
+
}
|
|
78
|
+
});
|
|
79
|
+
}, 3_000);
|
|
80
|
+
|
|
81
|
+
return () => clearInterval(interval);
|
|
82
|
+
}, []);
|
|
83
|
+
|
|
84
|
+
return (
|
|
85
|
+
<div className='grid grow p-4'>
|
|
86
|
+
<ResponsiveGrid {...props} Cell={TestCell} items={items} pinned={pinned} onPinnedChange={setPinned} />
|
|
87
|
+
</div>
|
|
88
|
+
);
|
|
89
|
+
};
|
|
90
|
+
|
|
91
|
+
const meta = {
|
|
60
92
|
title: 'plugins/plugin-thread/ResponsiveGrid',
|
|
61
|
-
component: ResponsiveGrid,
|
|
62
|
-
render:
|
|
63
|
-
|
|
64
|
-
(args.pinned ?? args.items.length > 1) ? args.items[0]?.id : undefined,
|
|
65
|
-
);
|
|
66
|
-
const [items, setItems] = useState<TestItem[]>(args.items);
|
|
67
|
-
useEffect(() => {
|
|
68
|
-
if (!args.random) {
|
|
69
|
-
return;
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
const interval = setInterval(() => {
|
|
73
|
-
setItems((items) => {
|
|
74
|
-
const p = Math.random();
|
|
75
|
-
if (p < 0.5) {
|
|
76
|
-
return items;
|
|
77
|
-
} else if (p < 0.99 && items.length > 1) {
|
|
78
|
-
return items.slice(0, -1);
|
|
79
|
-
} else {
|
|
80
|
-
return [...items, createItem(items[0]?.type)];
|
|
81
|
-
}
|
|
82
|
-
});
|
|
83
|
-
}, 3_000);
|
|
84
|
-
|
|
85
|
-
return () => clearInterval(interval);
|
|
86
|
-
}, []);
|
|
87
|
-
|
|
88
|
-
return (
|
|
89
|
-
<div className='grid grow p-4'>
|
|
90
|
-
<ResponsiveGrid {...args} Cell={TestCell} items={items} pinned={pinned} onPinnedChange={setPinned} />
|
|
91
|
-
</div>
|
|
92
|
-
);
|
|
93
|
-
},
|
|
94
|
-
decorators: [withTheme, withLayout({ fullscreen: true, classNames: 'justify-center' })],
|
|
93
|
+
component: ResponsiveGrid as any,
|
|
94
|
+
render: DefaultStory,
|
|
95
|
+
decorators: [withTheme],
|
|
95
96
|
parameters: {
|
|
97
|
+
layout: 'fullscreen',
|
|
96
98
|
translations,
|
|
97
99
|
},
|
|
98
|
-
}
|
|
100
|
+
} satisfies Meta<typeof DefaultStory>;
|
|
99
101
|
|
|
100
102
|
const videoUrls = [
|
|
101
103
|
'http://commondatastorage.googleapis.com/gtv-videos-bucket/sample/ForBiggerBlazes.mp4',
|
|
@@ -117,7 +119,7 @@ const createItem = (type?: 'image' | 'video') => {
|
|
|
117
119
|
|
|
118
120
|
export default meta;
|
|
119
121
|
|
|
120
|
-
type Story = StoryObj<
|
|
122
|
+
type Story = StoryObj<typeof meta>;
|
|
121
123
|
|
|
122
124
|
// TODO(burdon): Story to join/leave repeatedly to test stable position.
|
|
123
125
|
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import React, { type ComponentType, type FC,
|
|
5
|
+
import React, { type ComponentType, type FC, useCallback, useEffect, useLayoutEffect, useMemo, useState } from 'react';
|
|
6
6
|
import { useResizeDetector } from 'react-resize-detector';
|
|
7
7
|
|
|
8
8
|
import { invariant } from '@dxos/invariant';
|
|
@@ -18,7 +18,7 @@ const MIN_GALLERY_HEIGHT = 250;
|
|
|
18
18
|
|
|
19
19
|
const DEFAULT_GAP = 8;
|
|
20
20
|
|
|
21
|
-
const maxImageSize = '
|
|
21
|
+
const maxImageSize = 'is-[2560px] bs-[1440px]';
|
|
22
22
|
|
|
23
23
|
/**
|
|
24
24
|
* Props for the ResponsiveGrid component.
|
|
@@ -136,13 +136,13 @@ export const ResponsiveGrid = <T extends object = any>({
|
|
|
136
136
|
);
|
|
137
137
|
|
|
138
138
|
return (
|
|
139
|
-
<div ref={containerRef} className={mx('relative
|
|
139
|
+
<div ref={containerRef} className={mx('relative is-full bs-full', classNames)}>
|
|
140
140
|
{/* Placeholder elements to calculate layout. */}
|
|
141
141
|
<div className='absolute inset-0 flex flex-col grow gap-2'>
|
|
142
142
|
{/* Pinned item. */}
|
|
143
143
|
{pinnedItem && (
|
|
144
144
|
<div
|
|
145
|
-
className={mx('flex grow-[2] shrink overflow-hidden justify-center items-center', hideGallery && '
|
|
145
|
+
className={mx('flex grow-[2] shrink overflow-hidden justify-center items-center', hideGallery && 'bs-full')}
|
|
146
146
|
style={hideGallery ? {} : { height: dividerHeight }}
|
|
147
147
|
>
|
|
148
148
|
<SoloItem id={getId(pinnedItem)} debug={debug} />
|
|
@@ -157,7 +157,7 @@ export const ResponsiveGrid = <T extends object = any>({
|
|
|
157
157
|
style={hideGallery ? {} : { minHeight: MIN_GALLERY_HEIGHT }}
|
|
158
158
|
>
|
|
159
159
|
{mainItems.length === 1 && (
|
|
160
|
-
<div style={{ width: cellWidth }} className='flex
|
|
160
|
+
<div style={{ width: cellWidth }} className='flex bs-full'>
|
|
161
161
|
<SoloItem id={getId(mainItems[0])} debug={debug} />
|
|
162
162
|
</div>
|
|
163
163
|
)}
|
|
@@ -176,7 +176,7 @@ export const ResponsiveGrid = <T extends object = any>({
|
|
|
176
176
|
key={getId(item)}
|
|
177
177
|
{...{ 'data-grid-item': getId(item) }}
|
|
178
178
|
className={mx(
|
|
179
|
-
'aspect-video max-
|
|
179
|
+
'aspect-video max-bs-full max-is-full is-auto bs-auto',
|
|
180
180
|
debug && 'border border-primary-500',
|
|
181
181
|
)}
|
|
182
182
|
/>
|
|
@@ -2,9 +2,9 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import React, {
|
|
5
|
+
import React, { type CSSProperties, type PropsWithChildren, useEffect, useState } from 'react';
|
|
6
6
|
|
|
7
|
-
import { Icon, IconButton,
|
|
7
|
+
import { Icon, IconButton, type ThemedClassName, useTranslation } from '@dxos/react-ui';
|
|
8
8
|
import { Waveform } from '@dxos/react-ui-sfx';
|
|
9
9
|
import { groupHoverControlItemWithTransition, mx } from '@dxos/react-ui-theme';
|
|
10
10
|
|
|
@@ -76,7 +76,7 @@ export const ResponsiveGridItem = <T extends object = any>({
|
|
|
76
76
|
return (
|
|
77
77
|
<div
|
|
78
78
|
className={mx(
|
|
79
|
-
'relative
|
|
79
|
+
'relative is-full bs-full group',
|
|
80
80
|
'rounded-md outline outline-2 outline-neutral-900 transition-[outline-color] duration-500',
|
|
81
81
|
speakingIndicator ? 'outline-green-500' : !video && 'outline-separator',
|
|
82
82
|
classNames,
|
|
@@ -106,7 +106,10 @@ export const ResponsiveGridItem = <T extends object = any>({
|
|
|
106
106
|
{/* {self && <Icon icon='ph--asterisk--regular' size={pinned ? 5 : 4} />} */}
|
|
107
107
|
{screenshare && <Icon icon='ph--broadcast--regular' size={pinned ? 5 : 4} />}
|
|
108
108
|
<div
|
|
109
|
-
className={mx(
|
|
109
|
+
className={mx(
|
|
110
|
+
'bg-neutral-800 text-neutral-100 plb-0.5 truncate rounded',
|
|
111
|
+
pinned ? 'pli-2' : 'pli-1 text-xs',
|
|
112
|
+
)}
|
|
110
113
|
>
|
|
111
114
|
{name}
|
|
112
115
|
</div>
|
|
@@ -4,34 +4,28 @@
|
|
|
4
4
|
|
|
5
5
|
import React, { useCallback, useMemo } from 'react';
|
|
6
6
|
|
|
7
|
-
import {
|
|
8
|
-
|
|
9
|
-
LayoutAction,
|
|
10
|
-
createIntent,
|
|
11
|
-
useCapability,
|
|
12
|
-
useCapabilities,
|
|
13
|
-
useIntentDispatcher,
|
|
14
|
-
} from '@dxos/app-framework';
|
|
7
|
+
import { Capabilities, CollaborationActions, LayoutAction, createIntent } from '@dxos/app-framework';
|
|
8
|
+
import { useCapabilities, useCapability, useIntentDispatcher } from '@dxos/app-framework/react';
|
|
15
9
|
import { Filter, Obj, Query, Relation } from '@dxos/echo';
|
|
16
|
-
import {
|
|
10
|
+
import { Ref, getSpace, useQuery } from '@dxos/react-client/echo';
|
|
17
11
|
import { useIdentity } from '@dxos/react-client/halo';
|
|
18
|
-
import {
|
|
12
|
+
import { useTranslation } from '@dxos/react-ui';
|
|
19
13
|
import { useAttended } from '@dxos/react-ui-attention';
|
|
20
14
|
import { StackItem } from '@dxos/react-ui-stack';
|
|
21
15
|
import { Tabs } from '@dxos/react-ui-tabs';
|
|
22
|
-
import {
|
|
16
|
+
import { mx } from '@dxos/react-ui-theme';
|
|
17
|
+
import { AnchoredTo, Thread } from '@dxos/types';
|
|
23
18
|
|
|
24
19
|
import { ThreadCapabilities } from '../capabilities';
|
|
25
|
-
import { CommentsContainer } from '../components';
|
|
20
|
+
import { CommentsContainer, type CommentsContainerProps } from '../components';
|
|
26
21
|
import { meta } from '../meta';
|
|
27
|
-
import { ThreadAction
|
|
22
|
+
import { ThreadAction } from '../types';
|
|
28
23
|
|
|
29
|
-
export const
|
|
24
|
+
export const ThreadCompanion = ({ subject }: { subject: any }) => {
|
|
30
25
|
const { t } = useTranslation(meta.id);
|
|
31
26
|
const { dispatchPromise: dispatch } = useIntentDispatcher();
|
|
32
27
|
const identity = useIdentity();
|
|
33
|
-
const
|
|
34
|
-
const subjectId = fullyQualifiedId(subject);
|
|
28
|
+
const subjectId = Obj.getDXN(subject).toString();
|
|
35
29
|
|
|
36
30
|
const { state, getViewState } = useCapability(ThreadCapabilities.MutableState);
|
|
37
31
|
const drafts = state.drafts[subjectId];
|
|
@@ -51,18 +45,18 @@ export const ThreadComplementary = ({ subject }: { subject: any }) => {
|
|
|
51
45
|
);
|
|
52
46
|
|
|
53
47
|
const space = getSpace(subject);
|
|
54
|
-
const objectsAnchoredTo = useQuery(space, Query.select(Filter.ids(subject.id)).targetOf(AnchoredTo));
|
|
48
|
+
const objectsAnchoredTo = useQuery(space, Query.select(Filter.ids(subject.id)).targetOf(AnchoredTo.AnchoredTo));
|
|
55
49
|
const anchors = objectsAnchoredTo
|
|
56
50
|
.toSorted((a, b) => sort?.(a, b) ?? 0)
|
|
57
|
-
.filter((anchor) => Obj.instanceOf(
|
|
51
|
+
.filter((anchor) => Obj.instanceOf(Thread.Thread, Relation.getSource(anchor)))
|
|
58
52
|
.concat(drafts ?? []);
|
|
59
53
|
|
|
60
54
|
const attended = useAttended();
|
|
61
55
|
|
|
62
56
|
const handleAttend = useCallback(
|
|
63
|
-
(anchor: AnchoredTo) => {
|
|
64
|
-
const thread = Relation.getSource(anchor) as
|
|
65
|
-
const threadId =
|
|
57
|
+
(anchor: AnchoredTo.AnchoredTo) => {
|
|
58
|
+
const thread = Relation.getSource(anchor) as Thread.Thread;
|
|
59
|
+
const threadId = Obj.getDXN(thread).toString();
|
|
66
60
|
|
|
67
61
|
if (state.current !== threadId) {
|
|
68
62
|
state.current = threadId;
|
|
@@ -73,7 +67,7 @@ export const ThreadComplementary = ({ subject }: { subject: any }) => {
|
|
|
73
67
|
void dispatch(
|
|
74
68
|
createIntent(LayoutAction.ScrollIntoView, {
|
|
75
69
|
part: 'current',
|
|
76
|
-
subject:
|
|
70
|
+
subject: Obj.getDXN(subject).toString(),
|
|
77
71
|
options: {
|
|
78
72
|
cursor: anchor.anchor,
|
|
79
73
|
ref: threadId,
|
|
@@ -86,31 +80,68 @@ export const ThreadComplementary = ({ subject }: { subject: any }) => {
|
|
|
86
80
|
);
|
|
87
81
|
|
|
88
82
|
const handleComment = useCallback(
|
|
89
|
-
async (anchor: AnchoredTo, text: string) => {
|
|
83
|
+
async (anchor: AnchoredTo.AnchoredTo, text: string) => {
|
|
90
84
|
await dispatch(
|
|
91
|
-
createIntent(ThreadAction.AddMessage, {
|
|
85
|
+
createIntent(ThreadAction.AddMessage, {
|
|
86
|
+
anchor,
|
|
87
|
+
subject,
|
|
88
|
+
sender: { identityDid: identity?.did },
|
|
89
|
+
text,
|
|
90
|
+
}),
|
|
92
91
|
);
|
|
93
92
|
|
|
94
|
-
const thread = Relation.getSource(anchor) as
|
|
95
|
-
state.current =
|
|
93
|
+
const thread = Relation.getSource(anchor) as Thread.Thread;
|
|
94
|
+
state.current = Obj.getDXN(thread).toString();
|
|
96
95
|
},
|
|
97
96
|
[dispatch, identity, subject],
|
|
98
97
|
);
|
|
99
98
|
|
|
100
99
|
const handleResolve = useCallback(
|
|
101
|
-
(anchor: AnchoredTo) =>
|
|
102
|
-
dispatch(
|
|
100
|
+
(anchor: AnchoredTo.AnchoredTo) =>
|
|
101
|
+
dispatch(
|
|
102
|
+
createIntent(ThreadAction.ToggleResolved, {
|
|
103
|
+
thread: Relation.getSource(anchor) as Thread.Thread,
|
|
104
|
+
}),
|
|
105
|
+
),
|
|
103
106
|
[dispatch],
|
|
104
107
|
);
|
|
105
108
|
|
|
106
109
|
const handleThreadDelete = useCallback(
|
|
107
|
-
(anchor: AnchoredTo) => dispatch(createIntent(ThreadAction.Delete, { anchor, subject })),
|
|
110
|
+
(anchor: AnchoredTo.AnchoredTo) => dispatch(createIntent(ThreadAction.Delete, { anchor, subject })),
|
|
108
111
|
[dispatch, subject],
|
|
109
112
|
);
|
|
110
113
|
|
|
111
114
|
const handleMessageDelete = useCallback(
|
|
112
|
-
(anchor: AnchoredTo, messageId: string) =>
|
|
113
|
-
dispatch(
|
|
115
|
+
(anchor: AnchoredTo.AnchoredTo, messageId: string) =>
|
|
116
|
+
dispatch(
|
|
117
|
+
createIntent(ThreadAction.DeleteMessage, {
|
|
118
|
+
anchor,
|
|
119
|
+
subject,
|
|
120
|
+
messageId,
|
|
121
|
+
}),
|
|
122
|
+
),
|
|
123
|
+
[dispatch, subject],
|
|
124
|
+
);
|
|
125
|
+
|
|
126
|
+
const handleAcceptProposal = useCallback<NonNullable<CommentsContainerProps['onAcceptProposal']>>(
|
|
127
|
+
async (anchor, messageId) => {
|
|
128
|
+
const thread = Relation.getSource(anchor) as Thread.Thread;
|
|
129
|
+
const messageIndex = thread.messages.findIndex(Ref.hasObjectId(messageId));
|
|
130
|
+
const message = thread.messages[messageIndex]?.target;
|
|
131
|
+
const proposal = message?.blocks.find((block) => block._tag === 'proposal');
|
|
132
|
+
if (!proposal || !anchor.anchor) {
|
|
133
|
+
return;
|
|
134
|
+
}
|
|
135
|
+
|
|
136
|
+
await dispatch(
|
|
137
|
+
createIntent(CollaborationActions.AcceptProposal, {
|
|
138
|
+
subject,
|
|
139
|
+
anchor: anchor.anchor,
|
|
140
|
+
proposal,
|
|
141
|
+
}),
|
|
142
|
+
);
|
|
143
|
+
await dispatch(createIntent(ThreadAction.ToggleResolved, { thread }));
|
|
144
|
+
},
|
|
114
145
|
[dispatch, subject],
|
|
115
146
|
);
|
|
116
147
|
|
|
@@ -124,6 +155,7 @@ export const ThreadComplementary = ({ subject }: { subject: any }) => {
|
|
|
124
155
|
onResolve={handleResolve}
|
|
125
156
|
onMessageDelete={handleMessageDelete}
|
|
126
157
|
onThreadDelete={handleThreadDelete}
|
|
158
|
+
onAcceptProposal={handleAcceptProposal}
|
|
127
159
|
/>
|
|
128
160
|
);
|
|
129
161
|
|
|
@@ -132,10 +164,13 @@ export const ThreadComplementary = ({ subject }: { subject: any }) => {
|
|
|
132
164
|
<Tabs.Root
|
|
133
165
|
value={showResolvedThreads ? 'all' : 'unresolved'}
|
|
134
166
|
orientation='horizontal'
|
|
135
|
-
classNames=
|
|
167
|
+
classNames={[
|
|
168
|
+
'contents [&_[role="tabpanel"]]:min-bs-0 [&_[role="tabpanel"]]:overflow-y-auto [&_[role="tabpanel"]]:scrollbar-thin',
|
|
169
|
+
]}
|
|
136
170
|
onValueChange={onChangeViewState}
|
|
137
171
|
>
|
|
138
|
-
|
|
172
|
+
{/* TODO(burdon): Standardize (like Tollbar). */}
|
|
173
|
+
<Tabs.Tablist classNames={mx('bg-toolbarSurface border-be border-subduedSeparator')}>
|
|
139
174
|
<Tabs.Tab value='unresolved' classNames='text-sm'>
|
|
140
175
|
{t('show unresolved label')}
|
|
141
176
|
</Tabs.Tab>
|
|
@@ -143,8 +178,10 @@ export const ThreadComplementary = ({ subject }: { subject: any }) => {
|
|
|
143
178
|
{t('show all label')}
|
|
144
179
|
</Tabs.Tab>
|
|
145
180
|
</Tabs.Tablist>
|
|
146
|
-
<
|
|
147
|
-
|
|
181
|
+
<div className='overflow-y-auto'>
|
|
182
|
+
<Tabs.Tabpanel value='all'>{showResolvedThreads && comments}</Tabs.Tabpanel>
|
|
183
|
+
<Tabs.Tabpanel value='unresolved'>{!showResolvedThreads && comments}</Tabs.Tabpanel>
|
|
184
|
+
</div>
|
|
148
185
|
</Tabs.Root>
|
|
149
186
|
</StackItem.Content>
|
|
150
187
|
);
|
|
@@ -4,14 +4,13 @@
|
|
|
4
4
|
|
|
5
5
|
import React from 'react';
|
|
6
6
|
|
|
7
|
-
|
|
8
|
-
import {
|
|
7
|
+
import { useTranslation } from '@dxos/react-ui';
|
|
8
|
+
import { ControlPage } from '@dxos/react-ui-form';
|
|
9
9
|
|
|
10
|
-
|
|
10
|
+
import { meta } from '../meta';
|
|
11
11
|
import type { ThreadSettingsProps } from '../types';
|
|
12
12
|
|
|
13
|
-
export const ThreadSettings = ({ settings }: { settings: ThreadSettingsProps }) => {
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
return <DeprecatedFormContainer></DeprecatedFormContainer>;
|
|
13
|
+
export const ThreadSettings = ({ settings: _settings }: { settings: ThreadSettingsProps }) => {
|
|
14
|
+
const { t: _t } = useTranslation(meta.id);
|
|
15
|
+
return <ControlPage></ControlPage>;
|
|
17
16
|
};
|
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// Copyright 2024 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import { HighlightStyle, StreamLanguage, syntaxHighlighting } from '@codemirror/language';
|
|
6
6
|
import { type Extension } from '@codemirror/state';
|
|
7
7
|
|
|
8
8
|
import { tags } from '@dxos/react-ui-editor';
|
|
@@ -27,7 +27,10 @@ const parser = StreamLanguage.define<{ count: number }>({
|
|
|
27
27
|
});
|
|
28
28
|
|
|
29
29
|
const styles = HighlightStyle.define([
|
|
30
|
-
{
|
|
30
|
+
{
|
|
31
|
+
tag: tags.tagName,
|
|
32
|
+
class: mx('dx-tag dx-tag--indigo text-baseText font-medium'),
|
|
33
|
+
},
|
|
31
34
|
]);
|
|
32
35
|
|
|
33
36
|
export const command: Extension = [parser, syntaxHighlighting(styles)];
|
package/src/components/index.ts
CHANGED
|
@@ -4,9 +4,6 @@
|
|
|
4
4
|
|
|
5
5
|
import { lazy } from 'react';
|
|
6
6
|
|
|
7
|
-
export const ChannelContainer = lazy(() => import('./ChannelContainer'));
|
|
8
|
-
export const ChatContainer = lazy(() => import('./ChatContainer'));
|
|
9
|
-
|
|
10
7
|
// TODO(wittjosiah): Suspense boundary for sidebar?
|
|
11
8
|
export * from './Call';
|
|
12
9
|
export * from './CallDebugPanel';
|
|
@@ -14,5 +11,8 @@ export * from './CallSidebar';
|
|
|
14
11
|
export * from './CommentsContainer';
|
|
15
12
|
export * from './CommentsThreadContainer';
|
|
16
13
|
export * from './MessageContainer';
|
|
17
|
-
export * from './
|
|
14
|
+
export * from './ThreadCompanion';
|
|
18
15
|
export * from './ThreadSettings';
|
|
16
|
+
|
|
17
|
+
export const ChannelContainer = lazy(() => import('./ChannelContainer'));
|
|
18
|
+
export const ChatContainer = lazy(() => import('./ChatContainer'));
|
|
@@ -6,16 +6,15 @@ import { Obj, Ref } from '@dxos/echo';
|
|
|
6
6
|
import { IdentityDid } from '@dxos/keys';
|
|
7
7
|
import { faker } from '@dxos/random';
|
|
8
8
|
import { type Identity } from '@dxos/react-client/halo';
|
|
9
|
-
import {
|
|
9
|
+
import { Message, Thread } from '@dxos/types';
|
|
10
10
|
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
return Obj.make(ThreadType, {
|
|
11
|
+
export const createCommentThread = (identity: Identity): Thread.Thread => {
|
|
12
|
+
return Thread.make({
|
|
13
|
+
name: 'Comment',
|
|
15
14
|
messages: faker.helpers.multiple(
|
|
16
15
|
() =>
|
|
17
16
|
Ref.make(
|
|
18
|
-
Obj.make(
|
|
17
|
+
Obj.make(Message.Message, {
|
|
19
18
|
created: new Date().toISOString(),
|
|
20
19
|
sender: {
|
|
21
20
|
identityDid: faker.datatype.boolean() ? identity.did : IdentityDid.random(),
|
|
@@ -25,5 +24,26 @@ export const createCommentThread = (identity: Identity): ThreadType => {
|
|
|
25
24
|
),
|
|
26
25
|
{ count: { min: 2, max: 3 } },
|
|
27
26
|
),
|
|
27
|
+
status: 'active',
|
|
28
|
+
});
|
|
29
|
+
};
|
|
30
|
+
|
|
31
|
+
export const createProposalThread = (identity: Identity): Thread.Thread => {
|
|
32
|
+
return Thread.make({
|
|
33
|
+
name: 'Proposal',
|
|
34
|
+
messages: faker.helpers.multiple(
|
|
35
|
+
() =>
|
|
36
|
+
Ref.make(
|
|
37
|
+
Obj.make(Message.Message, {
|
|
38
|
+
created: new Date().toISOString(),
|
|
39
|
+
sender: {
|
|
40
|
+
identityDid: faker.datatype.boolean() ? identity.did : IdentityDid.random(),
|
|
41
|
+
},
|
|
42
|
+
blocks: [{ _tag: 'proposal', text: faker.lorem.sentences(3) }],
|
|
43
|
+
}),
|
|
44
|
+
),
|
|
45
|
+
{ count: { min: 1, max: 1 } },
|
|
46
|
+
),
|
|
47
|
+
status: 'active',
|
|
28
48
|
});
|
|
29
49
|
};
|