@azure/communication-react 1.7.1-alpha-202308170011 → 1.7.1-alpha-202308172328
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/communication-react.d.ts +115 -8
- package/dist/dist-cjs/communication-react/index.js +688 -117
- package/dist/dist-cjs/communication-react/index.js.map +1 -1
- package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js +1 -1
- package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js.map +1 -1
- package/dist/dist-esm/calling-component-bindings/src/baseSelectors.d.ts +5 -0
- package/dist/dist-esm/calling-component-bindings/src/baseSelectors.js +8 -0
- package/dist/dist-esm/calling-component-bindings/src/baseSelectors.js.map +1 -1
- package/dist/dist-esm/calling-component-bindings/src/callControlSelectors.d.ts +15 -0
- package/dist/dist-esm/calling-component-bindings/src/callControlSelectors.js +16 -1
- package/dist/dist-esm/calling-component-bindings/src/callControlSelectors.js.map +1 -1
- package/dist/dist-esm/calling-component-bindings/src/handlers/createCommonHandlers.d.ts +3 -0
- package/dist/dist-esm/calling-component-bindings/src/handlers/createCommonHandlers.js +28 -6
- package/dist/dist-esm/calling-component-bindings/src/handlers/createCommonHandlers.js.map +1 -1
- package/dist/dist-esm/calling-component-bindings/src/handlers/createTeamsCallHandlers.js.map +1 -1
- package/dist/dist-esm/calling-component-bindings/src/hooks/usePropsFor.js +13 -1
- package/dist/dist-esm/calling-component-bindings/src/hooks/usePropsFor.js.map +1 -1
- package/dist/dist-esm/calling-component-bindings/src/participantListSelector.js +8 -1
- package/dist/dist-esm/calling-component-bindings/src/participantListSelector.js.map +1 -1
- package/dist/dist-esm/calling-component-bindings/src/utils/participantListSelectorUtils.d.ts +2 -2
- package/dist/dist-esm/calling-component-bindings/src/utils/participantListSelectorUtils.js +4 -10
- package/dist/dist-esm/calling-component-bindings/src/utils/participantListSelectorUtils.js.map +1 -1
- package/dist/dist-esm/calling-component-bindings/src/utils/videoGalleryUtils.d.ts +3 -2
- package/dist/dist-esm/calling-component-bindings/src/utils/videoGalleryUtils.js +22 -7
- package/dist/dist-esm/calling-component-bindings/src/utils/videoGalleryUtils.js.map +1 -1
- package/dist/dist-esm/calling-component-bindings/src/videoGallerySelector.js +14 -4
- package/dist/dist-esm/calling-component-bindings/src/videoGallerySelector.js.map +1 -1
- package/dist/dist-esm/calling-stateful-client/src/CallClientState.d.ts +11 -4
- package/dist/dist-esm/calling-stateful-client/src/CallClientState.js +0 -1
- package/dist/dist-esm/calling-stateful-client/src/CallClientState.js.map +1 -1
- package/dist/dist-esm/calling-stateful-client/src/CallContext.js +13 -3
- package/dist/dist-esm/calling-stateful-client/src/CallContext.js.map +1 -1
- package/dist/dist-esm/calling-stateful-client/src/Converter.d.ts +6 -0
- package/dist/dist-esm/calling-stateful-client/src/Converter.js +9 -0
- package/dist/dist-esm/calling-stateful-client/src/Converter.js.map +1 -1
- package/dist/dist-esm/calling-stateful-client/src/index-public.d.ts +1 -0
- package/dist/dist-esm/calling-stateful-client/src/index-public.js.map +1 -1
- package/dist/dist-esm/communication-react/src/index.d.ts +2 -0
- package/dist/dist-esm/communication-react/src/index.js +2 -0
- package/dist/dist-esm/communication-react/src/index.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/ParticipantList.js +45 -13
- package/dist/dist-esm/react-components/src/components/ParticipantList.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/VideoGallery/DefaultLayout.js +10 -2
- package/dist/dist-esm/react-components/src/components/VideoGallery/DefaultLayout.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/VideoGallery/FloatingLocalVideoLayout.js +2 -1
- package/dist/dist-esm/react-components/src/components/VideoGallery/FloatingLocalVideoLayout.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/VideoGallery/SpeakerVideoLayout.d.ts +28 -0
- package/dist/dist-esm/react-components/src/components/VideoGallery/SpeakerVideoLayout.js +145 -0
- package/dist/dist-esm/react-components/src/components/VideoGallery/SpeakerVideoLayout.js.map +1 -0
- package/dist/dist-esm/react-components/src/components/VideoGallery/utils/videoGalleryLayoutUtils.d.ts +2 -0
- package/dist/dist-esm/react-components/src/components/VideoGallery/utils/videoGalleryLayoutUtils.js +19 -2
- package/dist/dist-esm/react-components/src/components/VideoGallery/utils/videoGalleryLayoutUtils.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/VideoGallery.d.ts +1 -1
- package/dist/dist-esm/react-components/src/components/VideoGallery.js +14 -5
- package/dist/dist-esm/react-components/src/components/VideoGallery.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/VideoTile.js +2 -2
- package/dist/dist-esm/react-components/src/components/VideoTile.js.map +1 -1
- package/dist/dist-esm/react-components/src/gallery/dominantSpeaker.d.ts +7 -0
- package/dist/dist-esm/react-components/src/gallery/dominantSpeaker.js +5 -1
- package/dist/dist-esm/react-components/src/gallery/dominantSpeaker.js.map +1 -1
- package/dist/dist-esm/react-components/src/theming/icons.d.ts +2 -0
- package/dist/dist-esm/react-components/src/theming/icons.js +5 -1
- package/dist/dist-esm/react-components/src/theming/icons.js.map +1 -1
- package/dist/dist-esm/react-components/src/types/ParticipantListParticipant.d.ts +1 -1
- package/dist/dist-esm/react-components/src/types/ParticipantListParticipant.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.d.ts +10 -0
- package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.js +5 -3
- package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/Strings.d.ts +12 -0
- package/dist/dist-esm/react-composites/src/composites/CallComposite/Strings.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.d.ts +2 -0
- package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js +20 -0
- package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/CallAdapter.d.ts +12 -0
- package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/CallAdapter.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.d.ts +3 -0
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js +5 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallControls.js +29 -0
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallControls.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LocalAndRemotePIP.d.ts +2 -0
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LocalAndRemotePIP.js +6 -2
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LocalAndRemotePIP.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/MediaGallery.d.ts +2 -0
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/MediaGallery.js +21 -11
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/MediaGallery.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/RaiseHand.d.ts +12 -0
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/RaiseHand.js +26 -0
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/RaiseHand.js.map +1 -0
- package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useHandlers.js +19 -4
- package/dist/dist-esm/react-composites/src/composites/CallComposite/hooks/useHandlers.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/CallPage.d.ts +2 -0
- package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/CallPage.js +13 -3
- package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/CallPage.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/baseSelectors.d.ts +5 -0
- package/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/baseSelectors.js +5 -0
- package/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/baseSelectors.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/localAndRemotePIPSelector.d.ts +3 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/localAndRemotePIPSelector.js +12 -2
- package/dist/dist-esm/react-composites/src/composites/CallComposite/selectors/localAndRemotePIPSelector.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.d.ts +10 -0
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js +6 -2
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.d.ts +4 -0
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js +18 -0
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatAdapter.d.ts +12 -0
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatAdapter.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.d.ts +2 -0
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.js +4 -0
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.js +11 -5
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/common/ControlBar/CommonCallControlBar.d.ts +3 -0
- package/dist/dist-esm/react-composites/src/composites/common/ControlBar/CommonCallControlBar.js +13 -1
- package/dist/dist-esm/react-composites/src/composites/common/ControlBar/CommonCallControlBar.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/common/ControlBar/DesktopMoreButton.d.ts +3 -0
- package/dist/dist-esm/react-composites/src/composites/common/ControlBar/DesktopMoreButton.js +56 -0
- package/dist/dist-esm/react-composites/src/composites/common/ControlBar/DesktopMoreButton.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/common/Drawer/MoreDrawer.js +25 -0
- package/dist/dist-esm/react-composites/src/composites/common/Drawer/MoreDrawer.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/common/icons.d.ts +16 -2
- package/dist/dist-esm/react-composites/src/composites/common/icons.js +11 -1
- package/dist/dist-esm/react-composites/src/composites/common/icons.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/common/types/CommonCallControlOptions.d.ts +7 -0
- package/dist/dist-esm/react-composites/src/composites/common/types/CommonCallControlOptions.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/localization/locales/en-US/strings.json +4 -1
- package/package.json +8 -8
@@ -178,7 +178,7 @@ const _isValidIdentifier = (identifier) => {
|
|
178
178
|
// Copyright (c) Microsoft Corporation.
|
179
179
|
// Licensed under the MIT license.
|
180
180
|
// GENERATED FILE. DO NOT EDIT MANUALLY.
|
181
|
-
var telemetryVersion = '1.7.1-alpha-
|
181
|
+
var telemetryVersion = '1.7.1-alpha-202308172328';
|
182
182
|
|
183
183
|
// Copyright (c) Microsoft Corporation.
|
184
184
|
/**
|
@@ -360,6 +360,14 @@ const getRemoteParticipants$1 = (state, props) => {
|
|
360
360
|
var _a;
|
361
361
|
return (_a = state.calls[props.callId]) === null || _a === void 0 ? void 0 : _a.remoteParticipants;
|
362
362
|
};
|
363
|
+
/* @conditional-compile-remove(raise-hand) */
|
364
|
+
/**
|
365
|
+
* @private
|
366
|
+
*/
|
367
|
+
const getLocalParticipantRaisedHand$1 = (state, props) => {
|
368
|
+
var _a, _b;
|
369
|
+
return (_b = (_a = state.calls[props.callId]) === null || _a === void 0 ? void 0 : _a.raiseHand) === null || _b === void 0 ? void 0 : _b.localParticipantRaisedHand;
|
370
|
+
};
|
363
371
|
/**
|
364
372
|
* @private
|
365
373
|
*/
|
@@ -602,6 +610,19 @@ const cameraButtonSelector = reselect__namespace.createSelector([
|
|
602
610
|
selectedCamera: deviceManager.selectedCamera
|
603
611
|
};
|
604
612
|
});
|
613
|
+
/* @conditional-compile-remove(raise-hand) */
|
614
|
+
/**
|
615
|
+
* Selector for {@link RaiseHandButton} component.
|
616
|
+
*
|
617
|
+
* @public
|
618
|
+
*/
|
619
|
+
const raiseHandButtonSelector = reselect__namespace.createSelector([getLocalParticipantRaisedHand$1, getCallState], (raisedHand, callState) => {
|
620
|
+
var _a;
|
621
|
+
return {
|
622
|
+
checked: raisedHand ? true : false,
|
623
|
+
disabled: callState === 'InLobby' ? true : (_a = callState === 'Connecting') !== null && _a !== void 0 ? _a : false
|
624
|
+
};
|
625
|
+
});
|
605
626
|
/**
|
606
627
|
* Selector for {@link ScreenShareButton} component.
|
607
628
|
*
|
@@ -624,7 +645,7 @@ const screenShareButtonSelector = reselect__namespace.createSelector([
|
|
624
645
|
role === 'Consumer' ||
|
625
646
|
role === 'Attendee';
|
626
647
|
/* @conditional-compile-remove(PSTN-calls) */
|
627
|
-
disabled = disabled || ['InLobby', 'Connecting'].includes(callState);
|
648
|
+
disabled = disabled || ['InLobby', 'Connecting', 'LocalHold'].includes(callState);
|
628
649
|
return {
|
629
650
|
checked: isScreenSharingOn,
|
630
651
|
disabled
|
@@ -794,6 +815,22 @@ const createDefaultCommonCallingHandlers = memoizeOne__default['default']((callC
|
|
794
815
|
}, options);
|
795
816
|
}
|
796
817
|
});
|
818
|
+
/* @conditional-compile-remove(raise-hand) */
|
819
|
+
const onRaiseHand = () => __awaiter$L(void 0, void 0, void 0, function* () { var _a; return yield ((_a = call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.RaiseHand)) === null || _a === void 0 ? void 0 : _a.raiseHand()); });
|
820
|
+
/* @conditional-compile-remove(raise-hand) */
|
821
|
+
const onLowerHand = () => __awaiter$L(void 0, void 0, void 0, function* () { var _b; return yield ((_b = call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.RaiseHand)) === null || _b === void 0 ? void 0 : _b.lowerHand()); });
|
822
|
+
/* @conditional-compile-remove(raise-hand) */
|
823
|
+
const onToggleRaiseHand = () => __awaiter$L(void 0, void 0, void 0, function* () {
|
824
|
+
const raiseHandFeature = call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.RaiseHand);
|
825
|
+
const localUserId = callClient.getState().userId;
|
826
|
+
const isLocalRaisedHand = raiseHandFeature === null || raiseHandFeature === void 0 ? void 0 : raiseHandFeature.getRaisedHands().find((publishedState) => toFlatCommunicationIdentifier(publishedState.identifier) === toFlatCommunicationIdentifier(localUserId));
|
827
|
+
if (isLocalRaisedHand) {
|
828
|
+
yield (raiseHandFeature === null || raiseHandFeature === void 0 ? void 0 : raiseHandFeature.lowerHand());
|
829
|
+
}
|
830
|
+
else {
|
831
|
+
yield (raiseHandFeature === null || raiseHandFeature === void 0 ? void 0 : raiseHandFeature.raiseHand());
|
832
|
+
}
|
833
|
+
});
|
797
834
|
const onToggleMicrophone = () => __awaiter$L(void 0, void 0, void 0, function* () {
|
798
835
|
if (!call || !_isInCall(call.state)) {
|
799
836
|
throw new Error(`Please invoke onToggleMicrophone after call is started`);
|
@@ -807,7 +844,7 @@ const createDefaultCommonCallingHandlers = memoizeOne__default['default']((callC
|
|
807
844
|
/* @conditional-compile-remove(PSTN-calls) */
|
808
845
|
const onToggleHold = () => __awaiter$L(void 0, void 0, void 0, function* () { return (call === null || call === void 0 ? void 0 : call.state) === 'LocalHold' ? yield (call === null || call === void 0 ? void 0 : call.resume()) : yield (call === null || call === void 0 ? void 0 : call.hold()); });
|
809
846
|
const onCreateLocalStreamView = (options = { scalingMode: 'Crop', isMirrored: true }) => __awaiter$L(void 0, void 0, void 0, function* () {
|
810
|
-
var
|
847
|
+
var _c;
|
811
848
|
if (!call || call.localVideoStreams.length === 0) {
|
812
849
|
return;
|
813
850
|
}
|
@@ -819,7 +856,7 @@ const createDefaultCommonCallingHandlers = memoizeOne__default['default']((callC
|
|
819
856
|
if (!localStream) {
|
820
857
|
return;
|
821
858
|
}
|
822
|
-
const { view } = (
|
859
|
+
const { view } = (_c = (yield callClient.createView(call.id, undefined, localStream, options))) !== null && _c !== void 0 ? _c : {};
|
823
860
|
return view ? { view } : undefined;
|
824
861
|
});
|
825
862
|
const onCreateRemoteStreamView = (userId, options = { scalingMode: 'Crop' }) => __awaiter$L(void 0, void 0, void 0, function* () {
|
@@ -946,7 +983,7 @@ const createDefaultCommonCallingHandlers = memoizeOne__default['default']((callC
|
|
946
983
|
});
|
947
984
|
/* @conditional-compile-remove(video-background-effects) */
|
948
985
|
const onBlurVideoBackground = (backgroundBlurConfig) => __awaiter$L(void 0, void 0, void 0, function* () {
|
949
|
-
var
|
986
|
+
var _d;
|
950
987
|
const stream = (call === null || call === void 0 ? void 0 : call.localVideoStreams.find((stream) => stream.mediaStreamType === 'Video')) ||
|
951
988
|
(deviceManager === null || deviceManager === void 0 ? void 0 : deviceManager.getUnparentedVideoStreams().find((stream) => stream.mediaStreamType === 'Video'));
|
952
989
|
if (stream) {
|
@@ -954,13 +991,13 @@ const createDefaultCommonCallingHandlers = memoizeOne__default['default']((callC
|
|
954
991
|
throw new Error(`Video background effects dependency not resolved`);
|
955
992
|
}
|
956
993
|
const createEffect = (options === null || options === void 0 ? void 0 : options.onResolveVideoBackgroundEffectsDependency) &&
|
957
|
-
((
|
994
|
+
((_d = (yield options.onResolveVideoBackgroundEffectsDependency())) === null || _d === void 0 ? void 0 : _d.createBackgroundBlurEffect);
|
958
995
|
return createEffect && stream.feature(communicationCalling.Features.VideoEffects).startEffects(createEffect(backgroundBlurConfig));
|
959
996
|
}
|
960
997
|
});
|
961
998
|
/* @conditional-compile-remove(video-background-effects) */
|
962
999
|
const onReplaceVideoBackground = (backgroundReplacementConfig) => __awaiter$L(void 0, void 0, void 0, function* () {
|
963
|
-
var
|
1000
|
+
var _e;
|
964
1001
|
const stream = (call === null || call === void 0 ? void 0 : call.localVideoStreams.find((stream) => stream.mediaStreamType === 'Video')) ||
|
965
1002
|
(deviceManager === null || deviceManager === void 0 ? void 0 : deviceManager.getUnparentedVideoStreams().find((stream) => stream.mediaStreamType === 'Video'));
|
966
1003
|
if (stream) {
|
@@ -968,7 +1005,7 @@ const createDefaultCommonCallingHandlers = memoizeOne__default['default']((callC
|
|
968
1005
|
throw new Error(`Video background effects dependency not resolved`);
|
969
1006
|
}
|
970
1007
|
const createEffect = (options === null || options === void 0 ? void 0 : options.onResolveVideoBackgroundEffectsDependency) &&
|
971
|
-
((
|
1008
|
+
((_e = (yield options.onResolveVideoBackgroundEffectsDependency())) === null || _e === void 0 ? void 0 : _e.createBackgroundReplacementEffect);
|
972
1009
|
return (createEffect && stream.feature(communicationCalling.Features.VideoEffects).startEffects(createEffect(backgroundReplacementConfig)));
|
973
1010
|
}
|
974
1011
|
});
|
@@ -1007,6 +1044,12 @@ const createDefaultCommonCallingHandlers = memoizeOne__default['default']((callC
|
|
1007
1044
|
onDisposeLocalStreamView,
|
1008
1045
|
onDisposeRemoteScreenShareStreamView,
|
1009
1046
|
onDisposeRemoteVideoStreamView,
|
1047
|
+
/* @conditional-compile-remove(raise-hand) */
|
1048
|
+
onRaiseHand,
|
1049
|
+
/* @conditional-compile-remove(raise-hand) */
|
1050
|
+
onLowerHand,
|
1051
|
+
/* @conditional-compile-remove(raise-hand) */
|
1052
|
+
onToggleRaiseHand,
|
1010
1053
|
/* @conditional-compile-remove(PSTN-calls) */
|
1011
1054
|
onAddParticipant: notImplemented,
|
1012
1055
|
onRemoveParticipant: notImplemented,
|
@@ -1376,6 +1419,7 @@ const deviceManagerDeclaratify = (deviceManager, context, internalContext) => {
|
|
1376
1419
|
};
|
1377
1420
|
|
1378
1421
|
// Copyright (c) Microsoft Corporation.
|
1422
|
+
// Licensed under the MIT license.
|
1379
1423
|
/**
|
1380
1424
|
* Error thrown from failed stateful API methods.
|
1381
1425
|
*
|
@@ -1648,6 +1692,15 @@ function convertFromSDKToDeclarativeVideoStreamVideoEffects(videoEffects) {
|
|
1648
1692
|
activeEffects: videoEffects
|
1649
1693
|
};
|
1650
1694
|
}
|
1695
|
+
/* @conditional-compile-remove(raise-hand) */
|
1696
|
+
/**
|
1697
|
+
* @private
|
1698
|
+
*/
|
1699
|
+
function convertFromSDKToRaisedHandState(raisedHand) {
|
1700
|
+
return {
|
1701
|
+
raisedHandOrderPosition: raisedHand.order
|
1702
|
+
};
|
1703
|
+
}
|
1651
1704
|
|
1652
1705
|
// Copyright (c) Microsoft Corporation.
|
1653
1706
|
// Licensed under the MIT license.
|
@@ -1934,8 +1987,16 @@ class CallContext$2 {
|
|
1934
1987
|
this.modifyState((draft) => {
|
1935
1988
|
const call = draft.calls[this._callIdHistory.latestCallId(callId)];
|
1936
1989
|
if (call) {
|
1937
|
-
call.raiseHand.raisedHands = raisedHands
|
1938
|
-
|
1990
|
+
call.raiseHand.raisedHands = raisedHands.map((raisedHand) => {
|
1991
|
+
return convertFromSDKToRaisedHandState(raisedHand);
|
1992
|
+
});
|
1993
|
+
const raisedHand = raisedHands.find((raisedHand) => toFlatCommunicationIdentifier(raisedHand.identifier) === toFlatCommunicationIdentifier(this._state.userId));
|
1994
|
+
if (raisedHand) {
|
1995
|
+
call.raiseHand.localParticipantRaisedHand = convertFromSDKToRaisedHandState(raisedHand);
|
1996
|
+
}
|
1997
|
+
else {
|
1998
|
+
call.raiseHand.localParticipantRaisedHand = undefined;
|
1999
|
+
}
|
1939
2000
|
}
|
1940
2001
|
});
|
1941
2002
|
}
|
@@ -1946,7 +2007,7 @@ class CallContext$2 {
|
|
1946
2007
|
if (call) {
|
1947
2008
|
const participant = call.remoteParticipants[participantKey];
|
1948
2009
|
if (participant) {
|
1949
|
-
participant.raisedHand = raisedHand;
|
2010
|
+
participant.raisedHand = raisedHand ? convertFromSDKToRaisedHandState(raisedHand) : raisedHand;
|
1950
2011
|
}
|
1951
2012
|
}
|
1952
2013
|
});
|
@@ -6082,6 +6143,10 @@ const DEFAULT_COMPONENT_ICONS = {
|
|
6082
6143
|
ControlButtonRaiseHand: React__default['default'].createElement(reactIcons.HandRight20Filled, null),
|
6083
6144
|
/* @conditional-compile-remove(raise-hand) */
|
6084
6145
|
ControlButtonLowerHand: React__default['default'].createElement(reactIcons.HandRightOff20Filled, null),
|
6146
|
+
/* @conditional-compile-remove(raise-hand) */
|
6147
|
+
RaiseHandContextualMenuItem: React__default['default'].createElement(reactIcons.HandRight20Regular, null),
|
6148
|
+
/* @conditional-compile-remove(raise-hand) */
|
6149
|
+
LowerHandContextualMenuItem: React__default['default'].createElement(reactIcons.HandRightOff20Regular, null),
|
6085
6150
|
/* @conditional-compile-remove(file-sharing) */
|
6086
6151
|
CancelFileUpload: React__default['default'].createElement(reactIcons.Dismiss16Regular, null),
|
6087
6152
|
/* @conditional-compile-remove(file-sharing) */
|
@@ -11295,25 +11360,56 @@ const onRenderParticipantDefault = (participant, strings, myUserId, onRenderAvat
|
|
11295
11360
|
(callingParticipant === null || callingParticipant === void 0 ? void 0 : callingParticipant.isMuted) ||
|
11296
11361
|
(
|
11297
11362
|
/* @conditional-compile-remove(raise-hand) */ callingParticipant === null || callingParticipant === void 0 ? void 0 : callingParticipant.raisedHand)
|
11298
|
-
? () =>
|
11299
|
-
|
11300
|
-
|
11301
|
-
|
11302
|
-
|
11303
|
-
|
11304
|
-
|
11305
|
-
|
11306
|
-
|
11307
|
-
|
11308
|
-
|
11309
|
-
|
11310
|
-
|
11363
|
+
? () => {
|
11364
|
+
var _a;
|
11365
|
+
return (React__default['default'].createElement(react.Stack, { horizontal: true, tokens: { childrenGap: '0.5rem' } },
|
11366
|
+
/* @conditional-compile-remove(raise-hand) */ callingParticipant.raisedHand && (React__default['default'].createElement(react.Stack, { horizontal: true, tokens: { childrenGap: '0.2rem' }, style: {
|
11367
|
+
alignItems: 'center',
|
11368
|
+
padding: '0.2rem',
|
11369
|
+
backgroundColor: theme === null || theme === void 0 ? void 0 : theme.palette.neutralLighter,
|
11370
|
+
borderRadius: '1rem'
|
11371
|
+
} },
|
11372
|
+
callingParticipant.raisedHand.raisedHandOrderPosition && (React__default['default'].createElement(react.Stack.Item, null,
|
11373
|
+
React__default['default'].createElement(react.Text, null, (_a = callingParticipant.raisedHand) === null || _a === void 0 ? void 0 : _a.raisedHandOrderPosition))),
|
11374
|
+
React__default['default'].createElement(react.Stack.Item, null,
|
11375
|
+
React__default['default'].createElement(RaisedHandIcon, null)))),
|
11376
|
+
callingParticipant.isScreenSharing && (React__default['default'].createElement(react.Icon, { iconName: "ParticipantItemScreenShareStart", className: iconStyles$2, ariaLabel: strings.sharingIconLabel })),
|
11377
|
+
callingParticipant.isMuted && (React__default['default'].createElement(react.Icon, { iconName: "ParticipantItemMicOff", className: iconStyles$2, ariaLabel: strings.mutedIconLabel }))));
|
11378
|
+
}
|
11311
11379
|
: () => null;
|
11312
11380
|
return (React__default['default'].createElement(ParticipantItem, { styles: styles, key: participant.userId, userId: participant.userId, displayName: participant.displayName, me: myUserId ? participant.userId === myUserId : false, menuItems: menuItems, presence: presence, onRenderIcon: onRenderIcon, onRenderAvatar: onRenderAvatar, onClick: () => onParticipantClick === null || onParticipantClick === void 0 ? void 0 : onParticipantClick(participant), showParticipantOverflowTooltip: showParticipantOverflowTooltip,
|
11313
11381
|
/* @conditional-compile-remove(one-to-n-calling) */
|
11314
11382
|
/* @conditional-compile-remove(PSTN-calls) */
|
11315
11383
|
participantState: callingParticipant.state, ariaLabelledBy: participantAriaLabelledBy }));
|
11316
11384
|
};
|
11385
|
+
/**
|
11386
|
+
* Sort participants by raised hand order position
|
11387
|
+
*/
|
11388
|
+
const sortParticipants = (participants) => {
|
11389
|
+
/* @conditional-compile-remove(raise-hand) */
|
11390
|
+
const isParticipantListCallParticipant = function (participant) {
|
11391
|
+
return 'raisedHand' in participant;
|
11392
|
+
};
|
11393
|
+
/* @conditional-compile-remove(raise-hand) */
|
11394
|
+
participants.sort((a, b) => {
|
11395
|
+
if (!isParticipantListCallParticipant(a) || !isParticipantListCallParticipant(b)) {
|
11396
|
+
return 0;
|
11397
|
+
}
|
11398
|
+
const callA = a;
|
11399
|
+
const callB = b;
|
11400
|
+
if (callA.raisedHand && callB.raisedHand) {
|
11401
|
+
return callA.raisedHand.raisedHandOrderPosition - callB.raisedHand.raisedHandOrderPosition;
|
11402
|
+
}
|
11403
|
+
else if (callA.raisedHand) {
|
11404
|
+
return -1;
|
11405
|
+
}
|
11406
|
+
else if (callB.raisedHand) {
|
11407
|
+
return 1;
|
11408
|
+
}
|
11409
|
+
return 0;
|
11410
|
+
});
|
11411
|
+
return participants;
|
11412
|
+
};
|
11317
11413
|
const getParticipantsForDefaultRender = (participants, excludeMe, myUserId) => {
|
11318
11414
|
if (!excludeMe || !myUserId) {
|
11319
11415
|
return [...participants];
|
@@ -11349,6 +11445,7 @@ const ParticipantList = (props) => {
|
|
11349
11445
|
const displayedParticipants = React.useMemo(() => {
|
11350
11446
|
return onRenderParticipant ? participants : getParticipantsForDefaultRender(participants, excludeMe, myUserId);
|
11351
11447
|
}, [participants, excludeMe, myUserId, onRenderParticipant]);
|
11448
|
+
sortParticipants(displayedParticipants);
|
11352
11449
|
const createParticipantMenuItems = React.useCallback((participant) => {
|
11353
11450
|
var _a, _b;
|
11354
11451
|
let menuItems = [];
|
@@ -12220,7 +12317,7 @@ const VideoTile = (props) => {
|
|
12220
12317
|
isPinned && (React__default['default'].createElement(react.Stack, { className: react.mergeStyles(iconContainerStyle) },
|
12221
12318
|
React__default['default'].createElement(react.Icon, { iconName: "VideoTilePinned", className: react.mergeStyles(pinIconStyle) })))))),
|
12222
12319
|
children && (React__default['default'].createElement(react.Stack, { className: react.mergeStyles(overlayContainerStyles, styles === null || styles === void 0 ? void 0 : styles.overlayContainer) }, children)),
|
12223
|
-
/* @conditional-compile-remove(raise-hand) */ raisedHand && (React__default['default'].createElement(react.Stack, { horizontal: true, tokens: { childrenGap: '0.2rem' }, style: {
|
12320
|
+
/* @conditional-compile-remove(raise-hand) */ raisedHand && canShowLabel && (React__default['default'].createElement(react.Stack, { horizontal: true, tokens: { childrenGap: '0.2rem' }, style: {
|
12224
12321
|
alignItems: 'center',
|
12225
12322
|
padding: '0.2rem',
|
12226
12323
|
backgroundColor: theme.palette.white,
|
@@ -12231,7 +12328,7 @@ const VideoTile = (props) => {
|
|
12231
12328
|
position: 'absolute'
|
12232
12329
|
} },
|
12233
12330
|
React__default['default'].createElement(react.Stack.Item, null,
|
12234
|
-
React__default['default'].createElement(react.Text, null, raisedHand.
|
12331
|
+
React__default['default'].createElement(react.Text, null, raisedHand.raisedHandOrderPosition)),
|
12235
12332
|
React__default['default'].createElement(react.Stack.Item, null,
|
12236
12333
|
React__default['default'].createElement(RaisedHandIcon, null)))))));
|
12237
12334
|
};
|
@@ -12658,6 +12755,10 @@ const smartDominantSpeakerParticipants = (args) => {
|
|
12658
12755
|
newVisibleParticipants = newVisibleParticipants.concat(remainingParticipants);
|
12659
12756
|
return newVisibleParticipants;
|
12660
12757
|
};
|
12758
|
+
/**
|
12759
|
+
* maps the participants array to an object with userId as key
|
12760
|
+
* @private
|
12761
|
+
*/
|
12661
12762
|
const participantsById = (participants) => {
|
12662
12763
|
const response = {};
|
12663
12764
|
participants.forEach((p) => (response[p.userId] = p));
|
@@ -12669,17 +12770,33 @@ const DEFAULT_MAX_OVERFLOW_GALLERY_DOMINANT_SPEAKERS = 6;
|
|
12669
12770
|
const _useOrganizedParticipants = (props) => {
|
12670
12771
|
const visibleGridParticipants = React.useRef([]);
|
12671
12772
|
const visibleOverflowGalleryParticipants = React.useRef([]);
|
12672
|
-
const { remoteParticipants = [], localParticipant, dominantSpeakers = [], maxRemoteVideoStreams, maxOverflowGalleryDominantSpeakers = DEFAULT_MAX_OVERFLOW_GALLERY_DOMINANT_SPEAKERS, isScreenShareActive = false, pinnedParticipantUserIds = []
|
12773
|
+
const { remoteParticipants = [], localParticipant, dominantSpeakers = [], maxRemoteVideoStreams, maxOverflowGalleryDominantSpeakers = DEFAULT_MAX_OVERFLOW_GALLERY_DOMINANT_SPEAKERS, isScreenShareActive = false, pinnedParticipantUserIds = [],
|
12774
|
+
/* @conditional-compile-remove(gallery-layouts) */
|
12775
|
+
layout } = props;
|
12673
12776
|
const videoParticipants = remoteParticipants.filter((p) => { var _a; return (_a = p.videoStream) === null || _a === void 0 ? void 0 : _a.isAvailable; });
|
12777
|
+
const participantsToSortTrampoline = () => {
|
12778
|
+
/* @conditional-compile-remove(gallery-layouts) */
|
12779
|
+
return layout !== 'speaker' ? videoParticipants : remoteParticipants;
|
12780
|
+
};
|
12674
12781
|
visibleGridParticipants.current =
|
12675
12782
|
pinnedParticipantUserIds.length > 0 || isScreenShareActive
|
12676
12783
|
? []
|
12677
12784
|
: smartDominantSpeakerParticipants({
|
12678
|
-
participants:
|
12785
|
+
participants: participantsToSortTrampoline(),
|
12679
12786
|
dominantSpeakers,
|
12680
12787
|
lastVisibleParticipants: visibleGridParticipants.current,
|
12681
12788
|
maxDominantSpeakers: maxRemoteVideoStreams
|
12682
12789
|
}).slice(0, maxRemoteVideoStreams);
|
12790
|
+
/* @conditional-compile-remove(gallery-layouts) */
|
12791
|
+
const dominantSpeakerToGrid = layout === 'speaker'
|
12792
|
+
? dominantSpeakers && dominantSpeakers[0]
|
12793
|
+
? visibleGridParticipants.current.filter((p) => p.userId === dominantSpeakers[0])
|
12794
|
+
: [visibleGridParticipants.current[0]]
|
12795
|
+
: [];
|
12796
|
+
/* @conditional-compile-remove(gallery-layouts) */
|
12797
|
+
if (dominantSpeakerToGrid[0]) {
|
12798
|
+
visibleGridParticipants.current = dominantSpeakerToGrid;
|
12799
|
+
}
|
12683
12800
|
const visibleGridParticipantsSet = new Set(visibleGridParticipants.current.map((p) => p.userId));
|
12684
12801
|
const remoteParticipantsOrdered = putVideoParticipantsFirst(remoteParticipants);
|
12685
12802
|
/* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
|
@@ -13575,7 +13692,8 @@ const DefaultLayout = (props) => {
|
|
13575
13692
|
maxOverflowGalleryDominantSpeakers: screenShareComponent
|
13576
13693
|
? childrenPerPage.current - ((pinnedParticipantUserIds.length + 1) % childrenPerPage.current)
|
13577
13694
|
: childrenPerPage.current,
|
13578
|
-
/* @conditional-compile-remove(pinned-participants) */ pinnedParticipantUserIds
|
13695
|
+
/* @conditional-compile-remove(pinned-participants) */ pinnedParticipantUserIds,
|
13696
|
+
/* @conditional-compile-remove(gallery-layouts) */ layout: 'default'
|
13579
13697
|
});
|
13580
13698
|
let activeVideoStreams = 0;
|
13581
13699
|
const gridTiles = gridParticipants.map((p) => {
|
@@ -13628,8 +13746,14 @@ const DefaultLayout = (props) => {
|
|
13628
13746
|
, {
|
13629
13747
|
/* @conditional-compile-remove(vertical-gallery) */
|
13630
13748
|
horizontal: overflowGalleryPosition === 'VerticalRight', styles: rootLayoutStyle$1, tokens: videoGalleryLayoutGap },
|
13749
|
+
/* @conditional-compile-remove(gallery-layouts) */ props.overflowGalleryPosition === 'HorizontalTop' ? (overflowGallery) : (React__default['default'].createElement(React__default['default'].Fragment, null)),
|
13631
13750
|
screenShareComponent ? (screenShareComponent) : (React__default['default'].createElement(GridLayout, { key: "grid-layout", styles: styles === null || styles === void 0 ? void 0 : styles.gridLayout }, gridTiles)),
|
13632
|
-
overflowGallery
|
13751
|
+
overflowGalleryTrampoline$2(overflowGallery,
|
13752
|
+
/* @conditional-compile-remove(gallery-layouts) */ props.overflowGalleryPosition)));
|
13753
|
+
};
|
13754
|
+
const overflowGalleryTrampoline$2 = (gallery, galleryPosition) => {
|
13755
|
+
/* @conditional-compile-remove(gallery-layouts) */
|
13756
|
+
return galleryPosition !== 'HorizontalTop' ? gallery : React__default['default'].createElement(React__default['default'].Fragment, null);
|
13633
13757
|
};
|
13634
13758
|
|
13635
13759
|
// Copyright (c) Microsoft Corporation.
|
@@ -14394,7 +14518,8 @@ const FloatingLocalVideoLayout = (props) => {
|
|
14394
14518
|
maxOverflowGalleryDominantSpeakers: screenShareComponent
|
14395
14519
|
? childrenPerPage.current - (pinnedParticipantUserIds.length % childrenPerPage.current)
|
14396
14520
|
: childrenPerPage.current,
|
14397
|
-
/* @conditional-compile-remove(pinned-participants) */ pinnedParticipantUserIds
|
14521
|
+
/* @conditional-compile-remove(pinned-participants) */ pinnedParticipantUserIds,
|
14522
|
+
/* @conditional-compile-remove(gallery-layouts) */ layout: 'floatingLocalVideo'
|
14398
14523
|
});
|
14399
14524
|
let activeVideoStreams = 0;
|
14400
14525
|
const gridTiles = gridParticipants.map((p) => {
|
@@ -14482,6 +14607,134 @@ const FloatingLocalVideoLayout = (props) => {
|
|
14482
14607
|
setIndexesToRender,
|
14483
14608
|
/* @conditional-compile-remove(vertical-gallery) */ styles === null || styles === void 0 ? void 0 : styles.verticalGallery
|
14484
14609
|
]);
|
14610
|
+
return (React__default['default'].createElement(react.Stack, { styles: rootLayoutStyle },
|
14611
|
+
wrappedLocalVideoComponent,
|
14612
|
+
React__default['default'].createElement(react.LayerHost, { id: layerHostId, className: react.mergeStyles(layerHostStyle) }),
|
14613
|
+
React__default['default'].createElement(react.Stack
|
14614
|
+
/* @conditional-compile-remove(vertical-gallery) */
|
14615
|
+
, {
|
14616
|
+
/* @conditional-compile-remove(vertical-gallery) */
|
14617
|
+
horizontal: overflowGalleryPosition === 'VerticalRight', styles: innerLayoutStyle, tokens: videoGalleryLayoutGap },
|
14618
|
+
/* @conditional-compile-remove(gallery-layouts) */ props.overflowGalleryPosition === 'HorizontalTop' ? (overflowGallery) : (React__default['default'].createElement(React__default['default'].Fragment, null)),
|
14619
|
+
screenShareComponent ? (screenShareComponent) : (React__default['default'].createElement(GridLayout, { key: "grid-layout", styles: styles === null || styles === void 0 ? void 0 : styles.gridLayout }, gridTiles)),
|
14620
|
+
overflowGalleryTrampoline$1(overflowGallery,
|
14621
|
+
/* @conditional-compile-remove(gallery-layouts) */ props.overflowGalleryPosition))));
|
14622
|
+
};
|
14623
|
+
const overflowGalleryTrampoline$1 = (gallery, galleryPosition) => {
|
14624
|
+
/* @conditional-compile-remove(gallery-layouts) */
|
14625
|
+
return galleryPosition !== 'HorizontalTop' ? gallery : React__default['default'].createElement(React__default['default'].Fragment, null);
|
14626
|
+
};
|
14627
|
+
|
14628
|
+
// Copyright (c) Microsoft Corporation.
|
14629
|
+
/**
|
14630
|
+
* Layout for the gallery mode to highlight the current dominant speaker
|
14631
|
+
*
|
14632
|
+
* @private
|
14633
|
+
*/
|
14634
|
+
const SpeakerVideoLayout = (props) => {
|
14635
|
+
const { remoteParticipants = [], dominantSpeakers, localVideoComponent, screenShareComponent, onRenderRemoteParticipant, styles, maxRemoteVideoStreams, parentWidth,
|
14636
|
+
/* @conditional-compile-remove(vertical-gallery) */ parentHeight,
|
14637
|
+
/* @conditional-compile-remove(vertical-gallery) */ overflowGalleryPosition = 'HorizontalBottom', pinnedParticipantUserIds = [],
|
14638
|
+
/* @conditional-compile-remove(click-to-call) */ localVideoTileSize } = props;
|
14639
|
+
const theme = react.useTheme();
|
14640
|
+
const isNarrow = parentWidth ? isNarrowWidth(parentWidth) : false;
|
14641
|
+
/* @conditional-compile-remove(vertical-gallery) */
|
14642
|
+
const isShort = parentHeight ? isShortHeight(parentHeight) : false;
|
14643
|
+
// This is for tracking the number of children in the first page of overflow gallery.
|
14644
|
+
// This number will be used for the maxOverflowGalleryDominantSpeakers when organizing the remote participants.
|
14645
|
+
const childrenPerPage = React.useRef(4);
|
14646
|
+
const { gridParticipants, overflowGalleryParticipants } = useOrganizedParticipants({
|
14647
|
+
remoteParticipants,
|
14648
|
+
dominantSpeakers,
|
14649
|
+
maxRemoteVideoStreams,
|
14650
|
+
isScreenShareActive: !!screenShareComponent,
|
14651
|
+
maxOverflowGalleryDominantSpeakers: screenShareComponent
|
14652
|
+
? childrenPerPage.current - (pinnedParticipantUserIds.length % childrenPerPage.current)
|
14653
|
+
: childrenPerPage.current,
|
14654
|
+
/* @conditional-compile-remove(pinned-participants) */ pinnedParticipantUserIds,
|
14655
|
+
/* @conditional-compile-remove(gallery-layouts) */ layout: 'speaker'
|
14656
|
+
});
|
14657
|
+
let activeVideoStreams = 0;
|
14658
|
+
const gridTiles = gridParticipants.map((p) => {
|
14659
|
+
var _a, _b;
|
14660
|
+
return onRenderRemoteParticipant(p, maxRemoteVideoStreams && maxRemoteVideoStreams >= 0
|
14661
|
+
? ((_a = p.videoStream) === null || _a === void 0 ? void 0 : _a.isAvailable) && activeVideoStreams++ < maxRemoteVideoStreams
|
14662
|
+
: (_b = p.videoStream) === null || _b === void 0 ? void 0 : _b.isAvailable);
|
14663
|
+
});
|
14664
|
+
const shouldFloatLocalVideo = remoteParticipants.length > 0;
|
14665
|
+
if (!shouldFloatLocalVideo && localVideoComponent) {
|
14666
|
+
gridTiles.push(localVideoComponent);
|
14667
|
+
}
|
14668
|
+
/**
|
14669
|
+
* instantiate indexes available to render with indexes available that would be on first page
|
14670
|
+
*
|
14671
|
+
* For some components which do not strictly follow the order of the array, we might
|
14672
|
+
* re-render the initial tiles -> dispose them -> create new tiles, we need to take care of
|
14673
|
+
* this case when those components are here
|
14674
|
+
*/
|
14675
|
+
const [indexesToRender, setIndexesToRender] = React.useState([]);
|
14676
|
+
const overflowGalleryTiles = overflowGalleryParticipants.map((p, i) => {
|
14677
|
+
var _a, _b;
|
14678
|
+
return onRenderRemoteParticipant(p, maxRemoteVideoStreams && maxRemoteVideoStreams >= 0
|
14679
|
+
? ((_a = p.videoStream) === null || _a === void 0 ? void 0 : _a.isAvailable) &&
|
14680
|
+
indexesToRender &&
|
14681
|
+
indexesToRender.includes(i) &&
|
14682
|
+
activeVideoStreams++ < maxRemoteVideoStreams
|
14683
|
+
: (_b = p.videoStream) === null || _b === void 0 ? void 0 : _b.isAvailable);
|
14684
|
+
});
|
14685
|
+
const layerHostId = reactHooks.useId('layerhost');
|
14686
|
+
const localVideoSizeRem = React.useMemo(() => {
|
14687
|
+
if (isNarrow || /*@conditional-compile-remove(click-to-call) */ localVideoTileSize === '9:16') {
|
14688
|
+
return SMALL_FLOATING_MODAL_SIZE_REM;
|
14689
|
+
}
|
14690
|
+
/* @conditional-compile-remove(vertical-gallery) */
|
14691
|
+
if ((overflowGalleryTiles.length > 0 || screenShareComponent) && overflowGalleryPosition === 'VerticalRight') {
|
14692
|
+
return isNarrow
|
14693
|
+
? SMALL_FLOATING_MODAL_SIZE_REM
|
14694
|
+
: isShort
|
14695
|
+
? SHORT_VERTICAL_GALLERY_FLOATING_MODAL_SIZE_REM
|
14696
|
+
: VERTICAL_GALLERY_FLOATING_MODAL_SIZE_REM;
|
14697
|
+
}
|
14698
|
+
/*@conditional-compile-remove(click-to-call) */
|
14699
|
+
if ((overflowGalleryTiles.length > 0 || screenShareComponent) && overflowGalleryPosition === 'HorizontalBottom') {
|
14700
|
+
return localVideoTileSize === '16:9' || !isNarrow ? LARGE_FLOATING_MODAL_SIZE_REM : SMALL_FLOATING_MODAL_SIZE_REM;
|
14701
|
+
}
|
14702
|
+
return LARGE_FLOATING_MODAL_SIZE_REM;
|
14703
|
+
}, [
|
14704
|
+
overflowGalleryTiles.length,
|
14705
|
+
isNarrow,
|
14706
|
+
screenShareComponent,
|
14707
|
+
/* @conditional-compile-remove(vertical-gallery) */ isShort,
|
14708
|
+
/* @conditional-compile-remove(vertical-gallery) */ overflowGalleryPosition,
|
14709
|
+
/* @conditional-compile-remove(click-to-call) */ localVideoTileSize
|
14710
|
+
]);
|
14711
|
+
const wrappedLocalVideoComponent = localVideoComponent || (screenShareComponent && localVideoComponent) ? (React__default['default'].createElement(react.Stack, { className: react.mergeStyles(localVideoTileContainerStyle(theme, localVideoSizeRem, !!screenShareComponent,
|
14712
|
+
/* @conditional-compile-remove(gallery-layouts) */ overflowGalleryPosition)) }, localVideoComponent)) : undefined;
|
14713
|
+
const overflowGallery = React.useMemo(() => {
|
14714
|
+
if (overflowGalleryTiles.length === 0 && !screenShareComponent) {
|
14715
|
+
return null;
|
14716
|
+
}
|
14717
|
+
return (React__default['default'].createElement(OverflowGallery
|
14718
|
+
/* @conditional-compile-remove(vertical-gallery) */
|
14719
|
+
, {
|
14720
|
+
/* @conditional-compile-remove(vertical-gallery) */
|
14721
|
+
isShort: isShort, onFetchTilesToRender: setIndexesToRender, isNarrow: isNarrow, shouldFloatLocalVideo: true, overflowGalleryElements: overflowGalleryTiles, horizontalGalleryStyles: styles === null || styles === void 0 ? void 0 : styles.horizontalGallery,
|
14722
|
+
/* @conditional-compile-remove(vertical-gallery) */
|
14723
|
+
verticalGalleryStyles: styles === null || styles === void 0 ? void 0 : styles.verticalGallery,
|
14724
|
+
/* @conditional-compile-remove(vertical-gallery) */
|
14725
|
+
overflowGalleryPosition: overflowGalleryPosition, onChildrenPerPageChange: (n) => {
|
14726
|
+
childrenPerPage.current = n;
|
14727
|
+
} }));
|
14728
|
+
}, [
|
14729
|
+
isNarrow,
|
14730
|
+
/* @conditional-compile-remove(vertical-gallery) */ isShort,
|
14731
|
+
screenShareComponent,
|
14732
|
+
overflowGalleryTiles,
|
14733
|
+
styles === null || styles === void 0 ? void 0 : styles.horizontalGallery,
|
14734
|
+
/* @conditional-compile-remove(vertical-gallery) */ overflowGalleryPosition,
|
14735
|
+
setIndexesToRender,
|
14736
|
+
/* @conditional-compile-remove(vertical-gallery) */ styles === null || styles === void 0 ? void 0 : styles.verticalGallery
|
14737
|
+
]);
|
14485
14738
|
return (React__default['default'].createElement(react.Stack, { styles: rootLayoutStyle },
|
14486
14739
|
wrappedLocalVideoComponent,
|
14487
14740
|
React__default['default'].createElement(react.LayerHost, { id: layerHostId, className: react.mergeStyles(layerHostStyle) }),
|
@@ -14559,7 +14812,8 @@ const VideoGallery = (props) => {
|
|
14559
14812
|
: undefined;
|
14560
14813
|
/* @conditional-compile-remove(pinned-participants) */
|
14561
14814
|
const drawerMenuHostId = reactHooks.useId('drawerMenuHost', drawerMenuHostIdFromProp);
|
14562
|
-
const
|
14815
|
+
const localTileNotInGrid = !!((layout === 'floatingLocalVideo' || /* @conditional-compile-remove(gallery-layouts) */ layout === 'speaker') &&
|
14816
|
+
remoteParticipants.length > 0);
|
14563
14817
|
const containerRef = React.useRef(null);
|
14564
14818
|
const containerWidth = _useContainerWidth(containerRef);
|
14565
14819
|
const containerHeight = _useContainerHeight(containerRef);
|
@@ -14592,14 +14846,16 @@ const VideoGallery = (props) => {
|
|
14592
14846
|
if (onRenderLocalVideoTile) {
|
14593
14847
|
return onRenderLocalVideoTile(localParticipant);
|
14594
14848
|
}
|
14595
|
-
const localVideoTileStyles = react.concatStyleSets(
|
14849
|
+
const localVideoTileStyles = react.concatStyleSets(localTileNotInGrid ? floatingLocalVideoTileStyle : {}, {
|
14596
14850
|
root: { borderRadius: theme.effects.roundedCorner4 }
|
14597
14851
|
}, styles === null || styles === void 0 ? void 0 : styles.localVideo);
|
14598
14852
|
const initialsName = !localParticipant.displayName ? '' : localParticipant.displayName;
|
14599
14853
|
return (React__default['default'].createElement(react.Stack, { styles: localVideoTileContainerStyles, key: "local-video-tile-key", tabIndex: 0, "aria-label": strings.localVideoMovementLabel, role: 'dialog' },
|
14600
|
-
React__default['default'].createElement(_LocalVideoTile, { userId: localParticipant.userId, onCreateLocalStreamView: onCreateLocalStreamView, onDisposeLocalStreamView: onDisposeLocalStreamView, isAvailable: (_a = localParticipant === null || localParticipant === void 0 ? void 0 : localParticipant.videoStream) === null || _a === void 0 ? void 0 : _a.isAvailable, isMuted: localParticipant.isMuted, renderElement: (_b = localParticipant === null || localParticipant === void 0 ? void 0 : localParticipant.videoStream) === null || _b === void 0 ? void 0 : _b.renderElement, displayName: isNarrow ? '' : strings.localVideoLabel, initialsName: initialsName, localVideoViewOptions: localVideoViewOptions, onRenderAvatar: onRenderAvatar, showLabel: !((
|
14854
|
+
React__default['default'].createElement(_LocalVideoTile, { userId: localParticipant.userId, onCreateLocalStreamView: onCreateLocalStreamView, onDisposeLocalStreamView: onDisposeLocalStreamView, isAvailable: (_a = localParticipant === null || localParticipant === void 0 ? void 0 : localParticipant.videoStream) === null || _a === void 0 ? void 0 : _a.isAvailable, isMuted: localParticipant.isMuted, renderElement: (_b = localParticipant === null || localParticipant === void 0 ? void 0 : localParticipant.videoStream) === null || _b === void 0 ? void 0 : _b.renderElement, displayName: isNarrow ? '' : strings.localVideoLabel, initialsName: initialsName, localVideoViewOptions: localVideoViewOptions, onRenderAvatar: onRenderAvatar, showLabel: !((localTileNotInGrid && isNarrow) ||
|
14601
14855
|
/*@conditional-compile-remove(click-to-call) */ /* @conditional-compile-remove(rooms) */ localVideoTileSize ===
|
14602
|
-
'9:16'), showMuteIndicator: showMuteIndicator, showCameraSwitcherInLocalPreview: showCameraSwitcherInLocalPreview, localVideoCameraCycleButtonProps: localVideoCameraCycleButtonProps, localVideoCameraSwitcherLabel: strings.localVideoCameraSwitcherLabel, localVideoSelectedDescription: strings.localVideoSelectedDescription, styles: localVideoTileStyles
|
14856
|
+
'9:16'), showMuteIndicator: showMuteIndicator, showCameraSwitcherInLocalPreview: showCameraSwitcherInLocalPreview, localVideoCameraCycleButtonProps: localVideoCameraCycleButtonProps, localVideoCameraSwitcherLabel: strings.localVideoCameraSwitcherLabel, localVideoSelectedDescription: strings.localVideoSelectedDescription, styles: localVideoTileStyles,
|
14857
|
+
/* @conditional-compile-remove(raise-hand) */
|
14858
|
+
raisedHand: localParticipant.raisedHand })));
|
14603
14859
|
}, [
|
14604
14860
|
isNarrow,
|
14605
14861
|
localParticipant,
|
@@ -14609,7 +14865,7 @@ const VideoGallery = (props) => {
|
|
14609
14865
|
onDisposeLocalStreamView,
|
14610
14866
|
onRenderAvatar,
|
14611
14867
|
onRenderLocalVideoTile,
|
14612
|
-
|
14868
|
+
localTileNotInGrid,
|
14613
14869
|
showCameraSwitcherInLocalPreview,
|
14614
14870
|
showMuteIndicator,
|
14615
14871
|
strings.localVideoCameraSwitcherLabel,
|
@@ -14737,6 +14993,10 @@ const VideoGallery = (props) => {
|
|
14737
14993
|
if (layout === 'floatingLocalVideo') {
|
14738
14994
|
return React__default['default'].createElement(FloatingLocalVideoLayout, Object.assign({}, layoutProps));
|
14739
14995
|
}
|
14996
|
+
/* @conditional-compile-remove(gallery-layouts) */
|
14997
|
+
if (layout === 'speaker') {
|
14998
|
+
return React__default['default'].createElement(SpeakerVideoLayout, Object.assign({}, layoutProps));
|
14999
|
+
}
|
14740
15000
|
return React__default['default'].createElement(DefaultLayout, Object.assign({}, layoutProps));
|
14741
15001
|
}, [layout, layoutProps]);
|
14742
15002
|
return (React__default['default'].createElement("div", {
|
@@ -15862,6 +16122,40 @@ const screenshareButtonStyles = (theme) => ({
|
|
15862
16122
|
labelChecked: { color: react.DefaultPalette.white }
|
15863
16123
|
});
|
15864
16124
|
|
16125
|
+
// Copyright (c) Microsoft Corporation.
|
16126
|
+
/* @conditional-compile-remove(raise-hand) */
|
16127
|
+
/**
|
16128
|
+
* A button to start / stop screen sharing.
|
16129
|
+
*
|
16130
|
+
* Can be used with {@link ControlBar}.
|
16131
|
+
*
|
16132
|
+
* @public
|
16133
|
+
*/
|
16134
|
+
const RaiseHandButton = (props) => {
|
16135
|
+
var _a, _b, _c, _d;
|
16136
|
+
const localeStrings = useLocale$1().strings.raiseHandButton;
|
16137
|
+
const strings = Object.assign(Object.assign({}, localeStrings), props.strings);
|
16138
|
+
const theme = react.useTheme();
|
16139
|
+
const styles = raiseHandButtonStyles(theme);
|
16140
|
+
const onRenderRaiseHandIcon = () => (React__default['default'].createElement(_HighContrastAwareIcon, { disabled: props.disabled, iconName: "ControlButtonRaiseHand" }));
|
16141
|
+
const onRenderLowerHandIcon = () => (React__default['default'].createElement(_HighContrastAwareIcon, { disabled: props.disabled, iconName: "ControlButtonLowerHand" }));
|
16142
|
+
return (React__default['default'].createElement(ControlBarButton, Object.assign({}, props, { className: react.mergeStyles(styles, props.styles), onClick: (_a = props.onToggleRaiseHand) !== null && _a !== void 0 ? _a : props.onClick, onRenderOnIcon: (_b = props.onRenderOnIcon) !== null && _b !== void 0 ? _b : onRenderLowerHandIcon, onRenderOffIcon: (_c = props.onRenderOffIcon) !== null && _c !== void 0 ? _c : onRenderRaiseHandIcon, strings: strings, labelKey: (_d = props.labelKey) !== null && _d !== void 0 ? _d : 'raiseHandButtonLabel', disabled: props.disabled })));
|
16143
|
+
};
|
16144
|
+
/* @conditional-compile-remove(raise-hand) */
|
16145
|
+
const raiseHandButtonStyles = (theme) => ({
|
16146
|
+
rootChecked: {
|
16147
|
+
background: theme.palette.themePrimary,
|
16148
|
+
color: react.DefaultPalette.white,
|
16149
|
+
':focus::after': { outlineColor: `${react.DefaultPalette.white}` }
|
16150
|
+
},
|
16151
|
+
rootCheckedHovered: {
|
16152
|
+
background: theme.palette.themePrimary,
|
16153
|
+
color: react.DefaultPalette.white,
|
16154
|
+
':focus::after': { outlineColor: `${react.DefaultPalette.white}` }
|
16155
|
+
},
|
16156
|
+
labelChecked: { color: react.DefaultPalette.white }
|
16157
|
+
});
|
16158
|
+
|
15865
16159
|
// Copyright (c) Microsoft Corporation.
|
15866
16160
|
/** @private */
|
15867
16161
|
const PictureInPictureInPicturePrimaryTile = (props) => {
|
@@ -17238,15 +17532,25 @@ const _videoGalleryRemoteParticipantsMemo = (remoteParticipants) => {
|
|
17238
17532
|
})
|
17239
17533
|
.map((participant) => {
|
17240
17534
|
const state = _isRingingPSTNParticipant(participant);
|
17241
|
-
return memoizedFn(toFlatCommunicationIdentifier(participant.identifier), participant.isMuted, checkIsSpeaking(participant), participant.videoStreams, state, participant.displayName
|
17535
|
+
return memoizedFn(toFlatCommunicationIdentifier(participant.identifier), participant.isMuted, checkIsSpeaking(participant), participant.videoStreams, state, participant.displayName,
|
17536
|
+
/* @conditional-compile-remove(raise-hand) */
|
17537
|
+
participant.raisedHand);
|
17242
17538
|
}));
|
17243
17539
|
});
|
17244
17540
|
};
|
17245
|
-
const memoizedAllConvertRemoteParticipant = memoizeFnAll((userId, isMuted, isSpeaking, videoStreams, state, displayName
|
17246
|
-
|
17541
|
+
const memoizedAllConvertRemoteParticipant = memoizeFnAll((userId, isMuted, isSpeaking, videoStreams, state, displayName,
|
17542
|
+
/* @conditional-compile-remove(raise-hand) */
|
17543
|
+
raisedHand // temp unknown type to build stable
|
17544
|
+
) => {
|
17545
|
+
return convertRemoteParticipantToVideoGalleryRemoteParticipant(userId, isMuted, isSpeaking, videoStreams, state, displayName,
|
17546
|
+
/* @conditional-compile-remove(raise-hand) */
|
17547
|
+
raisedHand);
|
17247
17548
|
});
|
17248
17549
|
/** @private */
|
17249
|
-
const convertRemoteParticipantToVideoGalleryRemoteParticipant = (userId, isMuted, isSpeaking, videoStreams, state, displayName
|
17550
|
+
const convertRemoteParticipantToVideoGalleryRemoteParticipant = (userId, isMuted, isSpeaking, videoStreams, state, displayName,
|
17551
|
+
/* @conditional-compile-remove(raise-hand) */
|
17552
|
+
raisedHand // temp unknown type to build stable
|
17553
|
+
) => {
|
17250
17554
|
const rawVideoStreamsArray = Object.values(videoStreams);
|
17251
17555
|
let videoStream = undefined;
|
17252
17556
|
let screenShareStream = undefined;
|
@@ -17270,7 +17574,9 @@ const convertRemoteParticipantToVideoGalleryRemoteParticipant = (userId, isMuted
|
|
17270
17574
|
isScreenSharingOn: screenShareStream !== undefined && screenShareStream.isAvailable,
|
17271
17575
|
/* @conditional-compile-remove(one-to-n-calling) */
|
17272
17576
|
/* @conditional-compile-remove(PSTN-calls) */
|
17273
|
-
state
|
17577
|
+
state,
|
17578
|
+
/* @conditional-compile-remove(raise-hand) */
|
17579
|
+
raisedHand: raisedHand
|
17274
17580
|
};
|
17275
17581
|
};
|
17276
17582
|
const convertRemoteVideoStreamToVideoGalleryStream = (stream) => {
|
@@ -17288,7 +17594,8 @@ const convertRemoteVideoStreamToVideoGalleryStream = (stream) => {
|
|
17288
17594
|
};
|
17289
17595
|
/** @private */
|
17290
17596
|
const memoizeLocalParticipant = memoizeOne__default['default']((identifier, displayName, isMuted, isScreenSharingOn, localVideoStream,
|
17291
|
-
/* @conditional-compile-remove(rooms) */ role
|
17597
|
+
/* @conditional-compile-remove(rooms) */ role,
|
17598
|
+
/* @conditional-compile-remove(raise-hand) */ raisedHand) => {
|
17292
17599
|
var _a, _b;
|
17293
17600
|
return ({
|
17294
17601
|
userId: identifier,
|
@@ -17301,7 +17608,9 @@ const memoizeLocalParticipant = memoizeOne__default['default']((identifier, disp
|
|
17301
17608
|
renderElement: (_b = localVideoStream === null || localVideoStream === void 0 ? void 0 : localVideoStream.view) === null || _b === void 0 ? void 0 : _b.target
|
17302
17609
|
},
|
17303
17610
|
/* @conditional-compile-remove(rooms) */
|
17304
|
-
role
|
17611
|
+
role,
|
17612
|
+
/* @conditional-compile-remove(raise-hand) */
|
17613
|
+
raisedHand: raisedHand
|
17305
17614
|
});
|
17306
17615
|
});
|
17307
17616
|
|
@@ -17322,12 +17631,16 @@ const videoGallerySelector = reselect.createSelector([
|
|
17322
17631
|
/* @conditional-compile-remove(optimal-video-count) */
|
17323
17632
|
getOptimalVideoCount,
|
17324
17633
|
/* @conditional-compile-remove(rooms) */
|
17325
|
-
getRole
|
17634
|
+
getRole,
|
17635
|
+
/* @conditional-compile-remove(raise-hand) */
|
17636
|
+
getLocalParticipantRaisedHand$1
|
17326
17637
|
], (screenShareRemoteParticipantId, remoteParticipants, localVideoStreams, isMuted, isScreenSharingOn, displayName, identifier, dominantSpeakers,
|
17327
17638
|
/* @conditional-compile-remove(optimal-video-count) */
|
17328
17639
|
optimalVideoCount,
|
17329
17640
|
/* @conditional-compile-remove(rooms) */
|
17330
|
-
role
|
17641
|
+
role,
|
17642
|
+
/* @conditional-compile-remove(raise-hand) */
|
17643
|
+
raisedHand) => {
|
17331
17644
|
const screenShareRemoteParticipant = screenShareRemoteParticipantId && remoteParticipants
|
17332
17645
|
? remoteParticipants[screenShareRemoteParticipantId]
|
17333
17646
|
: undefined;
|
@@ -17337,11 +17650,15 @@ role) => {
|
|
17337
17650
|
const noRemoteParticipants = [];
|
17338
17651
|
return {
|
17339
17652
|
screenShareParticipant: screenShareRemoteParticipant
|
17340
|
-
? convertRemoteParticipantToVideoGalleryRemoteParticipant(toFlatCommunicationIdentifier(screenShareRemoteParticipant.identifier), screenShareRemoteParticipant.isMuted, checkIsSpeaking(screenShareRemoteParticipant), screenShareRemoteParticipant.videoStreams, screenShareRemoteParticipant.state, screenShareRemoteParticipant.displayName
|
17653
|
+
? convertRemoteParticipantToVideoGalleryRemoteParticipant(toFlatCommunicationIdentifier(screenShareRemoteParticipant.identifier), screenShareRemoteParticipant.isMuted, checkIsSpeaking(screenShareRemoteParticipant), screenShareRemoteParticipant.videoStreams, screenShareRemoteParticipant.state, screenShareRemoteParticipant.displayName,
|
17654
|
+
/* @conditional-compile-remove(raise-hand) */
|
17655
|
+
screenShareRemoteParticipant.raisedHand)
|
17341
17656
|
: undefined,
|
17342
17657
|
localParticipant: memoizeLocalParticipant(identifier, displayName, isMuted, isScreenSharingOn, localVideoStream,
|
17343
17658
|
/* @conditional-compile-remove(rooms) */
|
17344
|
-
role
|
17659
|
+
role,
|
17660
|
+
/* @conditional-compile-remove(raise-hand) */
|
17661
|
+
raisedHand),
|
17345
17662
|
remoteParticipants: _videoGalleryRemoteParticipantsMemo(updateUserDisplayNamesTrampoline$2(remoteParticipants ? Object.values(remoteParticipants) : noRemoteParticipants)),
|
17346
17663
|
dominantSpeakers: dominantSpeakerIds,
|
17347
17664
|
/* @conditional-compile-remove(optimal-video-count) */
|
@@ -17374,18 +17691,12 @@ const convertRemoteParticipantToParticipantListParticipant = (userId, displayNam
|
|
17374
17691
|
/**
|
17375
17692
|
* @private
|
17376
17693
|
*/
|
17377
|
-
const memoizedConvertAllremoteParticipantsBeta = memoizeFnAll((userId, displayName, state, isMuted, isScreenSharing, isSpeaking,
|
17378
|
-
|
17379
|
-
raisedHand, localUserCanRemoveOthers) => {
|
17380
|
-
return convertRemoteParticipantToParticipantListParticipantBeta(userId, displayName, state, isMuted, isScreenSharing, isSpeaking,
|
17381
|
-
/* @conditional-compile-remove(raise-hand) */ raisedHand, localUserCanRemoveOthers);
|
17694
|
+
const memoizedConvertAllremoteParticipantsBeta = memoizeFnAll((userId, displayName, state, isMuted, isScreenSharing, isSpeaking, raisedHand, localUserCanRemoveOthers) => {
|
17695
|
+
return convertRemoteParticipantToParticipantListParticipantBeta(userId, displayName, state, isMuted, isScreenSharing, isSpeaking, raisedHand, localUserCanRemoveOthers);
|
17382
17696
|
});
|
17383
17697
|
/* @conditional-compile-remove(raise-hand) */
|
17384
|
-
const convertRemoteParticipantToParticipantListParticipantBeta = (userId, displayName, state, isMuted, isScreenSharing, isSpeaking,
|
17385
|
-
|
17386
|
-
raisedHand, localUserCanRemoveOthers) => {
|
17387
|
-
return Object.assign(Object.assign({}, convertRemoteParticipantToParticipantListParticipant(userId, displayName, state, isMuted, isScreenSharing, isSpeaking, localUserCanRemoveOthers)), {
|
17388
|
-
/* @conditional-compile-remove(raise-hand) */ raisedHand });
|
17698
|
+
const convertRemoteParticipantToParticipantListParticipantBeta = (userId, displayName, state, isMuted, isScreenSharing, isSpeaking, raisedHand, localUserCanRemoveOthers) => {
|
17699
|
+
return Object.assign(Object.assign({}, convertRemoteParticipantToParticipantListParticipant(userId, displayName, state, isMuted, isScreenSharing, isSpeaking, localUserCanRemoveOthers)), { raisedHand });
|
17389
17700
|
};
|
17390
17701
|
|
17391
17702
|
// Copyright (c) Microsoft Corporation.
|
@@ -17446,9 +17757,12 @@ const participantListSelector = reselect.createSelector([
|
|
17446
17757
|
getRemoteParticipants$1,
|
17447
17758
|
getIsScreenSharingOn,
|
17448
17759
|
getIsMuted,
|
17760
|
+
/* @conditional-compile-remove(raise-hand) */ getLocalParticipantRaisedHand$1,
|
17449
17761
|
getRole,
|
17450
17762
|
getParticipantCount
|
17451
|
-
], (userId, displayName, remoteParticipants, isScreenSharingOn, isMuted,
|
17763
|
+
], (userId, displayName, remoteParticipants, isScreenSharingOn, isMuted,
|
17764
|
+
/* @conditional-compile-remove(raise-hand) */
|
17765
|
+
raisedHand, role, partitipantCount) => {
|
17452
17766
|
const localUserCanRemoveOthers = localUserCanRemoveOthersTrampoline(role);
|
17453
17767
|
const participants = remoteParticipants
|
17454
17768
|
? convertRemoteParticipantsToParticipantListParticipants(updateUserDisplayNamesTrampoline$1(Object.values(remoteParticipants)), localUserCanRemoveOthers)
|
@@ -17458,6 +17772,8 @@ const participantListSelector = reselect.createSelector([
|
|
17458
17772
|
displayName: displayName,
|
17459
17773
|
isScreenSharing: isScreenSharingOn,
|
17460
17774
|
isMuted: isMuted,
|
17775
|
+
/* @conditional-compile-remove(raise-hand) */
|
17776
|
+
raisedHand: raisedHand,
|
17461
17777
|
state: 'Connected',
|
17462
17778
|
// Local participant can never remove themselves.
|
17463
17779
|
isRemovable: false
|
@@ -17756,6 +18072,10 @@ const getSelector$1 = (component) => {
|
|
17756
18072
|
if (component === HoldButton) {
|
17757
18073
|
return findConditionalCompiledSelector(component);
|
17758
18074
|
}
|
18075
|
+
/* @conditional-compile-remove(raise-hand) */
|
18076
|
+
if (component === RaiseHandButton) {
|
18077
|
+
return findConditionalCompiledSelector(component);
|
18078
|
+
}
|
17759
18079
|
return findSelector$1(component);
|
17760
18080
|
};
|
17761
18081
|
const findSelector$1 = (component) => {
|
@@ -17786,11 +18106,15 @@ const findSelector$1 = (component) => {
|
|
17786
18106
|
}
|
17787
18107
|
return undefined;
|
17788
18108
|
};
|
17789
|
-
/* @conditional-compile-remove(PSTN-calls) */
|
18109
|
+
/* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(raise-hand) */
|
17790
18110
|
const findConditionalCompiledSelector = (component) => {
|
17791
18111
|
switch (component) {
|
17792
18112
|
case HoldButton:
|
17793
18113
|
return holdButtonSelector;
|
18114
|
+
/* @conditional-compile-remove(raise-hand) */
|
18115
|
+
case RaiseHandButton:
|
18116
|
+
/* @conditional-compile-remove(raise-hand) */
|
18117
|
+
return raiseHandButtonSelector;
|
17794
18118
|
}
|
17795
18119
|
};
|
17796
18120
|
|
@@ -19782,7 +20106,15 @@ const COMPOSITE_ONLY_ICONS = {
|
|
19782
20106
|
/* @conditional-compile-remove(video-background-effects) */
|
19783
20107
|
RemoveVideoBackgroundEffect: React__default['default'].createElement(reactIcons.VideoPerson20Filled, null),
|
19784
20108
|
/* @conditional-compile-remove(gallery-layouts) */
|
19785
|
-
GalleryOptions: React__default['default'].createElement(reactIcons.Grid20Regular, null)
|
20109
|
+
GalleryOptions: React__default['default'].createElement(reactIcons.Grid20Regular, null),
|
20110
|
+
/* @conditional-compile-remove(gallery-layouts) */
|
20111
|
+
OverflowGalleryTop: React__default['default'].createElement(reactIcons.WindowHeaderHorizontal20Regular, null),
|
20112
|
+
/* @conditional-compile-remove(gallery-layouts) */
|
20113
|
+
SpeakerGalleryLayout: React__default['default'].createElement(reactIcons.PersonCircle20Regular, null),
|
20114
|
+
/* @conditional-compile-remove(gallery-layouts) */
|
20115
|
+
DefaultGalleryLayout: React__default['default'].createElement(reactIcons.TableSimple20Regular, null),
|
20116
|
+
/* @conditional-compile-remove(gallery-layouts) */
|
20117
|
+
FloatingLocalVideoGalleryLayout: React__default['default'].createElement(reactIcons.PictureInPicture20Regular, null)
|
19786
20118
|
};
|
19787
20119
|
/**
|
19788
20120
|
* The default set of icons that are available to used in the Composites.
|
@@ -19815,7 +20147,7 @@ const CallCompositeIcon = (props) => (React__default['default'].createElement(re
|
|
19815
20147
|
*/
|
19816
20148
|
const CallWithChatCompositeIcon = (props) => (React__default['default'].createElement(react.FontIcon, Object.assign({}, props)));
|
19817
20149
|
|
19818
|
-
var call$k={cameraLabel:"Camera",noCamerasLabel:"No cameras found",cameraPermissionDenied:"Your browser is blocking access to your camera",cameraTurnedOff:"Your camera is turned off",chatButtonLabel:"Chat",close:"Close",complianceBannerNowOnlyRecording:"You are now only recording this meeting.",complianceBannerNowOnlyTranscription:"You are now only transcribing this meeting.",complianceBannerRecordingAndTranscriptionSaved:"Recording and transcription are being saved.",complianceBannerRecordingAndTranscriptionStarted:"Recording and transcription have started.",complianceBannerRecordingAndTranscriptionStopped:"Recording and transcription have stopped.",complianceBannerRecordingSaving:"Recording is being saved.",complianceBannerRecordingStarted:"Recording has started.",complianceBannerRecordingStopped:"Recording has stopped.",complianceBannerTranscriptionStarted:"Transcription has started.",complianceBannerTranscriptionConsent:"By joining, you are giving consent for this meeting to be transcribed.",complianceBannerTranscriptionSaving:"Transcription is being saved.",complianceBannerTranscriptionStopped:"Transcription has stopped.",configurationPageTitle:"Start a call",copyInviteLinkButtonLabel:"Copy invite link",copyInviteLinkActionedAriaLabel:"Invite link copied",defaultPlaceHolder:"Select an option",dismissSidePaneButtonLabel:"Close",videoEffectsPaneTitle:"Effects",videoEffectsPaneBackgroundSelectionTitle:"Background",configurationPageVideoEffectsButtonLabel:"Effects",unableToStartVideoEffect:"Unable to apply video effect.",blurBackgroundEffectButtonLabel:"Blur",blurBackgroundTooltip:"Blur Background",removeBackgroundEffectButtonLabel:"None",removeBackgroundTooltip:"Remove Background",cameraOffBackgroundEffectWarningText:"Your camera is off. Turn on camera to see video effect.",failedToJoinCallDueToNoNetworkMoreDetails:"Call was disconnected due to a network issue. Check your connection and join again.",failedToJoinCallDueToNoNetworkTitle:"Call disconnected",failedToJoinTeamsMeetingReasonAccessDeniedMoreDetails:"You were not granted entry in the call. If this was a mistake, re-join the call.",failedToJoinTeamsMeetingReasonAccessDeniedTitle:"Dismissed from lobby",learnMore:"Learn more",leavingCallTitle:"Leaving...",leftCallMoreDetails:"If this was a mistake, re-join the call.",leftCallTitle:"You left the call",lobbyScreenConnectingToCallTitle:"Joining call",lobbyScreenWaitingToBeAdmittedTitle:"Waiting to be admitted",microphonePermissionDenied:"Your browser is blocking access to your microphone",microphoneToggleInLobbyNotAllowed:"Cannot mute or unmute while in lobby.",mutedMessage:"You're muted",networkReconnectMoreDetails:"Looks like something went wrong. We're trying to get back into the call.",networkReconnectTitle:"Hold on",deniedPermissionToRoomDetails:"You do not have permission to join this room.",deniedPermissionToRoomTitle:"Permission denied to room",peopleButtonLabel:"People",peoplePaneTitle:"People",peopleButtonTooltipOpen:"Show participants",peopleButtonTooltipClose:"Hide participants",peoplePaneSubTitle:"In this call {numberOfPeople}",privacyPolicy:"Privacy policy",rejoinCallButtonLabel:"Re-join call",removedFromCallMoreDetails:"Another participant removed you from the call.",removedFromCallTitle:"You were removed",removeMenuLabel:"Remove",returnToCallButtonAriaDescription:"Return to Call",returnToCallButtonAriaLabel:"Back",roomNotFoundDetails:"Room ID provided is not valid.",roomNotFoundTitle:"Room not found",soundLabel:"Sound",noMicrophonesLabel:"No microphones found",noSpeakersLabel:"No speakers found",startCallButtonLabel:"Start call",openDialpadButtonLabel:"Dial phone number",peoplePaneAddPeopleButtonLabel:"Add People",dialpadStartCallButtonLabel:"Call",dialpadModalTitle:"Dial Phone Number",dialpadModalAriaLabel:"Dialpad",dialpadCloseModalButtonAriaLabel:"Close dialpad",moreButtonCallingLabel:"More",resumeCallButtonLabel:"Resume",resumingCallButtonLabel:"Resuming...",resumeCallButtonAriaLabel:"Resume call",resumingCallButtonAriaLabel:"Resume call",holdScreenLabel:"You're on hold",openDtmfDialpadLabel:"Show dialpad",dtmfDialpadPlaceholderText:"Enter number",outboundCallingNoticeString:"Calling...",participantJoinedNoticeString:"{displayName} joined",twoParticipantJoinedNoticeString:"{displayName1} and {displayName2} have joined",threeParticipantJoinedNoticeString:"{displayName1}, {displayName2} and {displayName3} have joined",participantLeftNoticeString:"{displayName} left",twoParticipantLeftNoticeString:"{displayName1} and {displayName2} have left",threeParticipantLeftNoticeString:"{displayName1}, {displayName2} and {displayName3} have left",unnamedParticipantString:"unnamed participant",manyUnnamedParticipantsJoined:"unnamed participant and {numOfParticipants} other participants joined",manyUnnamedParticipantsLeft:"unnamed participant and {numOfParticipants} other participants left",manyParticipantsJoined:"{displayName1}, {displayName2}, {displayName3} and {numOfParticipants} other participants joined",manyParticipantsLeft:"{displayName1}, {displayName2}, {displayName3} and {numOfParticipants} other participants left",liveCaptionsLabel:"Live captions",captionsSettingsLabel:"Caption settings",startCaptionsButtonOnLabel:"Turn on captions",startCaptionsButtonOffLabel:"Turn off captions",startCaptionsButtonTooltipOnContent:"Turn off captions",startCaptionsButtonTooltipOffContent:"Turn on captions",captionsSettingsModalTitle:"What language is being spoken?",captionsSettingsDropdownLabel:"Spoken language",captionsSettingsDropdownInfoText:"Language that everyone on this call is speaking.",captionsSettingsConfirmButtonLabel:"Confirm",captionsSettingsCancelButtonLabel:"Cancel",captionsSettingsModalAriaLabel:"Captions Setting Modal",captionsSettingsCloseModalButtonAriaLabel:"Close Captions Setting",captionsBannerMoreButtonCallingLabel:"More",captionsBannerMoreButtonTooltip:"More options",captionsAvailableLanguageStrings:{"ar-ae":"Arabic - U.A.E.","ar-sa":"Arabic - Saudi Arabia","da-dk":"Danish","de-de":"German - Germany","en-au":"English - Australia","en-ca":"English - Canada","en-gb":"English - United Kingdom","en-in":"English - India","en-nz":"English - New Zealand","en-us":"English - United States","es-es":"Spanish - Spain (Modern Sort)","es-mx":"Spanish - Mexico","fi-fi":"Finnish","fr-ca":"French - Canada","fr-fr":"French - France","hi-in":"Hindi","it-it":"Italian - Italy","ja-jp":"Japanese","ko-kr":"Korean","nb-no":"Norwegian (Bokmål)","nl-be":"Dutch - Belgium","nl-nl":"Dutch - Netherlands","pl-pl":"Polish","pt-br":"Portuguese - Brazil","ru-ru":"Russian","sv-se":"Swedish","zh-cn":"Chinese - People's Republic of China","zh-hk":"Chinese - Hong Kong SAR","cs-cz":"Czech","pt-pt":"Portuguese - Portugal","tr-tr":"Turkish","vi-vn":"Vietnamese","th-th":"Thai","he-il":"Hebrew","cy-gb":"Welsh","uk-ua":"Ukrainian","el-gr":"Greek","hu-hu":"Hungarian","ro-ro":"Romanian","sk-sk":"Slovak","zh-tw":"Chinese - Taiwan"},captionsBannerSpinnerText:"Starting captions...",transferPageTransferorText:"Transferring...",transferPageTransferTargetText:"Connecting...",transferPageUnknownTransferorDisplayName:"Unknown",transferPageUnknownTransferTargetDisplayName:"Unknown",transferPageNoticeString:"You are being transferred",participantCouldNotBeReachedTitle:"Target participant is currently not available",participantCouldNotBeReachedMoreDetails:"Please contact participant when they are available",permissionToReachTargetParticipantNotAllowedTitle:"Permission to reach target participant is not allowed",permissionToReachTargetParticipantNotAllowedMoreDetails:"Please check that the target participant is in the same tenant",unableToResolveTenantTitle:"Unable to resolve tenant id for the target participant",unableToResolveTenantMoreDetails:"Please check the participant id is entered correctly",participantIdIsMalformedTitle:"Participant id is not in the correct format",participantIdIsMalformedMoreDetails:"Please check that the participant id is in the correct format",moreButtonGalleryControlLabel:"Gallery options",moreButtonGalleryPositionToggleLabel:"Move gallery to top"};var chat$k={chatListHeader:"In this chat",uploadFile:"Upload File"};var callWithChat$k={chatButtonLabel:"Chat",chatButtonNewMessageNotificationLabel:"New Message",chatButtonTooltipClosedWithMessageCount:"Show chat ({unreadMessagesCount} unread)",chatButtonTooltipClose:"Hide chat",chatButtonTooltipOpen:"Show chat",chatPaneTitle:"Chat",copyInviteLinkButtonLabel:"Copy invite link",copyInviteLinkActionedAriaLabel:"Invite link copied",dismissSidePaneButtonLabel:"Close",moreDrawerAudioDeviceMenuTitle:"Audio Device",moreDrawerButtonLabel:"More options",moreDrawerButtonTooltip:"More options",moreDrawerMicrophoneMenuTitle:"Microphone",moreDrawerSpeakerMenuTitle:"Speaker",moreDrawerCaptionsMenuTitle:"Live captions",moreDrawerSpokenLanguageMenuTitle:"Spoken language",peopleButtonLabel:"People",peopleButtonTooltipOpen:"Show participants",peopleButtonTooltipClose:"Hide participants",peoplePaneSubTitle:"In this call",peoplePaneTitle:"People",pictureInPictureTileAriaLabel:"Video Feeds. Click to return to call screen.",removeMenuLabel:"Remove",openDialpadButtonLabel:"Dial phone number",returnToCallButtonAriaDescription:"Return to Call",returnToCallButtonAriaLabel:"Back",peoplePaneAddPeopleButtonLabel:"Add People",dialpadStartCallButtonLabel:"Call",dialpadModalTitle:"Dial Phone Number",dialpadModalAriaLabel:"Dialpad",dialpadCloseModalButtonAriaLabel:"Close dialpad",openDtmfDialpadLabel:"Show dialpad",dtmfDialpadPlaceholderText:"Enter number"};var en_US = {call:call$k,chat:chat$k,callWithChat:callWithChat$k};
|
20150
|
+
var call$k={cameraLabel:"Camera",noCamerasLabel:"No cameras found",cameraPermissionDenied:"Your browser is blocking access to your camera",cameraTurnedOff:"Your camera is turned off",chatButtonLabel:"Chat",close:"Close",complianceBannerNowOnlyRecording:"You are now only recording this meeting.",complianceBannerNowOnlyTranscription:"You are now only transcribing this meeting.",complianceBannerRecordingAndTranscriptionSaved:"Recording and transcription are being saved.",complianceBannerRecordingAndTranscriptionStarted:"Recording and transcription have started.",complianceBannerRecordingAndTranscriptionStopped:"Recording and transcription have stopped.",complianceBannerRecordingSaving:"Recording is being saved.",complianceBannerRecordingStarted:"Recording has started.",complianceBannerRecordingStopped:"Recording has stopped.",complianceBannerTranscriptionStarted:"Transcription has started.",complianceBannerTranscriptionConsent:"By joining, you are giving consent for this meeting to be transcribed.",complianceBannerTranscriptionSaving:"Transcription is being saved.",complianceBannerTranscriptionStopped:"Transcription has stopped.",configurationPageTitle:"Start a call",copyInviteLinkButtonLabel:"Copy invite link",copyInviteLinkActionedAriaLabel:"Invite link copied",defaultPlaceHolder:"Select an option",dismissSidePaneButtonLabel:"Close",videoEffectsPaneTitle:"Effects",videoEffectsPaneBackgroundSelectionTitle:"Background",configurationPageVideoEffectsButtonLabel:"Effects",unableToStartVideoEffect:"Unable to apply video effect.",blurBackgroundEffectButtonLabel:"Blur",blurBackgroundTooltip:"Blur Background",removeBackgroundEffectButtonLabel:"None",removeBackgroundTooltip:"Remove Background",cameraOffBackgroundEffectWarningText:"Your camera is off. Turn on camera to see video effect.",failedToJoinCallDueToNoNetworkMoreDetails:"Call was disconnected due to a network issue. Check your connection and join again.",failedToJoinCallDueToNoNetworkTitle:"Call disconnected",failedToJoinTeamsMeetingReasonAccessDeniedMoreDetails:"You were not granted entry in the call. If this was a mistake, re-join the call.",failedToJoinTeamsMeetingReasonAccessDeniedTitle:"Dismissed from lobby",learnMore:"Learn more",leavingCallTitle:"Leaving...",leftCallMoreDetails:"If this was a mistake, re-join the call.",leftCallTitle:"You left the call",lobbyScreenConnectingToCallTitle:"Joining call",lobbyScreenWaitingToBeAdmittedTitle:"Waiting to be admitted",microphonePermissionDenied:"Your browser is blocking access to your microphone",microphoneToggleInLobbyNotAllowed:"Cannot mute or unmute while in lobby.",mutedMessage:"You're muted",networkReconnectMoreDetails:"Looks like something went wrong. We're trying to get back into the call.",networkReconnectTitle:"Hold on",deniedPermissionToRoomDetails:"You do not have permission to join this room.",deniedPermissionToRoomTitle:"Permission denied to room",peopleButtonLabel:"People",peoplePaneTitle:"People",peopleButtonTooltipOpen:"Show participants",peopleButtonTooltipClose:"Hide participants",peoplePaneSubTitle:"In this call {numberOfPeople}",privacyPolicy:"Privacy policy",rejoinCallButtonLabel:"Re-join call",removedFromCallMoreDetails:"Another participant removed you from the call.",removedFromCallTitle:"You were removed",removeMenuLabel:"Remove",returnToCallButtonAriaDescription:"Return to Call",returnToCallButtonAriaLabel:"Back",roomNotFoundDetails:"Room ID provided is not valid.",roomNotFoundTitle:"Room not found",soundLabel:"Sound",noMicrophonesLabel:"No microphones found",noSpeakersLabel:"No speakers found",startCallButtonLabel:"Start call",openDialpadButtonLabel:"Dial phone number",peoplePaneAddPeopleButtonLabel:"Add People",dialpadStartCallButtonLabel:"Call",dialpadModalTitle:"Dial Phone Number",dialpadModalAriaLabel:"Dialpad",dialpadCloseModalButtonAriaLabel:"Close dialpad",moreButtonCallingLabel:"More",resumeCallButtonLabel:"Resume",resumingCallButtonLabel:"Resuming...",resumeCallButtonAriaLabel:"Resume call",resumingCallButtonAriaLabel:"Resume call",holdScreenLabel:"You're on hold",openDtmfDialpadLabel:"Show dialpad",dtmfDialpadPlaceholderText:"Enter number",outboundCallingNoticeString:"Calling...",participantJoinedNoticeString:"{displayName} joined",twoParticipantJoinedNoticeString:"{displayName1} and {displayName2} have joined",threeParticipantJoinedNoticeString:"{displayName1}, {displayName2} and {displayName3} have joined",participantLeftNoticeString:"{displayName} left",twoParticipantLeftNoticeString:"{displayName1} and {displayName2} have left",threeParticipantLeftNoticeString:"{displayName1}, {displayName2} and {displayName3} have left",unnamedParticipantString:"unnamed participant",manyUnnamedParticipantsJoined:"unnamed participant and {numOfParticipants} other participants joined",manyUnnamedParticipantsLeft:"unnamed participant and {numOfParticipants} other participants left",manyParticipantsJoined:"{displayName1}, {displayName2}, {displayName3} and {numOfParticipants} other participants joined",manyParticipantsLeft:"{displayName1}, {displayName2}, {displayName3} and {numOfParticipants} other participants left",liveCaptionsLabel:"Live captions",captionsSettingsLabel:"Caption settings",startCaptionsButtonOnLabel:"Turn on captions",startCaptionsButtonOffLabel:"Turn off captions",startCaptionsButtonTooltipOnContent:"Turn off captions",startCaptionsButtonTooltipOffContent:"Turn on captions",captionsSettingsModalTitle:"What language is being spoken?",captionsSettingsDropdownLabel:"Spoken language",captionsSettingsDropdownInfoText:"Language that everyone on this call is speaking.",captionsSettingsConfirmButtonLabel:"Confirm",captionsSettingsCancelButtonLabel:"Cancel",captionsSettingsModalAriaLabel:"Captions Setting Modal",captionsSettingsCloseModalButtonAriaLabel:"Close Captions Setting",captionsBannerMoreButtonCallingLabel:"More",captionsBannerMoreButtonTooltip:"More options",captionsAvailableLanguageStrings:{"ar-ae":"Arabic - U.A.E.","ar-sa":"Arabic - Saudi Arabia","da-dk":"Danish","de-de":"German - Germany","en-au":"English - Australia","en-ca":"English - Canada","en-gb":"English - United Kingdom","en-in":"English - India","en-nz":"English - New Zealand","en-us":"English - United States","es-es":"Spanish - Spain (Modern Sort)","es-mx":"Spanish - Mexico","fi-fi":"Finnish","fr-ca":"French - Canada","fr-fr":"French - France","hi-in":"Hindi","it-it":"Italian - Italy","ja-jp":"Japanese","ko-kr":"Korean","nb-no":"Norwegian (Bokmål)","nl-be":"Dutch - Belgium","nl-nl":"Dutch - Netherlands","pl-pl":"Polish","pt-br":"Portuguese - Brazil","ru-ru":"Russian","sv-se":"Swedish","zh-cn":"Chinese - People's Republic of China","zh-hk":"Chinese - Hong Kong SAR","cs-cz":"Czech","pt-pt":"Portuguese - Portugal","tr-tr":"Turkish","vi-vn":"Vietnamese","th-th":"Thai","he-il":"Hebrew","cy-gb":"Welsh","uk-ua":"Ukrainian","el-gr":"Greek","hu-hu":"Hungarian","ro-ro":"Romanian","sk-sk":"Slovak","zh-tw":"Chinese - Taiwan"},captionsBannerSpinnerText:"Starting captions...",transferPageTransferorText:"Transferring...",transferPageTransferTargetText:"Connecting...",transferPageUnknownTransferorDisplayName:"Unknown",transferPageUnknownTransferTargetDisplayName:"Unknown",transferPageNoticeString:"You are being transferred",participantCouldNotBeReachedTitle:"Target participant is currently not available",participantCouldNotBeReachedMoreDetails:"Please contact participant when they are available",permissionToReachTargetParticipantNotAllowedTitle:"Permission to reach target participant is not allowed",permissionToReachTargetParticipantNotAllowedMoreDetails:"Please check that the target participant is in the same tenant",unableToResolveTenantTitle:"Unable to resolve tenant id for the target participant",unableToResolveTenantMoreDetails:"Please check the participant id is entered correctly",participantIdIsMalformedTitle:"Participant id is not in the correct format",participantIdIsMalformedMoreDetails:"Please check that the participant id is in the correct format",moreButtonGalleryControlLabel:"Gallery options",moreButtonGalleryPositionToggleLabel:"Move gallery to top",moreButtonGallerySpeakerLayoutLabel:"Speaker layout",moreButtonGalleryFloatingLocalLayoutLabel:"Dynamic layout",moreButtonGalleryDefaultLayoutLabel:"Gallery layout"};var chat$k={chatListHeader:"In this chat",uploadFile:"Upload File"};var callWithChat$k={chatButtonLabel:"Chat",chatButtonNewMessageNotificationLabel:"New Message",chatButtonTooltipClosedWithMessageCount:"Show chat ({unreadMessagesCount} unread)",chatButtonTooltipClose:"Hide chat",chatButtonTooltipOpen:"Show chat",chatPaneTitle:"Chat",copyInviteLinkButtonLabel:"Copy invite link",copyInviteLinkActionedAriaLabel:"Invite link copied",dismissSidePaneButtonLabel:"Close",moreDrawerAudioDeviceMenuTitle:"Audio Device",moreDrawerButtonLabel:"More options",moreDrawerButtonTooltip:"More options",moreDrawerMicrophoneMenuTitle:"Microphone",moreDrawerSpeakerMenuTitle:"Speaker",moreDrawerCaptionsMenuTitle:"Live captions",moreDrawerSpokenLanguageMenuTitle:"Spoken language",peopleButtonLabel:"People",peopleButtonTooltipOpen:"Show participants",peopleButtonTooltipClose:"Hide participants",peoplePaneSubTitle:"In this call",peoplePaneTitle:"People",pictureInPictureTileAriaLabel:"Video Feeds. Click to return to call screen.",removeMenuLabel:"Remove",openDialpadButtonLabel:"Dial phone number",returnToCallButtonAriaDescription:"Return to Call",returnToCallButtonAriaLabel:"Back",peoplePaneAddPeopleButtonLabel:"Add People",dialpadStartCallButtonLabel:"Call",dialpadModalTitle:"Dial Phone Number",dialpadModalAriaLabel:"Dialpad",dialpadCloseModalButtonAriaLabel:"Close dialpad",openDtmfDialpadLabel:"Show dialpad",dtmfDialpadPlaceholderText:"Enter number"};var en_US = {call:call$k,chat:chat$k,callWithChat:callWithChat$k};
|
19819
20151
|
|
19820
20152
|
var call$j={cameraLabel:"Camera",noCamerasLabel:"No cameras found",cameraPermissionDenied:"Your browser is blocking access to your camera",cameraTurnedOff:"Your camera is turned off",chatButtonLabel:"Chat",close:"Close",complianceBannerNowOnlyRecording:"You are now only recording this meeting.",complianceBannerNowOnlyTranscription:"You are now only transcribing this meeting.",complianceBannerRecordingAndTranscriptionSaved:"Recording and transcription are being saved.",complianceBannerRecordingAndTranscriptionStarted:"Recording and transcription have started.",complianceBannerRecordingAndTranscriptionStopped:"Recording and transcription have stopped.",complianceBannerRecordingSaving:"Recording is being saved.",complianceBannerRecordingStarted:"Recording has started.",complianceBannerRecordingStopped:"Recording has stopped.",complianceBannerTranscriptionStarted:"Transcription has started.",complianceBannerTranscriptionConsent:"By joining, you are giving consent for this meeting to be transcribed.",complianceBannerTranscriptionSaving:"Transcription is being saved.",complianceBannerTranscriptionStopped:"Transcription has stopped.",configurationPageTitle:"Start a call",copyInviteLinkButtonLabel:"Copy invite link",copyInviteLinkActionedAriaLabel:"Invite link copied",defaultPlaceHolder:"Select an option",dismissSidePaneButtonLabel:"Close",videoEffectsPaneTitle:"Effects",videoEffectsPaneBackgroundSelectionTitle:"Background",configurationPageVideoEffectsButtonLabel:"Effects",unableToStartVideoEffect:"Unable to apply video effect.",blurBackgroundEffectButtonLabel:"Blur",blurBackgroundTooltip:"Blur Background",removeBackgroundEffectButtonLabel:"None",removeBackgroundTooltip:"Remove Background",cameraOffBackgroundEffectWarningText:"Your camera is off. Turn on camera to see video effect.",failedToJoinCallDueToNoNetworkMoreDetails:"Call was disconnected due to a network issue. Check your connection and join again.",failedToJoinCallDueToNoNetworkTitle:"Call disconnected",failedToJoinTeamsMeetingReasonAccessDeniedMoreDetails:"You were not granted entry in the call. If this was a mistake, re-join the call.",failedToJoinTeamsMeetingReasonAccessDeniedTitle:"Dismissed from lobby",learnMore:"Learn more",leavingCallTitle:"Leaving...",leftCallMoreDetails:"If this was a mistake, re-join the call.",leftCallTitle:"You left the call",lobbyScreenConnectingToCallTitle:"Joining call",lobbyScreenWaitingToBeAdmittedTitle:"Waiting to be admitted",microphonePermissionDenied:"Your browser is blocking access to your microphone",microphoneToggleInLobbyNotAllowed:"Cannot mute or unmute while in lobby.",mutedMessage:"You're muted",networkReconnectMoreDetails:"Looks like something went wrong. We're trying to get back into the call.",networkReconnectTitle:"Hold on",deniedPermissionToRoomDetails:"You do not have permission to join this room.",deniedPermissionToRoomTitle:"Permission denied to room",peopleButtonLabel:"People",peoplePaneTitle:"People",peopleButtonTooltipOpen:"Show participants",peopleButtonTooltipClose:"Hide participants",peoplePaneSubTitle:"In this call {numberOfPeople}",privacyPolicy:"Privacy policy",rejoinCallButtonLabel:"Re-join call",removedFromCallMoreDetails:"Another participant removed you from the call.",removedFromCallTitle:"You were removed",removeMenuLabel:"Remove",returnToCallButtonAriaDescription:"Return to Call",returnToCallButtonAriaLabel:"Back",roomNotFoundDetails:"Room ID provided is not valid.",roomNotFoundTitle:"Room not found",soundLabel:"Sound",noMicrophonesLabel:"No microphones found",noSpeakersLabel:"No speakers found",startCallButtonLabel:"Start call",openDialpadButtonLabel:"Dial phone number",peoplePaneAddPeopleButtonLabel:"Add People",dialpadStartCallButtonLabel:"Call",dialpadModalTitle:"Dial Phone Number",dialpadModalAriaLabel:"Dialpad",dialpadCloseModalButtonAriaLabel:"Close dialpad",moreButtonCallingLabel:"More",resumeCallButtonLabel:"Resume",resumingCallButtonLabel:"Resuming...",resumeCallButtonAriaLabel:"Resume call",resumingCallButtonAriaLabel:"Resume call",holdScreenLabel:"You're on hold",openDtmfDialpadLabel:"Show dialpad",dtmfDialpadPlaceholderText:"Enter number",outboundCallingNoticeString:"Calling...",participantJoinedNoticeString:"{displayName} joined",twoParticipantJoinedNoticeString:"{displayName1} and {displayName2} have joined",threeParticipantJoinedNoticeString:"{displayName1}, {displayName2} and {displayName3} have joined",participantLeftNoticeString:"{displayName} left",twoParticipantLeftNoticeString:"{displayName1} and {displayName2} have left",threeParticipantLeftNoticeString:"{displayName1}, {displayName2} and {displayName3} have left",unnamedParticipantString:"unnamed participant",manyUnnamedParticipantsJoined:"unnamed participant and {numOfParticipants} other participants joined",manyUnnamedParticipantsLeft:"unnamed participant and {numOfParticipants} other participants left",manyParticipantsJoined:"{displayName1}, {displayName2}, {displayName3} and {numOfParticipants} other participants joined",manyParticipantsLeft:"{displayName1}, {displayName2}, {displayName3} and {numOfParticipants} other participants left",liveCaptionsLabel:"Live captions",captionsSettingsLabel:"Caption settings",startCaptionsButtonOnLabel:"Turn on captions",startCaptionsButtonOffLabel:"Turn off captions",startCaptionsButtonTooltipOnContent:"Turn off captions",startCaptionsButtonTooltipOffContent:"Turn on captions",captionsSettingsModalTitle:"What language is being spoken?",captionsSettingsDropdownLabel:"Spoken language",captionsSettingsDropdownInfoText:"Language that everyone on this call is speaking.",captionsSettingsConfirmButtonLabel:"Confirm",captionsSettingsCancelButtonLabel:"Cancel",captionsSettingsModalAriaLabel:"Captions Setting Modal",captionsSettingsCloseModalButtonAriaLabel:"Close Captions Setting",captionsBannerMoreButtonCallingLabel:"More",captionsBannerMoreButtonTooltip:"More options",captionsAvailableLanguageStrings:{"ar-ae":"Arabic - U.A.E.","ar-sa":"Arabic - Saudi Arabia","da-dk":"Danish","de-de":"German - Germany","en-au":"English - Australia","en-ca":"English - Canada","en-gb":"English - United Kingdom","en-in":"English - India","en-nz":"English - New Zealand","en-us":"English - United States","es-es":"Spanish - Spain (Modern Sort)","es-mx":"Spanish - Mexico","fi-fi":"Finnish","fr-ca":"French - Canada","fr-fr":"French - France","hi-in":"Hindi","it-it":"Italian - Italy","ja-jp":"Japanese","ko-kr":"Korean","nb-no":"Norwegian (Bokmål)","nl-be":"Dutch - Belgium","nl-nl":"Dutch - Netherlands","pl-pl":"Polish","pt-br":"Portuguese - Brazil","ru-ru":"Russian","sv-se":"Swedish","zh-cn":"Chinese - People's Republic of China","zh-hk":"Chinese - Hong Kong SAR","cs-cz":"Czech","pt-pt":"Portuguese - Portugal","tr-tr":"Turkish","vi-vn":"Vietnamese","th-th":"Thai","he-il":"Hebrew","cy-gb":"Welsh","uk-ua":"Ukrainian","el-gr":"Greek","hu-hu":"Hungarian","ro-ro":"Romanian","sk-sk":"Slovak","zh-tw":"Chinese - Taiwan"},captionsBannerSpinnerText:"Starting captions...",transferPageTransferorText:"Transferring...",transferPageTransferTargetText:"Connecting...",transferPageUnknownTransferorDisplayName:"Unknown",transferPageUnknownTransferTargetDisplayName:"Unknown",transferPageNoticeString:"You are being transferred",participantCouldNotBeReachedTitle:"Target participant is currently not available",participantCouldNotBeReachedMoreDetails:"Please contact participant when they are available",permissionToReachTargetParticipantNotAllowedTitle:"Permission to reach target participant is not allowed",permissionToReachTargetParticipantNotAllowedMoreDetails:"Please check that the target participant is in the same tenant",unableToResolveTenantTitle:"Unable to resolve tenant id for the target participant",unableToResolveTenantMoreDetails:"Please check the participant id is entered correctly",participantIdIsMalformedTitle:"Participant id is not in the correct format",participantIdIsMalformedMoreDetails:"Please check that the participant id is in the correct format",moreButtonGalleryControlLabel:"Gallery options",moreButtonGalleryPositionToggleLabel:"Move gallery to top"};var chat$j={chatListHeader:"In this chat",uploadFile:"Upload File"};var callWithChat$j={chatButtonLabel:"Chat",chatButtonNewMessageNotificationLabel:"New Message",chatButtonTooltipClosedWithMessageCount:"Show chat ({unreadMessagesCount} unread)",chatButtonTooltipClose:"Hide chat",chatButtonTooltipOpen:"Show chat",chatPaneTitle:"Chat",copyInviteLinkButtonLabel:"Copy invite link",copyInviteLinkActionedAriaLabel:"Invite link copied",dismissSidePaneButtonLabel:"Close",moreDrawerAudioDeviceMenuTitle:"Audio Device",moreDrawerButtonLabel:"More options",moreDrawerButtonTooltip:"More options",moreDrawerMicrophoneMenuTitle:"Microphone",moreDrawerSpeakerMenuTitle:"Speaker",moreDrawerCaptionsMenuTitle:"Live captions",moreDrawerSpokenLanguageMenuTitle:"Spoken language",peopleButtonLabel:"People",peopleButtonTooltipOpen:"Show participants",peopleButtonTooltipClose:"Hide participants",peoplePaneSubTitle:"In this call",peoplePaneTitle:"People",pictureInPictureTileAriaLabel:"Video Feeds. Click to return to call screen.",removeMenuLabel:"Remove",openDialpadButtonLabel:"Dial phone number",returnToCallButtonAriaDescription:"Return to Call",returnToCallButtonAriaLabel:"Back",peoplePaneAddPeopleButtonLabel:"Add People",dialpadStartCallButtonLabel:"Call",dialpadModalTitle:"Dial Phone Number",dialpadModalAriaLabel:"Dialpad",dialpadCloseModalButtonAriaLabel:"Close dialpad",openDtmfDialpadLabel:"Show dialpad",dtmfDialpadPlaceholderText:"Enter number"};var en_GB = {call:call$j,chat:chat$j,callWithChat:callWithChat$j};
|
19821
20153
|
|
@@ -21530,10 +21862,16 @@ const ChatScreen = (props) => {
|
|
21530
21862
|
}
|
21531
21863
|
}), [adapter, fullSizeAttachments]);
|
21532
21864
|
/* @conditional-compile-remove(teams-inline-images-and-file-sharing) */
|
21533
|
-
const
|
21534
|
-
//
|
21535
|
-
|
21536
|
-
|
21865
|
+
const onImageDownloadButtonClicked = React.useCallback((imageUrl, saveAsName) => {
|
21866
|
+
// Create a new anchor element
|
21867
|
+
const a = document.createElement('a');
|
21868
|
+
// Set the href and download attributes for the anchor element
|
21869
|
+
a.href = imageUrl;
|
21870
|
+
a.download = saveAsName || 'download';
|
21871
|
+
// Programmatically click the anchor element to trigger the download
|
21872
|
+
a.click();
|
21873
|
+
a.remove();
|
21874
|
+
}, []);
|
21537
21875
|
const AttachFileButton = React.useCallback(() => {
|
21538
21876
|
if (!(fileSharing === null || fileSharing === void 0 ? void 0 : fileSharing.uploadHandler)) {
|
21539
21877
|
return null;
|
@@ -21571,7 +21909,7 @@ const ChatScreen = (props) => {
|
|
21571
21909
|
/* @conditional-compile-remove(chat-composite-participant-pane) */
|
21572
21910
|
(options === null || options === void 0 ? void 0 : options.participantPane) === true && (React__default['default'].createElement(ChatScreenPeoplePane, { onFetchAvatarPersonaData: onFetchAvatarPersonaData, onFetchParticipantMenuItems: props.onFetchParticipantMenuItems, isMobile: formFactor === 'mobile' }))),
|
21573
21911
|
/* @conditional-compile-remove(teams-inline-images-and-file-sharing) */
|
21574
|
-
galleryImages && galleryImages.length > 0 && (React__default['default'].createElement(ImageGallery, { images: galleryImages, onDismiss: () => setGalleryImages(undefined), onImageDownloadButtonClicked:
|
21912
|
+
galleryImages && galleryImages.length > 0 && (React__default['default'].createElement(ImageGallery, { images: galleryImages, onDismiss: () => setGalleryImages(undefined), onImageDownloadButtonClicked: onImageDownloadButtonClicked }))));
|
21575
21913
|
};
|
21576
21914
|
|
21577
21915
|
// Copyright (c) Microsoft Corporation.
|
@@ -21986,7 +22324,7 @@ const disableCallControls = (callControlOptions, disabledControls) => {
|
|
21986
22324
|
* @returns whether a button is disabled
|
21987
22325
|
* @private
|
21988
22326
|
*/
|
21989
|
-
const isDisabled$
|
22327
|
+
const isDisabled$3 = (option) => {
|
21990
22328
|
if (option === undefined || typeof option === 'boolean') {
|
21991
22329
|
return false;
|
21992
22330
|
}
|
@@ -22148,6 +22486,21 @@ const createCompositeHandlers = memoizeOne__default['default']((adapter) => ({
|
|
22148
22486
|
onRemoveParticipant: (userId) => __awaiter$g(void 0, void 0, void 0, function* () {
|
22149
22487
|
yield adapter.removeParticipant(userId);
|
22150
22488
|
}),
|
22489
|
+
/* @conditional-compile-remove(raise-hand) */
|
22490
|
+
onRaiseHand: () => __awaiter$g(void 0, void 0, void 0, function* () {
|
22491
|
+
yield adapter.raiseHand();
|
22492
|
+
}),
|
22493
|
+
/* @conditional-compile-remove(raise-hand) */
|
22494
|
+
onLowerHand: () => __awaiter$g(void 0, void 0, void 0, function* () {
|
22495
|
+
yield adapter.lowerHand();
|
22496
|
+
}),
|
22497
|
+
/* @conditional-compile-remove(raise-hand) */
|
22498
|
+
onToggleRaiseHand: () => __awaiter$g(void 0, void 0, void 0, function* () {
|
22499
|
+
var _b;
|
22500
|
+
((_b = adapter.getState().call) === null || _b === void 0 ? void 0 : _b.raiseHand.localParticipantRaisedHand)
|
22501
|
+
? yield adapter.lowerHand()
|
22502
|
+
: yield adapter.raiseHand();
|
22503
|
+
}),
|
22151
22504
|
onSelectCamera: (deviceInfo, options) => __awaiter$g(void 0, void 0, void 0, function* () {
|
22152
22505
|
yield adapter.setCamera(deviceInfo, options);
|
22153
22506
|
}),
|
@@ -22171,12 +22524,12 @@ const createCompositeHandlers = memoizeOne__default['default']((adapter) => ({
|
|
22171
22524
|
isCameraOn(adapter.getState()) ? yield adapter.stopCamera() : yield adapter.startCamera(options);
|
22172
22525
|
}),
|
22173
22526
|
onToggleMicrophone: () => __awaiter$g(void 0, void 0, void 0, function* () {
|
22174
|
-
var
|
22175
|
-
return ((
|
22527
|
+
var _c;
|
22528
|
+
return ((_c = adapter.getState().call) === null || _c === void 0 ? void 0 : _c.isMuted) ? yield adapter.unmute() : yield adapter.mute();
|
22176
22529
|
}),
|
22177
22530
|
onToggleScreenShare: () => __awaiter$g(void 0, void 0, void 0, function* () {
|
22178
|
-
var
|
22179
|
-
return ((
|
22531
|
+
var _d;
|
22532
|
+
return ((_d = adapter.getState().call) === null || _d === void 0 ? void 0 : _d.isScreenSharingOn)
|
22180
22533
|
? yield adapter.stopScreenShare()
|
22181
22534
|
: yield adapter.startScreenShare();
|
22182
22535
|
}),
|
@@ -22656,6 +23009,11 @@ const getDeviceManager = (state) => state.devices;
|
|
22656
23009
|
* @private
|
22657
23010
|
*/
|
22658
23011
|
const getIsScreenShareOn = (state) => { var _a, _b; return (_b = (_a = state.call) === null || _a === void 0 ? void 0 : _a.isScreenSharingOn) !== null && _b !== void 0 ? _b : false; };
|
23012
|
+
/* @conditional-compile-remove(raise-hand) */
|
23013
|
+
/**
|
23014
|
+
* @private
|
23015
|
+
*/
|
23016
|
+
const getLocalParticipantRaisedHand = (state) => { var _a; return (_a = state.call) === null || _a === void 0 ? void 0 : _a.raiseHand.localParticipantRaisedHand; };
|
22659
23017
|
/**
|
22660
23018
|
* @private
|
22661
23019
|
*/
|
@@ -22763,9 +23121,9 @@ const Participants = (props) => {
|
|
22763
23121
|
var _a;
|
22764
23122
|
return concatButtonBaseStyles(props.increaseFlyoutItemSize ? participantButtonWithIncreasedTouchTargets : {}, (_a = props.styles) !== null && _a !== void 0 ? _a : {});
|
22765
23123
|
}, [props.increaseFlyoutItemSize, props.styles]);
|
22766
|
-
return (React__default['default'].createElement(ParticipantsButton, Object.assign({ "data-ui-id": "call-composite-participants-button" }, participantsButtonProps, { showLabel: props.displayType !== 'compact', callInvitationURL: props.callInvitationURL, onFetchParticipantMenuItems: props.onFetchParticipantMenuItems, disabled: isDisabled$
|
23124
|
+
return (React__default['default'].createElement(ParticipantsButton, Object.assign({ "data-ui-id": "call-composite-participants-button" }, participantsButtonProps, { showLabel: props.displayType !== 'compact', callInvitationURL: props.callInvitationURL, onFetchParticipantMenuItems: props.onFetchParticipantMenuItems, disabled: isDisabled$2(props.option) || props.disabled, styles: participantsButtonStyles, showParticipantOverflowTooltip: !props.isMobile })));
|
22767
23125
|
};
|
22768
|
-
const isDisabled$
|
23126
|
+
const isDisabled$2 = (option) => {
|
22769
23127
|
if (option === undefined || option === true || option === false) {
|
22770
23128
|
return false;
|
22771
23129
|
}
|
@@ -22785,13 +23143,13 @@ const ScreenShare = (props) => {
|
|
22785
23143
|
const screenShareButtonDisabled = () => {
|
22786
23144
|
var _a;
|
22787
23145
|
/* @conditional-compile-remove(capabilities) */ /* @conditional-compile-remove(PSTN-calls) */
|
22788
|
-
return (_a = screenShareButtonProps === null || screenShareButtonProps === void 0 ? void 0 : screenShareButtonProps.disabled) !== null && _a !== void 0 ? _a : isDisabled(props.option);
|
23146
|
+
return (_a = screenShareButtonProps === null || screenShareButtonProps === void 0 ? void 0 : screenShareButtonProps.disabled) !== null && _a !== void 0 ? _a : isDisabled$1(props.option);
|
22789
23147
|
};
|
22790
23148
|
return (React__default['default'].createElement(ScreenShareButton, Object.assign({ "data-ui-id": "call-composite-screenshare-button" }, screenShareButtonProps, { showLabel: props.displayType !== 'compact', disabled: screenShareButtonDisabled() ||
|
22791
23149
|
props.disabled ||
|
22792
23150
|
/* @conditional-compile-remove(rooms) */ (isRoomsCall && ((_a = adapter.getState().call) === null || _a === void 0 ? void 0 : _a.role) === 'Unknown'), styles: styles })));
|
22793
23151
|
};
|
22794
|
-
const isDisabled = (option) => {
|
23152
|
+
const isDisabled$1 = (option) => {
|
22795
23153
|
if (option === undefined || option === true || option === false) {
|
22796
23154
|
return false;
|
22797
23155
|
}
|
@@ -23026,6 +23384,23 @@ const callArrangementContainerStyles = (verticalControlBar) => {
|
|
23026
23384
|
};
|
23027
23385
|
};
|
23028
23386
|
|
23387
|
+
// Copyright (c) Microsoft Corporation.
|
23388
|
+
/* @conditional-compile-remove(raise-hand) */
|
23389
|
+
/** @private */
|
23390
|
+
const RaiseHand = (props) => {
|
23391
|
+
const raiseHandButtonProps = usePropsFor$1(RaiseHandButton);
|
23392
|
+
const styles = React.useMemo(() => { var _a; return concatButtonBaseStyles((_a = props.styles) !== null && _a !== void 0 ? _a : {}); }, [props.styles]);
|
23393
|
+
const raiseHandButtonDisabled = isDisabled(props.option);
|
23394
|
+
return (React__default['default'].createElement(RaiseHandButton, Object.assign({ "data-ui-id": "call-composite-raisehand-button" }, raiseHandButtonProps, { showLabel: props.displayType !== 'compact', disabled: raiseHandButtonDisabled || props.disabled, styles: styles })));
|
23395
|
+
};
|
23396
|
+
/* @conditional-compile-remove(raise-hand) */
|
23397
|
+
const isDisabled = (option) => {
|
23398
|
+
if (option === undefined || option === true || option === false) {
|
23399
|
+
return false;
|
23400
|
+
}
|
23401
|
+
return option.disabled;
|
23402
|
+
};
|
23403
|
+
|
23029
23404
|
// Copyright (c) Microsoft Corporation.
|
23030
23405
|
// Enforce a background color on control bar to ensure it matches the composite background color.
|
23031
23406
|
const controlBarStyles = react.memoizeFunction((background) => ({ root: { background: background } }));
|
@@ -23057,6 +23432,8 @@ const CallControls = (props) => {
|
|
23057
23432
|
}), [localeStrings]);
|
23058
23433
|
/* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
|
23059
23434
|
const holdButtonProps = usePropsFor$1(HoldButton);
|
23435
|
+
/* @conditional-compile-remove(raise-hand) */
|
23436
|
+
const raiseHandButtonProps = usePropsFor$1(RaiseHandButton);
|
23060
23437
|
/* @conditional-compile-remove(PSTN-calls) */
|
23061
23438
|
const alternateCallerId = useAdapter().getState().alternateCallerId;
|
23062
23439
|
/* @conditional-compile-remove(new-call-control-bar) */
|
@@ -23075,7 +23452,7 @@ const CallControls = (props) => {
|
|
23075
23452
|
itemProps: {
|
23076
23453
|
styles: buttonFlyoutIncreasedSizeStyles
|
23077
23454
|
},
|
23078
|
-
disabled: isDisabled$
|
23455
|
+
disabled: isDisabled$3(options === null || options === void 0 ? void 0 : options.participantsButton),
|
23079
23456
|
['data-ui-id']: 'call-composite-more-menu-people-button'
|
23080
23457
|
});
|
23081
23458
|
}
|
@@ -23091,7 +23468,7 @@ const CallControls = (props) => {
|
|
23091
23468
|
itemProps: {
|
23092
23469
|
styles: buttonFlyoutIncreasedSizeStyles
|
23093
23470
|
},
|
23094
|
-
disabled: isDisabled$
|
23471
|
+
disabled: isDisabled$3(options === null || options === void 0 ? void 0 : options.holdButton),
|
23095
23472
|
['data-ui-id']: 'hold-button'
|
23096
23473
|
});
|
23097
23474
|
}
|
@@ -23110,6 +23487,26 @@ const CallControls = (props) => {
|
|
23110
23487
|
}
|
23111
23488
|
});
|
23112
23489
|
}
|
23490
|
+
/* @conditional-compile-remove(raise-hand) */
|
23491
|
+
if (raiseHandButtonIsEnabled) {
|
23492
|
+
items.push({
|
23493
|
+
key: 'raiseHandButtonKey',
|
23494
|
+
text: raiseHandButtonProps.checked
|
23495
|
+
? localeStrings.component.strings.raiseHandButton.onLabel
|
23496
|
+
: localeStrings.component.strings.raiseHandButton.offLabel,
|
23497
|
+
onClick: () => {
|
23498
|
+
if (raiseHandButtonProps.onToggleRaiseHand) {
|
23499
|
+
raiseHandButtonProps.onToggleRaiseHand();
|
23500
|
+
}
|
23501
|
+
},
|
23502
|
+
iconProps: { iconName: 'RaiseHandContextualMenuItem', styles: { root: { lineHeight: 0 } } },
|
23503
|
+
itemProps: {
|
23504
|
+
styles: buttonFlyoutIncreasedSizeStyles
|
23505
|
+
},
|
23506
|
+
disabled: isDisabled$3(options === null || options === void 0 ? void 0 : options.raiseHandButton),
|
23507
|
+
['data-ui-id']: 'raise-hand-button'
|
23508
|
+
});
|
23509
|
+
}
|
23113
23510
|
return items;
|
23114
23511
|
};
|
23115
23512
|
/* @conditional-compile-remove(PSTN-calls) */
|
@@ -23127,20 +23524,23 @@ const CallControls = (props) => {
|
|
23127
23524
|
const screenShareButtonIsEnabled = isEnabled$2(options === null || options === void 0 ? void 0 : options.screenShareButton);
|
23128
23525
|
const microphoneButtonIsEnabled = isEnabled$2(options === null || options === void 0 ? void 0 : options.microphoneButton);
|
23129
23526
|
const cameraButtonIsEnabled = isEnabled$2(options === null || options === void 0 ? void 0 : options.cameraButton);
|
23527
|
+
/* @conditional-compile-remove(raise-hand) */
|
23528
|
+
const raiseHandButtonIsEnabled = isEnabled$2(options === null || options === void 0 ? void 0 : options.raiseHandButton);
|
23130
23529
|
return (React__default['default'].createElement(react.Stack, { horizontalAlign: "center", className: callControlsContainerStyles },
|
23131
23530
|
/* @conditional-compile-remove(PSTN-calls) */
|
23132
23531
|
React__default['default'].createElement(SendDtmfDialpad, { isMobile: !!props.isMobile, strings: dialpadStrings, showDialpad: showDialpad, onDismissDialpad: onDismissDialpad }),
|
23133
23532
|
React__default['default'].createElement(react.Stack.Item, null,
|
23134
23533
|
React__default['default'].createElement(ControlBar, { layout: props.displayVertical ? 'vertical' : 'horizontal', styles: controlBarStyles(theme.semanticColors.bodyBackground) },
|
23135
|
-
microphoneButtonIsEnabled && (React__default['default'].createElement(Microphone, { displayType: options === null || options === void 0 ? void 0 : options.displayType, disabled: isDisabled$
|
23136
|
-
cameraButtonIsEnabled && (React__default['default'].createElement(Camera, { displayType: options === null || options === void 0 ? void 0 : options.displayType, disabled: isDisabled$
|
23137
|
-
|
23534
|
+
microphoneButtonIsEnabled && (React__default['default'].createElement(Microphone, { displayType: options === null || options === void 0 ? void 0 : options.displayType, disabled: isDisabled$3(options === null || options === void 0 ? void 0 : options.microphoneButton) })),
|
23535
|
+
cameraButtonIsEnabled && (React__default['default'].createElement(Camera, { displayType: options === null || options === void 0 ? void 0 : options.displayType, disabled: isDisabled$3(options === null || options === void 0 ? void 0 : options.cameraButton) })),
|
23536
|
+
/* @conditional-compile-remove(raise-hand) */ raiseHandButtonIsEnabled && !props.isMobile && (React__default['default'].createElement(RaiseHand, { displayType: options === null || options === void 0 ? void 0 : options.displayType })),
|
23537
|
+
screenShareButtonIsEnabled && (React__default['default'].createElement(ScreenShare, { option: options === null || options === void 0 ? void 0 : options.screenShareButton, displayType: options === null || options === void 0 ? void 0 : options.displayType, disabled: isDisabled$3(options === null || options === void 0 ? void 0 : options.screenShareButton) })),
|
23138
23538
|
isEnabled$2(options === null || options === void 0 ? void 0 : options.participantsButton) &&
|
23139
23539
|
/* @conditional-compile-remove(one-to-n-calling) */ /* @conditional-compile-remove(PSTN-calls) */
|
23140
|
-
!props.isMobile && (React__default['default'].createElement(Participants, { option: options === null || options === void 0 ? void 0 : options.participantsButton, callInvitationURL: props.callInvitationURL, onFetchParticipantMenuItems: props.onFetchParticipantMenuItems, displayType: options === null || options === void 0 ? void 0 : options.displayType, increaseFlyoutItemSize: props.increaseFlyoutItemSize, isMobile: props.isMobile, disabled: isDisabled$
|
23540
|
+
!props.isMobile && (React__default['default'].createElement(Participants, { option: options === null || options === void 0 ? void 0 : options.participantsButton, callInvitationURL: props.callInvitationURL, onFetchParticipantMenuItems: props.onFetchParticipantMenuItems, displayType: options === null || options === void 0 ? void 0 : options.displayType, increaseFlyoutItemSize: props.increaseFlyoutItemSize, isMobile: props.isMobile, disabled: isDisabled$3(options === null || options === void 0 ? void 0 : options.participantsButton) })) && (
|
23141
23541
|
/* @conditional-compile-remove(one-to-n-calling) */ /* @conditional-compile-remove(PSTN-calls) */
|
23142
|
-
React__default['default'].createElement(People, { checked: props.peopleButtonChecked, ariaLabel: peopleButtonStrings === null || peopleButtonStrings === void 0 ? void 0 : peopleButtonStrings.label, showLabel: (options === null || options === void 0 ? void 0 : options.displayType) !== 'compact', onClick: props.onPeopleButtonClicked, "data-ui-id": "call-composite-people-button", strings: peopleButtonStrings, disabled: isDisabled$
|
23143
|
-
isEnabled$2(options === null || options === void 0 ? void 0 : options.devicesButton) && (React__default['default'].createElement(Devices, { displayType: options === null || options === void 0 ? void 0 : options.displayType, increaseFlyoutItemSize: props.increaseFlyoutItemSize, disabled: isDisabled$
|
23542
|
+
React__default['default'].createElement(People, { checked: props.peopleButtonChecked, ariaLabel: peopleButtonStrings === null || peopleButtonStrings === void 0 ? void 0 : peopleButtonStrings.label, showLabel: (options === null || options === void 0 ? void 0 : options.displayType) !== 'compact', onClick: props.onPeopleButtonClicked, "data-ui-id": "call-composite-people-button", strings: peopleButtonStrings, disabled: isDisabled$3(options === null || options === void 0 ? void 0 : options.participantsButton) })),
|
23543
|
+
isEnabled$2(options === null || options === void 0 ? void 0 : options.devicesButton) && (React__default['default'].createElement(Devices, { displayType: options === null || options === void 0 ? void 0 : options.displayType, increaseFlyoutItemSize: props.increaseFlyoutItemSize, disabled: isDisabled$3(options === null || options === void 0 ? void 0 : options.devicesButton) })),
|
23144
23544
|
/* @conditional-compile-remove(one-to-n-calling) */ /* @conditional-compile-remove(PSTN-calls) */
|
23145
23545
|
isEnabled$2(options === null || options === void 0 ? void 0 : options.moreButton) && moreButtonContextualMenuItems().length > 0 && (React__default['default'].createElement(MoreButton, { "data-ui-id": "common-call-composite-more-button", strings: moreButtonStrings, menuIconProps: { hidden: true }, menuProps: { items: moreButtonContextualMenuItems() }, showLabel: (options === null || options === void 0 ? void 0 : options.displayType) !== 'compact' })),
|
23146
23546
|
customButtons['primary'],
|
@@ -23419,13 +23819,67 @@ const DesktopMoreButton = (props) => {
|
|
23419
23819
|
text: localeStrings.strings.call.moreButtonGalleryControlLabel,
|
23420
23820
|
subMenuProps: {
|
23421
23821
|
items: [
|
23822
|
+
{
|
23823
|
+
key: 'speakerSelectionKey',
|
23824
|
+
text: localeStrings.strings.call.moreButtonGallerySpeakerLayoutLabel,
|
23825
|
+
canCheck: true,
|
23826
|
+
itemProps: {
|
23827
|
+
styles: buttonFlyoutIncreasedSizeStyles
|
23828
|
+
},
|
23829
|
+
isChecked: props.userSetGalleryLayout === 'speaker',
|
23830
|
+
onClick: () => {
|
23831
|
+
props.onUserSetGalleryLayout && props.onUserSetGalleryLayout('speaker');
|
23832
|
+
},
|
23833
|
+
iconProps: {
|
23834
|
+
iconName: 'SpeakerGalleryLayout',
|
23835
|
+
styles: { root: { lineHeight: 0 } }
|
23836
|
+
}
|
23837
|
+
},
|
23838
|
+
{
|
23839
|
+
key: 'dynamicSelectionKey',
|
23840
|
+
text: localeStrings.strings.call.moreButtonGalleryFloatingLocalLayoutLabel,
|
23841
|
+
canCheck: true,
|
23842
|
+
itemProps: {
|
23843
|
+
styles: buttonFlyoutIncreasedSizeStyles
|
23844
|
+
},
|
23845
|
+
isChecked: props.userSetGalleryLayout === 'floatingLocalVideo',
|
23846
|
+
onClick: () => {
|
23847
|
+
props.onUserSetGalleryLayout && props.onUserSetGalleryLayout('floatingLocalVideo');
|
23848
|
+
},
|
23849
|
+
iconProps: {
|
23850
|
+
iconName: 'FloatingLocalVideoGalleryLayout',
|
23851
|
+
styles: { root: { lineHeight: 0 } }
|
23852
|
+
}
|
23853
|
+
},
|
23854
|
+
{
|
23855
|
+
key: 'defaultSelectionKey',
|
23856
|
+
text: localeStrings.strings.call.moreButtonGalleryDefaultLayoutLabel,
|
23857
|
+
canCheck: true,
|
23858
|
+
itemProps: {
|
23859
|
+
styles: buttonFlyoutIncreasedSizeStyles
|
23860
|
+
},
|
23861
|
+
isChecked: props.userSetGalleryLayout === 'default',
|
23862
|
+
onClick: () => {
|
23863
|
+
props.onUserSetGalleryLayout && props.onUserSetGalleryLayout('default');
|
23864
|
+
},
|
23865
|
+
iconProps: {
|
23866
|
+
iconName: 'DefaultGalleryLayout',
|
23867
|
+
styles: { root: { lineHeight: 0 } }
|
23868
|
+
}
|
23869
|
+
},
|
23870
|
+
{ key: 'dividerLayoutsKey', itemType: react.ContextualMenuItemType.Divider },
|
23422
23871
|
{
|
23423
23872
|
key: 'topKey',
|
23424
23873
|
text: localeStrings.strings.call.moreButtonGalleryPositionToggleLabel,
|
23425
23874
|
canCheck: true,
|
23875
|
+
topDivider: true,
|
23426
23876
|
itemProps: {
|
23427
23877
|
styles: buttonFlyoutIncreasedSizeStyles
|
23428
23878
|
},
|
23879
|
+
iconProps: {
|
23880
|
+
iconName: 'OverflowGalleryTop',
|
23881
|
+
styles: { root: { lineHeight: 0 } }
|
23882
|
+
},
|
23429
23883
|
isChecked: galleryPositionTop,
|
23430
23884
|
onClick: () => {
|
23431
23885
|
if (galleryPositionTop === false) {
|
@@ -23630,15 +24084,19 @@ const CommonCallControlBar = (props) => {
|
|
23630
24084
|
React__default['default'].createElement(ControlBar, { layout: props.displayVertical ? 'vertical' : 'horizontal', styles: centerContainerStyles },
|
23631
24085
|
microphoneButtonIsEnabled && (React__default['default'].createElement(Microphone, { displayType: options.displayType, styles: commonButtonStyles, splitButtonsForDeviceSelection: !props.mobileView,
|
23632
24086
|
/* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
|
23633
|
-
disabled: props.disableButtonsForHoldScreen || isDisabled$
|
24087
|
+
disabled: props.disableButtonsForHoldScreen || isDisabled$3(options.microphoneButton) })),
|
23634
24088
|
cameraButtonIsEnabled && (React__default['default'].createElement(Camera, { displayType: options.displayType, styles: commonButtonStyles, splitButtonsForDeviceSelection: !props.mobileView,
|
23635
24089
|
/* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
|
23636
|
-
disabled: props.disableButtonsForHoldScreen || isDisabled$
|
24090
|
+
disabled: props.disableButtonsForHoldScreen || isDisabled$3(options.cameraButton),
|
23637
24091
|
/* @conditional-compile-remove(video-background-effects) */
|
23638
24092
|
onShowVideoEffectsPicker: props.onShowVideoEffectsPicker, componentRef: props.cameraButtonRef })),
|
24093
|
+
/* @conditional-compile-remove(raise-hand) */ !props.mobileView &&
|
24094
|
+
isEnabled$1(options.raiseHandButton) && (React__default['default'].createElement(RaiseHand, { displayType: options.displayType, styles: commonButtonStyles,
|
24095
|
+
/* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
|
24096
|
+
disabled: props.disableButtonsForHoldScreen || isDisabled$3(options.microphoneButton) })),
|
23639
24097
|
screenShareButtonIsEnabled && (React__default['default'].createElement(ScreenShare, { option: options.screenShareButton, displayType: options.displayType, styles: screenShareButtonStyles,
|
23640
24098
|
/* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
|
23641
|
-
disabled: props.disableButtonsForHoldScreen || isDisabled$
|
24099
|
+
disabled: props.disableButtonsForHoldScreen || isDisabled$3(options.screenShareButton) })), (_a = customButtons['primary']) === null || _a === void 0 ? void 0 :
|
23642
24100
|
_a.slice(0, props.mobileView
|
23643
24101
|
? CUSTOM_BUTTON_OPTIONS.MAX_PRIMARY_MOBILE_CUSTOM_BUTTONS
|
23644
24102
|
: CUSTOM_BUTTON_OPTIONS.MAX_PRIMARY_DESKTOP_CUSTOM_BUTTONS).map((CustomButton, i) => {
|
@@ -23653,14 +24111,20 @@ const CommonCallControlBar = (props) => {
|
|
23653
24111
|
/* @conditional-compile-remove(close-captions) */
|
23654
24112
|
isCaptionsSupported: props.isCaptionsSupported,
|
23655
24113
|
/* @conditional-compile-remove(close-captions) */
|
23656
|
-
onCaptionsSettingsClick: openCaptionsSettingsModal,
|
24114
|
+
onCaptionsSettingsClick: openCaptionsSettingsModal,
|
24115
|
+
/* @conditional-compile-remove(gallery-layouts) */
|
24116
|
+
onUserSetOverflowGalleryPositionChange: props.onUserSetOverflowGalleryPositionChange,
|
24117
|
+
/* @conditional-compile-remove(gallery-layouts) */
|
24118
|
+
onUserSetGalleryLayout: props.onUserSetGalleryLayout,
|
24119
|
+
/* @conditional-compile-remove(gallery-layouts) */
|
24120
|
+
userSetGalleryLayout: props.userSetGalleryLayout })),
|
23657
24121
|
React__default['default'].createElement(EndCall, { displayType: "compact", styles: endCallButtonStyles }))))))),
|
23658
24122
|
!props.mobileView && sideButtonsPresent && (React__default['default'].createElement(react.Stack.Item, null,
|
23659
24123
|
React__default['default'].createElement("div", { ref: sidepaneControlsRef },
|
23660
24124
|
React__default['default'].createElement(react.Stack, { horizontal: true, className: !props.mobileView ? react.mergeStyles(desktopButtonContainerStyle) : undefined },
|
23661
24125
|
isEnabled$1(options === null || options === void 0 ? void 0 : options.peopleButton) && (React__default['default'].createElement(PeopleButton, { checked: props.peopleButtonChecked, ariaLabel: peopleButtonStrings === null || peopleButtonStrings === void 0 ? void 0 : peopleButtonStrings.label, showLabel: options.displayType !== 'compact', onClick: props.onPeopleButtonClicked, "data-ui-id": "common-call-composite-people-button", disabled: props.disableButtonsForLobbyPage ||
|
23662
24126
|
props.disableButtonsForHoldScreen ||
|
23663
|
-
isDisabled$
|
24127
|
+
isDisabled$3(options.peopleButton), strings: peopleButtonStrings, styles: commonButtonStyles, componentRef: props.peopleButtonRef })), (_b = customButtons['secondary']) === null || _b === void 0 ? void 0 :
|
23664
24128
|
_b.slice(0, CUSTOM_BUTTON_OPTIONS.MAX_SECONDARY_DESKTOP_CUSTOM_BUTTONS).map((CustomButton, i) => {
|
23665
24129
|
return (React__default['default'].createElement(CustomButton, { key: `secondary-custom-button-${i}`, styles: commonButtonStyles, showLabel: options.displayType !== 'compact' }));
|
23666
24130
|
}))))))));
|
@@ -23925,6 +24389,8 @@ const MoreDrawer = (props) => {
|
|
23925
24389
|
const localeStrings = useLocale();
|
23926
24390
|
/* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
|
23927
24391
|
const holdButtonProps = usePropsFor$1(HoldButton);
|
24392
|
+
/* @conditional-compile-remove(raise-hand) */
|
24393
|
+
const raiseHandButtonProps = usePropsFor$1(RaiseHandButton);
|
23928
24394
|
const onSpeakerItemClick = React.useCallback((_ev, itemKey) => {
|
23929
24395
|
const selected = speakers === null || speakers === void 0 ? void 0 : speakers.find((speaker) => speaker.id === itemKey);
|
23930
24396
|
if (selected) {
|
@@ -23985,7 +24451,7 @@ const MoreDrawer = (props) => {
|
|
23985
24451
|
text: mic.name,
|
23986
24452
|
onItemClick: onMicrophoneItemClick,
|
23987
24453
|
secondaryIconProps: isDeviceSelected(mic, props.selectedMicrophone) ? { iconName: 'Accept' } : undefined,
|
23988
|
-
disabled: drawerSelectionOptions !== false ? isDisabled$
|
24454
|
+
disabled: drawerSelectionOptions !== false ? isDisabled$3(drawerSelectionOptions.microphoneButton) : undefined
|
23989
24455
|
})),
|
23990
24456
|
secondaryText: (_b = props.selectedMicrophone) === null || _b === void 0 ? void 0 : _b.name
|
23991
24457
|
});
|
@@ -23997,14 +24463,14 @@ const MoreDrawer = (props) => {
|
|
23997
24463
|
text: props.strings.peopleButtonLabel,
|
23998
24464
|
iconProps: { iconName: 'MoreDrawerPeople' },
|
23999
24465
|
onItemClick: props.onPeopleButtonClicked,
|
24000
|
-
disabled: isDisabled$
|
24466
|
+
disabled: isDisabled$3(drawerSelectionOptions.peopleButton) || props.disableButtonsForHoldScreen
|
24001
24467
|
});
|
24002
24468
|
}
|
24003
24469
|
/* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
|
24004
24470
|
if (drawerSelectionOptions !== false && isEnabled(drawerSelectionOptions === null || drawerSelectionOptions === void 0 ? void 0 : drawerSelectionOptions.holdButton)) {
|
24005
24471
|
drawerMenuItems.push({
|
24006
24472
|
itemKey: 'holdButtonKey',
|
24007
|
-
disabled: props.disableButtonsForHoldScreen || isDisabled$
|
24473
|
+
disabled: props.disableButtonsForHoldScreen || isDisabled$3(drawerSelectionOptions.holdButton),
|
24008
24474
|
text: localeStrings.component.strings.holdButton.tooltipOffContent,
|
24009
24475
|
onItemClick: () => {
|
24010
24476
|
holdButtonProps.onToggleHold();
|
@@ -24013,6 +24479,27 @@ const MoreDrawer = (props) => {
|
|
24013
24479
|
iconProps: { iconName: 'HoldCallContextualMenuItem', styles: { root: { lineHeight: 0 } } }
|
24014
24480
|
});
|
24015
24481
|
}
|
24482
|
+
/* @conditional-compile-remove(raise-hand) */
|
24483
|
+
if (drawerSelectionOptions !== false && isEnabled(drawerSelectionOptions === null || drawerSelectionOptions === void 0 ? void 0 : drawerSelectionOptions.raiseHandButton)) {
|
24484
|
+
const raiseHandIcon = raiseHandButtonProps.checked ? 'LowerHandContextualMenuItem' : 'RaiseHandContextualMenuItem';
|
24485
|
+
drawerMenuItems.push({
|
24486
|
+
itemKey: 'raiseHandButtonKey',
|
24487
|
+
disabled: props.disableButtonsForHoldScreen || isDisabled$3(drawerSelectionOptions.raiseHandButton),
|
24488
|
+
text: raiseHandButtonProps.checked
|
24489
|
+
? localeStrings.component.strings.raiseHandButton.onLabel
|
24490
|
+
: localeStrings.component.strings.raiseHandButton.offLabel,
|
24491
|
+
onItemClick: () => {
|
24492
|
+
if (raiseHandButtonProps.onToggleRaiseHand) {
|
24493
|
+
raiseHandButtonProps.onToggleRaiseHand();
|
24494
|
+
}
|
24495
|
+
onLightDismiss();
|
24496
|
+
},
|
24497
|
+
iconProps: {
|
24498
|
+
iconName: raiseHandIcon,
|
24499
|
+
styles: { root: { lineHeight: 0 } }
|
24500
|
+
}
|
24501
|
+
});
|
24502
|
+
}
|
24016
24503
|
/*@conditional-compile-remove(PSTN-calls) */
|
24017
24504
|
// dtmf tone sending only works for 1:1 PSTN call
|
24018
24505
|
if (drawerSelectionOptions !== false && props.onClickShowDialpad) {
|
@@ -25152,14 +25639,18 @@ const LocalAndRemotePIP = (props) => {
|
|
25152
25639
|
showMuteIndicator: false,
|
25153
25640
|
showCameraSwitcherInLocalPreview: false,
|
25154
25641
|
isAvailable: (_a = localParticipant.videoStream) === null || _a === void 0 ? void 0 : _a.isAvailable,
|
25155
|
-
renderElement: (_b = localParticipant.videoStream) === null || _b === void 0 ? void 0 : _b.renderElement
|
25642
|
+
renderElement: (_b = localParticipant.videoStream) === null || _b === void 0 ? void 0 : _b.renderElement,
|
25643
|
+
/* @conditional-compile-remove(raise-hand) */
|
25644
|
+
raisedHand: localParticipant.raisedHand
|
25156
25645
|
});
|
25157
25646
|
}, [
|
25158
25647
|
localParticipant.displayName,
|
25159
25648
|
(_a = localParticipant.videoStream) === null || _a === void 0 ? void 0 : _a.isAvailable,
|
25160
25649
|
(_b = localParticipant.videoStream) === null || _b === void 0 ? void 0 : _b.renderElement,
|
25161
25650
|
onCreateLocalStreamView,
|
25162
|
-
onDisposeLocalStreamView
|
25651
|
+
onDisposeLocalStreamView,
|
25652
|
+
/* @conditional-compile-remove(raise-hand) */
|
25653
|
+
localParticipant.raisedHand
|
25163
25654
|
]);
|
25164
25655
|
const remoteVideoTileProps = React.useMemo(() => {
|
25165
25656
|
var _a, _b, _c;
|
@@ -25246,11 +25737,19 @@ const updateUserDisplayNamesTrampoline = (remoteParticipants) => {
|
|
25246
25737
|
* Picture in picture in picture needs to display the most-dominant remote speaker, as well as the local participant video.
|
25247
25738
|
* @private
|
25248
25739
|
*/
|
25249
|
-
const localAndRemotePIPSelector = reselect__namespace.createSelector([
|
25740
|
+
const localAndRemotePIPSelector = reselect__namespace.createSelector([
|
25741
|
+
getDisplayName,
|
25742
|
+
dominantRemoteParticipantSelector,
|
25743
|
+
localVideoSelector,
|
25744
|
+
/* @conditional-compile-remove(raise-hand) */ getLocalParticipantRaisedHand
|
25745
|
+
], (displayName, dominantRemoteParticipant, localVideoStreamInfo,
|
25746
|
+
/* @conditional-compile-remove(raise-hand) */ raisedHand) => {
|
25250
25747
|
return {
|
25251
25748
|
localParticipant: {
|
25252
25749
|
displayName,
|
25253
|
-
videoStream: localVideoStreamInfo
|
25750
|
+
videoStream: localVideoStreamInfo,
|
25751
|
+
/* @conditional-compile-remove(raise-hand) */
|
25752
|
+
raisedHand: raisedHand
|
25254
25753
|
},
|
25255
25754
|
dominantRemoteParticipant
|
25256
25755
|
};
|
@@ -25551,7 +26050,11 @@ const CallArrangement = (props) => {
|
|
25551
26050
|
/* @conditional-compile-remove(PSTN-calls) */
|
25552
26051
|
onClickShowDialpad: alternateCallerId ? onClickShowDialpad : undefined, displayVertical: verticalControlBar,
|
25553
26052
|
/* @conditional-compile-remove(gallery-layouts) */
|
25554
|
-
onUserSetOverflowGalleryPositionChange: props.onUserSetOverflowGalleryPositionChange,
|
26053
|
+
onUserSetOverflowGalleryPositionChange: props.onUserSetOverflowGalleryPositionChange,
|
26054
|
+
/* @conditional-compile-remove(gallery-layouts) */
|
26055
|
+
onUserSetGalleryLayout: props.onUserSetGalleryLayoutChange,
|
26056
|
+
/* @conditional-compile-remove(gallery-layouts) */
|
26057
|
+
userSetGalleryLayout: props.userSetGalleryLayout, peopleButtonRef: peopleButtonRef, cameraButtonRef: cameraButtonRef }))))),
|
25555
26058
|
((_e = props.callControlProps) === null || _e === void 0 ? void 0 : _e.options) !== false && showDrawer && (React__default['default'].createElement(react.Stack, { styles: drawerContainerStylesValue },
|
25556
26059
|
React__default['default'].createElement(PreparedMoreDrawer, { callControls: props.callControlProps.options, onLightDismiss: closeDrawer, onPeopleButtonClicked: onMoreDrawerPeopleClicked,
|
25557
26060
|
/* @conditional-compile-remove(PSTN-calls) */
|
@@ -25581,7 +26084,7 @@ const CallArrangement = (props) => {
|
|
25581
26084
|
maxWidth: isVideoPaneOpen ? `${VIDEO_EFFECTS_SIDE_PANE_WIDTH_REM}rem` : undefined, updateSidePaneRenderer: props.updateSidePaneRenderer, onPeopleButtonClicked: props.mobileView && !shouldShowPeopleTabHeaderButton(props.callControlProps.options)
|
25582
26085
|
? undefined
|
25583
26086
|
: togglePeoplePane, disablePeopleButton: typeof props.callControlProps.options !== 'boolean' &&
|
25584
|
-
isDisabled$
|
26087
|
+
isDisabled$3((_g = props.callControlProps.options) === null || _g === void 0 ? void 0 : _g.participantsButton), onChatButtonClicked: (_h = props.mobileChatTabHeader) === null || _h === void 0 ? void 0 : _h.onClick, disableChatButton: (_j = props.mobileChatTabHeader) === null || _j === void 0 ? void 0 : _j.disabled }),
|
25585
26088
|
props.mobileView && (React__default['default'].createElement(ModalLocalAndRemotePIP, { modalLayerHostId: props.modalLayerHostId, hidden: !isSidePaneOpen, styles: pipStyles, minDragPosition: minMaxDragPosition.minDragPosition, maxDragPosition: minMaxDragPosition.maxDragPosition })),
|
25586
26089
|
drawerMenuItems.length > 0 && (React__default['default'].createElement(react.Stack, { styles: drawerContainerStyles() },
|
25587
26090
|
React__default['default'].createElement(_DrawerMenu, { onLightDismiss: () => setDrawerMenuItems([]), items: drawerMenuItems }))))))));
|
@@ -25802,20 +26305,27 @@ const MediaGallery = (props) => {
|
|
25802
26305
|
? { kind: 'drawer', hostId: props.drawerMenuHostId }
|
25803
26306
|
: { kind: 'contextual' };
|
25804
26307
|
}, [(_c = props.remoteVideoTileMenuOptions) === null || _c === void 0 ? void 0 : _c.isHidden, props.isMobile, props.drawerMenuHostId]);
|
25805
|
-
/* @conditional-compile-remove(vertical-gallery) */
|
26308
|
+
/* @conditional-compile-remove(vertical-gallery) */
|
25806
26309
|
const overflowGalleryPosition = React.useMemo(() => {
|
25807
|
-
|
25808
|
-
|
25809
|
-
? 'VerticalRight'
|
25810
|
-
: 'HorizontalBottom';
|
25811
|
-
}
|
25812
|
-
else {
|
26310
|
+
/* @conditional-compile-remove(gallery-layouts) */
|
26311
|
+
if (props.userSetOverflowGalleryPosition === 'HorizontalTop') {
|
25813
26312
|
return props.userSetOverflowGalleryPosition;
|
25814
26313
|
}
|
25815
|
-
|
26314
|
+
return containerWidth && containerHeight && containerWidth / containerHeight >= 16 / 9
|
26315
|
+
? 'VerticalRight'
|
26316
|
+
: 'HorizontalBottom';
|
26317
|
+
}, [
|
26318
|
+
/* @conditional-compile-remove(gallery-layouts) */ props.userSetOverflowGalleryPosition,
|
26319
|
+
containerWidth,
|
26320
|
+
containerHeight
|
26321
|
+
]);
|
25816
26322
|
const VideoGalleryMemoized = React.useMemo(() => {
|
25817
26323
|
var _a;
|
25818
|
-
|
26324
|
+
const layoutBasedOnUserSelection = () => {
|
26325
|
+
/* @conditional-compile-remove(gallery-layouts) */
|
26326
|
+
return props.localVideoTileOptions ? layoutBasedOnTilePosition : props.userSetGalleryLayout;
|
26327
|
+
};
|
26328
|
+
return (React__default['default'].createElement(VideoGallery, Object.assign({}, videoGalleryProps, { localVideoViewOptions: localVideoViewOptions$2, remoteVideoViewOptions: remoteVideoViewOptions, styles: VideoGalleryStyles, layout: layoutBasedOnUserSelection(), showCameraSwitcherInLocalPreview: props.isMobile, localVideoCameraCycleButtonProps: cameraSwitcherProps, onRenderAvatar: (_a = props.onRenderAvatar) !== null && _a !== void 0 ? _a : onRenderAvatar,
|
25819
26329
|
/* @conditional-compile-remove(pinned-participants) */
|
25820
26330
|
remoteVideoTileMenuOptions: remoteVideoTileMenuOptions,
|
25821
26331
|
/* @conditional-compile-remove(vertical-gallery) */
|
@@ -25828,7 +26338,6 @@ const MediaGallery = (props) => {
|
|
25828
26338
|
: '16:9' })));
|
25829
26339
|
}, [
|
25830
26340
|
videoGalleryProps,
|
25831
|
-
layoutBasedOnTilePosition,
|
25832
26341
|
props.isMobile,
|
25833
26342
|
props.onRenderAvatar,
|
25834
26343
|
/* @conditional-compile-remove(rooms) */
|
@@ -25844,7 +26353,10 @@ const MediaGallery = (props) => {
|
|
25844
26353
|
/* @conditional-compile-remove(rooms) */
|
25845
26354
|
isRoomsCall,
|
25846
26355
|
/* @conditional-compile-remove(vertical-gallery) */
|
25847
|
-
containerAspectRatio
|
26356
|
+
containerAspectRatio,
|
26357
|
+
/* @conditional-compile-remove(gallery-layouts) */
|
26358
|
+
props.userSetGalleryLayout,
|
26359
|
+
layoutBasedOnTilePosition
|
25848
26360
|
]);
|
25849
26361
|
return (React__default['default'].createElement("div", { ref: containerRef, style: mediaGalleryContainerStyles },
|
25850
26362
|
React__default['default'].createElement(Announcer$1, { announcementString: announcerString, ariaLive: 'polite' }),
|
@@ -26057,7 +26569,9 @@ const networkReconnectTileSelector = reselect__namespace.createSelector([getUser
|
|
26057
26569
|
* @private
|
26058
26570
|
*/
|
26059
26571
|
const CallPage = (props) => {
|
26060
|
-
const { callInvitationURL, onRenderAvatar, onFetchAvatarPersonaData, onFetchParticipantMenuItems, options, mobileView
|
26572
|
+
const { callInvitationURL, onRenderAvatar, onFetchAvatarPersonaData, onFetchParticipantMenuItems, options, mobileView,
|
26573
|
+
/* @conditional-compile-remove(gallery-layouts) */
|
26574
|
+
galleryLayout = 'floatingLocalVideo' } = props;
|
26061
26575
|
// To use useProps to get these states, we need to create another file wrapping Call,
|
26062
26576
|
// It seems unnecessary in this case, so we get the updated states using this approach.
|
26063
26577
|
const { callStatus } = useSelector$1(callStatusSelector);
|
@@ -26073,6 +26587,8 @@ const CallPage = (props) => {
|
|
26073
26587
|
const drawerMenuHostId = reactHooks.useId('drawerMenuHost');
|
26074
26588
|
/* @conditional-compile-remove(gallery-layouts) */
|
26075
26589
|
const [userSetOverflowGalleryPosition, setUserSetOverflowGalleryPosition] = React.useState('Responsive');
|
26590
|
+
/* @conditional-compile-remove(gallery-layouts) */
|
26591
|
+
const [userSetGalleryLayout, setUserSetGalleryLayout] = React.useState(galleryLayout);
|
26076
26592
|
return (React__default['default'].createElement(CallArrangement, { id: drawerMenuHostId, complianceBannerProps: Object.assign(Object.assign({}, complianceBannerProps), { strings }), errorBarProps: (options === null || options === void 0 ? void 0 : options.errorBar) !== false && errorBarProps, mutedNotificationProps: mutedNotificationProps, callControlProps: {
|
26077
26593
|
callInvitationURL: callInvitationURL,
|
26078
26594
|
onFetchParticipantMenuItems: onFetchParticipantMenuItems,
|
@@ -26086,9 +26602,15 @@ const CallPage = (props) => {
|
|
26086
26602
|
/* @conditional-compile-remove(click-to-call) */
|
26087
26603
|
localVideoTileOptions: options === null || options === void 0 ? void 0 : options.localVideoTile,
|
26088
26604
|
/* @conditional-compile-remove(gallery-layouts) */
|
26089
|
-
userSetOverflowGalleryPosition: userSetOverflowGalleryPosition
|
26605
|
+
userSetOverflowGalleryPosition: userSetOverflowGalleryPosition,
|
26606
|
+
/* @conditional-compile-remove(gallery-layouts) */
|
26607
|
+
userSetGalleryLayout: userSetGalleryLayout }))) : (React__default['default'].createElement(NetworkReconnectTile, Object.assign({}, networkReconnectTileProps)))) : (React__default['default'].createElement(React__default['default'].Fragment, null)), updateSidePaneRenderer: props.updateSidePaneRenderer, mobileChatTabHeader: props.mobileChatTabHeader, dataUiId: 'call-page', latestErrors: props.latestErrors, onDismissError: props.onDismissError,
|
26608
|
+
/* @conditional-compile-remove(gallery-layouts) */
|
26609
|
+
onUserSetOverflowGalleryPositionChange: setUserSetOverflowGalleryPosition,
|
26610
|
+
/* @conditional-compile-remove(gallery-layouts) */
|
26611
|
+
onUserSetGalleryLayoutChange: setUserSetGalleryLayout,
|
26090
26612
|
/* @conditional-compile-remove(gallery-layouts) */
|
26091
|
-
|
26613
|
+
userSetGalleryLayout: userSetGalleryLayout }));
|
26092
26614
|
};
|
26093
26615
|
/**
|
26094
26616
|
* @private
|
@@ -27663,7 +28185,7 @@ const isShowing = (overrideSidePane) => {
|
|
27663
28185
|
return !!(overrideSidePane === null || overrideSidePane === void 0 ? void 0 : overrideSidePane.isActive);
|
27664
28186
|
};
|
27665
28187
|
const MainScreen = (props) => {
|
27666
|
-
var _a, _b, _c, _d, _e;
|
28188
|
+
var _a, _b, _c, _d, _e, _f, _g;
|
27667
28189
|
const adapter = useAdapter();
|
27668
28190
|
const { camerasCount, microphonesCount } = useSelector$1(deviceCountSelector);
|
27669
28191
|
const hasCameras = camerasCount > 0;
|
@@ -27767,7 +28289,9 @@ const MainScreen = (props) => {
|
|
27767
28289
|
pageElement = (React__default['default'].createElement(TransferPage, { mobileView: props.mobileView, modalLayerHostId: props.modalLayerHostId, options: props.options, updateSidePaneRenderer: setSidePaneRenderer, mobileChatTabHeader: props.mobileChatTabHeader, onRenderAvatar: onRenderAvatar, onFetchAvatarPersonaData: onFetchAvatarPersonaData, latestErrors: latestErrors, onDismissError: onDismissError }));
|
27768
28290
|
break;
|
27769
28291
|
case 'call':
|
27770
|
-
pageElement = (React__default['default'].createElement(CallPage, { onRenderAvatar: onRenderAvatar, callInvitationURL: callInvitationUrl, onFetchAvatarPersonaData: onFetchAvatarPersonaData, onFetchParticipantMenuItems: onFetchParticipantMenuItems, mobileView: props.mobileView, modalLayerHostId: props.modalLayerHostId, options: props.options, updateSidePaneRenderer: setSidePaneRenderer, mobileChatTabHeader: props.mobileChatTabHeader, latestErrors: latestErrors, onDismissError: onDismissError
|
28292
|
+
pageElement = (React__default['default'].createElement(CallPage, { onRenderAvatar: onRenderAvatar, callInvitationURL: callInvitationUrl, onFetchAvatarPersonaData: onFetchAvatarPersonaData, onFetchParticipantMenuItems: onFetchParticipantMenuItems, mobileView: props.mobileView, modalLayerHostId: props.modalLayerHostId, options: props.options, updateSidePaneRenderer: setSidePaneRenderer, mobileChatTabHeader: props.mobileChatTabHeader, latestErrors: latestErrors, onDismissError: onDismissError,
|
28293
|
+
/* @conditional-compile-remove(gallery-layouts) */
|
28294
|
+
galleryLayout: ((_f = (_e = props.options) === null || _e === void 0 ? void 0 : _e.galleryOptions) === null || _f === void 0 ? void 0 : _f.layout) ? props.options.galleryOptions.layout : 'floatingLocalVideo' }));
|
27771
28295
|
break;
|
27772
28296
|
/* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
|
27773
28297
|
case 'hold':
|
@@ -27779,7 +28303,7 @@ const MainScreen = (props) => {
|
|
27779
28303
|
case 'unsupportedEnvironment':
|
27780
28304
|
pageElement = (React__default['default'].createElement(React__default['default'].Fragment, null,
|
27781
28305
|
/* @conditional-compile-remove(unsupported-browser) */
|
27782
|
-
React__default['default'].createElement(UnsupportedBrowserPage, { onTroubleshootingClick: (
|
28306
|
+
React__default['default'].createElement(UnsupportedBrowserPage, { onTroubleshootingClick: (_g = props.options) === null || _g === void 0 ? void 0 : _g.onEnvironmentInfoTroubleshootingClick, environmentInfo: adapter.getState().environmentInfo })));
|
27783
28307
|
break;
|
27784
28308
|
}
|
27785
28309
|
if (!pageElement) {
|
@@ -28323,6 +28847,10 @@ class AzureCommunicationCallAdapter {
|
|
28323
28847
|
this.startCall.bind(this);
|
28324
28848
|
this.startScreenShare.bind(this);
|
28325
28849
|
this.stopScreenShare.bind(this);
|
28850
|
+
/* @conditional-compile-remove(raise-hand) */
|
28851
|
+
this.raiseHand.bind(this);
|
28852
|
+
/* @conditional-compile-remove(raise-hand) */
|
28853
|
+
this.lowerHand.bind(this);
|
28326
28854
|
this.removeParticipant.bind(this);
|
28327
28855
|
this.createStreamView.bind(this);
|
28328
28856
|
this.disposeStreamView.bind(this);
|
@@ -28635,6 +29163,22 @@ class AzureCommunicationCallAdapter {
|
|
28635
29163
|
}));
|
28636
29164
|
});
|
28637
29165
|
}
|
29166
|
+
/* @conditional-compile-remove(raise-hand) */
|
29167
|
+
raiseHand() {
|
29168
|
+
return __awaiter$5(this, void 0, void 0, function* () {
|
29169
|
+
return yield this.asyncTeeErrorToEventEmitter(() => __awaiter$5(this, void 0, void 0, function* () {
|
29170
|
+
yield this.handlers.onToggleRaiseHand();
|
29171
|
+
}));
|
29172
|
+
});
|
29173
|
+
}
|
29174
|
+
/* @conditional-compile-remove(raise-hand) */
|
29175
|
+
lowerHand() {
|
29176
|
+
return __awaiter$5(this, void 0, void 0, function* () {
|
29177
|
+
return yield this.asyncTeeErrorToEventEmitter(() => __awaiter$5(this, void 0, void 0, function* () {
|
29178
|
+
yield this.handlers.onToggleRaiseHand();
|
29179
|
+
}));
|
29180
|
+
});
|
29181
|
+
}
|
28638
29182
|
/* @conditional-compile-remove(unsupported-browser) */
|
28639
29183
|
allowUnsupportedBrowserVersion() {
|
28640
29184
|
this.context.setAllowedUnsupportedBrowser();
|
@@ -29315,6 +29859,10 @@ class CallWithChatBackedCallAdapter {
|
|
29315
29859
|
this.unmute = () => __awaiter$4(this, void 0, void 0, function* () { return yield this.callWithChatAdapter.unmute(); });
|
29316
29860
|
this.startScreenShare = () => __awaiter$4(this, void 0, void 0, function* () { return yield this.callWithChatAdapter.startScreenShare(); });
|
29317
29861
|
this.stopScreenShare = () => __awaiter$4(this, void 0, void 0, function* () { return yield this.callWithChatAdapter.stopScreenShare(); });
|
29862
|
+
/* @conditional-compile-remove(raise-hand) */
|
29863
|
+
this.raiseHand = () => __awaiter$4(this, void 0, void 0, function* () { return yield this.callWithChatAdapter.raiseHand(); });
|
29864
|
+
/* @conditional-compile-remove(raise-hand) */
|
29865
|
+
this.lowerHand = () => __awaiter$4(this, void 0, void 0, function* () { return yield this.callWithChatAdapter.lowerHand(); });
|
29318
29866
|
this.removeParticipant = (userId) => __awaiter$4(this, void 0, void 0, function* () {
|
29319
29867
|
let participant = userId;
|
29320
29868
|
/* @conditional-compile-remove(PSTN-calls) */
|
@@ -29800,7 +30348,9 @@ const CallWithChatScreen = (props) => {
|
|
29800
30348
|
/* @conditional-compile-remove(call-readiness) */
|
29801
30349
|
onPermissionsTroubleshootingClick: props.onPermissionsTroubleshootingClick,
|
29802
30350
|
/* @conditional-compile-remove(unsupported-browser) */
|
29803
|
-
onEnvironmentInfoTroubleshootingClick: props.onEnvironmentInfoTroubleshootingClick
|
30351
|
+
onEnvironmentInfoTroubleshootingClick: props.onEnvironmentInfoTroubleshootingClick,
|
30352
|
+
/* @conditional-compile-remove(gallery-layouts) */
|
30353
|
+
galleryOptions: props.galleryOptions
|
29804
30354
|
}), [
|
29805
30355
|
props.callControls,
|
29806
30356
|
callControlOptionsFromProps,
|
@@ -29814,7 +30364,9 @@ const CallWithChatScreen = (props) => {
|
|
29814
30364
|
/* @conditional-compile-remove(call-readiness) */
|
29815
30365
|
props.onNetworkingTroubleShootingClick,
|
29816
30366
|
/* @conditional-compile-remove(call-readiness) */
|
29817
|
-
props.onPermissionsTroubleshootingClick
|
30367
|
+
props.onPermissionsTroubleshootingClick,
|
30368
|
+
/* @conditional-compile-remove(gallery-layouts) */
|
30369
|
+
props.galleryOptions
|
29818
30370
|
]);
|
29819
30371
|
const onRenderChatContent = React.useCallback(() => (React__default['default'].createElement(ChatComposite, Object.assign({}, chatProps, { fluentTheme: theme, options: {
|
29820
30372
|
topic: false,
|
@@ -29885,7 +30437,7 @@ const checkShowChatButton = (callControls) => {
|
|
29885
30437
|
return callControls.chatButton !== false;
|
29886
30438
|
};
|
29887
30439
|
const checkChatButtonIsDisabled = (callControls) => {
|
29888
|
-
return typeof callControls === 'object' && isDisabled$
|
30440
|
+
return typeof callControls === 'object' && isDisabled$3(callControls === null || callControls === void 0 ? void 0 : callControls.chatButton);
|
29889
30441
|
};
|
29890
30442
|
const isOnHoldTrampoline = (page) => {
|
29891
30443
|
/* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
|
@@ -30093,6 +30645,10 @@ class AzureCommunicationCallWithChatAdapter {
|
|
30093
30645
|
this.unmute.bind(this);
|
30094
30646
|
this.startScreenShare.bind(this);
|
30095
30647
|
this.stopScreenShare.bind(this);
|
30648
|
+
/* @conditional-compile-remove(raise-hand) */
|
30649
|
+
this.raiseHand.bind(this);
|
30650
|
+
/* @conditional-compile-remove(raise-hand) */
|
30651
|
+
this.lowerHand.bind(this);
|
30096
30652
|
this.removeParticipant.bind(this);
|
30097
30653
|
this.createStreamView.bind(this);
|
30098
30654
|
this.disposeStreamView.bind(this);
|
@@ -30278,6 +30834,20 @@ class AzureCommunicationCallWithChatAdapter {
|
|
30278
30834
|
yield this.callAdapter.stopScreenShare();
|
30279
30835
|
});
|
30280
30836
|
}
|
30837
|
+
/* @conditional-compile-remove(raise-hand) */
|
30838
|
+
/** Raise hand for local user. */
|
30839
|
+
raiseHand() {
|
30840
|
+
return __awaiter$2(this, void 0, void 0, function* () {
|
30841
|
+
yield this.callAdapter.raiseHand();
|
30842
|
+
});
|
30843
|
+
}
|
30844
|
+
/* @conditional-compile-remove(raise-hand) */
|
30845
|
+
/** Lower hand for local user. */
|
30846
|
+
lowerHand() {
|
30847
|
+
return __awaiter$2(this, void 0, void 0, function* () {
|
30848
|
+
yield this.callAdapter.lowerHand();
|
30849
|
+
});
|
30850
|
+
}
|
30281
30851
|
/** Create a stream view for a remote participants video feed. */
|
30282
30852
|
createStreamView(remoteUserId, options) {
|
30283
30853
|
return __awaiter$2(this, void 0, void 0, function* () {
|
@@ -30936,6 +31506,7 @@ exports.MicrophoneSitePermissions = MicrophoneSitePermissions;
|
|
30936
31506
|
exports.ParticipantItem = ParticipantItem;
|
30937
31507
|
exports.ParticipantList = ParticipantList;
|
30938
31508
|
exports.ParticipantsButton = ParticipantsButton;
|
31509
|
+
exports.RaiseHandButton = RaiseHandButton;
|
30939
31510
|
exports.ScreenShareButton = ScreenShareButton;
|
30940
31511
|
exports.SendBox = SendBox;
|
30941
31512
|
exports.StreamMedia = StreamMedia;
|