@dxos/plugin-thread 0.8.4-main.c1de068 → 0.8.4-main.e098934
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/lib/browser/ChannelContainer-4PYFOIDK.mjs +16 -0
- package/dist/lib/browser/{ChatContainer-AIGIWAUG.mjs → ChatContainer-EXNNREYB.mjs} +4 -4
- package/dist/lib/browser/{app-graph-builder-N7BE5TYW.mjs → app-graph-builder-FHAOPO57.mjs} +5 -5
- package/dist/lib/browser/app-graph-builder-FHAOPO57.mjs.map +7 -0
- package/dist/lib/browser/{call-manager-NIPDYUVD.mjs → call-manager-RMPTWSTF.mjs} +4 -4
- package/dist/lib/browser/call-manager-RMPTWSTF.mjs.map +7 -0
- package/dist/lib/browser/{chunk-LGSDKXPF.mjs → chunk-4APCDRSH.mjs} +1 -1
- package/dist/lib/browser/{chunk-LGSDKXPF.mjs.map → chunk-4APCDRSH.mjs.map} +1 -1
- package/dist/lib/browser/{chunk-KWPRNHTK.mjs → chunk-7W7QK5ZP.mjs} +232 -230
- package/dist/lib/browser/chunk-7W7QK5ZP.mjs.map +7 -0
- package/dist/lib/browser/chunk-G4CNILRR.mjs +23 -0
- package/dist/lib/browser/{chunk-4OYAYON2.mjs.map → chunk-G4CNILRR.mjs.map} +3 -3
- package/dist/lib/browser/{chunk-GCLD5ESP.mjs → chunk-KTWYVC5X.mjs} +22 -12
- package/dist/lib/browser/chunk-KTWYVC5X.mjs.map +7 -0
- package/dist/lib/browser/chunk-PBMNFG3B.mjs +376 -0
- package/dist/lib/browser/chunk-PBMNFG3B.mjs.map +7 -0
- package/dist/lib/browser/{chunk-ERWASUQK.mjs → chunk-RI3Z6MK3.mjs} +38 -6
- package/dist/lib/{node-esm/chunk-25ABSYP2.mjs.map → browser/chunk-RI3Z6MK3.mjs.map} +4 -4
- package/dist/lib/browser/{chunk-6NSMBO3B.mjs → chunk-XYUJXHYV.mjs} +55 -5
- package/dist/lib/browser/chunk-XYUJXHYV.mjs.map +7 -0
- package/dist/lib/browser/{chunk-ZE7KWN36.mjs → chunk-ZCEU5K23.mjs} +461 -240
- package/dist/lib/browser/chunk-ZCEU5K23.mjs.map +7 -0
- package/dist/lib/browser/chunk-ZH2WPTNP.mjs +618 -0
- package/dist/lib/browser/chunk-ZH2WPTNP.mjs.map +7 -0
- package/dist/lib/browser/index.mjs +20 -9
- package/dist/lib/browser/index.mjs.map +3 -3
- package/dist/lib/browser/{intent-resolver-JFGLZ6VI.mjs → intent-resolver-J7OCP2P6.mjs} +67 -9
- package/dist/lib/browser/intent-resolver-J7OCP2P6.mjs.map +7 -0
- package/dist/lib/browser/{markdown-GEXBVJYN.mjs → markdown-Z677YORA.mjs} +4 -4
- package/dist/lib/browser/markdown-Z677YORA.mjs.map +7 -0
- package/dist/lib/browser/meta.json +1 -1
- package/dist/lib/browser/{react-root-X4UIVGTX.mjs → react-root-XKOD4KRB.mjs} +9 -9
- package/dist/lib/browser/{react-surface-YCYEFBPM.mjs → react-surface-GVGZRBDK.mjs} +9 -9
- package/dist/lib/browser/react-surface-GVGZRBDK.mjs.map +7 -0
- package/dist/lib/browser/{settings-E32MTL7A.mjs → settings-GRKEID73.mjs} +2 -2
- package/dist/lib/browser/{state-H6CYONWE.mjs → state-2T4KDWBX.mjs} +2 -2
- package/dist/lib/browser/{state-H6CYONWE.mjs.map → state-2T4KDWBX.mjs.map} +2 -2
- package/dist/lib/browser/toolkit-KUPIIFC6.mjs +80 -0
- package/dist/lib/browser/toolkit-KUPIIFC6.mjs.map +7 -0
- package/dist/lib/browser/types/index.mjs +1 -1
- package/dist/lib/node-esm/{ChannelContainer-DET6T5N2.mjs → ChannelContainer-KQQEZWUN.mjs} +7 -7
- package/dist/lib/node-esm/{ChatContainer-IQUWU426.mjs → ChatContainer-QVQKFBWA.mjs} +4 -4
- package/dist/lib/node-esm/{app-graph-builder-VCW76Z6V.mjs → app-graph-builder-XEYWX5FC.mjs} +5 -5
- package/dist/lib/node-esm/app-graph-builder-XEYWX5FC.mjs.map +7 -0
- package/dist/lib/node-esm/{call-manager-D6O5ZJJ4.mjs → call-manager-QAREJFVX.mjs} +4 -4
- package/dist/lib/node-esm/call-manager-QAREJFVX.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-OU5BYIDO.mjs → chunk-2V3WSLUZ.mjs} +55 -5
- package/dist/lib/node-esm/chunk-2V3WSLUZ.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-4T45PCKP.mjs +25 -0
- package/dist/lib/node-esm/{chunk-GW37AAM4.mjs.map → chunk-4T45PCKP.mjs.map} +3 -3
- package/dist/lib/node-esm/chunk-DKCQCENK.mjs +377 -0
- package/dist/lib/node-esm/chunk-DKCQCENK.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-25ABSYP2.mjs → chunk-JNPKMT7O.mjs} +38 -6
- package/dist/lib/node-esm/chunk-JNPKMT7O.mjs.map +7 -0
- package/dist/lib/node-esm/chunk-LE2LIYGX.mjs +619 -0
- package/dist/lib/node-esm/chunk-LE2LIYGX.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-TDFHTCZZ.mjs → chunk-P6E247RF.mjs} +22 -12
- package/dist/lib/node-esm/chunk-P6E247RF.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-75RJ5DJI.mjs → chunk-PYTVBN5J.mjs} +1 -1
- package/dist/lib/node-esm/{chunk-75RJ5DJI.mjs.map → chunk-PYTVBN5J.mjs.map} +1 -1
- package/dist/lib/node-esm/{chunk-C3XFMUAY.mjs → chunk-SNKFZQST.mjs} +232 -230
- package/dist/lib/node-esm/chunk-SNKFZQST.mjs.map +7 -0
- package/dist/lib/node-esm/{chunk-IHDNQLLR.mjs → chunk-TIPIOH2J.mjs} +461 -240
- package/dist/lib/node-esm/chunk-TIPIOH2J.mjs.map +7 -0
- package/dist/lib/node-esm/index.mjs +20 -9
- package/dist/lib/node-esm/index.mjs.map +3 -3
- package/dist/lib/node-esm/{intent-resolver-OXGNQ44Y.mjs → intent-resolver-SR2LW4HF.mjs} +67 -9
- package/dist/lib/node-esm/intent-resolver-SR2LW4HF.mjs.map +7 -0
- package/dist/lib/node-esm/{markdown-LIJZDK2J.mjs → markdown-FL4IXLRP.mjs} +4 -4
- package/dist/lib/node-esm/markdown-FL4IXLRP.mjs.map +7 -0
- package/dist/lib/node-esm/meta.json +1 -1
- package/dist/lib/node-esm/{react-root-M7J6PZVW.mjs → react-root-4JWDRIQB.mjs} +9 -9
- package/dist/lib/node-esm/{react-surface-IRSEKM42.mjs → react-surface-WLQUVRAX.mjs} +9 -9
- package/dist/lib/node-esm/react-surface-WLQUVRAX.mjs.map +7 -0
- package/dist/lib/node-esm/{settings-SJ24YG7M.mjs → settings-F2ODVNNW.mjs} +2 -2
- package/dist/lib/node-esm/{state-D7WNDT3N.mjs → state-62TQKQVB.mjs} +2 -2
- package/dist/lib/node-esm/{state-D7WNDT3N.mjs.map → state-62TQKQVB.mjs.map} +2 -2
- package/dist/lib/node-esm/toolkit-KZIS7G36.mjs +81 -0
- package/dist/lib/node-esm/toolkit-KZIS7G36.mjs.map +7 -0
- package/dist/lib/node-esm/types/index.mjs +1 -1
- package/dist/types/src/ThreadPlugin.d.ts.map +1 -1
- package/dist/types/src/calls/call-manager.d.ts.map +1 -1
- package/dist/types/src/calls/call-swarm-synchronizer.d.ts.map +1 -1
- package/dist/types/src/calls/media-manager.d.ts +1 -1
- package/dist/types/src/calls/media-manager.d.ts.map +1 -1
- package/dist/types/src/calls/types.d.ts +1 -1
- package/dist/types/src/calls/types.d.ts.map +1 -1
- package/dist/types/src/calls/util/calls-service.d.ts +4 -2
- package/dist/types/src/calls/util/calls-service.d.ts.map +1 -1
- package/dist/types/src/calls/util/stub-media-streams.d.ts.map +1 -1
- package/dist/types/src/calls-service.stories.d.ts +10 -8
- package/dist/types/src/calls-service.stories.d.ts.map +1 -1
- package/dist/types/src/capabilities/app-graph-builder.d.ts +1 -1
- package/dist/types/src/capabilities/app-graph-builder.d.ts.map +1 -1
- package/dist/types/src/capabilities/call-manager.d.ts +1 -1
- package/dist/types/src/capabilities/call-manager.d.ts.map +1 -1
- package/dist/types/src/capabilities/capabilities.d.ts +2 -2
- package/dist/types/src/capabilities/capabilities.d.ts.map +1 -1
- package/dist/types/src/capabilities/index.d.ts +11 -10
- package/dist/types/src/capabilities/index.d.ts.map +1 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts +1 -1
- package/dist/types/src/capabilities/intent-resolver.d.ts.map +1 -1
- package/dist/types/src/capabilities/markdown.d.ts +1 -1
- package/dist/types/src/capabilities/markdown.d.ts.map +1 -1
- package/dist/types/src/capabilities/react-root.d.ts +2 -2
- package/dist/types/src/capabilities/react-surface.d.ts +1 -1
- package/dist/types/src/capabilities/react-surface.d.ts.map +1 -1
- package/dist/types/src/capabilities/settings.d.ts +1 -1
- package/dist/types/src/capabilities/state.d.ts +2 -2
- package/dist/types/src/capabilities/state.d.ts.map +1 -1
- package/dist/types/src/capabilities/toolkit.d.ts +5 -0
- package/dist/types/src/capabilities/toolkit.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 +7 -0
- package/dist/types/src/components/CallDebugPanel.d.ts.map +1 -1
- package/dist/types/src/components/CallSidebar.d.ts.map +1 -1
- package/dist/types/src/components/ChannelContainer.d.ts.map +1 -1
- package/dist/types/src/components/ChannelContainer.stories.d.ts +88 -3
- package/dist/types/src/components/ChannelContainer.stories.d.ts.map +1 -1
- package/dist/types/src/components/Chat.stories.d.ts +90 -4
- package/dist/types/src/components/Chat.stories.d.ts.map +1 -1
- package/dist/types/src/components/ChatContainer.d.ts.map +1 -1
- package/dist/types/src/components/Comments.stories.d.ts +156 -3
- package/dist/types/src/components/Comments.stories.d.ts.map +1 -1
- package/dist/types/src/components/CommentsContainer.d.ts.map +1 -1
- package/dist/types/src/components/CommentsThreadContainer.d.ts +2 -2
- 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 +15 -3
- package/dist/types/src/components/Media/VideoObject.stories.d.ts.map +1 -1
- package/dist/types/src/components/MessageContainer.d.ts +4 -1
- package/dist/types/src/components/MessageContainer.d.ts.map +1 -1
- package/dist/types/src/components/Participant/Participant.d.ts.map +1 -1
- package/dist/types/src/components/Participant/ParticipantGrid.d.ts.map +1 -1
- package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts +154 -2
- package/dist/types/src/components/ResponsiveGrid/ResponsiveContainer.stories.d.ts.map +1 -1
- package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts +156 -3
- package/dist/types/src/components/ResponsiveGrid/ResponsiveGrid.stories.d.ts.map +1 -1
- package/dist/types/src/components/ResponsiveGrid/ResponsiveGridItem.d.ts.map +1 -1
- package/dist/types/src/components/ThreadComplementary.d.ts.map +1 -1
- package/dist/types/src/components/command-extension.d.ts.map +1 -1
- package/dist/types/src/components/testing.d.ts +1 -0
- package/dist/types/src/components/testing.d.ts.map +1 -1
- package/dist/types/src/extensions/threads.d.ts +2 -2
- package/dist/types/src/extensions/threads.d.ts.map +1 -1
- package/dist/types/src/hooks/index.d.ts +1 -0
- package/dist/types/src/hooks/index.d.ts.map +1 -1
- package/dist/types/src/hooks/useBlackCanvasStreamTrack.d.ts +2 -0
- package/dist/types/src/hooks/useBlackCanvasStreamTrack.d.ts.map +1 -0
- package/dist/types/src/hooks/useVideoStreamTrack.d.ts.map +1 -1
- package/dist/types/src/translations.d.ts +3 -1
- package/dist/types/src/translations.d.ts.map +1 -1
- package/dist/types/src/types/schema.d.ts +123 -108
- package/dist/types/src/types/schema.d.ts.map +1 -1
- package/dist/types/src/types/types.d.ts +255 -170
- package/dist/types/src/types/types.d.ts.map +1 -1
- package/dist/types/tsconfig.tsbuildinfo +1 -1
- package/package.json +54 -50
- package/src/ThreadPlugin.tsx +9 -2
- package/src/calls/call-manager.ts +2 -2
- package/src/calls/call-swarm-synchronizer.ts +1 -1
- package/src/calls/media-manager.ts +60 -34
- package/src/calls/types.ts +8 -4
- package/src/calls/util/calls-service.ts +65 -14
- package/src/calls/util/stub-media-streams.ts +62 -5
- package/src/calls-service.stories.tsx +76 -60
- package/src/capabilities/app-graph-builder.ts +8 -5
- package/src/capabilities/call-manager.ts +3 -2
- package/src/capabilities/capabilities.ts +2 -2
- package/src/capabilities/index.ts +1 -0
- package/src/capabilities/intent-resolver.ts +38 -4
- package/src/capabilities/markdown.ts +4 -3
- package/src/capabilities/react-surface.tsx +5 -4
- package/src/capabilities/state.ts +2 -1
- package/src/capabilities/toolkit.ts +78 -0
- package/src/components/Call/Call.tsx +3 -2
- package/src/components/Call/Toolbar.tsx +5 -5
- package/src/components/CallDebugPanel.tsx +108 -49
- package/src/components/CallSidebar.tsx +2 -1
- package/src/components/ChannelContainer.stories.tsx +6 -5
- package/src/components/ChannelContainer.tsx +7 -6
- package/src/components/Chat.stories.tsx +28 -26
- package/src/components/ChatContainer.tsx +8 -4
- package/src/components/Comments.stories.tsx +33 -29
- package/src/components/CommentsContainer.tsx +2 -1
- package/src/components/CommentsThreadContainer.tsx +9 -7
- package/src/components/Lobby/Lobby.tsx +1 -1
- package/src/components/Media/VideoObject.stories.tsx +30 -27
- package/src/components/MessageContainer.tsx +43 -9
- package/src/components/Participant/Participant.tsx +13 -7
- package/src/components/Participant/ParticipantGrid.tsx +2 -1
- package/src/components/ResponsiveGrid/ResponsiveContainer.stories.tsx +6 -5
- package/src/components/ResponsiveGrid/ResponsiveGrid.stories.tsx +42 -39
- package/src/components/ResponsiveGrid/ResponsiveGrid.tsx +1 -1
- package/src/components/ResponsiveGrid/ResponsiveGridItem.tsx +2 -2
- package/src/components/ThreadComplementary.tsx +38 -8
- package/src/components/ThreadSettings.tsx +2 -2
- package/src/components/command-extension.ts +5 -2
- package/src/components/testing.ts +22 -0
- package/src/extensions/threads.ts +6 -6
- package/src/hooks/index.ts +1 -0
- package/src/hooks/useBlackCanvasStreamTrack.tsx +27 -0
- package/src/hooks/useDebugMode.ts +1 -1
- package/src/hooks/useVideoStreamTrack.tsx +5 -2
- package/src/testing/stories.ts +2 -2
- package/src/translations.ts +3 -1
- package/src/types/types.ts +21 -12
- package/src/typings/peermetrics-webrtc-stats.d.ts +17 -1
- package/src/typings.d.ts +8 -0
- package/dist/lib/browser/ChannelContainer-IY2UIRLF.mjs +0 -16
- package/dist/lib/browser/app-graph-builder-N7BE5TYW.mjs.map +0 -7
- package/dist/lib/browser/call-manager-NIPDYUVD.mjs.map +0 -7
- package/dist/lib/browser/chunk-4OYAYON2.mjs +0 -21
- package/dist/lib/browser/chunk-6NSMBO3B.mjs.map +0 -7
- package/dist/lib/browser/chunk-ERWASUQK.mjs.map +0 -7
- package/dist/lib/browser/chunk-GCLD5ESP.mjs.map +0 -7
- package/dist/lib/browser/chunk-KWPRNHTK.mjs.map +0 -7
- package/dist/lib/browser/chunk-VUWC4IJM.mjs +0 -479
- package/dist/lib/browser/chunk-VUWC4IJM.mjs.map +0 -7
- package/dist/lib/browser/chunk-XLPJXUKO.mjs +0 -367
- package/dist/lib/browser/chunk-XLPJXUKO.mjs.map +0 -7
- package/dist/lib/browser/chunk-ZE7KWN36.mjs.map +0 -7
- package/dist/lib/browser/intent-resolver-JFGLZ6VI.mjs.map +0 -7
- package/dist/lib/browser/markdown-GEXBVJYN.mjs.map +0 -7
- package/dist/lib/browser/react-surface-YCYEFBPM.mjs.map +0 -7
- package/dist/lib/node-esm/app-graph-builder-VCW76Z6V.mjs.map +0 -7
- package/dist/lib/node-esm/call-manager-D6O5ZJJ4.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-2MFNK53T.mjs +0 -480
- package/dist/lib/node-esm/chunk-2MFNK53T.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-C3XFMUAY.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-GW37AAM4.mjs +0 -23
- package/dist/lib/node-esm/chunk-IHDNQLLR.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-J4NSON5Q.mjs +0 -368
- package/dist/lib/node-esm/chunk-J4NSON5Q.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-OU5BYIDO.mjs.map +0 -7
- package/dist/lib/node-esm/chunk-TDFHTCZZ.mjs.map +0 -7
- package/dist/lib/node-esm/intent-resolver-OXGNQ44Y.mjs.map +0 -7
- package/dist/lib/node-esm/markdown-LIJZDK2J.mjs.map +0 -7
- package/dist/lib/node-esm/react-surface-IRSEKM42.mjs.map +0 -7
- /package/dist/lib/browser/{ChannelContainer-IY2UIRLF.mjs.map → ChannelContainer-4PYFOIDK.mjs.map} +0 -0
- /package/dist/lib/browser/{ChatContainer-AIGIWAUG.mjs.map → ChatContainer-EXNNREYB.mjs.map} +0 -0
- /package/dist/lib/browser/{react-root-X4UIVGTX.mjs.map → react-root-XKOD4KRB.mjs.map} +0 -0
- /package/dist/lib/browser/{settings-E32MTL7A.mjs.map → settings-GRKEID73.mjs.map} +0 -0
- /package/dist/lib/node-esm/{ChannelContainer-DET6T5N2.mjs.map → ChannelContainer-KQQEZWUN.mjs.map} +0 -0
- /package/dist/lib/node-esm/{ChatContainer-IQUWU426.mjs.map → ChatContainer-QVQKFBWA.mjs.map} +0 -0
- /package/dist/lib/node-esm/{react-root-M7J6PZVW.mjs.map → react-root-4JWDRIQB.mjs.map} +0 -0
- /package/dist/lib/node-esm/{settings-SJ24YG7M.mjs.map → settings-F2ODVNNW.mjs.map} +0 -0
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
import { createRequire } from 'node:module';const require = createRequire(import.meta.url);
|
|
2
2
|
import {
|
|
3
3
|
ThreadCapabilities
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-PYTVBN5J.mjs";
|
|
5
5
|
import {
|
|
6
6
|
ChatContainer_default
|
|
7
|
-
} from "./chunk-
|
|
7
|
+
} from "./chunk-DKCQCENK.mjs";
|
|
8
8
|
import {
|
|
9
9
|
useDebugMode
|
|
10
|
-
} from "./chunk-
|
|
10
|
+
} from "./chunk-JNPKMT7O.mjs";
|
|
11
11
|
import {
|
|
12
12
|
meta
|
|
13
13
|
} from "./chunk-GRLRWTRU.mjs";
|
|
@@ -23,9 +23,9 @@ import { log } from "@dxos/log";
|
|
|
23
23
|
import { useClient } from "@dxos/react-client";
|
|
24
24
|
import { fullyQualifiedId as fullyQualifiedId2, getSpace } from "@dxos/react-client/echo";
|
|
25
25
|
import { useIdentity } from "@dxos/react-client/halo";
|
|
26
|
-
import { useTranslation as useTranslation3
|
|
27
|
-
import { ControlGroup,
|
|
28
|
-
import {
|
|
26
|
+
import { ElevationProvider, Input, useTranslation as useTranslation3 } from "@dxos/react-ui";
|
|
27
|
+
import { ControlGroup, ControlGroupButton, ControlItemInput } from "@dxos/react-ui-form";
|
|
28
|
+
import { MenuProvider, ToolbarMenu, createMenuAction, createMenuItemGroup, useMenuActions } from "@dxos/react-ui-menu";
|
|
29
29
|
import { useSoundEffect } from "@dxos/react-ui-sfx";
|
|
30
30
|
import { StackItem } from "@dxos/react-ui-stack";
|
|
31
31
|
|
|
@@ -34,153 +34,11 @@ import { useSignals as _useSignals9 } from "@preact-signals/safe-react/tracking"
|
|
|
34
34
|
import React9 from "react";
|
|
35
35
|
import { useCapability as useCapability3 } from "@dxos/app-framework";
|
|
36
36
|
|
|
37
|
-
// src/components/Call/Toolbar.tsx
|
|
38
|
-
import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
|
|
39
|
-
import React from "react";
|
|
40
|
-
import { useAppGraph, useCapability } from "@dxos/app-framework";
|
|
41
|
-
import { useNode, useActions } from "@dxos/plugin-graph";
|
|
42
|
-
import { fullyQualifiedId } from "@dxos/react-client/echo";
|
|
43
|
-
import { Icon, IconButton, Toolbar as NativeToolbar, toLocalizedString, useTranslation } from "@dxos/react-ui";
|
|
44
|
-
import { groupHoverControlItemWithTransition, mx } from "@dxos/react-ui-theme";
|
|
45
|
-
var Toolbar = ({ classNames, channel, participants, autoHideControls = true, onJoin, onLeave }) => {
|
|
46
|
-
var _effect = _useSignals();
|
|
47
|
-
try {
|
|
48
|
-
const { t } = useTranslation(meta.id);
|
|
49
|
-
const { graph } = useAppGraph();
|
|
50
|
-
const call = useCapability(ThreadCapabilities.CallManager);
|
|
51
|
-
const node = useNode(graph, channel && fullyQualifiedId(channel));
|
|
52
|
-
const actions = useActions(graph, node?.id).filter((action) => action.properties.disposition === "toolbar");
|
|
53
|
-
const isScreensharing = call.media.screenshareTrack !== void 0;
|
|
54
|
-
const canSharescreen = typeof navigator.mediaDevices !== "undefined" && navigator.mediaDevices.getDisplayMedia !== void 0;
|
|
55
|
-
return /* @__PURE__ */ React.createElement("div", {
|
|
56
|
-
className: mx("z-20 flex justify-center m-8", autoHideControls && groupHoverControlItemWithTransition)
|
|
57
|
-
}, /* @__PURE__ */ React.createElement(NativeToolbar.Root, {
|
|
58
|
-
classNames: [
|
|
59
|
-
"p-2 bg-modalSurface rounded-md shadow-md",
|
|
60
|
-
classNames
|
|
61
|
-
]
|
|
62
|
-
}, /* @__PURE__ */ React.createElement(ToggleButton, {
|
|
63
|
-
active: call.media.audioEnabled,
|
|
64
|
-
state: {
|
|
65
|
-
on: {
|
|
66
|
-
icon: "ph--microphone--regular",
|
|
67
|
-
label: t("mic off"),
|
|
68
|
-
onClick: () => call.turnAudioOff(),
|
|
69
|
-
classNames: "bg-callActive"
|
|
70
|
-
},
|
|
71
|
-
off: {
|
|
72
|
-
icon: "ph--microphone-slash--duotone",
|
|
73
|
-
label: t("mic on"),
|
|
74
|
-
onClick: () => call.turnAudioOn(),
|
|
75
|
-
classNames: [
|
|
76
|
-
call.joined && "bg-callAlert"
|
|
77
|
-
]
|
|
78
|
-
}
|
|
79
|
-
}
|
|
80
|
-
}), /* @__PURE__ */ React.createElement(ToggleButton, {
|
|
81
|
-
active: call.media.videoEnabled,
|
|
82
|
-
state: {
|
|
83
|
-
on: {
|
|
84
|
-
icon: "ph--video-camera--regular",
|
|
85
|
-
label: t("camera off"),
|
|
86
|
-
onClick: () => call.turnVideoOff()
|
|
87
|
-
},
|
|
88
|
-
off: {
|
|
89
|
-
icon: "ph--video-camera-slash--duotone",
|
|
90
|
-
label: t("camera on"),
|
|
91
|
-
onClick: () => call.turnVideoOn()
|
|
92
|
-
}
|
|
93
|
-
}
|
|
94
|
-
}), participants !== void 0 && /* @__PURE__ */ React.createElement("div", {
|
|
95
|
-
className: "flex justify-center items-center gap-2 is-[5rem] text-xs text-subdued"
|
|
96
|
-
}, /* @__PURE__ */ React.createElement(Icon, {
|
|
97
|
-
icon: "ph--users--regular",
|
|
98
|
-
size: 4
|
|
99
|
-
}), /* @__PURE__ */ React.createElement("div", null, participants)) || /* @__PURE__ */ React.createElement(NativeToolbar.Separator, {
|
|
100
|
-
variant: "gap"
|
|
101
|
-
}), call.joined && /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement(ToggleButton, {
|
|
102
|
-
disabled: !canSharescreen,
|
|
103
|
-
active: isScreensharing,
|
|
104
|
-
state: {
|
|
105
|
-
on: {
|
|
106
|
-
icon: "ph--monitor--regular",
|
|
107
|
-
label: t("screenshare off"),
|
|
108
|
-
onClick: () => call.turnScreenshareOff()
|
|
109
|
-
},
|
|
110
|
-
off: {
|
|
111
|
-
icon: "ph--monitor-arrow-up--duotone",
|
|
112
|
-
label: t("screenshare on"),
|
|
113
|
-
onClick: () => call.turnScreenshareOn()
|
|
114
|
-
}
|
|
115
|
-
}
|
|
116
|
-
}), actions.map((action) => /* @__PURE__ */ React.createElement(IconButton, {
|
|
117
|
-
key: action.id,
|
|
118
|
-
...defaultButtonProps,
|
|
119
|
-
icon: action.properties.icon,
|
|
120
|
-
label: toLocalizedString(action.properties.label, t),
|
|
121
|
-
classNames: action.properties.classNames,
|
|
122
|
-
onClick: () => action.data({
|
|
123
|
-
node
|
|
124
|
-
})
|
|
125
|
-
})), /* @__PURE__ */ React.createElement(ToggleButton, {
|
|
126
|
-
active: call.raisedHand,
|
|
127
|
-
state: {
|
|
128
|
-
on: {
|
|
129
|
-
icon: "ph--hand-waving--regular",
|
|
130
|
-
label: t("lower hand"),
|
|
131
|
-
onClick: () => call.setRaisedHand(false),
|
|
132
|
-
classNames: [
|
|
133
|
-
call.joined && "bg-callAlert"
|
|
134
|
-
]
|
|
135
|
-
},
|
|
136
|
-
off: {
|
|
137
|
-
icon: "ph--hand-palm--duotone",
|
|
138
|
-
label: t("raise hand"),
|
|
139
|
-
onClick: () => call.setRaisedHand(true)
|
|
140
|
-
}
|
|
141
|
-
}
|
|
142
|
-
})), call.joined ? /* @__PURE__ */ React.createElement(IconButton, {
|
|
143
|
-
variant: "destructive",
|
|
144
|
-
icon: "ph--phone-x--regular",
|
|
145
|
-
label: t("leave call"),
|
|
146
|
-
onClick: onLeave
|
|
147
|
-
}) : /* @__PURE__ */ React.createElement(IconButton, {
|
|
148
|
-
variant: "primary",
|
|
149
|
-
icon: "ph--phone-incoming--regular",
|
|
150
|
-
label: t("join call"),
|
|
151
|
-
onClick: onJoin
|
|
152
|
-
})));
|
|
153
|
-
} finally {
|
|
154
|
-
_effect.f();
|
|
155
|
-
}
|
|
156
|
-
};
|
|
157
|
-
Toolbar.displayName = "MeetingToolbar";
|
|
158
|
-
var defaultButtonProps = {
|
|
159
|
-
size: 5,
|
|
160
|
-
iconOnly: true
|
|
161
|
-
};
|
|
162
|
-
var ToggleButton = ({ active, state }) => {
|
|
163
|
-
var _effect = _useSignals();
|
|
164
|
-
try {
|
|
165
|
-
return /* @__PURE__ */ React.createElement(IconButton, {
|
|
166
|
-
...defaultButtonProps,
|
|
167
|
-
classNames: [
|
|
168
|
-
active ? state.on.classNames ?? "bg-callActive" : state.off.classNames
|
|
169
|
-
],
|
|
170
|
-
icon: active ? state.on.icon : state.off.icon,
|
|
171
|
-
label: active ? state.on.label : state.off.label,
|
|
172
|
-
onClick: active ? state.on.onClick : state.off.onClick
|
|
173
|
-
});
|
|
174
|
-
} finally {
|
|
175
|
-
_effect.f();
|
|
176
|
-
}
|
|
177
|
-
};
|
|
178
|
-
|
|
179
37
|
// src/components/Media/AudioStream.tsx
|
|
180
|
-
import { useSignals as
|
|
181
|
-
import
|
|
38
|
+
import { useSignals as _useSignals } from "@preact-signals/safe-react/tracking";
|
|
39
|
+
import React, { useEffect, useRef } from "react";
|
|
182
40
|
var AudioStream = ({ tracks }) => {
|
|
183
|
-
var _effect =
|
|
41
|
+
var _effect = _useSignals();
|
|
184
42
|
try {
|
|
185
43
|
const mediaStreamRef = useRef(new MediaStream());
|
|
186
44
|
const ref = useRef(null);
|
|
@@ -203,10 +61,10 @@ var AudioStream = ({ tracks }) => {
|
|
|
203
61
|
});
|
|
204
62
|
audio.srcObject = mediaStream;
|
|
205
63
|
};
|
|
206
|
-
return /* @__PURE__ */
|
|
64
|
+
return /* @__PURE__ */ React.createElement(React.Fragment, null, /* @__PURE__ */ React.createElement("audio", {
|
|
207
65
|
ref,
|
|
208
66
|
autoPlay: true
|
|
209
|
-
}), tracks.map((track) => /* @__PURE__ */
|
|
67
|
+
}), tracks.map((track) => /* @__PURE__ */ React.createElement(AudioTrack, {
|
|
210
68
|
key: track.id,
|
|
211
69
|
track,
|
|
212
70
|
mediaStream: mediaStreamRef.current,
|
|
@@ -233,11 +91,11 @@ var AudioTrack = ({ track, mediaStream, resetSrcObject }) => {
|
|
|
233
91
|
};
|
|
234
92
|
|
|
235
93
|
// src/components/Media/VideoObject.tsx
|
|
236
|
-
import { useSignals as
|
|
237
|
-
import
|
|
238
|
-
import { mx
|
|
94
|
+
import { useSignals as _useSignals2 } from "@preact-signals/safe-react/tracking";
|
|
95
|
+
import React2, { forwardRef, memo, useEffect as useEffect2, useRef as useRef2 } from "react";
|
|
96
|
+
import { mx } from "@dxos/react-ui-theme";
|
|
239
97
|
var VideoObject = /* @__PURE__ */ memo(/* @__PURE__ */ forwardRef(({ videoStream, classNames, flip, contain, ...rest }, ref) => {
|
|
240
|
-
var _effect =
|
|
98
|
+
var _effect = _useSignals2();
|
|
241
99
|
try {
|
|
242
100
|
const internalRef = useRef2(null);
|
|
243
101
|
useEffect2(() => {
|
|
@@ -251,8 +109,8 @@ var VideoObject = /* @__PURE__ */ memo(/* @__PURE__ */ forwardRef(({ videoStream
|
|
|
251
109
|
videoStream,
|
|
252
110
|
internalRef.current
|
|
253
111
|
]);
|
|
254
|
-
return /* @__PURE__ */
|
|
255
|
-
className:
|
|
112
|
+
return /* @__PURE__ */ React2.createElement("video", {
|
|
113
|
+
className: mx("w-full aspect-video", flip && "scale-x-[-1]", contain ? "object-contain" : "object-cover", classNames),
|
|
256
114
|
ref: (v) => {
|
|
257
115
|
internalRef.current = v;
|
|
258
116
|
if (ref === null) {
|
|
@@ -273,28 +131,28 @@ var VideoObject = /* @__PURE__ */ memo(/* @__PURE__ */ forwardRef(({ videoStream
|
|
|
273
131
|
VideoObject.displayName = "VideoObject";
|
|
274
132
|
|
|
275
133
|
// src/components/Participant/Participant.tsx
|
|
276
|
-
import { useSignals as
|
|
277
|
-
import
|
|
278
|
-
import { useCapability
|
|
134
|
+
import { useSignals as _useSignals6 } from "@preact-signals/safe-react/tracking";
|
|
135
|
+
import React6, { memo as memo2, useMemo as useMemo2 } from "react";
|
|
136
|
+
import { useCapability } from "@dxos/app-framework";
|
|
279
137
|
|
|
280
138
|
// src/components/ResponsiveGrid/ResponsiveContainer.tsx
|
|
281
|
-
import { useSignals as
|
|
282
|
-
import
|
|
283
|
-
import { mx as
|
|
139
|
+
import { useSignals as _useSignals3 } from "@preact-signals/safe-react/tracking";
|
|
140
|
+
import React3 from "react";
|
|
141
|
+
import { mx as mx2 } from "@dxos/react-ui-theme";
|
|
284
142
|
var ResponsiveContainer = ({ children }) => {
|
|
285
|
-
var _effect =
|
|
143
|
+
var _effect = _useSignals3();
|
|
286
144
|
try {
|
|
287
145
|
return (
|
|
288
146
|
// Outer container that takes full size of parent.
|
|
289
|
-
/* @__PURE__ */
|
|
147
|
+
/* @__PURE__ */ React3.createElement("div", {
|
|
290
148
|
role: "none",
|
|
291
149
|
className: "relative flex w-full h-full"
|
|
292
|
-
}, /* @__PURE__ */
|
|
150
|
+
}, /* @__PURE__ */ React3.createElement("div", {
|
|
293
151
|
role: "none",
|
|
294
152
|
className: "absolute inset-0 flex justify-center items-center"
|
|
295
|
-
}, /* @__PURE__ */
|
|
153
|
+
}, /* @__PURE__ */ React3.createElement("div", {
|
|
296
154
|
role: "none",
|
|
297
|
-
className:
|
|
155
|
+
className: mx2("max-h-full max-w-full w-auto h-auto aspect-video")
|
|
298
156
|
}, children)))
|
|
299
157
|
);
|
|
300
158
|
} finally {
|
|
@@ -303,11 +161,11 @@ var ResponsiveContainer = ({ children }) => {
|
|
|
303
161
|
};
|
|
304
162
|
|
|
305
163
|
// src/components/ResponsiveGrid/ResponsiveGrid.tsx
|
|
306
|
-
import { useSignals as
|
|
307
|
-
import
|
|
164
|
+
import { useSignals as _useSignals4 } from "@preact-signals/safe-react/tracking";
|
|
165
|
+
import React4, { useCallback, useEffect as useEffect3, useLayoutEffect, useMemo, useState } from "react";
|
|
308
166
|
import { useResizeDetector } from "react-resize-detector";
|
|
309
167
|
import { invariant } from "@dxos/invariant";
|
|
310
|
-
import { mx as
|
|
168
|
+
import { mx as mx3 } from "@dxos/react-ui-theme";
|
|
311
169
|
var __dxlog_file = "/__w/dxos/dxos/packages/plugins/plugin-thread/src/components/ResponsiveGrid/ResponsiveGrid.tsx";
|
|
312
170
|
var ASPECT_RATIO = 16 / 9;
|
|
313
171
|
var MIN_GALLERY_HEIGHT = 250;
|
|
@@ -315,7 +173,7 @@ var DEFAULT_GAP = 8;
|
|
|
315
173
|
var maxImageSize = "w-[2560px] h-[1440px]";
|
|
316
174
|
var defaultGetId = (item) => item.id;
|
|
317
175
|
var ResponsiveGrid = ({ classNames, Cell, gap = DEFAULT_GAP, getId: getId2 = defaultGetId, items, pinned, autoHideGallery = false, debug, onPinnedChange }) => {
|
|
318
|
-
var _effect =
|
|
176
|
+
var _effect = _useSignals4();
|
|
319
177
|
try {
|
|
320
178
|
const { width: containerWidth = 0, height: containerHeight = 0, ref: containerRef } = useResizeDetector({
|
|
321
179
|
refreshRate: 100
|
|
@@ -402,47 +260,47 @@ var ResponsiveGrid = ({ classNames, Cell, gap = DEFAULT_GAP, getId: getId2 = def
|
|
|
402
260
|
pinned,
|
|
403
261
|
onPinnedChange
|
|
404
262
|
]);
|
|
405
|
-
return /* @__PURE__ */
|
|
263
|
+
return /* @__PURE__ */ React4.createElement("div", {
|
|
406
264
|
ref: containerRef,
|
|
407
|
-
className:
|
|
408
|
-
}, /* @__PURE__ */
|
|
265
|
+
className: mx3("relative w-full h-full", classNames)
|
|
266
|
+
}, /* @__PURE__ */ React4.createElement("div", {
|
|
409
267
|
className: "absolute inset-0 flex flex-col grow gap-2"
|
|
410
|
-
}, pinnedItem && /* @__PURE__ */
|
|
411
|
-
className:
|
|
268
|
+
}, pinnedItem && /* @__PURE__ */ React4.createElement("div", {
|
|
269
|
+
className: mx3("flex grow-[2] shrink overflow-hidden justify-center items-center", hideGallery && "h-full"),
|
|
412
270
|
style: hideGallery ? {} : {
|
|
413
271
|
height: dividerHeight
|
|
414
272
|
}
|
|
415
|
-
}, /* @__PURE__ */
|
|
273
|
+
}, /* @__PURE__ */ React4.createElement(SoloItem, {
|
|
416
274
|
id: getId2(pinnedItem),
|
|
417
275
|
debug
|
|
418
|
-
})), !hideGallery && /* @__PURE__ */
|
|
276
|
+
})), !hideGallery && /* @__PURE__ */ React4.createElement("div", {
|
|
419
277
|
ref: gridContainerRef,
|
|
420
278
|
className: "flex grow-[1] overflow-hidden justify-center items-center",
|
|
421
279
|
style: hideGallery ? {} : {
|
|
422
280
|
minHeight: MIN_GALLERY_HEIGHT
|
|
423
281
|
}
|
|
424
|
-
}, mainItems.length === 1 && /* @__PURE__ */
|
|
282
|
+
}, mainItems.length === 1 && /* @__PURE__ */ React4.createElement("div", {
|
|
425
283
|
style: {
|
|
426
284
|
width: cellWidth
|
|
427
285
|
},
|
|
428
286
|
className: "flex h-full"
|
|
429
|
-
}, /* @__PURE__ */
|
|
287
|
+
}, /* @__PURE__ */ React4.createElement(SoloItem, {
|
|
430
288
|
id: getId2(mainItems[0]),
|
|
431
289
|
debug
|
|
432
|
-
})), mainItems.length > 1 && columns > 0 && /* @__PURE__ */
|
|
290
|
+
})), mainItems.length > 1 && columns > 0 && /* @__PURE__ */ React4.createElement("div", {
|
|
433
291
|
role: "grid",
|
|
434
292
|
style: {
|
|
435
293
|
display: "grid",
|
|
436
294
|
gridTemplateColumns: `repeat(${columns}, ${cellWidth}px)`,
|
|
437
295
|
gap: `${gap}px`
|
|
438
296
|
}
|
|
439
|
-
}, mainItems.map((item) => /* @__PURE__ */
|
|
297
|
+
}, mainItems.map((item) => /* @__PURE__ */ React4.createElement("div", {
|
|
440
298
|
key: getId2(item),
|
|
441
299
|
"data-grid-item": getId2(item),
|
|
442
|
-
className:
|
|
443
|
-
}))))), /* @__PURE__ */
|
|
444
|
-
className:
|
|
445
|
-
}, bounds.map(([item, bounds2]) => /* @__PURE__ */
|
|
300
|
+
className: mx3("aspect-video max-h-full max-w-full w-auto h-auto", debug && "border border-primary-500")
|
|
301
|
+
}))))), /* @__PURE__ */ React4.createElement("div", {
|
|
302
|
+
className: mx3(debug && "opacity-10")
|
|
303
|
+
}, bounds.map(([item, bounds2]) => /* @__PURE__ */ React4.createElement(Cell, {
|
|
446
304
|
key: getId2(item),
|
|
447
305
|
classNames: "absolute transition-all duration-500",
|
|
448
306
|
item,
|
|
@@ -455,14 +313,14 @@ var ResponsiveGrid = ({ classNames, Cell, gap = DEFAULT_GAP, getId: getId2 = def
|
|
|
455
313
|
}
|
|
456
314
|
};
|
|
457
315
|
var SoloItem = ({ debug, id }) => {
|
|
458
|
-
var _effect =
|
|
316
|
+
var _effect = _useSignals4();
|
|
459
317
|
try {
|
|
460
|
-
return /* @__PURE__ */
|
|
318
|
+
return /* @__PURE__ */ React4.createElement(ResponsiveContainer, null, /* @__PURE__ */ React4.createElement("div", {
|
|
461
319
|
"data-grid-item": id,
|
|
462
|
-
className:
|
|
463
|
-
}, /* @__PURE__ */
|
|
320
|
+
className: mx3("aspect-video overflow-hidden", debug && "z-20 border-2 border-primary-500")
|
|
321
|
+
}, /* @__PURE__ */ React4.createElement("img", {
|
|
464
322
|
alt: "placeholder video",
|
|
465
|
-
className:
|
|
323
|
+
className: mx3("opacity-0", maxImageSize)
|
|
466
324
|
})));
|
|
467
325
|
} finally {
|
|
468
326
|
_effect.f();
|
|
@@ -532,15 +390,15 @@ var fitAspectRatio = (outerWidth, outerHeight, aspectRatio) => {
|
|
|
532
390
|
};
|
|
533
391
|
|
|
534
392
|
// src/components/ResponsiveGrid/ResponsiveGridItem.tsx
|
|
535
|
-
import { useSignals as
|
|
536
|
-
import
|
|
537
|
-
import { Icon
|
|
393
|
+
import { useSignals as _useSignals5 } from "@preact-signals/safe-react/tracking";
|
|
394
|
+
import React5, { useEffect as useEffect4, useState as useState2 } from "react";
|
|
395
|
+
import { Icon, IconButton, useTranslation } from "@dxos/react-ui";
|
|
538
396
|
import { Waveform } from "@dxos/react-ui-sfx";
|
|
539
|
-
import { groupHoverControlItemWithTransition
|
|
397
|
+
import { groupHoverControlItemWithTransition, mx as mx4 } from "@dxos/react-ui-theme";
|
|
540
398
|
var ResponsiveGridItem = ({ children, classNames, item, style, name, self, pinned, screenshare, video, mute, wave, speaking, onClick }) => {
|
|
541
|
-
var _effect =
|
|
399
|
+
var _effect = _useSignals5();
|
|
542
400
|
try {
|
|
543
|
-
const { t } =
|
|
401
|
+
const { t } = useTranslation(meta.id);
|
|
544
402
|
const iconProps = {
|
|
545
403
|
wave: {
|
|
546
404
|
icon: "ph--hand-waving--duotone",
|
|
@@ -566,32 +424,32 @@ var ResponsiveGridItem = ({ children, classNames, item, style, name, self, pinne
|
|
|
566
424
|
}, [
|
|
567
425
|
speaking
|
|
568
426
|
]);
|
|
569
|
-
return /* @__PURE__ */
|
|
570
|
-
className:
|
|
427
|
+
return /* @__PURE__ */ React5.createElement("div", {
|
|
428
|
+
className: mx4("relative w-full h-full group", "rounded-md outline outline-2 outline-neutral-900 transition-[outline-color] duration-500", speakingIndicator ? "outline-green-500" : !video && "outline-separator", classNames),
|
|
571
429
|
style
|
|
572
|
-
}, children, onClick && /* @__PURE__ */
|
|
430
|
+
}, children, onClick && /* @__PURE__ */ React5.createElement("div", {
|
|
573
431
|
className: "z-10 absolute top-1 right-1 flex"
|
|
574
|
-
}, /* @__PURE__ */
|
|
575
|
-
classNames:
|
|
432
|
+
}, /* @__PURE__ */ React5.createElement(IconButton, {
|
|
433
|
+
classNames: mx4("p-1 min-bs-1 rounded", groupHoverControlItemWithTransition),
|
|
576
434
|
iconOnly: true,
|
|
577
435
|
icon: pinned ? "ph--x--regular" : "ph--arrows-out--regular",
|
|
578
436
|
size: pinned ? 5 : 4,
|
|
579
437
|
label: pinned ? t("icon unpin") : t("icon pin"),
|
|
580
438
|
onClick: () => onClick?.(item)
|
|
581
|
-
})), name && /* @__PURE__ */
|
|
439
|
+
})), name && /* @__PURE__ */ React5.createElement("div", {
|
|
582
440
|
className: "z-10 absolute bottom-1 left-8 right-1 flex justify-end gap-1 items-center"
|
|
583
|
-
}, screenshare && /* @__PURE__ */
|
|
441
|
+
}, screenshare && /* @__PURE__ */ React5.createElement(Icon, {
|
|
584
442
|
icon: "ph--broadcast--regular",
|
|
585
443
|
size: pinned ? 5 : 4
|
|
586
|
-
}), /* @__PURE__ */
|
|
587
|
-
className:
|
|
588
|
-
}, name)), /* @__PURE__ */
|
|
444
|
+
}), /* @__PURE__ */ React5.createElement("div", {
|
|
445
|
+
className: mx4("bg-neutral-800 text-neutral-100 py-0.5 truncate rounded", pinned ? "px-2" : "px-1 text-xs")
|
|
446
|
+
}, name)), /* @__PURE__ */ React5.createElement("div", {
|
|
589
447
|
className: "z-10 absolute bottom-1 left-1 flex"
|
|
590
|
-
}, speaking && /* @__PURE__ */
|
|
448
|
+
}, speaking && /* @__PURE__ */ React5.createElement(Waveform, {
|
|
591
449
|
active: true,
|
|
592
450
|
size: pinned ? 5 : 4
|
|
593
|
-
}) || props && /* @__PURE__ */
|
|
594
|
-
classNames:
|
|
451
|
+
}) || props && /* @__PURE__ */ React5.createElement(IconButton, {
|
|
452
|
+
classNames: mx4("p-1 min-bs-1 rounded", props?.classNames),
|
|
595
453
|
icon: props?.icon,
|
|
596
454
|
label: props?.label,
|
|
597
455
|
size: pinned ? 5 : 4,
|
|
@@ -605,17 +463,19 @@ var ResponsiveGridItem = ({ children, classNames, item, style, name, self, pinne
|
|
|
605
463
|
// src/components/Participant/Participant.tsx
|
|
606
464
|
var SCREENSHARE_SUFFIX = "_screenshare";
|
|
607
465
|
var Participant = /* @__PURE__ */ memo2(({ item: user, debug, ...props }) => {
|
|
608
|
-
var _effect =
|
|
466
|
+
var _effect = _useSignals6();
|
|
609
467
|
try {
|
|
610
|
-
const call =
|
|
468
|
+
const call = useCapability(ThreadCapabilities.CallManager);
|
|
611
469
|
const isSelf = call.self.id !== void 0 && user.id !== void 0 && user.id.startsWith(call.self.id);
|
|
612
470
|
const isScreenshare = user.id?.endsWith(SCREENSHARE_SUFFIX);
|
|
613
|
-
const pulledVideoStream = call.getVideoStream(
|
|
471
|
+
const pulledVideoStream = !isSelf && isScreenshare && user.tracks?.screenshareEnabled ? call.getVideoStream(user.tracks?.screenshare) : !isSelf && !isScreenshare && user.tracks?.videoEnabled ? call.getVideoStream(user.tracks?.video) : void 0;
|
|
614
472
|
const videoStream = useMemo2(() => {
|
|
615
|
-
if (isSelf
|
|
616
|
-
|
|
617
|
-
|
|
618
|
-
|
|
473
|
+
if (isSelf) {
|
|
474
|
+
if (isScreenshare) {
|
|
475
|
+
return call.media.screenshareVideoStream;
|
|
476
|
+
} else if (!isScreenshare) {
|
|
477
|
+
return call.media.videoStream;
|
|
478
|
+
}
|
|
619
479
|
} else if (!isSelf) {
|
|
620
480
|
return pulledVideoStream;
|
|
621
481
|
}
|
|
@@ -626,7 +486,7 @@ var Participant = /* @__PURE__ */ memo2(({ item: user, debug, ...props }) => {
|
|
|
626
486
|
call.media.screenshareVideoStream,
|
|
627
487
|
pulledVideoStream
|
|
628
488
|
]);
|
|
629
|
-
return /* @__PURE__ */
|
|
489
|
+
return /* @__PURE__ */ React6.createElement(ResponsiveGridItem, {
|
|
630
490
|
...props,
|
|
631
491
|
item: user,
|
|
632
492
|
name: user.name,
|
|
@@ -637,7 +497,7 @@ var Participant = /* @__PURE__ */ memo2(({ item: user, debug, ...props }) => {
|
|
|
637
497
|
wave: user.raisedHand,
|
|
638
498
|
speaking: user.speaking,
|
|
639
499
|
debug
|
|
640
|
-
}, /* @__PURE__ */
|
|
500
|
+
}, /* @__PURE__ */ React6.createElement(VideoObject, {
|
|
641
501
|
videoStream,
|
|
642
502
|
flip: isSelf && !isScreenshare,
|
|
643
503
|
contain: !!isScreenshare,
|
|
@@ -650,11 +510,11 @@ var Participant = /* @__PURE__ */ memo2(({ item: user, debug, ...props }) => {
|
|
|
650
510
|
Participant.displayName = "Participant";
|
|
651
511
|
|
|
652
512
|
// src/components/Participant/ParticipantGrid.tsx
|
|
653
|
-
import { useSignals as
|
|
654
|
-
import
|
|
513
|
+
import { useSignals as _useSignals7 } from "@preact-signals/safe-react/tracking";
|
|
514
|
+
import React7, { useEffect as useEffect5, useMemo as useMemo3, useState as useState3 } from "react";
|
|
655
515
|
var getId = (user) => user.id;
|
|
656
516
|
var ParticipantGrid = ({ classNames, self, users, fullscreen, debug }) => {
|
|
657
|
-
var _effect =
|
|
517
|
+
var _effect = _useSignals7();
|
|
658
518
|
try {
|
|
659
519
|
const [pinned, setPinned] = useState3();
|
|
660
520
|
const allUsers = useMemo3(() => {
|
|
@@ -708,7 +568,7 @@ var ParticipantGrid = ({ classNames, self, users, fullscreen, debug }) => {
|
|
|
708
568
|
return 0;
|
|
709
569
|
}
|
|
710
570
|
});
|
|
711
|
-
return /* @__PURE__ */
|
|
571
|
+
return /* @__PURE__ */ React7.createElement(ResponsiveGrid, {
|
|
712
572
|
classNames,
|
|
713
573
|
Cell: Participant,
|
|
714
574
|
debug,
|
|
@@ -723,6 +583,148 @@ var ParticipantGrid = ({ classNames, self, users, fullscreen, debug }) => {
|
|
|
723
583
|
}
|
|
724
584
|
};
|
|
725
585
|
|
|
586
|
+
// src/components/Call/Toolbar.tsx
|
|
587
|
+
import { useSignals as _useSignals8 } from "@preact-signals/safe-react/tracking";
|
|
588
|
+
import React8 from "react";
|
|
589
|
+
import { useAppGraph, useCapability as useCapability2 } from "@dxos/app-framework";
|
|
590
|
+
import { useActions, useNode } from "@dxos/plugin-graph";
|
|
591
|
+
import { fullyQualifiedId } from "@dxos/react-client/echo";
|
|
592
|
+
import { Icon as Icon2, IconButton as IconButton2, Toolbar as NaturalToolbar, toLocalizedString, useTranslation as useTranslation2 } from "@dxos/react-ui";
|
|
593
|
+
import { groupHoverControlItemWithTransition as groupHoverControlItemWithTransition2, mx as mx5 } from "@dxos/react-ui-theme";
|
|
594
|
+
var Toolbar = ({ classNames, channel, participants, autoHideControls = true, onJoin, onLeave }) => {
|
|
595
|
+
var _effect = _useSignals8();
|
|
596
|
+
try {
|
|
597
|
+
const { t } = useTranslation2(meta.id);
|
|
598
|
+
const { graph } = useAppGraph();
|
|
599
|
+
const call = useCapability2(ThreadCapabilities.CallManager);
|
|
600
|
+
const node = useNode(graph, channel && fullyQualifiedId(channel));
|
|
601
|
+
const actions = useActions(graph, node?.id).filter((action) => action.properties.disposition === "toolbar");
|
|
602
|
+
const isScreensharing = call.media.screenshareTrack !== void 0;
|
|
603
|
+
const canSharescreen = typeof navigator.mediaDevices !== "undefined" && navigator.mediaDevices.getDisplayMedia !== void 0;
|
|
604
|
+
return /* @__PURE__ */ React8.createElement("div", {
|
|
605
|
+
className: mx5("z-20 flex justify-center m-8", autoHideControls && groupHoverControlItemWithTransition2)
|
|
606
|
+
}, /* @__PURE__ */ React8.createElement(NaturalToolbar.Root, {
|
|
607
|
+
classNames: [
|
|
608
|
+
"p-2 bg-modalSurface rounded-md shadow-md",
|
|
609
|
+
classNames
|
|
610
|
+
]
|
|
611
|
+
}, /* @__PURE__ */ React8.createElement(ToggleButton, {
|
|
612
|
+
active: call.media.audioEnabled,
|
|
613
|
+
state: {
|
|
614
|
+
on: {
|
|
615
|
+
icon: "ph--microphone--regular",
|
|
616
|
+
label: t("mic off"),
|
|
617
|
+
onClick: () => call.turnAudioOff(),
|
|
618
|
+
classNames: "bg-callActive"
|
|
619
|
+
},
|
|
620
|
+
off: {
|
|
621
|
+
icon: "ph--microphone-slash--duotone",
|
|
622
|
+
label: t("mic on"),
|
|
623
|
+
onClick: () => call.turnAudioOn(),
|
|
624
|
+
classNames: [
|
|
625
|
+
call.joined && "bg-callAlert"
|
|
626
|
+
]
|
|
627
|
+
}
|
|
628
|
+
}
|
|
629
|
+
}), /* @__PURE__ */ React8.createElement(ToggleButton, {
|
|
630
|
+
active: call.media.videoEnabled,
|
|
631
|
+
state: {
|
|
632
|
+
on: {
|
|
633
|
+
icon: "ph--video-camera--regular",
|
|
634
|
+
label: t("camera off"),
|
|
635
|
+
onClick: () => call.turnVideoOff()
|
|
636
|
+
},
|
|
637
|
+
off: {
|
|
638
|
+
icon: "ph--video-camera-slash--duotone",
|
|
639
|
+
label: t("camera on"),
|
|
640
|
+
onClick: () => call.turnVideoOn()
|
|
641
|
+
}
|
|
642
|
+
}
|
|
643
|
+
}), participants !== void 0 && /* @__PURE__ */ React8.createElement("div", {
|
|
644
|
+
className: "flex justify-center items-center gap-2 is-[5rem] text-xs text-subdued"
|
|
645
|
+
}, /* @__PURE__ */ React8.createElement(Icon2, {
|
|
646
|
+
icon: "ph--users--regular",
|
|
647
|
+
size: 4
|
|
648
|
+
}), /* @__PURE__ */ React8.createElement("div", null, participants)) || /* @__PURE__ */ React8.createElement(NaturalToolbar.Separator, {
|
|
649
|
+
variant: "gap"
|
|
650
|
+
}), call.joined && /* @__PURE__ */ React8.createElement(React8.Fragment, null, /* @__PURE__ */ React8.createElement(ToggleButton, {
|
|
651
|
+
disabled: !canSharescreen,
|
|
652
|
+
active: isScreensharing,
|
|
653
|
+
state: {
|
|
654
|
+
on: {
|
|
655
|
+
icon: "ph--monitor--regular",
|
|
656
|
+
label: t("screenshare off"),
|
|
657
|
+
onClick: () => call.turnScreenshareOff()
|
|
658
|
+
},
|
|
659
|
+
off: {
|
|
660
|
+
icon: "ph--monitor-arrow-up--duotone",
|
|
661
|
+
label: t("screenshare on"),
|
|
662
|
+
onClick: () => call.turnScreenshareOn()
|
|
663
|
+
}
|
|
664
|
+
}
|
|
665
|
+
}), actions.map((action) => /* @__PURE__ */ React8.createElement(IconButton2, {
|
|
666
|
+
key: action.id,
|
|
667
|
+
...defaultButtonProps,
|
|
668
|
+
icon: action.properties.icon,
|
|
669
|
+
label: toLocalizedString(action.properties.label, t),
|
|
670
|
+
classNames: action.properties.classNames,
|
|
671
|
+
onClick: () => action.data({
|
|
672
|
+
node
|
|
673
|
+
})
|
|
674
|
+
})), /* @__PURE__ */ React8.createElement(ToggleButton, {
|
|
675
|
+
active: call.raisedHand,
|
|
676
|
+
state: {
|
|
677
|
+
on: {
|
|
678
|
+
icon: "ph--hand-waving--regular",
|
|
679
|
+
label: t("lower hand"),
|
|
680
|
+
onClick: () => call.setRaisedHand(false),
|
|
681
|
+
classNames: [
|
|
682
|
+
call.joined && "bg-callAlert"
|
|
683
|
+
]
|
|
684
|
+
},
|
|
685
|
+
off: {
|
|
686
|
+
icon: "ph--hand-palm--duotone",
|
|
687
|
+
label: t("raise hand"),
|
|
688
|
+
onClick: () => call.setRaisedHand(true)
|
|
689
|
+
}
|
|
690
|
+
}
|
|
691
|
+
})), call.joined ? /* @__PURE__ */ React8.createElement(IconButton2, {
|
|
692
|
+
variant: "destructive",
|
|
693
|
+
icon: "ph--phone-x--regular",
|
|
694
|
+
label: t("leave call"),
|
|
695
|
+
onClick: onLeave
|
|
696
|
+
}) : /* @__PURE__ */ React8.createElement(IconButton2, {
|
|
697
|
+
variant: "primary",
|
|
698
|
+
icon: "ph--phone-incoming--regular",
|
|
699
|
+
label: t("join call"),
|
|
700
|
+
onClick: onJoin
|
|
701
|
+
})));
|
|
702
|
+
} finally {
|
|
703
|
+
_effect.f();
|
|
704
|
+
}
|
|
705
|
+
};
|
|
706
|
+
Toolbar.displayName = "MeetingToolbar";
|
|
707
|
+
var defaultButtonProps = {
|
|
708
|
+
size: 5,
|
|
709
|
+
iconOnly: true
|
|
710
|
+
};
|
|
711
|
+
var ToggleButton = ({ active, state }) => {
|
|
712
|
+
var _effect = _useSignals8();
|
|
713
|
+
try {
|
|
714
|
+
return /* @__PURE__ */ React8.createElement(IconButton2, {
|
|
715
|
+
...defaultButtonProps,
|
|
716
|
+
classNames: [
|
|
717
|
+
active ? state.on.classNames ?? "bg-callActive" : state.off.classNames
|
|
718
|
+
],
|
|
719
|
+
icon: active ? state.on.icon : state.off.icon,
|
|
720
|
+
label: active ? state.on.label : state.off.label,
|
|
721
|
+
onClick: active ? state.on.onClick : state.off.onClick
|
|
722
|
+
});
|
|
723
|
+
} finally {
|
|
724
|
+
_effect.f();
|
|
725
|
+
}
|
|
726
|
+
};
|
|
727
|
+
|
|
726
728
|
// src/components/Call/Call.tsx
|
|
727
729
|
var CallRoot = ({ children }) => {
|
|
728
730
|
var _effect = _useSignals9();
|
|
@@ -802,7 +804,7 @@ var ChannelContainer = ({ channel, roomId: _roomId, role, fullscreen }) => {
|
|
|
802
804
|
useEffect6(() => {
|
|
803
805
|
const ctx = new Context(void 0, {
|
|
804
806
|
F: __dxlog_file2,
|
|
805
|
-
L:
|
|
807
|
+
L: 49
|
|
806
808
|
});
|
|
807
809
|
callManager.left.on(ctx, (roomId2) => {
|
|
808
810
|
extensions.forEach((extension) => {
|
|
@@ -844,7 +846,7 @@ var ChannelContainer = ({ channel, roomId: _roomId, role, fullscreen }) => {
|
|
|
844
846
|
} catch (err) {
|
|
845
847
|
log.catch(err, void 0, {
|
|
846
848
|
F: __dxlog_file2,
|
|
847
|
-
L:
|
|
849
|
+
L: 93,
|
|
848
850
|
S: void 0,
|
|
849
851
|
C: (f, a) => f(...a)
|
|
850
852
|
});
|
|
@@ -860,7 +862,7 @@ var ChannelContainer = ({ channel, roomId: _roomId, role, fullscreen }) => {
|
|
|
860
862
|
} catch (err) {
|
|
861
863
|
log.catch(err, void 0, {
|
|
862
864
|
F: __dxlog_file2,
|
|
863
|
-
L:
|
|
865
|
+
L: 105,
|
|
864
866
|
S: void 0,
|
|
865
867
|
C: (f, a) => f(...a)
|
|
866
868
|
});
|
|
@@ -982,4 +984,4 @@ export {
|
|
|
982
984
|
ChannelContainer,
|
|
983
985
|
ChannelContainer_default
|
|
984
986
|
};
|
|
985
|
-
//# sourceMappingURL=chunk-
|
|
987
|
+
//# sourceMappingURL=chunk-SNKFZQST.mjs.map
|