@dxos/plugin-thread 0.8.4-main.406dc2a → 0.8.4-main.52d7546f51
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-XFGLMIGK.mjs +189 -0
- package/dist/lib/browser/app-graph-builder-XFGLMIGK.mjs.map +7 -0
- package/dist/lib/browser/blueprint-definition-ACPH22F7.mjs +18 -0
- package/dist/lib/browser/blueprint-definition-ACPH22F7.mjs.map +7 -0
- package/dist/lib/browser/blueprints/index.mjs +8 -0
- package/dist/lib/browser/call-manager-GDGIKJKN.mjs +26 -0
- package/dist/lib/browser/call-manager-GDGIKJKN.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-4EUEMHNI.mjs +1817 -0
- package/dist/lib/browser/chunk-4EUEMHNI.mjs.map +7 -0
- package/dist/lib/browser/{chunk-ZCEU5K23.mjs → chunk-ERK254BS.mjs} +207 -287
- 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-HDEQRBOC.mjs → chunk-JBB73URQ.mjs} +79 -76
- package/dist/lib/browser/chunk-JBB73URQ.mjs.map +7 -0
- package/dist/lib/browser/chunk-RH7XTXSR.mjs +106 -0
- package/dist/lib/browser/chunk-RH7XTXSR.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +147 -137
- package/dist/lib/browser/index.mjs.map +4 -4
- package/dist/lib/browser/markdown-YJCSOWXX.mjs +210 -0
- package/dist/lib/browser/markdown-YJCSOWXX.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/operation-resolver-PROCP5L4.mjs +441 -0
- package/dist/lib/browser/operation-resolver-PROCP5L4.mjs.map +7 -0
- package/dist/lib/browser/react-root-FHK2SVPU.mjs +25 -0
- package/dist/lib/browser/react-root-FHK2SVPU.mjs.map +7 -0
- package/dist/lib/browser/react-surface-7MQA6VSH.mjs +111 -0
- package/dist/lib/browser/react-surface-7MQA6VSH.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-TWKOTGSU.mjs +33 -0
- package/dist/lib/browser/settings-TWKOTGSU.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 +10 -12
- package/dist/lib/node-esm/app-graph-builder-IN6VLJBO.mjs +190 -0
- package/dist/lib/node-esm/app-graph-builder-IN6VLJBO.mjs.map +7 -0
- package/dist/lib/node-esm/blueprint-definition-SXVKFUNV.mjs +19 -0
- package/dist/lib/node-esm/blueprint-definition-SXVKFUNV.mjs.map +7 -0
- package/dist/lib/node-esm/blueprints/index.mjs +9 -0
- package/dist/lib/node-esm/call-manager-36UAAQCJ.mjs +27 -0
- package/dist/lib/node-esm/call-manager-36UAAQCJ.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-2MMJF7DW.mjs → chunk-G7PZNN3Z.mjs} +79 -76
- package/dist/lib/node-esm/chunk-G7PZNN3Z.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-HSLMI22Q.mjs +11 -0
- package/dist/lib/node-esm/chunk-OKVE6CLS.mjs +107 -0
- package/dist/lib/node-esm/chunk-OKVE6CLS.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-TIPIOH2J.mjs → chunk-QP3KQOPQ.mjs} +207 -287
- package/dist/lib/node-esm/chunk-QP3KQOPQ.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-RBRWHRHE.mjs +1818 -0
- package/dist/lib/node-esm/chunk-RBRWHRHE.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 +147 -137
- package/dist/lib/node-esm/index.mjs.map +4 -4
- package/dist/lib/node-esm/markdown-6LRP3PAP.mjs +211 -0
- package/dist/lib/node-esm/markdown-6LRP3PAP.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/operation-resolver-LPEPV5BF.mjs +442 -0
- package/dist/lib/node-esm/operation-resolver-LPEPV5BF.mjs.map +7 -0
- package/dist/lib/node-esm/react-root-P5P4VGQJ.mjs +26 -0
- package/dist/lib/node-esm/react-root-P5P4VGQJ.mjs.map +7 -0
- package/dist/lib/node-esm/react-surface-M7VI5XG2.mjs +112 -0
- package/dist/lib/node-esm/react-surface-M7VI5XG2.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-5O254B3Z.mjs +34 -0
- package/dist/lib/node-esm/settings-5O254B3Z.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 +10 -12
- 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 +10 -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 +6 -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 +2 -2
- 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 +5 -6
- package/dist/types/src/components/ChannelContainer.d.ts.map +1 -1
- package/dist/types/src/components/ChannelContainer.stories.d.ts +77 -7
- package/dist/types/src/components/ChannelContainer.stories.d.ts.map +1 -1
- package/dist/types/src/components/Chat.stories.d.ts +76 -5
- package/dist/types/src/components/Chat.stories.d.ts.map +1 -1
- package/dist/types/src/components/ChatContainer.d.ts +7 -6
- 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 +3 -3
- 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 +13 -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 +76 -6
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/Channel.d.ts +695 -0
- package/dist/types/src/types/Channel.d.ts.map +1 -0
- 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 +2 -1
- package/dist/types/src/types/index.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +3217 -446
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +88 -65
- package/src/ThreadPlugin.tsx +75 -102
- 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/calls-service.stories.tsx +1 -1
- package/src/capabilities/app-graph-builder/app-graph-builder.ts +202 -0
- package/src/capabilities/app-graph-builder/index.ts +7 -0
- package/src/capabilities/blueprint-definition/blueprint-definition.ts +24 -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 +98 -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 +34 -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 +34 -25
- package/src/components/CallDebugPanel.tsx +12 -14
- package/src/components/CallSidebar.tsx +5 -3
- package/src/components/ChannelContainer.stories.tsx +13 -12
- package/src/components/ChannelContainer.tsx +38 -31
- package/src/components/Chat.stories.tsx +14 -19
- package/src/components/ChatContainer.tsx +46 -39
- package/src/components/Comments.stories.tsx +26 -24
- package/src/components/CommentsContainer.tsx +5 -7
- package/src/components/CommentsThreadContainer.tsx +39 -35
- package/src/components/Lobby/Lobby.tsx +9 -7
- package/src/components/Media/AudioStream.tsx +2 -2
- package/src/components/Media/VideoObject.stories.tsx +1 -1
- 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.stories.tsx +1 -1
- package/src/components/ResponsiveGrid/ResponsiveContainer.tsx +3 -3
- package/src/components/ResponsiveGrid/ResponsiveGrid.stories.tsx +2 -2
- package/src/components/ResponsiveGrid/ResponsiveGrid.tsx +6 -6
- package/src/components/ResponsiveGrid/ResponsiveGridItem.tsx +6 -3
- package/src/components/ThreadCompanion.tsx +194 -0
- package/src/components/ThreadSettings.tsx +9 -3
- package/src/components/command-extension.ts +2 -2
- package/src/components/index.ts +4 -7
- package/src/components/testing.ts +7 -9
- package/src/extensions/threads.ts +86 -42
- 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 +8 -3
- package/src/testing/stories.ts +17 -15
- package/src/translations.ts +6 -3
- package/src/types/Channel.ts +30 -0
- package/src/types/capabilities.ts +34 -0
- package/src/types/index.ts +2 -1
- package/src/types/types.ts +167 -88
- package/dist/lib/browser/ChannelContainer-BGDGZHV4.mjs +0 -16
- package/dist/lib/browser/ChatContainer-75KJZ4XR.mjs +0 -15
- package/dist/lib/browser/app-graph-builder-ODKIAXR7.mjs +0 -171
- package/dist/lib/browser/app-graph-builder-ODKIAXR7.mjs.map +0 -7
- package/dist/lib/browser/call-manager-BCKLI4QD.mjs +0 -24
- package/dist/lib/browser/call-manager-BCKLI4QD.mjs.map +0 -7
- package/dist/lib/browser/chunk-2MUYQOQE.mjs +0 -23
- package/dist/lib/browser/chunk-2MUYQOQE.mjs.map +0 -7
- package/dist/lib/browser/chunk-B7YQ7QR2.mjs +0 -376
- package/dist/lib/browser/chunk-B7YQ7QR2.mjs.map +0 -7
- package/dist/lib/browser/chunk-CMCVHULC.mjs +0 -986
- package/dist/lib/browser/chunk-CMCVHULC.mjs.map +0 -7
- package/dist/lib/browser/chunk-HDEQRBOC.mjs.map +0 -7
- package/dist/lib/browser/chunk-L326LSNS.mjs +0 -18
- package/dist/lib/browser/chunk-L326LSNS.mjs.map +0 -7
- package/dist/lib/browser/chunk-T4KJ5JR4.mjs +0 -15
- package/dist/lib/browser/chunk-T4KJ5JR4.mjs.map +0 -7
- package/dist/lib/browser/chunk-VJMKS4CZ.mjs +0 -619
- package/dist/lib/browser/chunk-VJMKS4CZ.mjs.map +0 -7
- package/dist/lib/browser/chunk-VTYX3SIM.mjs +0 -147
- package/dist/lib/browser/chunk-VTYX3SIM.mjs.map +0 -7
- package/dist/lib/browser/chunk-ZCEU5K23.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-VOQD3TQ2.mjs +0 -427
- package/dist/lib/browser/intent-resolver-VOQD3TQ2.mjs.map +0 -7
- package/dist/lib/browser/markdown-R6MGRIA6.mjs +0 -169
- package/dist/lib/browser/markdown-R6MGRIA6.mjs.map +0 -7
- package/dist/lib/browser/react-root-UMSBTN6H.mjs +0 -28
- package/dist/lib/browser/react-root-UMSBTN6H.mjs.map +0 -7
- package/dist/lib/browser/react-surface-SXMQEWKE.mjs +0 -109
- package/dist/lib/browser/react-surface-SXMQEWKE.mjs.map +0 -7
- package/dist/lib/browser/settings-TCNF54PN.mjs +0 -22
- package/dist/lib/browser/settings-TCNF54PN.mjs.map +0 -7
- package/dist/lib/browser/state-ZQ4IPOJT.mjs +0 -34
- package/dist/lib/browser/state-ZQ4IPOJT.mjs.map +0 -7
- package/dist/lib/browser/toolkit-JF4B4QIO.mjs +0 -84
- package/dist/lib/browser/toolkit-JF4B4QIO.mjs.map +0 -7
- package/dist/lib/node-esm/ChannelContainer-OXC6BTU7.mjs +0 -17
- package/dist/lib/node-esm/ChatContainer-SH6LTFQL.mjs +0 -16
- package/dist/lib/node-esm/app-graph-builder-DMPT3MY6.mjs +0 -172
- package/dist/lib/node-esm/app-graph-builder-DMPT3MY6.mjs.map +0 -7
- package/dist/lib/node-esm/call-manager-Q7RY2YP4.mjs +0 -25
- package/dist/lib/node-esm/call-manager-Q7RY2YP4.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-2KZ4ODHU.mjs +0 -987
- package/dist/lib/node-esm/chunk-2KZ4ODHU.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-2MMJF7DW.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-BAMZXJS4.mjs +0 -148
- package/dist/lib/node-esm/chunk-BAMZXJS4.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-BTGKI5IK.mjs +0 -377
- package/dist/lib/node-esm/chunk-BTGKI5IK.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-GZ4WL2IS.mjs +0 -25
- package/dist/lib/node-esm/chunk-GZ4WL2IS.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-LCHTNRK7.mjs +0 -19
- package/dist/lib/node-esm/chunk-LCHTNRK7.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-NHSIAEDW.mjs +0 -620
- package/dist/lib/node-esm/chunk-NHSIAEDW.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-OBVAURUU.mjs +0 -17
- package/dist/lib/node-esm/chunk-OBVAURUU.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-TIPIOH2J.mjs.map +0 -7
- package/dist/lib/node-esm/intent-resolver-AKVH66PH.mjs +0 -428
- package/dist/lib/node-esm/intent-resolver-AKVH66PH.mjs.map +0 -7
- package/dist/lib/node-esm/markdown-MYGTDXT6.mjs +0 -170
- package/dist/lib/node-esm/markdown-MYGTDXT6.mjs.map +0 -7
- package/dist/lib/node-esm/react-root-W6AVTL5M.mjs +0 -29
- package/dist/lib/node-esm/react-root-W6AVTL5M.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-NLSZJGMO.mjs +0 -110
- package/dist/lib/node-esm/react-surface-NLSZJGMO.mjs.map +0 -7
- package/dist/lib/node-esm/settings-ZQHGVFBY.mjs +0 -23
- package/dist/lib/node-esm/settings-ZQHGVFBY.mjs.map +0 -7
- package/dist/lib/node-esm/state-FSLLJ5TZ.mjs +0 -35
- package/dist/lib/node-esm/state-FSLLJ5TZ.mjs.map +0 -7
- package/dist/lib/node-esm/toolkit-DHPKJITO.mjs +0 -85
- package/dist/lib/node-esm/toolkit-DHPKJITO.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 -6
- package/dist/types/src/capabilities/toolkit.d.ts.map +0 -1
- package/dist/types/src/components/ThreadComplementary.d.ts +0 -5
- package/dist/types/src/components/ThreadComplementary.d.ts.map +0 -1
- package/dist/types/src/types/schema.d.ts +0 -179
- package/dist/types/src/types/schema.d.ts.map +0 -1
- package/src/capabilities/app-graph-builder.ts +0 -184
- package/src/capabilities/call-manager.ts +0 -20
- package/src/capabilities/capabilities.ts +0 -33
- package/src/capabilities/intent-resolver.ts +0 -348
- 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 -82
- package/src/components/ThreadComplementary.tsx +0 -181
- package/src/types/schema.ts +0 -33
- /package/dist/lib/browser/{ChannelContainer-BGDGZHV4.mjs.map → blueprints/index.mjs.map} +0 -0
- /package/dist/lib/browser/{ChatContainer-75KJZ4XR.mjs.map → chunk-J5LGTIGS.mjs.map} +0 -0
- /package/dist/lib/node-esm/{ChannelContainer-OXC6BTU7.mjs.map → blueprints/index.mjs.map} +0 -0
- /package/dist/lib/node-esm/{ChatContainer-SH6LTFQL.mjs.map → chunk-HSLMI22Q.mjs.map} +0 -0
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2025 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import * as Effect from 'effect/Effect';
|
|
6
|
+
|
|
7
|
+
import { Capability } from '@dxos/app-framework';
|
|
8
|
+
import { Obj, Ref, Type } from '@dxos/echo';
|
|
9
|
+
import { SpaceCapabilities } from '@dxos/plugin-space';
|
|
10
|
+
import { type Space } from '@dxos/react-client/echo';
|
|
11
|
+
import { Collection } from '@dxos/schema';
|
|
12
|
+
|
|
13
|
+
import { Channel } from '../../types';
|
|
14
|
+
|
|
15
|
+
export default Capability.makeModule(() =>
|
|
16
|
+
Effect.succeed(
|
|
17
|
+
Capability.contributes(
|
|
18
|
+
SpaceCapabilities.Repair,
|
|
19
|
+
async ({ space, isDefault }: { space: Space; isDefault: boolean }) => {
|
|
20
|
+
if (isDefault) {
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
|
|
24
|
+
await ensureSystemCollection(space);
|
|
25
|
+
},
|
|
26
|
+
),
|
|
27
|
+
),
|
|
28
|
+
);
|
|
29
|
+
|
|
30
|
+
/**
|
|
31
|
+
* Ensure the root collection has a system collection for Channels.
|
|
32
|
+
*/
|
|
33
|
+
const ensureSystemCollection = async (space: Space) => {
|
|
34
|
+
const rootCollection: Collection.Collection = await space.properties[Collection.Collection.typename]?.load();
|
|
35
|
+
if (!rootCollection) {
|
|
36
|
+
return;
|
|
37
|
+
}
|
|
38
|
+
|
|
39
|
+
const objects = await Promise.all(rootCollection.objects.map((ref) => ref.load()));
|
|
40
|
+
const channels = objects.find(
|
|
41
|
+
(object) => Obj.instanceOf(Collection.Managed, object) && object.key === Type.getTypename(Channel.Channel),
|
|
42
|
+
);
|
|
43
|
+
if (channels) {
|
|
44
|
+
return;
|
|
45
|
+
}
|
|
46
|
+
|
|
47
|
+
const channelCollectionRef = Ref.make(Collection.makeManaged({ key: Type.getTypename(Channel.Channel) }));
|
|
48
|
+
Obj.change(rootCollection, (c) => {
|
|
49
|
+
c.objects.push(channelCollectionRef);
|
|
50
|
+
});
|
|
51
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2025 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import * as Effect from 'effect/Effect';
|
|
6
|
+
|
|
7
|
+
import { Capability } from '@dxos/app-framework';
|
|
8
|
+
import { AppCapabilities } from '@dxos/app-toolkit';
|
|
9
|
+
import { createKvsStore } from '@dxos/effect';
|
|
10
|
+
|
|
11
|
+
import { meta } from '../../meta';
|
|
12
|
+
import { ThreadSettingsSchema } from '../../types';
|
|
13
|
+
import { ThreadCapabilities } from '../../types/capabilities';
|
|
14
|
+
|
|
15
|
+
export default Capability.makeModule(() =>
|
|
16
|
+
Effect.sync(() => {
|
|
17
|
+
const settingsAtom = createKvsStore({
|
|
18
|
+
key: meta.id,
|
|
19
|
+
schema: ThreadSettingsSchema,
|
|
20
|
+
defaultValue: () => ({}),
|
|
21
|
+
});
|
|
22
|
+
|
|
23
|
+
return [
|
|
24
|
+
// Expose atom directly for programmatic access.
|
|
25
|
+
Capability.contributes(ThreadCapabilities.Settings, settingsAtom),
|
|
26
|
+
// Contribute to common settings for UI discovery.
|
|
27
|
+
Capability.contributes(AppCapabilities.Settings, {
|
|
28
|
+
prefix: meta.id,
|
|
29
|
+
schema: ThreadSettingsSchema,
|
|
30
|
+
atom: settingsAtom,
|
|
31
|
+
}),
|
|
32
|
+
];
|
|
33
|
+
}),
|
|
34
|
+
);
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
//
|
|
2
|
+
// Copyright 2025 DXOS.org
|
|
3
|
+
//
|
|
4
|
+
|
|
5
|
+
import { Atom } from '@effect-atom/atom-react';
|
|
6
|
+
import * as Effect from 'effect/Effect';
|
|
7
|
+
|
|
8
|
+
import { Capability } from '@dxos/app-framework';
|
|
9
|
+
|
|
10
|
+
import { ThreadCapabilities, type ThreadState, type ViewStore } from '../../types';
|
|
11
|
+
|
|
12
|
+
export default Capability.makeModule(
|
|
13
|
+
Effect.fnUntraced(function* () {
|
|
14
|
+
const stateAtom = Atom.make<ThreadState>({ toolbar: {}, drafts: {} }).pipe(Atom.keepAlive);
|
|
15
|
+
const viewStoreAtom = Atom.make<ViewStore>({}).pipe(Atom.keepAlive);
|
|
16
|
+
|
|
17
|
+
return [
|
|
18
|
+
Capability.contributes(ThreadCapabilities.State, stateAtom),
|
|
19
|
+
Capability.contributes(ThreadCapabilities.ViewState, viewStoreAtom),
|
|
20
|
+
];
|
|
21
|
+
}),
|
|
22
|
+
);
|
|
@@ -2,13 +2,14 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
+
import { useAtomValue } from '@effect-atom/atom-react';
|
|
5
6
|
import React, { type FC, type PropsWithChildren } from 'react';
|
|
6
7
|
|
|
7
|
-
import { useCapability } from '@dxos/app-framework';
|
|
8
|
+
import { useCapability } from '@dxos/app-framework/ui';
|
|
8
9
|
import { type ThemedClassName } from '@dxos/react-ui';
|
|
9
10
|
|
|
10
|
-
import { ThreadCapabilities } from '../../capabilities';
|
|
11
11
|
import { useDebugMode } from '../../hooks';
|
|
12
|
+
import { ThreadCapabilities } from '../../types';
|
|
12
13
|
import { AudioStream } from '../Media';
|
|
13
14
|
import { ParticipantGrid } from '../Participant';
|
|
14
15
|
|
|
@@ -34,8 +35,9 @@ type CallAudioProps = {};
|
|
|
34
35
|
|
|
35
36
|
const CallAudio: FC<CallAudioProps> = () => {
|
|
36
37
|
const call = useCapability(ThreadCapabilities.CallManager);
|
|
38
|
+
const audioTracksToPlay = useAtomValue(call.audioTracksToPlayAtom);
|
|
37
39
|
|
|
38
|
-
return <AudioStream tracks={
|
|
40
|
+
return <AudioStream tracks={audioTracksToPlay} />;
|
|
39
41
|
};
|
|
40
42
|
|
|
41
43
|
CallAudio.displayName = 'CallAudio';
|
|
@@ -51,10 +53,12 @@ type CallGridProps = {
|
|
|
51
53
|
const CallGrid: FC<CallGridProps> = ({ fullscreen }) => {
|
|
52
54
|
const debug = useDebugMode();
|
|
53
55
|
const call = useCapability(ThreadCapabilities.CallManager);
|
|
56
|
+
const self = useAtomValue(call.selfAtom);
|
|
57
|
+
const users = useAtomValue(call.usersAtom);
|
|
54
58
|
|
|
55
59
|
return (
|
|
56
60
|
<div className='grid grow p-4 dark:bg-neutral-900'>
|
|
57
|
-
<ParticipantGrid self={
|
|
61
|
+
<ParticipantGrid self={self} users={users} debug={debug} fullscreen={fullscreen} />
|
|
58
62
|
</div>
|
|
59
63
|
);
|
|
60
64
|
};
|
|
@@ -2,11 +2,14 @@
|
|
|
2
2
|
// Copyright 2024 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
+
import { useAtomValue } from '@effect-atom/atom-react';
|
|
5
6
|
import React from 'react';
|
|
6
7
|
|
|
7
|
-
import {
|
|
8
|
+
import { useCapability } from '@dxos/app-framework/ui';
|
|
9
|
+
import { useAppGraph } from '@dxos/app-toolkit/ui';
|
|
10
|
+
import { Obj } from '@dxos/echo';
|
|
11
|
+
import { Node, useActionRunner } from '@dxos/plugin-graph';
|
|
8
12
|
import { useActions, useNode } from '@dxos/plugin-graph';
|
|
9
|
-
import { fullyQualifiedId } from '@dxos/react-client/echo';
|
|
10
13
|
import {
|
|
11
14
|
Icon,
|
|
12
15
|
IconButton,
|
|
@@ -16,14 +19,14 @@ import {
|
|
|
16
19
|
toLocalizedString,
|
|
17
20
|
useTranslation,
|
|
18
21
|
} from '@dxos/react-ui';
|
|
19
|
-
import { groupHoverControlItemWithTransition, mx } from '@dxos/
|
|
22
|
+
import { groupHoverControlItemWithTransition, mx } from '@dxos/ui-theme';
|
|
20
23
|
|
|
21
|
-
import { ThreadCapabilities } from '../../capabilities';
|
|
22
24
|
import { meta } from '../../meta';
|
|
23
|
-
import {
|
|
25
|
+
import { ThreadCapabilities } from '../../types';
|
|
26
|
+
import { type Channel } from '../../types';
|
|
24
27
|
|
|
25
28
|
export type ToolbarProps = ThemedClassName<{
|
|
26
|
-
channel?:
|
|
29
|
+
channel?: Channel.Channel;
|
|
27
30
|
participants?: number;
|
|
28
31
|
autoHideControls?: boolean;
|
|
29
32
|
isInRoom?: boolean;
|
|
@@ -42,14 +45,18 @@ export const Toolbar = ({
|
|
|
42
45
|
}: ToolbarProps) => {
|
|
43
46
|
const { t } = useTranslation(meta.id);
|
|
44
47
|
const { graph } = useAppGraph();
|
|
48
|
+
const runAction = useActionRunner();
|
|
45
49
|
const call = useCapability(ThreadCapabilities.CallManager);
|
|
50
|
+
const media = useAtomValue(call.mediaAtom);
|
|
51
|
+
const joined = useAtomValue(call.joinedAtom);
|
|
52
|
+
const raisedHand = useAtomValue(call.raisedHandAtom);
|
|
46
53
|
|
|
47
54
|
// Channel app graph node.
|
|
48
|
-
const node = useNode(graph, channel &&
|
|
55
|
+
const node = useNode(graph, channel && Obj.getDXN(channel).toString());
|
|
49
56
|
const actions = useActions(graph, node?.id).filter((action) => action.properties.disposition === 'toolbar');
|
|
50
57
|
|
|
51
58
|
// Screen sharing.
|
|
52
|
-
const isScreensharing =
|
|
59
|
+
const isScreensharing = media.screenshareTrack !== undefined;
|
|
53
60
|
const canSharescreen =
|
|
54
61
|
typeof navigator.mediaDevices !== 'undefined' && navigator.mediaDevices.getDisplayMedia !== undefined;
|
|
55
62
|
|
|
@@ -58,7 +65,7 @@ export const Toolbar = ({
|
|
|
58
65
|
<div className={mx('z-20 flex justify-center m-8', autoHideControls && groupHoverControlItemWithTransition)}>
|
|
59
66
|
<NaturalToolbar.Root classNames={['p-2 bg-modalSurface rounded-md shadow-md', classNames]}>
|
|
60
67
|
<ToggleButton
|
|
61
|
-
active={
|
|
68
|
+
active={media.audioEnabled}
|
|
62
69
|
state={{
|
|
63
70
|
on: {
|
|
64
71
|
icon: 'ph--microphone--regular',
|
|
@@ -70,12 +77,12 @@ export const Toolbar = ({
|
|
|
70
77
|
icon: 'ph--microphone-slash--duotone',
|
|
71
78
|
label: t('mic on'),
|
|
72
79
|
onClick: () => call.turnAudioOn(),
|
|
73
|
-
classNames: [
|
|
80
|
+
classNames: [joined && 'bg-callAlert'],
|
|
74
81
|
},
|
|
75
82
|
}}
|
|
76
83
|
/>
|
|
77
84
|
<ToggleButton
|
|
78
|
-
active={
|
|
85
|
+
active={media.videoEnabled}
|
|
79
86
|
state={{
|
|
80
87
|
on: {
|
|
81
88
|
icon: 'ph--video-camera--regular',
|
|
@@ -97,7 +104,7 @@ export const Toolbar = ({
|
|
|
97
104
|
</div>
|
|
98
105
|
)) || <NaturalToolbar.Separator variant='gap' />}
|
|
99
106
|
|
|
100
|
-
{
|
|
107
|
+
{joined && (
|
|
101
108
|
<>
|
|
102
109
|
<ToggleButton
|
|
103
110
|
disabled={!canSharescreen}
|
|
@@ -117,25 +124,27 @@ export const Toolbar = ({
|
|
|
117
124
|
/>
|
|
118
125
|
|
|
119
126
|
{/* Companion actions. */}
|
|
120
|
-
{actions
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
127
|
+
{actions
|
|
128
|
+
.filter((action): action is Node.Action => Node.isAction(action))
|
|
129
|
+
.map((action) => (
|
|
130
|
+
<IconButton
|
|
131
|
+
key={action.id}
|
|
132
|
+
{...defaultButtonProps}
|
|
133
|
+
icon={action.properties.icon}
|
|
134
|
+
label={toLocalizedString(action.properties.label, t)}
|
|
135
|
+
classNames={action.properties.classNames}
|
|
136
|
+
onClick={() => node && void runAction(action, { parent: node })}
|
|
137
|
+
/>
|
|
138
|
+
))}
|
|
130
139
|
|
|
131
140
|
<ToggleButton
|
|
132
|
-
active={
|
|
141
|
+
active={raisedHand}
|
|
133
142
|
state={{
|
|
134
143
|
on: {
|
|
135
144
|
icon: 'ph--hand-waving--regular',
|
|
136
145
|
label: t('lower hand'),
|
|
137
146
|
onClick: () => call.setRaisedHand(false),
|
|
138
|
-
classNames: [
|
|
147
|
+
classNames: [joined && 'bg-callAlert'],
|
|
139
148
|
},
|
|
140
149
|
off: {
|
|
141
150
|
icon: 'ph--hand-palm--duotone',
|
|
@@ -146,7 +155,7 @@ export const Toolbar = ({
|
|
|
146
155
|
/>
|
|
147
156
|
</>
|
|
148
157
|
)}
|
|
149
|
-
{
|
|
158
|
+
{joined ? (
|
|
150
159
|
<IconButton variant='destructive' icon='ph--phone-x--regular' label={t('leave call')} onClick={onLeave} />
|
|
151
160
|
) : (
|
|
152
161
|
<IconButton variant='primary' icon='ph--phone-incoming--regular' label={t('join call')} onClick={onJoin} />
|
|
@@ -13,9 +13,7 @@ import { IconButton, Input, type ThemedClassName, useTranslation } from '@dxos/r
|
|
|
13
13
|
import { type EncodedTrackName, type GlobalState } from '../calls';
|
|
14
14
|
import { meta } from '../meta';
|
|
15
15
|
|
|
16
|
-
export type CallDebugPanelProps = ThemedClassName<{
|
|
17
|
-
state?: GlobalState;
|
|
18
|
-
}>;
|
|
16
|
+
export type CallDebugPanelProps = ThemedClassName<{ state?: GlobalState }>;
|
|
19
17
|
|
|
20
18
|
export const CallDebugPanel = ({ state }: CallDebugPanelProps) => {
|
|
21
19
|
const { t } = useTranslation(meta.id);
|
|
@@ -73,24 +71,24 @@ export const CallDebugPanel = ({ state }: CallDebugPanelProps) => {
|
|
|
73
71
|
open={open}
|
|
74
72
|
onToggle={handleToggle}
|
|
75
73
|
title={t('meeting status title')}
|
|
76
|
-
maxHeight={false}
|
|
77
74
|
info={<div className='flex items-center gap-2'> {state?.call.joined ? 'Active' : 'Inactive'}</div>}
|
|
75
|
+
maxHeight={0}
|
|
78
76
|
>
|
|
79
|
-
<div className='flex flex-col
|
|
80
|
-
<div className='flex items-center gap-2'>
|
|
77
|
+
<div className='flex flex-col is-full text-xs'>
|
|
78
|
+
<div className='flex items-center gap-2 items-center'>
|
|
81
79
|
<Input.Root>
|
|
82
|
-
<Input.
|
|
83
|
-
<Input.
|
|
80
|
+
<Input.Switch checked={showDetailedWebRTCStats} onCheckedChange={handleShowDetailedWebRTCStats} />
|
|
81
|
+
<Input.Label>{t('show webrtc stats title')}</Input.Label>
|
|
84
82
|
</Input.Root>
|
|
85
83
|
</div>
|
|
86
|
-
<div className='flex items-center gap-2'>
|
|
84
|
+
<div className='flex items-center gap-2 items-center'>
|
|
87
85
|
<Input.Root>
|
|
88
|
-
<Input.
|
|
89
|
-
<Input.
|
|
86
|
+
<Input.Switch checked={showServiceHistory} onCheckedChange={handleToggleServiceHistory} />
|
|
87
|
+
<Input.Label>{t('show calls history title')}</Input.Label>
|
|
90
88
|
</Input.Root>
|
|
91
89
|
</div>
|
|
92
|
-
<div className='flex items-center gap-2'>
|
|
93
|
-
<IconButton
|
|
90
|
+
<div className='flex items-center gap-2 items-center'>
|
|
91
|
+
<IconButton icon='ph--copy--regular' label={'copy raw'} onClick={handleCopyRaw} />
|
|
94
92
|
</div>
|
|
95
93
|
<Table rows={rows} />
|
|
96
94
|
{showDetailedWebRTCStats && <JsonView data={{ stats }} />}
|
|
@@ -160,7 +158,7 @@ export type TableProps = {
|
|
|
160
158
|
|
|
161
159
|
export const Table = ({ rows }: TableProps) => {
|
|
162
160
|
return (
|
|
163
|
-
<div className='
|
|
161
|
+
<div className='is-full text-xs font-mono'>
|
|
164
162
|
{rows.map(([prefix, label, value, unit], i) => (
|
|
165
163
|
<div key={i} className='grid grid-cols-[3fr_1fr_1fr_1fr]'>
|
|
166
164
|
<div className='p-1'>{prefix}</div>
|
|
@@ -2,17 +2,19 @@
|
|
|
2
2
|
// Copyright 2024 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
+
import { useAtomValue } from '@effect-atom/atom-react';
|
|
5
6
|
import React from 'react';
|
|
6
7
|
|
|
7
|
-
import { useCapability } from '@dxos/app-framework';
|
|
8
|
+
import { useCapability } from '@dxos/app-framework/ui';
|
|
8
9
|
|
|
9
|
-
import { ThreadCapabilities } from '../
|
|
10
|
+
import { ThreadCapabilities } from '../types';
|
|
10
11
|
|
|
11
12
|
import { ChannelContainer } from './ChannelContainer';
|
|
12
13
|
|
|
13
14
|
export const CallSidebar = () => {
|
|
14
15
|
const call = useCapability(ThreadCapabilities.CallManager);
|
|
15
|
-
|
|
16
|
+
const roomId = useAtomValue(call.roomIdAtom);
|
|
17
|
+
return <ChannelContainer subject={undefined} roomId={roomId} />;
|
|
16
18
|
};
|
|
17
19
|
|
|
18
20
|
export default CallSidebar;
|
|
@@ -5,29 +5,29 @@
|
|
|
5
5
|
import { type Meta, type StoryObj } from '@storybook/react-vite';
|
|
6
6
|
import React from 'react';
|
|
7
7
|
|
|
8
|
-
import {
|
|
8
|
+
import { Capability } from '@dxos/app-framework';
|
|
9
9
|
import { withPluginManager } from '@dxos/app-framework/testing';
|
|
10
|
-
import {
|
|
11
|
-
import { Query,
|
|
12
|
-
import { withTheme } from '@dxos/react-ui/testing';
|
|
13
|
-
import { DataType } from '@dxos/schema';
|
|
10
|
+
import { AppCapabilities } from '@dxos/app-toolkit';
|
|
11
|
+
import { Query, useDatabase, useQuery } from '@dxos/react-client/echo';
|
|
12
|
+
import { withLayout, withTheme } from '@dxos/react-ui/testing';
|
|
14
13
|
import { render } from '@dxos/storybook-utils';
|
|
14
|
+
import { Message, Thread } from '@dxos/types';
|
|
15
15
|
|
|
16
16
|
import { createThreadPlugins } from '../testing';
|
|
17
17
|
import { translations } from '../translations';
|
|
18
|
-
import {
|
|
18
|
+
import { Channel } from '../types';
|
|
19
19
|
|
|
20
20
|
import { ChannelContainer, type ChannelContainerProps } from './ChannelContainer';
|
|
21
21
|
|
|
22
22
|
// TODO(wittjosiah): Channel doesn't render full height.
|
|
23
23
|
const DefaultStory = ({ roomId }: ChannelContainerProps) => {
|
|
24
|
-
const
|
|
25
|
-
const [channel] = useQuery(
|
|
24
|
+
const db = useDatabase();
|
|
25
|
+
const [channel] = useQuery(db, Query.type(Channel.Channel));
|
|
26
26
|
if (!channel) {
|
|
27
27
|
return null;
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
-
return <ChannelContainer
|
|
30
|
+
return <ChannelContainer subject={channel} roomId={roomId} />;
|
|
31
31
|
};
|
|
32
32
|
|
|
33
33
|
const meta = {
|
|
@@ -35,14 +35,14 @@ const meta = {
|
|
|
35
35
|
component: ChannelContainer,
|
|
36
36
|
render: render(DefaultStory),
|
|
37
37
|
decorators: [
|
|
38
|
-
withTheme,
|
|
38
|
+
withTheme(),
|
|
39
|
+
withLayout({ layout: 'column' }),
|
|
39
40
|
withPluginManager({
|
|
40
41
|
plugins: [...(await createThreadPlugins())],
|
|
41
|
-
capabilities: [contributes(
|
|
42
|
+
capabilities: [Capability.contributes(AppCapabilities.Schema, [Channel.Channel, Thread.Thread, Message.Message])],
|
|
42
43
|
}),
|
|
43
44
|
],
|
|
44
45
|
parameters: {
|
|
45
|
-
layout: 'column',
|
|
46
46
|
translations,
|
|
47
47
|
},
|
|
48
48
|
} satisfies Meta<typeof ChannelContainer>;
|
|
@@ -54,6 +54,7 @@ type Story = StoryObj<typeof meta>;
|
|
|
54
54
|
export const Default: Story = {
|
|
55
55
|
args: {
|
|
56
56
|
// Fixed room for testing.
|
|
57
|
+
subject: undefined,
|
|
57
58
|
roomId: '04a1d1911703b8e929d0649021a965',
|
|
58
59
|
},
|
|
59
60
|
};
|
|
@@ -2,43 +2,50 @@
|
|
|
2
2
|
// Copyright 2025 DXOS.org
|
|
3
3
|
//
|
|
4
4
|
|
|
5
|
-
import {
|
|
5
|
+
import { Atom, useAtomValue } from '@effect-atom/atom-react';
|
|
6
6
|
import React, { type ChangeEvent, useCallback, useEffect, useMemo, useState } from 'react';
|
|
7
7
|
|
|
8
|
-
import { useCapabilities, useCapability } from '@dxos/app-framework';
|
|
8
|
+
import { useCapabilities, useCapability } from '@dxos/app-framework/ui';
|
|
9
|
+
import { type SurfaceComponentProps } from '@dxos/app-toolkit/ui';
|
|
9
10
|
import { Context } from '@dxos/context';
|
|
10
11
|
import { failUndefined } from '@dxos/debug';
|
|
12
|
+
import { Obj } from '@dxos/echo';
|
|
11
13
|
import { log } from '@dxos/log';
|
|
12
14
|
import { useClient } from '@dxos/react-client';
|
|
13
|
-
import {
|
|
15
|
+
import { getSpace } from '@dxos/react-client/echo';
|
|
14
16
|
import { useIdentity } from '@dxos/react-client/halo';
|
|
15
|
-
import { ElevationProvider, Input,
|
|
16
|
-
import {
|
|
17
|
+
import { ElevationProvider, Input, useTranslation } from '@dxos/react-ui';
|
|
18
|
+
import { Settings } from '@dxos/react-ui-form';
|
|
17
19
|
import { MenuProvider, ToolbarMenu, createMenuAction, createMenuItemGroup, useMenuActions } from '@dxos/react-ui-menu';
|
|
18
20
|
import { useSoundEffect } from '@dxos/react-ui-sfx';
|
|
19
21
|
import { StackItem } from '@dxos/react-ui-stack';
|
|
20
22
|
|
|
21
|
-
import { ThreadCapabilities } from '../capabilities';
|
|
22
23
|
import { meta } from '../meta';
|
|
23
|
-
import {
|
|
24
|
+
import { ThreadCapabilities } from '../types';
|
|
25
|
+
import { type Channel } from '../types';
|
|
24
26
|
|
|
25
27
|
import { Call } from './Call';
|
|
26
28
|
import ChatContainer from './ChatContainer';
|
|
27
29
|
|
|
28
|
-
export type ChannelContainerProps =
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
}
|
|
30
|
+
export type ChannelContainerProps = SurfaceComponentProps<
|
|
31
|
+
Channel.Channel | undefined,
|
|
32
|
+
{
|
|
33
|
+
roomId?: string;
|
|
34
|
+
fullscreen?: boolean;
|
|
35
|
+
}
|
|
36
|
+
>;
|
|
34
37
|
|
|
35
38
|
/**
|
|
36
39
|
* Renders a call when active, otherwise renders the channel chat.
|
|
37
40
|
*/
|
|
38
|
-
|
|
41
|
+
// TODO(burdon): Create Radix style layout.
|
|
42
|
+
export const ChannelContainer = ({ role, subject: channel, roomId: roomIdProp, fullscreen }: ChannelContainerProps) => {
|
|
39
43
|
const space = getSpace(channel);
|
|
40
44
|
const callManager = useCapability(ThreadCapabilities.CallManager);
|
|
41
|
-
const
|
|
45
|
+
const joined = useAtomValue(callManager.joinedAtom);
|
|
46
|
+
const currentRoomId = useAtomValue(callManager.roomIdAtom);
|
|
47
|
+
const attendableId = channel ? Obj.getDXN(channel).toString() : undefined;
|
|
48
|
+
const roomId = roomIdProp ?? attendableId ?? failUndefined();
|
|
42
49
|
const identity = useIdentity();
|
|
43
50
|
const isNamed = !!identity?.profile?.displayName;
|
|
44
51
|
const joinSound = useSoundEffect('JoinCall');
|
|
@@ -79,7 +86,7 @@ export const ChannelContainer = ({ channel, roomId: _roomId, role, fullscreen }:
|
|
|
79
86
|
return;
|
|
80
87
|
}
|
|
81
88
|
|
|
82
|
-
if (
|
|
89
|
+
if (joined) {
|
|
83
90
|
await callManager.leave();
|
|
84
91
|
}
|
|
85
92
|
|
|
@@ -92,7 +99,7 @@ export const ChannelContainer = ({ channel, roomId: _roomId, role, fullscreen }:
|
|
|
92
99
|
// TODO(burdon): Error sound.
|
|
93
100
|
log.catch(err);
|
|
94
101
|
}
|
|
95
|
-
}, [extensions, channel, roomId]);
|
|
102
|
+
}, [extensions, channel, roomId, joined]);
|
|
96
103
|
|
|
97
104
|
/**
|
|
98
105
|
* Leave the call.
|
|
@@ -111,7 +118,7 @@ export const ChannelContainer = ({ channel, roomId: _roomId, role, fullscreen }:
|
|
|
111
118
|
}
|
|
112
119
|
}, [extensions, roomId]);
|
|
113
120
|
|
|
114
|
-
const isJoined =
|
|
121
|
+
const isJoined = joined && currentRoomId === roomId;
|
|
115
122
|
|
|
116
123
|
return (
|
|
117
124
|
<StackItem.Content classNames={isJoined && 'bs-full'} toolbar={!isJoined}>
|
|
@@ -124,8 +131,8 @@ export const ChannelContainer = ({ channel, roomId: _roomId, role, fullscreen }:
|
|
|
124
131
|
)}
|
|
125
132
|
{!isJoined && channel && channel.defaultThread.target && space && (
|
|
126
133
|
<>
|
|
127
|
-
<ChannelToolbar attendableId={
|
|
128
|
-
<ChatContainer space={space} thread={channel.defaultThread.target} />
|
|
134
|
+
<ChannelToolbar attendableId={attendableId} role={role} onJoinCall={handleJoin} />
|
|
135
|
+
<ChatContainer space={space} thread={channel.defaultThread.target} classNames='container-max-width' />
|
|
129
136
|
</>
|
|
130
137
|
)}
|
|
131
138
|
</StackItem.Content>
|
|
@@ -142,26 +149,26 @@ const DisplayNameMissing = () => {
|
|
|
142
149
|
const handleSave = useCallback(() => client.halo.updateProfile({ displayName }), [client, displayName]);
|
|
143
150
|
|
|
144
151
|
return (
|
|
145
|
-
<
|
|
146
|
-
<
|
|
152
|
+
<Settings.Group classNames='p-4 place-content-center'>
|
|
153
|
+
<Settings.ItemInput title={t('display name label')} description={t('display name description')}>
|
|
147
154
|
<Input.TextInput
|
|
148
155
|
value={displayName}
|
|
149
156
|
onChange={handleChange}
|
|
150
157
|
placeholder={t('display name input placeholder')}
|
|
151
158
|
classNames='md:min-is-64'
|
|
152
159
|
/>
|
|
153
|
-
</
|
|
154
|
-
<
|
|
160
|
+
</Settings.ItemInput>
|
|
161
|
+
<Settings.GroupButton disabled={!displayName} onClick={handleSave}>
|
|
155
162
|
{t('set display name label')}
|
|
156
|
-
</
|
|
157
|
-
</
|
|
163
|
+
</Settings.GroupButton>
|
|
164
|
+
</Settings.Group>
|
|
158
165
|
);
|
|
159
166
|
};
|
|
160
167
|
|
|
161
168
|
const useChannelToolbarActions = (onJoinCall?: () => void) => {
|
|
162
169
|
const creator = useMemo(
|
|
163
170
|
() =>
|
|
164
|
-
|
|
171
|
+
Atom.make(() => {
|
|
165
172
|
return {
|
|
166
173
|
nodes: [
|
|
167
174
|
createMenuItemGroup('root', {
|
|
@@ -182,19 +189,19 @@ const useChannelToolbarActions = (onJoinCall?: () => void) => {
|
|
|
182
189
|
return useMenuActions(creator);
|
|
183
190
|
};
|
|
184
191
|
|
|
185
|
-
type ChannelToolbarProps =
|
|
192
|
+
type ChannelToolbarProps = {
|
|
186
193
|
attendableId?: string;
|
|
187
194
|
role?: string;
|
|
188
195
|
onJoinCall?: () => void;
|
|
189
|
-
}
|
|
196
|
+
};
|
|
190
197
|
|
|
191
|
-
const ChannelToolbar = ({ attendableId, role, onJoinCall
|
|
198
|
+
const ChannelToolbar = ({ attendableId, role, onJoinCall }: ChannelToolbarProps) => {
|
|
192
199
|
const menuProps = useChannelToolbarActions(onJoinCall);
|
|
193
200
|
|
|
194
201
|
return (
|
|
195
202
|
<ElevationProvider elevation={role === 'section' ? 'positioned' : 'base'}>
|
|
196
203
|
<MenuProvider {...menuProps} attendableId={attendableId}>
|
|
197
|
-
<ToolbarMenu
|
|
204
|
+
<ToolbarMenu textBlockWidth />
|
|
198
205
|
</MenuProvider>
|
|
199
206
|
</ElevationProvider>
|
|
200
207
|
);
|