@dxos/plugin-thread 0.8.4-main.ae835ea → 0.8.4-main.bc674ce
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/app-graph-builder-7C2QW32W.mjs +188 -0
- package/dist/lib/browser/app-graph-builder-7C2QW32W.mjs.map +7 -0
- package/dist/lib/browser/blueprint-definition-UQ63QKQG.mjs +17 -0
- package/dist/lib/browser/blueprint-definition-UQ63QKQG.mjs.map +7 -0
- package/dist/lib/browser/blueprints/index.mjs +8 -0
- package/dist/lib/browser/call-manager-4P536YNX.mjs +26 -0
- package/dist/lib/browser/call-manager-4P536YNX.mjs.map +7 -0
- package/dist/lib/browser/chunk-2FIHSX35.mjs +293 -0
- package/dist/lib/browser/chunk-2FIHSX35.mjs.map +7 -0
- package/dist/lib/browser/{chunk-HDEQRBOC.mjs → chunk-DLO2G3DM.mjs} +79 -76
- package/dist/lib/browser/chunk-DLO2G3DM.mjs.map +7 -0
- package/dist/lib/browser/{chunk-US5ZQYC3.mjs → chunk-ERK254BS.mjs} +78 -61
- package/dist/lib/browser/chunk-ERK254BS.mjs.map +7 -0
- package/dist/lib/browser/{chunk-XYUJXHYV.mjs → chunk-ISCHODBV.mjs} +1 -1
- package/dist/lib/browser/{chunk-XYUJXHYV.mjs.map → chunk-ISCHODBV.mjs.map} +2 -2
- package/dist/lib/browser/chunk-J5LGTIGS.mjs +10 -0
- package/dist/lib/browser/chunk-YSHXWAL3.mjs +1815 -0
- package/dist/lib/browser/chunk-YSHXWAL3.mjs.map +7 -0
- package/dist/lib/browser/chunk-ZFLSTQSE.mjs +106 -0
- package/dist/lib/browser/chunk-ZFLSTQSE.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +121 -114
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/markdown-QMJLRR6R.mjs +210 -0
- package/dist/lib/browser/markdown-QMJLRR6R.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/operation-resolver-T63EP5TY.mjs +441 -0
- package/dist/lib/browser/operation-resolver-T63EP5TY.mjs.map +7 -0
- package/dist/lib/browser/react-root-56MJI77R.mjs +25 -0
- package/dist/lib/browser/react-root-56MJI77R.mjs.map +7 -0
- package/dist/lib/browser/{react-surface-IC576W2W.mjs → react-surface-DMBHQOXJ.mjs} +43 -42
- package/dist/lib/browser/react-surface-DMBHQOXJ.mjs.map +7 -0
- package/dist/lib/browser/repair-6OZ75AUU.mjs +38 -0
- package/dist/lib/browser/repair-6OZ75AUU.mjs.map +7 -0
- package/dist/lib/browser/settings-WZMJMML3.mjs +32 -0
- package/dist/lib/browser/settings-WZMJMML3.mjs.map +7 -0
- package/dist/lib/browser/state-SJR2GL5G.mjs +24 -0
- package/dist/lib/browser/state-SJR2GL5G.mjs.map +7 -0
- package/dist/lib/browser/types/index.mjs +7 -7
- package/dist/lib/node-esm/app-graph-builder-JCSVFRVY.mjs +189 -0
- package/dist/lib/node-esm/app-graph-builder-JCSVFRVY.mjs.map +7 -0
- package/dist/lib/node-esm/blueprint-definition-MZZXXL37.mjs +18 -0
- package/dist/lib/node-esm/blueprint-definition-MZZXXL37.mjs.map +7 -0
- package/dist/lib/node-esm/blueprints/index.mjs +9 -0
- package/dist/lib/node-esm/call-manager-FMLRR5S5.mjs +27 -0
- package/dist/lib/node-esm/call-manager-FMLRR5S5.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-7XQLXMX7.mjs +1816 -0
- package/dist/lib/node-esm/chunk-7XQLXMX7.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-AQHPP6ZX.mjs +107 -0
- package/dist/lib/node-esm/chunk-AQHPP6ZX.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
- package/dist/lib/node-esm/{chunk-2MMJF7DW.mjs → chunk-KRBZBJRI.mjs} +79 -76
- package/dist/lib/node-esm/chunk-KRBZBJRI.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-KGYDYYKJ.mjs → chunk-QP3KQOPQ.mjs} +78 -61
- package/dist/lib/node-esm/chunk-QP3KQOPQ.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-2V3WSLUZ.mjs → chunk-VBI32FGI.mjs} +1 -1
- package/dist/lib/node-esm/{chunk-2V3WSLUZ.mjs.map → chunk-VBI32FGI.mjs.map} +2 -2
- package/dist/lib/node-esm/chunk-WMWUXWAS.mjs +294 -0
- package/dist/lib/node-esm/chunk-WMWUXWAS.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +121 -114
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/markdown-L6LLQLIN.mjs +211 -0
- package/dist/lib/node-esm/markdown-L6LLQLIN.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/operation-resolver-G6GZPBRP.mjs +442 -0
- package/dist/lib/node-esm/operation-resolver-G6GZPBRP.mjs.map +7 -0
- package/dist/lib/node-esm/react-root-V4W4X5GL.mjs +26 -0
- package/dist/lib/node-esm/react-root-V4W4X5GL.mjs.map +7 -0
- package/dist/lib/node-esm/{react-surface-O4LGTAZ3.mjs → react-surface-ELDSTUA3.mjs} +43 -42
- package/dist/lib/node-esm/react-surface-ELDSTUA3.mjs.map +7 -0
- package/dist/lib/node-esm/repair-6777EPOM.mjs +39 -0
- package/dist/lib/node-esm/repair-6777EPOM.mjs.map +7 -0
- package/dist/lib/node-esm/settings-37CO3SNR.mjs +33 -0
- package/dist/lib/node-esm/settings-37CO3SNR.mjs.map +7 -0
- package/dist/lib/node-esm/state-5R3TZJQE.mjs +25 -0
- package/dist/lib/node-esm/state-5R3TZJQE.mjs.map +7 -0
- package/dist/lib/node-esm/types/index.mjs +7 -7
- package/dist/types/src/ThreadPlugin.d.ts +2 -1
- package/dist/types/src/ThreadPlugin.d.ts.map +1 -1
- package/dist/types/src/blueprints/index.d.ts +2 -0
- package/dist/types/src/blueprints/index.d.ts.map +1 -0
- package/dist/types/src/blueprints/thread-blueprint.d.ts +21 -0
- package/dist/types/src/blueprints/thread-blueprint.d.ts.map +1 -0
- package/dist/types/src/calls/call-manager.d.ts +40 -30
- package/dist/types/src/calls/call-manager.d.ts.map +1 -1
- package/dist/types/src/calls/call-swarm-synchronizer.d.ts +2 -2
- 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/util/calls-service.d.ts +1 -1
- package/dist/types/src/calls/util/calls-service.d.ts.map +1 -1
- package/dist/types/src/calls/util/task-scheduling.d.ts +2 -2
- package/dist/types/src/calls/util/task-scheduling.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts +6 -0
- package/dist/types/src/capabilities/app-graph-builder/app-graph-builder.d.ts.map +1 -0
- package/dist/types/src/capabilities/app-graph-builder/index.d.ts +3 -0
- package/dist/types/src/capabilities/app-graph-builder/index.d.ts.map +1 -0
- package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts +9 -0
- package/dist/types/src/capabilities/blueprint-definition/blueprint-definition.d.ts.map +1 -0
- package/dist/types/src/capabilities/blueprint-definition/index.d.ts +3 -0
- package/dist/types/src/capabilities/blueprint-definition/index.d.ts.map +1 -0
- package/dist/types/src/capabilities/call-manager/call-manager.d.ts +6 -0
- package/dist/types/src/capabilities/call-manager/call-manager.d.ts.map +1 -0
- package/dist/types/src/capabilities/call-manager/index.d.ts +3 -0
- package/dist/types/src/capabilities/call-manager/index.d.ts.map +1 -0
- package/dist/types/src/capabilities/index.d.ts +10 -16
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/markdown/index.d.ts +3 -0
- package/dist/types/src/capabilities/markdown/index.d.ts.map +1 -0
- package/dist/types/src/capabilities/markdown/markdown.d.ts +5 -0
- package/dist/types/src/capabilities/markdown/markdown.d.ts.map +1 -0
- package/dist/types/src/capabilities/operation-resolver/index.d.ts +3 -0
- package/dist/types/src/capabilities/operation-resolver/index.d.ts.map +1 -0
- package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts +5 -0
- package/dist/types/src/capabilities/operation-resolver/operation-resolver.d.ts.map +1 -0
- package/dist/types/src/capabilities/react-root/index.d.ts +6 -0
- package/dist/types/src/capabilities/react-root/index.d.ts.map +1 -0
- package/dist/types/src/capabilities/react-root/react-root.d.ts +9 -0
- package/dist/types/src/capabilities/react-root/react-root.d.ts.map +1 -0
- package/dist/types/src/capabilities/react-surface/index.d.ts +3 -0
- package/dist/types/src/capabilities/react-surface/index.d.ts.map +1 -0
- package/dist/types/src/capabilities/react-surface/react-surface.d.ts +5 -0
- package/dist/types/src/capabilities/react-surface/react-surface.d.ts.map +1 -0
- package/dist/types/src/capabilities/repair/index.d.ts +3 -0
- package/dist/types/src/capabilities/repair/index.d.ts.map +1 -0
- package/dist/types/src/capabilities/repair/repair.d.ts +6 -0
- package/dist/types/src/capabilities/repair/repair.d.ts.map +1 -0
- package/dist/types/src/capabilities/settings/index.d.ts +3 -0
- package/dist/types/src/capabilities/settings/index.d.ts.map +1 -0
- package/dist/types/src/capabilities/settings/settings.d.ts +5 -0
- package/dist/types/src/capabilities/settings/settings.d.ts.map +1 -0
- package/dist/types/src/capabilities/state/index.d.ts +3 -0
- package/dist/types/src/capabilities/state/index.d.ts.map +1 -0
- package/dist/types/src/capabilities/state/state.d.ts +7 -0
- package/dist/types/src/capabilities/state/state.d.ts.map +1 -0
- package/dist/types/src/components/Call/Call.d.ts.map +1 -1
- package/dist/types/src/components/Call/Toolbar.d.ts.map +1 -1
- 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 +4 -5
- package/dist/types/src/components/ChannelContainer.d.ts.map +1 -1
- package/dist/types/src/components/ChannelContainer.stories.d.ts +6 -2
- package/dist/types/src/components/ChannelContainer.stories.d.ts.map +1 -1
- package/dist/types/src/components/Chat.stories.d.ts +5 -1
- package/dist/types/src/components/Chat.stories.d.ts.map +1 -1
- package/dist/types/src/components/ChatContainer.d.ts +2 -2
- package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
- package/dist/types/src/components/Comments.stories.d.ts +5 -1
- 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/Lobby/Lobby.d.ts.map +1 -1
- package/dist/types/src/components/Media/VideoObject.d.ts +1 -1
- package/dist/types/src/components/Media/VideoObject.stories.d.ts +1 -1
- package/dist/types/src/components/MessageContainer.d.ts +4 -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/ResponsiveGrid/ResponsiveContainer.stories.d.ts +5 -1
- package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts.map +1 -1
- package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts +5 -1
- 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 +4 -2
- 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 +1 -1
- package/dist/types/src/components/testing.d.ts.map +1 -1
- package/dist/types/src/extensions/threads.d.ts +7 -2
- 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 -3
- 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/index.d.ts +1 -1
- package/dist/types/src/index.d.ts.map +1 -1
- package/dist/types/src/meta.d.ts +2 -2
- package/dist/types/src/meta.d.ts.map +1 -1
- package/dist/types/src/testing/stories.d.ts +2 -1
- package/dist/types/src/testing/stories.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +5 -1
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/Channel.d.ts +691 -12
- package/dist/types/src/types/Channel.d.ts.map +1 -1
- package/dist/types/src/types/capabilities.d.ts +23 -0
- package/dist/types/src/types/capabilities.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 +3216 -430
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +86 -65
- package/src/ThreadPlugin.tsx +56 -88
- package/src/blueprints/index.ts +5 -0
- package/src/blueprints/thread-blueprint.ts +32 -0
- package/src/calls/call-manager.ts +76 -52
- package/src/calls/call-swarm-synchronizer.ts +2 -2
- package/src/calls/media-manager.ts +10 -7
- package/src/calls/util/calls-service.ts +1 -1
- package/src/calls/util/stub-media-streams.ts +2 -2
- package/src/calls/util/task-scheduling.ts +4 -4
- package/src/capabilities/app-graph-builder/app-graph-builder.ts +201 -0
- package/src/capabilities/app-graph-builder/index.ts +7 -0
- package/src/capabilities/blueprint-definition/blueprint-definition.ts +23 -0
- package/src/capabilities/blueprint-definition/index.ts +7 -0
- package/src/capabilities/call-manager/call-manager.ts +26 -0
- package/src/capabilities/call-manager/index.ts +7 -0
- package/src/capabilities/index.ts +10 -13
- package/src/capabilities/markdown/index.ts +7 -0
- package/src/capabilities/markdown/markdown.ts +83 -0
- package/src/capabilities/operation-resolver/index.ts +7 -0
- package/src/capabilities/operation-resolver/operation-resolver.ts +400 -0
- package/src/capabilities/react-root/index.ts +7 -0
- package/src/capabilities/react-root/react-root.tsx +20 -0
- package/src/capabilities/react-surface/index.ts +7 -0
- package/src/capabilities/react-surface/react-surface.tsx +97 -0
- package/src/capabilities/repair/index.ts +7 -0
- package/src/capabilities/repair/repair.ts +51 -0
- package/src/capabilities/settings/index.ts +7 -0
- package/src/capabilities/settings/settings.ts +33 -0
- package/src/capabilities/state/index.ts +7 -0
- package/src/capabilities/state/state.ts +22 -0
- package/src/components/Call/Call.tsx +8 -4
- package/src/components/Call/Toolbar.tsx +31 -23
- package/src/components/CallDebugPanel.tsx +12 -14
- package/src/components/CallSidebar.tsx +5 -3
- package/src/components/ChannelContainer.stories.tsx +12 -10
- package/src/components/ChannelContainer.tsx +22 -19
- package/src/components/Chat.stories.tsx +9 -9
- package/src/components/ChatContainer.tsx +22 -21
- package/src/components/Comments.stories.tsx +25 -23
- package/src/components/CommentsContainer.tsx +4 -6
- package/src/components/CommentsThreadContainer.tsx +21 -22
- package/src/components/Lobby/Lobby.tsx +9 -7
- package/src/components/Media/AudioStream.tsx +2 -2
- package/src/components/Media/VideoObject.tsx +2 -2
- package/src/components/MessageContainer.tsx +59 -28
- package/src/components/Participant/Participant.tsx +32 -19
- package/src/components/ResponsiveGrid/ResponsiveContainer.tsx +3 -3
- package/src/components/ResponsiveGrid/ResponsiveGrid.stories.tsx +1 -1
- package/src/components/ResponsiveGrid/ResponsiveGrid.tsx +6 -6
- package/src/components/ResponsiveGrid/ResponsiveGridItem.tsx +6 -3
- package/src/components/{ThreadComplementary.tsx → ThreadCompanion.tsx} +79 -67
- package/src/components/ThreadSettings.tsx +6 -1
- package/src/components/command-extension.ts +2 -2
- package/src/components/index.ts +4 -7
- package/src/components/testing.ts +3 -5
- package/src/extensions/threads.ts +82 -38
- package/src/functions/create-proposals.ts +57 -0
- package/src/functions/index.ts +5 -0
- package/src/hooks/analytics.ts +21 -21
- package/src/hooks/index.ts +3 -2
- package/src/index.ts +1 -1
- package/src/meta.ts +2 -2
- package/src/testing/stories.ts +15 -11
- package/src/translations.ts +3 -1
- package/src/types/Channel.ts +13 -10
- package/src/types/capabilities.ts +34 -0
- package/src/types/index.ts +1 -1
- package/src/types/types.ts +163 -85
- package/dist/lib/browser/ChannelContainer-SVV4ZX5T.mjs +0 -16
- package/dist/lib/browser/ChatContainer-ALFWQ65B.mjs +0 -15
- package/dist/lib/browser/app-graph-builder-ACBXRBOS.mjs +0 -171
- package/dist/lib/browser/app-graph-builder-ACBXRBOS.mjs.map +0 -7
- package/dist/lib/browser/call-manager-P3MYR2JS.mjs +0 -24
- package/dist/lib/browser/call-manager-P3MYR2JS.mjs.map +0 -7
- package/dist/lib/browser/chunk-6CUDBEYP.mjs +0 -377
- package/dist/lib/browser/chunk-6CUDBEYP.mjs.map +0 -7
- package/dist/lib/browser/chunk-BBTXGRIR.mjs +0 -18
- package/dist/lib/browser/chunk-BBTXGRIR.mjs.map +0 -7
- package/dist/lib/browser/chunk-DJOUMWEL.mjs +0 -988
- package/dist/lib/browser/chunk-DJOUMWEL.mjs.map +0 -7
- package/dist/lib/browser/chunk-HDEQRBOC.mjs.map +0 -7
- package/dist/lib/browser/chunk-IQSXEHOW.mjs +0 -618
- package/dist/lib/browser/chunk-IQSXEHOW.mjs.map +0 -7
- package/dist/lib/browser/chunk-K2DUJRFJ.mjs +0 -27
- package/dist/lib/browser/chunk-K2DUJRFJ.mjs.map +0 -7
- package/dist/lib/browser/chunk-L6F2AG6W.mjs +0 -23
- package/dist/lib/browser/chunk-L6F2AG6W.mjs.map +0 -7
- package/dist/lib/browser/chunk-US5ZQYC3.mjs.map +0 -7
- package/dist/lib/browser/chunk-UTSLSZED.mjs +0 -178
- package/dist/lib/browser/chunk-UTSLSZED.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-5POQTZ24.mjs +0 -419
- package/dist/lib/browser/intent-resolver-5POQTZ24.mjs.map +0 -7
- package/dist/lib/browser/markdown-L7LDNF56.mjs +0 -169
- package/dist/lib/browser/markdown-L7LDNF56.mjs.map +0 -7
- package/dist/lib/browser/react-root-RCJLK4EP.mjs +0 -28
- package/dist/lib/browser/react-root-RCJLK4EP.mjs.map +0 -7
- package/dist/lib/browser/react-surface-IC576W2W.mjs.map +0 -7
- package/dist/lib/browser/settings-5FYGBOGI.mjs +0 -22
- package/dist/lib/browser/settings-5FYGBOGI.mjs.map +0 -7
- package/dist/lib/browser/state-36REWXO5.mjs +0 -34
- package/dist/lib/browser/state-36REWXO5.mjs.map +0 -7
- package/dist/lib/browser/toolkit-PXASLYEQ.mjs +0 -74
- package/dist/lib/browser/toolkit-PXASLYEQ.mjs.map +0 -7
- package/dist/lib/node-esm/ChannelContainer-63GMQ753.mjs +0 -17
- package/dist/lib/node-esm/ChatContainer-MFKPXMIK.mjs +0 -16
- package/dist/lib/node-esm/app-graph-builder-JXD7KY3G.mjs +0 -172
- package/dist/lib/node-esm/app-graph-builder-JXD7KY3G.mjs.map +0 -7
- package/dist/lib/node-esm/call-manager-FCEFP7EJ.mjs +0 -25
- package/dist/lib/node-esm/call-manager-FCEFP7EJ.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-2MMJF7DW.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-AFDO2SUZ.mjs +0 -25
- package/dist/lib/node-esm/chunk-AFDO2SUZ.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-KGYDYYKJ.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-NWUUMKVQ.mjs +0 -378
- package/dist/lib/node-esm/chunk-NWUUMKVQ.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-Q7AKKZNY.mjs +0 -619
- package/dist/lib/node-esm/chunk-Q7AKKZNY.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-QCQAAU6J.mjs +0 -989
- package/dist/lib/node-esm/chunk-QCQAAU6J.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-TYLLHI46.mjs +0 -179
- package/dist/lib/node-esm/chunk-TYLLHI46.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-XI45H4IV.mjs +0 -28
- package/dist/lib/node-esm/chunk-XI45H4IV.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-ZQAGII7M.mjs +0 -19
- package/dist/lib/node-esm/chunk-ZQAGII7M.mjs.map +0 -7
- package/dist/lib/node-esm/intent-resolver-63NV3XD2.mjs +0 -420
- package/dist/lib/node-esm/intent-resolver-63NV3XD2.mjs.map +0 -7
- package/dist/lib/node-esm/markdown-ZQW7MI5U.mjs +0 -170
- package/dist/lib/node-esm/markdown-ZQW7MI5U.mjs.map +0 -7
- package/dist/lib/node-esm/react-root-4IDB2SN2.mjs +0 -29
- package/dist/lib/node-esm/react-root-4IDB2SN2.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-O4LGTAZ3.mjs.map +0 -7
- package/dist/lib/node-esm/settings-EOBQUZSW.mjs +0 -23
- package/dist/lib/node-esm/settings-EOBQUZSW.mjs.map +0 -7
- package/dist/lib/node-esm/state-X3W67GTL.mjs +0 -35
- package/dist/lib/node-esm/state-X3W67GTL.mjs.map +0 -7
- package/dist/lib/node-esm/toolkit-X2KA4FNC.mjs +0 -75
- package/dist/lib/node-esm/toolkit-X2KA4FNC.mjs.map +0 -7
- package/dist/types/src/capabilities/app-graph-builder.d.ts +0 -4
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +0 -1
- package/dist/types/src/capabilities/call-manager.d.ts +0 -5
- package/dist/types/src/capabilities/call-manager.d.ts.map +0 -1
- package/dist/types/src/capabilities/capabilities.d.ts +0 -27
- package/dist/types/src/capabilities/capabilities.d.ts.map +0 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts +0 -4
- package/dist/types/src/capabilities/intent-resolver.d.ts.map +0 -1
- package/dist/types/src/capabilities/markdown.d.ts +0 -4
- package/dist/types/src/capabilities/markdown.d.ts.map +0 -1
- package/dist/types/src/capabilities/react-root.d.ts +0 -7
- package/dist/types/src/capabilities/react-root.d.ts.map +0 -1
- package/dist/types/src/capabilities/react-surface.d.ts +0 -4
- package/dist/types/src/capabilities/react-surface.d.ts.map +0 -1
- package/dist/types/src/capabilities/settings.d.ts +0 -4
- package/dist/types/src/capabilities/settings.d.ts.map +0 -1
- package/dist/types/src/capabilities/state.d.ts +0 -7
- package/dist/types/src/capabilities/state.d.ts.map +0 -1
- package/dist/types/src/capabilities/toolkit.d.ts +0 -24
- 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/Thread.d.ts +0 -167
- package/dist/types/src/types/Thread.d.ts.map +0 -1
- package/src/capabilities/app-graph-builder.ts +0 -186
- package/src/capabilities/call-manager.ts +0 -20
- package/src/capabilities/capabilities.ts +0 -33
- package/src/capabilities/intent-resolver.ts +0 -344
- package/src/capabilities/markdown.ts +0 -69
- package/src/capabilities/react-root.tsx +0 -17
- package/src/capabilities/react-surface.tsx +0 -89
- package/src/capabilities/settings.ts +0 -19
- package/src/capabilities/state.ts +0 -26
- package/src/capabilities/toolkit.ts +0 -85
- package/src/types/Thread.ts +0 -26
- /package/dist/lib/browser/{ChannelContainer-SVV4ZX5T.mjs.map → blueprints/index.mjs.map} +0 -0
- /package/dist/lib/browser/{ChatContainer-ALFWQ65B.mjs.map → chunk-J5LGTIGS.mjs.map} +0 -0
- /package/dist/lib/node-esm/{ChannelContainer-63GMQ753.mjs.map → blueprints/index.mjs.map} +0 -0
- /package/dist/lib/node-esm/{ChatContainer-MFKPXMIK.mjs.map → chunk-HSLMI22Q.mjs.map} +0 -0
|
@@ -4,18 +4,16 @@
|
|
|
4
4
|
|
|
5
5
|
import React, { useEffect } from 'react';
|
|
6
6
|
|
|
7
|
-
import { Relation } from '@dxos/echo';
|
|
8
|
-
import { fullyQualifiedId } from '@dxos/react-client/echo';
|
|
7
|
+
import { Obj, Relation } from '@dxos/echo';
|
|
9
8
|
import { Callout, Icon, Trans, useTranslation } from '@dxos/react-ui';
|
|
10
|
-
import { type AnchoredTo } from '@dxos/
|
|
9
|
+
import { type AnchoredTo, type Thread } from '@dxos/types';
|
|
11
10
|
|
|
12
11
|
import { meta } from '../meta';
|
|
13
|
-
import { type Thread } from '../types';
|
|
14
12
|
|
|
15
13
|
import { CommentsThreadContainer, type CommentsThreadContainerProps } from './CommentsThreadContainer';
|
|
16
14
|
|
|
17
15
|
export type CommentsContainerProps = Omit<CommentsThreadContainerProps, 'anchor' | 'current'> & {
|
|
18
|
-
anchors: AnchoredTo[];
|
|
16
|
+
anchors: AnchoredTo.AnchoredTo[];
|
|
19
17
|
currentId?: string;
|
|
20
18
|
showResolvedThreads?: boolean;
|
|
21
19
|
};
|
|
@@ -64,7 +62,7 @@ export const CommentsContainer = ({ anchors, currentId, showResolvedThreads, ...
|
|
|
64
62
|
<div>
|
|
65
63
|
{filteredAnchors.map((anchor) => {
|
|
66
64
|
const thread = Relation.getSource(anchor) as Thread.Thread;
|
|
67
|
-
const threadId =
|
|
65
|
+
const threadId = Obj.getDXN(thread).toString();
|
|
68
66
|
return <CommentsThreadContainer key={threadId} anchor={anchor} current={currentId === threadId} {...props} />;
|
|
69
67
|
})}
|
|
70
68
|
</div>
|
|
@@ -4,37 +4,36 @@
|
|
|
4
4
|
|
|
5
5
|
import React, { useCallback, useMemo, useRef, useState } from 'react';
|
|
6
6
|
|
|
7
|
-
import {
|
|
8
|
-
import {
|
|
7
|
+
import { Obj, Relation } from '@dxos/echo';
|
|
8
|
+
import { useObject } from '@dxos/echo-react';
|
|
9
|
+
import { getSpace, useMembers } from '@dxos/react-client/echo';
|
|
9
10
|
import { useIdentity } from '@dxos/react-client/halo';
|
|
10
11
|
import { IconButton, Tag, Tooltip, useThemeContext, useTranslation } from '@dxos/react-ui';
|
|
11
|
-
import { createBasicExtensions, createThemeExtensions, listener } from '@dxos/react-ui-editor';
|
|
12
|
-
import { hoverableControlItem, hoverableControls, hoverableFocusedWithinControls, mx } from '@dxos/react-ui-theme';
|
|
13
12
|
import {
|
|
14
13
|
MessageTextbox,
|
|
15
14
|
type MessageTextboxProps,
|
|
16
15
|
Thread as ThreadComponent,
|
|
17
16
|
type ThreadRootProps,
|
|
18
17
|
} from '@dxos/react-ui-thread';
|
|
19
|
-
import { type AnchoredTo } from '@dxos/
|
|
20
|
-
import {
|
|
18
|
+
import { type AnchoredTo, type Thread } from '@dxos/types';
|
|
19
|
+
import { createBasicExtensions, createThemeExtensions, listener } from '@dxos/ui-editor';
|
|
20
|
+
import { hoverableControlItem, hoverableControls, hoverableFocusedWithinControls, mx } from '@dxos/ui-theme';
|
|
21
21
|
|
|
22
22
|
import { useStatus } from '../hooks';
|
|
23
23
|
import { meta } from '../meta';
|
|
24
|
-
import { type Thread } from '../types';
|
|
25
24
|
import { getMessageMetadata } from '../util';
|
|
26
25
|
|
|
27
26
|
import { command } from './command-extension';
|
|
28
27
|
import { MessageContainer, buttonClassNames, buttonGroupClassNames } from './MessageContainer';
|
|
29
28
|
|
|
30
29
|
export type CommentsThreadContainerProps = {
|
|
31
|
-
anchor: AnchoredTo;
|
|
32
|
-
onAttend?: (anchor: AnchoredTo) => void;
|
|
33
|
-
onComment?: (anchor: AnchoredTo, message: string) => void;
|
|
34
|
-
onResolve?: (anchor: AnchoredTo) => void;
|
|
35
|
-
onMessageDelete?: (anchor: AnchoredTo, messageId: string) => void;
|
|
36
|
-
onThreadDelete?: (anchor: AnchoredTo) => void;
|
|
37
|
-
onAcceptProposal?: (anchor: AnchoredTo, messageId: string) => void;
|
|
30
|
+
anchor: AnchoredTo.AnchoredTo;
|
|
31
|
+
onAttend?: (anchor: AnchoredTo.AnchoredTo) => void;
|
|
32
|
+
onComment?: (anchor: AnchoredTo.AnchoredTo, message: string) => void;
|
|
33
|
+
onResolve?: (anchor: AnchoredTo.AnchoredTo) => void;
|
|
34
|
+
onMessageDelete?: (anchor: AnchoredTo.AnchoredTo, messageId: string) => void;
|
|
35
|
+
onThreadDelete?: (anchor: AnchoredTo.AnchoredTo) => void;
|
|
36
|
+
onAcceptProposal?: (anchor: AnchoredTo.AnchoredTo, messageId: string) => void;
|
|
38
37
|
} & Pick<ThreadRootProps, 'current'>;
|
|
39
38
|
|
|
40
39
|
export const CommentsThreadContainer = ({
|
|
@@ -51,13 +50,14 @@ export const CommentsThreadContainer = ({
|
|
|
51
50
|
const { t } = useTranslation(meta.id);
|
|
52
51
|
const identity = useIdentity()!;
|
|
53
52
|
const space = getSpace(anchor);
|
|
54
|
-
const members = useMembers(space?.
|
|
53
|
+
const members = useMembers(space?.id);
|
|
55
54
|
const detached = !anchor.anchor;
|
|
56
55
|
const thread = Relation.getSource(anchor) as Thread.Thread;
|
|
57
|
-
const
|
|
56
|
+
const [messages] = useObject(thread, 'messages');
|
|
57
|
+
const activity = useStatus(space, Obj.getDXN(thread).toString());
|
|
58
58
|
const threadScrollRef = useRef<HTMLDivElement | null>(null);
|
|
59
59
|
|
|
60
|
-
const textboxMetadata = getMessageMetadata(
|
|
60
|
+
const textboxMetadata = getMessageMetadata(Obj.getDXN(thread).toString(), identity);
|
|
61
61
|
|
|
62
62
|
// TODO(wittjosiah): This is a hack to reset the editor after a message is sent.
|
|
63
63
|
const [state, setState] = useState({});
|
|
@@ -97,7 +97,7 @@ export const CommentsThreadContainer = ({
|
|
|
97
97
|
|
|
98
98
|
return (
|
|
99
99
|
<ThreadComponent.Root
|
|
100
|
-
id={
|
|
100
|
+
id={Obj.getDXN(thread).toString()}
|
|
101
101
|
classNames='pbs-2 border-be border-subduedSeparator last:border-none'
|
|
102
102
|
current={current}
|
|
103
103
|
onClickCapture={handleAttend}
|
|
@@ -145,12 +145,11 @@ export const CommentsThreadContainer = ({
|
|
|
145
145
|
</div>
|
|
146
146
|
</div>
|
|
147
147
|
|
|
148
|
-
{
|
|
149
|
-
{Ref.Array.targets(thread.messages?.filter(isNonNullable) ?? []).map((message) => (
|
|
148
|
+
{messages?.map((ref) => (
|
|
150
149
|
<MessageContainer
|
|
151
|
-
key={
|
|
150
|
+
key={ref.dxn.toString()}
|
|
152
151
|
editable
|
|
153
|
-
message={
|
|
152
|
+
message={ref}
|
|
154
153
|
members={members}
|
|
155
154
|
onDelete={handleMessageDelete}
|
|
156
155
|
onAcceptProposal={handleAcceptProposal}
|
|
@@ -2,14 +2,15 @@
|
|
|
2
2
|
// Copyright 2024 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
+
import { useAtomValue } from '@effect-atom/atom-react';
|
|
5
6
|
import React, { type FC, type PropsWithChildren, useEffect, useState } from 'react';
|
|
6
7
|
|
|
7
|
-
import { useCapability } from '@dxos/app-framework';
|
|
8
|
+
import { useCapability } from '@dxos/app-framework/react';
|
|
8
9
|
import { type ThemedClassName, useTranslation } from '@dxos/react-ui';
|
|
9
|
-
import { mx } from '@dxos/
|
|
10
|
+
import { mx } from '@dxos/ui-theme';
|
|
10
11
|
|
|
11
|
-
import { ThreadCapabilities } from '../../capabilities';
|
|
12
12
|
import { meta } from '../../meta';
|
|
13
|
+
import { ThreadCapabilities } from '../../types';
|
|
13
14
|
import { Toolbar, type ToolbarProps } from '../Call';
|
|
14
15
|
import { VideoObject } from '../Media';
|
|
15
16
|
import { ResponsiveContainer } from '../ResponsiveGrid';
|
|
@@ -39,9 +40,10 @@ type LobbyPreviewProps = {};
|
|
|
39
40
|
const LobbyPreview: FC<LobbyPreviewProps> = () => {
|
|
40
41
|
const { t } = useTranslation(meta.id);
|
|
41
42
|
const call = useCapability(ThreadCapabilities.CallManager);
|
|
43
|
+
const media = useAtomValue(call.mediaAtom);
|
|
42
44
|
const [classNames, setClassNames] = useState('');
|
|
43
45
|
useEffect(() => {
|
|
44
|
-
if (!
|
|
46
|
+
if (!media.videoEnabled) {
|
|
45
47
|
setClassNames('');
|
|
46
48
|
return;
|
|
47
49
|
}
|
|
@@ -52,14 +54,14 @@ const LobbyPreview: FC<LobbyPreviewProps> = () => {
|
|
|
52
54
|
}, 500);
|
|
53
55
|
|
|
54
56
|
return () => clearTimeout(timeout);
|
|
55
|
-
}, [
|
|
57
|
+
}, [media.videoEnabled]);
|
|
56
58
|
|
|
57
59
|
return (
|
|
58
60
|
<div className='grid grow p-4'>
|
|
59
61
|
<ResponsiveContainer>
|
|
60
|
-
{(
|
|
62
|
+
{(media.videoEnabled && (
|
|
61
63
|
<VideoObject
|
|
62
|
-
videoStream={
|
|
64
|
+
videoStream={media.videoStream}
|
|
63
65
|
flip
|
|
64
66
|
muted
|
|
65
67
|
classNames={mx(
|
|
@@ -46,13 +46,13 @@ export const AudioStream: FC<AudioStreamProps> = ({ tracks }) => {
|
|
|
46
46
|
);
|
|
47
47
|
};
|
|
48
48
|
|
|
49
|
-
type
|
|
49
|
+
type AudioTrackParams = {
|
|
50
50
|
track: MediaStreamTrack;
|
|
51
51
|
mediaStream: MediaStream;
|
|
52
52
|
resetSrcObject: () => void;
|
|
53
53
|
};
|
|
54
54
|
|
|
55
|
-
const AudioTrack = ({ track, mediaStream, resetSrcObject }:
|
|
55
|
+
const AudioTrack = ({ track, mediaStream, resetSrcObject }: AudioTrackParams) => {
|
|
56
56
|
useEffect(() => {
|
|
57
57
|
const currentTrack = track;
|
|
58
58
|
mediaStream.addTrack(currentTrack);
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
import React, { type JSX, forwardRef, memo, useEffect, useRef } from 'react';
|
|
6
6
|
|
|
7
7
|
import { type ThemedClassName } from '@dxos/react-ui';
|
|
8
|
-
import { mx } from '@dxos/
|
|
8
|
+
import { mx } from '@dxos/ui-theme';
|
|
9
9
|
|
|
10
10
|
export type VideoObjectProps = Omit<JSX.IntrinsicElements['video'], 'className' | 'ref'> &
|
|
11
11
|
ThemedClassName<{
|
|
@@ -32,7 +32,7 @@ export const VideoObject = memo(
|
|
|
32
32
|
return (
|
|
33
33
|
<video
|
|
34
34
|
className={mx(
|
|
35
|
-
'
|
|
35
|
+
'is-full aspect-video',
|
|
36
36
|
flip && 'scale-x-[-1]',
|
|
37
37
|
contain ? 'object-contain' : 'object-cover',
|
|
38
38
|
classNames,
|
|
@@ -5,16 +5,19 @@
|
|
|
5
5
|
import { EditorView } from '@codemirror/view';
|
|
6
6
|
import React, { forwardRef, useCallback, useEffect, useRef, useState } from 'react';
|
|
7
7
|
|
|
8
|
-
import { Surface } from '@dxos/app-framework';
|
|
9
|
-
import { type Obj, Ref
|
|
8
|
+
import { Surface } from '@dxos/app-framework/react';
|
|
9
|
+
import { type Obj, Ref } from '@dxos/echo';
|
|
10
|
+
import { useObject } from '@dxos/echo-react';
|
|
10
11
|
import { PublicKey } from '@dxos/react-client';
|
|
11
12
|
import { type SpaceMember } from '@dxos/react-client/echo';
|
|
12
13
|
import { type Identity, useIdentity } from '@dxos/react-client/halo';
|
|
13
14
|
import { IconButton, useOnTransition, useThemeContext, useTranslation } from '@dxos/react-ui';
|
|
14
|
-
import {
|
|
15
|
-
import {
|
|
15
|
+
import { useTextEditor } from '@dxos/react-ui-editor';
|
|
16
|
+
import { Card } from '@dxos/react-ui-mosaic';
|
|
16
17
|
import { MessageHeading, MessageRoot } from '@dxos/react-ui-thread';
|
|
17
|
-
import { type
|
|
18
|
+
import { type ContentBlock, type Message } from '@dxos/types';
|
|
19
|
+
import { createBasicExtensions, createThemeExtensions } from '@dxos/ui-editor';
|
|
20
|
+
import { hoverableControlItem, hoverableControls, hoverableFocusedWithinControls, mx } from '@dxos/ui-theme';
|
|
18
21
|
|
|
19
22
|
import { useOnEditAnalytics } from '../hooks';
|
|
20
23
|
import { meta } from '../meta';
|
|
@@ -26,7 +29,7 @@ export const buttonGroupClassNames = 'flex flex-row items-center gap-0.5 pie-2';
|
|
|
26
29
|
export const buttonClassNames = '!p-1 transition-opacity';
|
|
27
30
|
|
|
28
31
|
export type MessageContainerProps = {
|
|
29
|
-
message:
|
|
32
|
+
message: Obj.Obj<Message.Message> | Ref.Ref<Obj.Obj<Message.Message>>;
|
|
30
33
|
members: SpaceMember[];
|
|
31
34
|
editable?: boolean;
|
|
32
35
|
onDelete?: (id: string) => void;
|
|
@@ -34,30 +37,55 @@ export type MessageContainerProps = {
|
|
|
34
37
|
};
|
|
35
38
|
|
|
36
39
|
export const MessageContainer = ({
|
|
37
|
-
message,
|
|
40
|
+
message: messageOrRef,
|
|
38
41
|
members,
|
|
39
42
|
editable = false,
|
|
40
43
|
onDelete,
|
|
41
44
|
onAcceptProposal,
|
|
42
45
|
}: MessageContainerProps) => {
|
|
43
46
|
const { t } = useTranslation(meta.id);
|
|
47
|
+
const [message, updateMessage] = useObject(messageOrRef);
|
|
48
|
+
const identity = useIdentity();
|
|
49
|
+
const [editing, setEditing] = useState(false);
|
|
50
|
+
|
|
51
|
+
const textBlockIndex = message?.blocks.findIndex((block) => block._tag === 'text') ?? -1;
|
|
52
|
+
|
|
53
|
+
const handleEdit = useCallback(() => setEditing((editing) => !editing), []);
|
|
54
|
+
const handleDelete = useCallback(() => message && onDelete?.(message.id), [message, onDelete]);
|
|
55
|
+
const handleAcceptProposal = useCallback(
|
|
56
|
+
() => message && onAcceptProposal?.(message.id),
|
|
57
|
+
[message, onAcceptProposal],
|
|
58
|
+
);
|
|
59
|
+
const handleTextBlockChange = useCallback(
|
|
60
|
+
(newText: string) => {
|
|
61
|
+
updateMessage((m) => {
|
|
62
|
+
const targetBlock = m.blocks[textBlockIndex];
|
|
63
|
+
if (targetBlock && targetBlock._tag === 'text') {
|
|
64
|
+
targetBlock.text = newText;
|
|
65
|
+
}
|
|
66
|
+
});
|
|
67
|
+
},
|
|
68
|
+
[updateMessage, textBlockIndex],
|
|
69
|
+
);
|
|
70
|
+
|
|
71
|
+
const textBlock =
|
|
72
|
+
message && textBlockIndex !== -1 ? (message.blocks[textBlockIndex] as ContentBlock.Text) : undefined;
|
|
73
|
+
useOnEditAnalytics(message, textBlock, !!editing);
|
|
74
|
+
|
|
75
|
+
if (!message) {
|
|
76
|
+
return null;
|
|
77
|
+
}
|
|
78
|
+
|
|
44
79
|
const senderIdentity = members.find(
|
|
45
80
|
(member) =>
|
|
46
81
|
(message.sender.identityDid && member.identity.did === message.sender.identityDid) ||
|
|
47
82
|
(message.sender.identityKey && PublicKey.equals(member.identity.identityKey, message.sender.identityKey)),
|
|
48
83
|
)?.identity;
|
|
49
84
|
const messageMetadata = getMessageMetadata(message.id, senderIdentity);
|
|
50
|
-
const userIsAuthor =
|
|
51
|
-
const [editing, setEditing] = useState(false);
|
|
52
|
-
const handleEdit = useCallback(() => setEditing((editing) => !editing), []);
|
|
53
|
-
const handleDelete = useCallback(() => onDelete?.(message.id), [message, onDelete]);
|
|
54
|
-
const handleAcceptProposal = useCallback(() => onAcceptProposal?.(message.id), [message, onAcceptProposal]);
|
|
55
|
-
const textBlock = message.blocks.find((block) => block._tag === 'text');
|
|
85
|
+
const userIsAuthor = identity?.did === messageMetadata.authorId;
|
|
56
86
|
const proposalBlock = message.blocks.find((block) => block._tag === 'proposal');
|
|
57
87
|
const references = message.blocks.filter((block) => block._tag === 'reference').map((block) => block.reference);
|
|
58
88
|
|
|
59
|
-
useOnEditAnalytics(message, textBlock, !!editing);
|
|
60
|
-
|
|
61
89
|
return (
|
|
62
90
|
<MessageRoot {...messageMetadata} classNames={[hoverableControls, hoverableFocusedWithinControls]}>
|
|
63
91
|
<MessageHeading authorName={messageMetadata.authorName} timestamp={messageMetadata.timestamp}>
|
|
@@ -98,16 +126,18 @@ export const MessageContainer = ({
|
|
|
98
126
|
)}
|
|
99
127
|
</div>
|
|
100
128
|
</MessageHeading>
|
|
101
|
-
{textBlock &&
|
|
129
|
+
{textBlock && (
|
|
130
|
+
<TextboxBlock block={textBlock} isAuthor={userIsAuthor} editing={editing} onSave={handleTextBlockChange} />
|
|
131
|
+
)}
|
|
102
132
|
{proposalBlock && <ProposalBlock block={proposalBlock} />}
|
|
103
133
|
{Ref.Array.targets(references).map((reference, index) => (
|
|
104
|
-
<MessagePart key={index} part={reference} />
|
|
134
|
+
<MessagePart key={index} part={reference as Obj.Unknown} />
|
|
105
135
|
))}
|
|
106
136
|
</MessageRoot>
|
|
107
137
|
);
|
|
108
138
|
};
|
|
109
139
|
|
|
110
|
-
const MessagePart = ({ part }: { part:
|
|
140
|
+
const MessagePart = ({ part }: { part: Obj.Unknown }) => {
|
|
111
141
|
return <MessageBlockObjectTile subject={part} />;
|
|
112
142
|
};
|
|
113
143
|
|
|
@@ -115,11 +145,13 @@ const TextboxBlock = ({
|
|
|
115
145
|
block,
|
|
116
146
|
isAuthor,
|
|
117
147
|
editing,
|
|
148
|
+
onSave,
|
|
118
149
|
}: {
|
|
119
|
-
block:
|
|
150
|
+
block: ContentBlock.Text;
|
|
120
151
|
editing?: boolean;
|
|
121
152
|
isAuthor?: boolean;
|
|
122
153
|
identity?: Identity;
|
|
154
|
+
onSave?: (newText: string) => void;
|
|
123
155
|
}) => {
|
|
124
156
|
const { themeMode } = useThemeContext();
|
|
125
157
|
const inMemoryContentRef = useRef(block.text);
|
|
@@ -129,8 +161,8 @@ const TextboxBlock = ({
|
|
|
129
161
|
}, []);
|
|
130
162
|
|
|
131
163
|
const saveDocumentChange = useCallback(() => {
|
|
132
|
-
|
|
133
|
-
}, [
|
|
164
|
+
onSave?.(inMemoryContentRef.current);
|
|
165
|
+
}, [onSave]);
|
|
134
166
|
|
|
135
167
|
useOnTransition(editing, true, false, saveDocumentChange);
|
|
136
168
|
|
|
@@ -158,7 +190,7 @@ const TextboxBlock = ({
|
|
|
158
190
|
return <div role='none' ref={parentRef} className='mie-4' {...focusAttributes} />;
|
|
159
191
|
};
|
|
160
192
|
|
|
161
|
-
const ProposalBlock = ({ block }: { block:
|
|
193
|
+
const ProposalBlock = ({ block }: { block: ContentBlock.Proposal }) => {
|
|
162
194
|
return (
|
|
163
195
|
<div role='none' className='mie-4 italic'>
|
|
164
196
|
{block.text}
|
|
@@ -166,7 +198,7 @@ const ProposalBlock = ({ block }: { block: DataType.MessageBlock.Proposal }) =>
|
|
|
166
198
|
);
|
|
167
199
|
};
|
|
168
200
|
|
|
169
|
-
const MessageBlockObjectTile = forwardRef<HTMLDivElement, { subject: Obj.
|
|
201
|
+
const MessageBlockObjectTile = forwardRef<HTMLDivElement, { subject: Obj.Unknown }>(({ subject }, forwardedRef) => {
|
|
170
202
|
// TODO(burdon): Use annotation to get title.
|
|
171
203
|
let title = (subject as any).name ?? (subject as any).title ?? (subject as any).type ?? 'Object';
|
|
172
204
|
if (typeof title !== 'string') {
|
|
@@ -174,12 +206,11 @@ const MessageBlockObjectTile = forwardRef<HTMLDivElement, { subject: Obj.Any }>(
|
|
|
174
206
|
}
|
|
175
207
|
|
|
176
208
|
return (
|
|
177
|
-
<
|
|
178
|
-
|
|
179
|
-
className={mx('grid col-span-3 py-1 pr-4', hoverableControls, hoverableFocusedWithinControls)}
|
|
209
|
+
<Card.Root
|
|
210
|
+
className={mx('grid col-span-3 plb-1 pr-4', hoverableControls, hoverableFocusedWithinControls)}
|
|
180
211
|
ref={forwardedRef}
|
|
181
212
|
>
|
|
182
|
-
<Surface role='card' limit={1} data={{ subject }} fallback={title} />
|
|
183
|
-
</
|
|
213
|
+
<Surface role='card-content' limit={1} data={{ subject }} fallback={title} />
|
|
214
|
+
</Card.Root>
|
|
184
215
|
);
|
|
185
216
|
});
|
|
@@ -2,12 +2,13 @@
|
|
|
2
2
|
// Copyright 2024 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
+
import { useAtomValue } from '@effect-atom/atom-react';
|
|
5
6
|
import React, { memo, useMemo } from 'react';
|
|
6
7
|
|
|
7
|
-
import { useCapability } from '@dxos/app-framework';
|
|
8
|
+
import { useCapability } from '@dxos/app-framework/react';
|
|
8
9
|
|
|
9
10
|
import { type EncodedTrackName, type UserState } from '../../calls';
|
|
10
|
-
import { ThreadCapabilities } from '../../
|
|
11
|
+
import { ThreadCapabilities } from '../../types';
|
|
11
12
|
import { VideoObject } from '../Media';
|
|
12
13
|
import { ResponsiveGridItem, type ResponsiveGridItemProps } from '../ResponsiveGrid';
|
|
13
14
|
|
|
@@ -15,27 +16,39 @@ export const SCREENSHARE_SUFFIX = '_screenshare';
|
|
|
15
16
|
|
|
16
17
|
export const Participant = memo(({ item: user, debug, ...props }: ResponsiveGridItemProps<UserState>) => {
|
|
17
18
|
const call = useCapability(ThreadCapabilities.CallManager);
|
|
18
|
-
const
|
|
19
|
+
const self = useAtomValue(call.selfAtom);
|
|
20
|
+
const media = useAtomValue(call.mediaAtom);
|
|
21
|
+
const isSelf: boolean = self.id !== undefined && user.id !== undefined && user.id.startsWith(self.id);
|
|
19
22
|
const isScreenshare = user.id?.endsWith(SCREENSHARE_SUFFIX);
|
|
20
23
|
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
// Get pulled video stream for non-self users.
|
|
25
|
+
const pulledVideoStream = useMemo<MediaStream | undefined>(() => {
|
|
26
|
+
if (isSelf) {
|
|
27
|
+
return undefined;
|
|
28
|
+
}
|
|
29
|
+
const trackName =
|
|
30
|
+
isScreenshare && user.tracks?.screenshareEnabled
|
|
31
|
+
? (user.tracks?.screenshare as EncodedTrackName)
|
|
32
|
+
: !isScreenshare && user.tracks?.videoEnabled
|
|
33
|
+
? (user.tracks?.video as EncodedTrackName)
|
|
34
|
+
: undefined;
|
|
35
|
+
return trackName ? media.pulledVideoStreams[trackName]?.stream : undefined;
|
|
36
|
+
}, [
|
|
37
|
+
isSelf,
|
|
38
|
+
isScreenshare,
|
|
39
|
+
media.pulledVideoStreams,
|
|
40
|
+
user.tracks?.screenshare,
|
|
41
|
+
user.tracks?.video,
|
|
42
|
+
user.tracks?.screenshareEnabled,
|
|
43
|
+
user.tracks?.videoEnabled,
|
|
44
|
+
]);
|
|
27
45
|
|
|
28
46
|
const videoStream = useMemo<MediaStream | undefined>(() => {
|
|
29
47
|
if (isSelf) {
|
|
30
|
-
|
|
31
|
-
return call.media.screenshareVideoStream;
|
|
32
|
-
} else if (!isScreenshare) {
|
|
33
|
-
return call.media.videoStream;
|
|
34
|
-
}
|
|
35
|
-
} else if (!isSelf) {
|
|
36
|
-
return pulledVideoStream;
|
|
48
|
+
return isScreenshare ? media.screenshareVideoStream : media.videoStream;
|
|
37
49
|
}
|
|
38
|
-
|
|
50
|
+
return pulledVideoStream;
|
|
51
|
+
}, [isSelf, isScreenshare, media.videoStream, media.screenshareVideoStream, pulledVideoStream]);
|
|
39
52
|
|
|
40
53
|
return (
|
|
41
54
|
<ResponsiveGridItem
|
|
@@ -43,8 +56,8 @@ export const Participant = memo(({ item: user, debug, ...props }: ResponsiveGrid
|
|
|
43
56
|
item={user}
|
|
44
57
|
name={user.name}
|
|
45
58
|
self={isSelf}
|
|
46
|
-
screenshare={!!
|
|
47
|
-
video={
|
|
59
|
+
screenshare={!!media.screenshareVideoStream}
|
|
60
|
+
video={media.videoEnabled}
|
|
48
61
|
mute={user ? !user.tracks?.audioEnabled : false}
|
|
49
62
|
wave={user.raisedHand}
|
|
50
63
|
speaking={user.speaking}
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
|
|
5
5
|
import React, { type PropsWithChildren } from 'react';
|
|
6
6
|
|
|
7
|
-
import { mx } from '@dxos/
|
|
7
|
+
import { mx } from '@dxos/ui-theme';
|
|
8
8
|
|
|
9
9
|
/**
|
|
10
10
|
* A container component that maintains the child's aspect ratio while centering its content.
|
|
@@ -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>
|
|
@@ -41,7 +41,7 @@ const TestCell = ({ item, ...props }: ResponsiveGridItemProps<TestItem>) => {
|
|
|
41
41
|
{item.type === 'image' && <img className='aspect-video object-contain' src={item.imageUrl} />}
|
|
42
42
|
{item.type === 'video' && (
|
|
43
43
|
<video
|
|
44
|
-
className='
|
|
44
|
+
className='is-full aspect-video object-cover rounded-md'
|
|
45
45
|
src={item.videoUrl}
|
|
46
46
|
playsInline
|
|
47
47
|
autoPlay
|
|
@@ -8,7 +8,7 @@ import { useResizeDetector } from 'react-resize-detector';
|
|
|
8
8
|
import { invariant } from '@dxos/invariant';
|
|
9
9
|
import { type ThemedClassName } from '@dxos/react-ui';
|
|
10
10
|
import { type Size } from '@dxos/react-ui-dnd';
|
|
11
|
-
import { mx } from '@dxos/
|
|
11
|
+
import { mx } from '@dxos/ui-theme';
|
|
12
12
|
|
|
13
13
|
import { ResponsiveContainer } from './ResponsiveContainer';
|
|
14
14
|
import { type ResponsiveGridItemProps } from './ResponsiveGridItem';
|
|
@@ -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
|
/>
|
|
@@ -6,7 +6,7 @@ import React, { type CSSProperties, type PropsWithChildren, useEffect, useState
|
|
|
6
6
|
|
|
7
7
|
import { Icon, IconButton, type ThemedClassName, useTranslation } from '@dxos/react-ui';
|
|
8
8
|
import { Waveform } from '@dxos/react-ui-sfx';
|
|
9
|
-
import { groupHoverControlItemWithTransition, mx } from '@dxos/
|
|
9
|
+
import { groupHoverControlItemWithTransition, mx } from '@dxos/ui-theme';
|
|
10
10
|
|
|
11
11
|
import { meta } from '../../meta';
|
|
12
12
|
|
|
@@ -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>
|