@azure/communication-react 1.5.1-alpha-202303290014 → 1.5.1-alpha-202303310013
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 +57 -4
- package/dist/dist-cjs/communication-react/index.js +764 -402
- 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/chat-component-bindings/src/messageThreadSelector.js +29 -2
- package/dist/dist-esm/chat-component-bindings/src/messageThreadSelector.js.map +1 -1
- package/dist/dist-esm/chat-component-bindings/src/utils/constants.d.ts +4 -0
- package/dist/dist-esm/chat-component-bindings/src/utils/constants.js +4 -0
- package/dist/dist-esm/chat-component-bindings/src/utils/constants.js.map +1 -1
- package/dist/dist-esm/chat-component-bindings/src/utils/updateMessagesWithAttached.js +32 -26
- package/dist/dist-esm/chat-component-bindings/src/utils/updateMessagesWithAttached.js.map +1 -1
- package/dist/dist-esm/chat-stateful-client/src/convertChatMessage.js +6 -1
- package/dist/dist-esm/chat-stateful-client/src/convertChatMessage.js.map +1 -1
- package/dist/dist-esm/chat-stateful-client/src/types/ChatMessageWithStatus.d.ts +1 -0
- package/dist/dist-esm/chat-stateful-client/src/types/ChatMessageWithStatus.js.map +1 -1
- package/dist/dist-esm/communication-react/src/index.d.ts +1 -0
- package/dist/dist-esm/communication-react/src/index.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponent.d.ts +2 -1
- package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponent.js +11 -13
- package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponent.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponentAsMessageBubble.d.ts +2 -1
- package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponentAsMessageBubble.js +34 -20
- package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageComponentAsMessageBubble.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageContent.d.ts +11 -2
- package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageContent.js +47 -9
- package/dist/dist-esm/react-components/src/components/ChatMessage/ChatMessageContent.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/MessageThread.d.ts +10 -3
- package/dist/dist-esm/react-components/src/components/MessageThread.js +57 -36
- package/dist/dist-esm/react-components/src/components/MessageThread.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/styles/MessageThread.styles.d.ts +5 -0
- package/dist/dist-esm/react-components/src/components/styles/MessageThread.styles.js +28 -0
- package/dist/dist-esm/react-components/src/components/styles/MessageThread.styles.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/utils/getParticipantsWhoHaveReadMessage.d.ts +6 -4
- package/dist/dist-esm/react-components/src/components/utils/getParticipantsWhoHaveReadMessage.js +1 -1
- package/dist/dist-esm/react-components/src/components/utils/getParticipantsWhoHaveReadMessage.js.map +1 -1
- package/dist/dist-esm/react-components/src/index.d.ts +1 -0
- package/dist/dist-esm/react-components/src/index.js.map +1 -1
- package/dist/dist-esm/react-components/src/localization/locales/en-US/strings.json +3 -1
- package/dist/dist-esm/react-components/src/theming/icons.d.ts +1 -0
- package/dist/dist-esm/react-components/src/theming/icons.js +8 -0
- package/dist/dist-esm/react-components/src/theming/icons.js.map +1 -1
- package/dist/dist-esm/react-components/src/types/ChatMessage.d.ts +20 -1
- package/dist/dist-esm/react-components/src/types/ChatMessage.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/Strings.d.ts +20 -0
- package/dist/dist-esm/react-composites/src/composites/CallComposite/Strings.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js +9 -7
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/ConfigurationPage.js +19 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/ConfigurationPage.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/CallConfiguration.styles.d.ts +5 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/CallConfiguration.styles.js +20 -0
- package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/CallConfiguration.styles.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/styles/CallWithChatCompositeStyles.js +2 -1
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/styles/CallWithChatCompositeStyles.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/common/VideoEffectsPane.d.ts +2 -0
- package/dist/dist-esm/react-composites/src/composites/common/VideoEffectsPane.js +61 -3
- package/dist/dist-esm/react-composites/src/composites/common/VideoEffectsPane.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/common/icons.d.ts +5 -0
- package/dist/dist-esm/react-composites/src/composites/common/icons.js +7 -1
- package/dist/dist-esm/react-composites/src/composites/common/icons.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/localization/locales/en-US/strings.json +5 -0
- package/package.json +8 -8
@@ -162,7 +162,7 @@ const _toCommunicationIdentifier = (id) => {
|
|
162
162
|
// Copyright (c) Microsoft Corporation.
|
163
163
|
// Licensed under the MIT license.
|
164
164
|
// GENERATED FILE. DO NOT EDIT MANUALLY.
|
165
|
-
var telemetryVersion = '1.5.1-alpha-
|
165
|
+
var telemetryVersion = '1.5.1-alpha-202303310013';
|
166
166
|
|
167
167
|
// Copyright (c) Microsoft Corporation.
|
168
168
|
/**
|
@@ -378,7 +378,7 @@ const getEnvironmentInfo = (state) => {
|
|
378
378
|
|
379
379
|
// Copyright (c) Microsoft Corporation.
|
380
380
|
// Licensed under the MIT license.
|
381
|
-
var __awaiter$
|
381
|
+
var __awaiter$G = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
382
382
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
383
383
|
return new (P || (P = Promise))(function (resolve, reject) {
|
384
384
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -416,7 +416,7 @@ const _isPreviewOn = (deviceManager) => {
|
|
416
416
|
*
|
417
417
|
* @private
|
418
418
|
*/
|
419
|
-
const disposeAllLocalPreviewViews = (callClient) => __awaiter$
|
419
|
+
const disposeAllLocalPreviewViews = (callClient) => __awaiter$G(void 0, void 0, void 0, function* () {
|
420
420
|
const unparentedViews = callClient.getState().deviceManager.unparentedViews;
|
421
421
|
for (const view of unparentedViews) {
|
422
422
|
yield callClient.disposeView(undefined, undefined, view);
|
@@ -549,7 +549,7 @@ const holdButtonSelector = reselect__namespace.createSelector([getCallState], (c
|
|
549
549
|
|
550
550
|
// Copyright (c) Microsoft Corporation.
|
551
551
|
// Licensed under the MIT license.
|
552
|
-
var __awaiter$
|
552
|
+
var __awaiter$F = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
553
553
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
554
554
|
return new (P || (P = Promise))(function (resolve, reject) {
|
555
555
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -570,7 +570,7 @@ const areStreamsEqual = (prevStream, newStream) => {
|
|
570
570
|
* @private
|
571
571
|
*/
|
572
572
|
const createDefaultCommonCallingHandlers = memoizeOne__default['default']((callClient, deviceManager, call) => {
|
573
|
-
const onStartLocalVideo = () => __awaiter$
|
573
|
+
const onStartLocalVideo = () => __awaiter$F(void 0, void 0, void 0, function* () {
|
574
574
|
// Before the call object creates a stream, dispose of any local preview streams.
|
575
575
|
// @TODO: is there any way to parent the unparented view to the call object instead
|
576
576
|
// of disposing and creating a new stream?
|
@@ -590,7 +590,7 @@ const createDefaultCommonCallingHandlers = memoizeOne__default['default']((callC
|
|
590
590
|
yield call.startVideo(stream);
|
591
591
|
}
|
592
592
|
});
|
593
|
-
const onStopLocalVideo = (stream) => __awaiter$
|
593
|
+
const onStopLocalVideo = (stream) => __awaiter$F(void 0, void 0, void 0, function* () {
|
594
594
|
const callId = call === null || call === void 0 ? void 0 : call.id;
|
595
595
|
if (!callId) {
|
596
596
|
return;
|
@@ -599,7 +599,7 @@ const createDefaultCommonCallingHandlers = memoizeOne__default['default']((callC
|
|
599
599
|
yield call.stopVideo(stream);
|
600
600
|
}
|
601
601
|
});
|
602
|
-
const onToggleCamera = (options) => __awaiter$
|
602
|
+
const onToggleCamera = (options) => __awaiter$F(void 0, void 0, void 0, function* () {
|
603
603
|
const previewOn = _isPreviewOn(callClient.getState().deviceManager);
|
604
604
|
if (previewOn && call && call.state === 'Connecting') {
|
605
605
|
// This is to workaround: https://skype.visualstudio.com/SPOOL/_workitems/edit/3030558.
|
@@ -647,19 +647,19 @@ const createDefaultCommonCallingHandlers = memoizeOne__default['default']((callC
|
|
647
647
|
}
|
648
648
|
}
|
649
649
|
});
|
650
|
-
const onSelectMicrophone = (device) => __awaiter$
|
650
|
+
const onSelectMicrophone = (device) => __awaiter$F(void 0, void 0, void 0, function* () {
|
651
651
|
if (!deviceManager) {
|
652
652
|
return;
|
653
653
|
}
|
654
654
|
return deviceManager.selectMicrophone(device);
|
655
655
|
});
|
656
|
-
const onSelectSpeaker = (device) => __awaiter$
|
656
|
+
const onSelectSpeaker = (device) => __awaiter$F(void 0, void 0, void 0, function* () {
|
657
657
|
if (!deviceManager) {
|
658
658
|
return;
|
659
659
|
}
|
660
660
|
return deviceManager.selectSpeaker(device);
|
661
661
|
});
|
662
|
-
const onSelectCamera = (device, options) => __awaiter$
|
662
|
+
const onSelectCamera = (device, options) => __awaiter$F(void 0, void 0, void 0, function* () {
|
663
663
|
if (!deviceManager) {
|
664
664
|
return;
|
665
665
|
}
|
@@ -682,19 +682,19 @@ const createDefaultCommonCallingHandlers = memoizeOne__default['default']((callC
|
|
682
682
|
}, options);
|
683
683
|
}
|
684
684
|
});
|
685
|
-
const onToggleMicrophone = () => __awaiter$
|
685
|
+
const onToggleMicrophone = () => __awaiter$F(void 0, void 0, void 0, function* () {
|
686
686
|
if (!call || !_isInCall(call.state)) {
|
687
687
|
throw new Error(`Please invoke onToggleMicrophone after call is started`);
|
688
688
|
}
|
689
689
|
return call.isMuted ? yield call.unmute() : yield call.mute();
|
690
690
|
});
|
691
|
-
const onStartScreenShare = () => __awaiter$
|
692
|
-
const onStopScreenShare = () => __awaiter$
|
693
|
-
const onToggleScreenShare = () => __awaiter$
|
694
|
-
const onHangUp = (forEveryone) => __awaiter$
|
691
|
+
const onStartScreenShare = () => __awaiter$F(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.startScreenSharing()); });
|
692
|
+
const onStopScreenShare = () => __awaiter$F(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.stopScreenSharing()); });
|
693
|
+
const onToggleScreenShare = () => __awaiter$F(void 0, void 0, void 0, function* () { return (call === null || call === void 0 ? void 0 : call.isScreenSharingOn) ? yield onStopScreenShare() : yield onStartScreenShare(); });
|
694
|
+
const onHangUp = (forEveryone) => __awaiter$F(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.hangUp({ forEveryone: forEveryone === true ? true : false })); });
|
695
695
|
/* @conditional-compile-remove(PSTN-calls) */
|
696
|
-
const onToggleHold = () => __awaiter$
|
697
|
-
const onCreateLocalStreamView = (options = { scalingMode: 'Crop', isMirrored: true }) => __awaiter$
|
696
|
+
const onToggleHold = () => __awaiter$F(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()); });
|
697
|
+
const onCreateLocalStreamView = (options = { scalingMode: 'Crop', isMirrored: true }) => __awaiter$F(void 0, void 0, void 0, function* () {
|
698
698
|
var _a;
|
699
699
|
if (!call || call.localVideoStreams.length === 0) {
|
700
700
|
return;
|
@@ -710,7 +710,7 @@ const createDefaultCommonCallingHandlers = memoizeOne__default['default']((callC
|
|
710
710
|
const { view } = (_a = (yield callClient.createView(call.id, undefined, localStream, options))) !== null && _a !== void 0 ? _a : {};
|
711
711
|
return view ? { view } : undefined;
|
712
712
|
});
|
713
|
-
const onCreateRemoteStreamView = (userId, options = { scalingMode: 'Crop' }) => __awaiter$
|
713
|
+
const onCreateRemoteStreamView = (userId, options = { scalingMode: 'Crop' }) => __awaiter$F(void 0, void 0, void 0, function* () {
|
714
714
|
if (!call) {
|
715
715
|
return;
|
716
716
|
}
|
@@ -741,7 +741,7 @@ const createDefaultCommonCallingHandlers = memoizeOne__default['default']((callC
|
|
741
741
|
}
|
742
742
|
return (createViewResult === null || createViewResult === void 0 ? void 0 : createViewResult.view) ? { view: createViewResult === null || createViewResult === void 0 ? void 0 : createViewResult.view } : undefined;
|
743
743
|
});
|
744
|
-
const onDisposeRemoteStreamView = (userId) => __awaiter$
|
744
|
+
const onDisposeRemoteStreamView = (userId) => __awaiter$F(void 0, void 0, void 0, function* () {
|
745
745
|
if (!call) {
|
746
746
|
return;
|
747
747
|
}
|
@@ -762,7 +762,7 @@ const createDefaultCommonCallingHandlers = memoizeOne__default['default']((callC
|
|
762
762
|
callClient.disposeView(call.id, participant.identifier, screenShareStream);
|
763
763
|
}
|
764
764
|
});
|
765
|
-
const onDisposeLocalStreamView = () => __awaiter$
|
765
|
+
const onDisposeLocalStreamView = () => __awaiter$F(void 0, void 0, void 0, function* () {
|
766
766
|
// If the user is currently in a call, dispose of the local stream view attached to that call.
|
767
767
|
const callState = call && callClient.getState().calls[call.id];
|
768
768
|
const localStream = callState === null || callState === void 0 ? void 0 : callState.localVideoStreams.find((item) => item.mediaStreamType === 'Video');
|
@@ -775,18 +775,18 @@ const createDefaultCommonCallingHandlers = memoizeOne__default['default']((callC
|
|
775
775
|
yield disposeAllLocalPreviewViews(callClient);
|
776
776
|
});
|
777
777
|
/* @conditional-compile-remove(dialpad) */ /* @conditional-compile-remove(PSTN-calls) */
|
778
|
-
const onSendDtmfTone = (dtmfTone) => __awaiter$
|
778
|
+
const onSendDtmfTone = (dtmfTone) => __awaiter$F(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.sendDtmf(dtmfTone)); });
|
779
779
|
const notImplemented = () => {
|
780
780
|
throw new Error('Not implemented, cannot call a method from an abstract object');
|
781
781
|
};
|
782
782
|
/* @conditional-compile-remove(call-readiness) */
|
783
|
-
const askDevicePermission = (constrain) => __awaiter$
|
783
|
+
const askDevicePermission = (constrain) => __awaiter$F(void 0, void 0, void 0, function* () {
|
784
784
|
if (deviceManager) {
|
785
785
|
yield (deviceManager === null || deviceManager === void 0 ? void 0 : deviceManager.askDevicePermission(constrain));
|
786
786
|
}
|
787
787
|
});
|
788
788
|
/* @conditional-compile-remove(video-background-effects) */
|
789
|
-
const onRemoveVideoBackgroundEffects = () => __awaiter$
|
789
|
+
const onRemoveVideoBackgroundEffects = () => __awaiter$F(void 0, void 0, void 0, function* () {
|
790
790
|
const stream = (call === null || call === void 0 ? void 0 : call.localVideoStreams.find((stream) => stream.mediaStreamType === 'Video')) ||
|
791
791
|
(deviceManager === null || deviceManager === void 0 ? void 0 : deviceManager.getUnparentedVideoStreams().find((stream) => stream.mediaStreamType === 'Video'));
|
792
792
|
if (stream) {
|
@@ -794,7 +794,7 @@ const createDefaultCommonCallingHandlers = memoizeOne__default['default']((callC
|
|
794
794
|
}
|
795
795
|
});
|
796
796
|
/* @conditional-compile-remove(video-background-effects) */
|
797
|
-
const onBlurVideoBackground = (bgBlurConfig) => __awaiter$
|
797
|
+
const onBlurVideoBackground = (bgBlurConfig) => __awaiter$F(void 0, void 0, void 0, function* () {
|
798
798
|
const stream = (call === null || call === void 0 ? void 0 : call.localVideoStreams.find((stream) => stream.mediaStreamType === 'Video')) ||
|
799
799
|
(deviceManager === null || deviceManager === void 0 ? void 0 : deviceManager.getUnparentedVideoStreams().find((stream) => stream.mediaStreamType === 'Video'));
|
800
800
|
if (stream) {
|
@@ -802,7 +802,7 @@ const createDefaultCommonCallingHandlers = memoizeOne__default['default']((callC
|
|
802
802
|
}
|
803
803
|
});
|
804
804
|
/* @conditional-compile-remove(video-background-effects) */
|
805
|
-
const onReplaceVideoBackground = (bgReplacementConfig) => __awaiter$
|
805
|
+
const onReplaceVideoBackground = (bgReplacementConfig) => __awaiter$F(void 0, void 0, void 0, function* () {
|
806
806
|
const stream = (call === null || call === void 0 ? void 0 : call.localVideoStreams.find((stream) => stream.mediaStreamType === 'Video')) ||
|
807
807
|
(deviceManager === null || deviceManager === void 0 ? void 0 : deviceManager.getUnparentedVideoStreams().find((stream) => stream.mediaStreamType === 'Video'));
|
808
808
|
if (stream) {
|
@@ -844,7 +844,7 @@ const createDefaultCommonCallingHandlers = memoizeOne__default['default']((callC
|
|
844
844
|
|
845
845
|
// Copyright (c) Microsoft Corporation.
|
846
846
|
// Licensed under the MIT license.
|
847
|
-
var __awaiter$
|
847
|
+
var __awaiter$E = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
848
848
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
849
849
|
return new (P || (P = Promise))(function (resolve, reject) {
|
850
850
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -871,7 +871,7 @@ const createDefaultCallingHandlers = memoizeOne__default['default']((callClient,
|
|
871
871
|
return callAgent ? callAgent.startCall(participants, options) : undefined;
|
872
872
|
},
|
873
873
|
/* @conditional-compile-remove(PSTN-calls) */
|
874
|
-
onAddParticipant: (userId, options) => __awaiter$
|
874
|
+
onAddParticipant: (userId, options) => __awaiter$E(void 0, void 0, void 0, function* () {
|
875
875
|
const participant = _toCommunicationIdentifier(userId);
|
876
876
|
if (communicationCommon.isPhoneNumberIdentifier(participant)) {
|
877
877
|
call === null || call === void 0 ? void 0 : call.addParticipant(participant, options);
|
@@ -879,7 +879,7 @@ const createDefaultCallingHandlers = memoizeOne__default['default']((callClient,
|
|
879
879
|
else if (communicationCommon.isCommunicationUserIdentifier(participant) || communicationCommon.isMicrosoftTeamsUserIdentifier(participant)) {
|
880
880
|
call === null || call === void 0 ? void 0 : call.addParticipant(participant);
|
881
881
|
}
|
882
|
-
}), onRemoveParticipant: (userId) => __awaiter$
|
882
|
+
}), onRemoveParticipant: (userId) => __awaiter$E(void 0, void 0, void 0, function* () {
|
883
883
|
const participant = _toCommunicationIdentifier(userId);
|
884
884
|
yield (call === null || call === void 0 ? void 0 : call.removeParticipant(participant));
|
885
885
|
}) });
|
@@ -887,7 +887,7 @@ const createDefaultCallingHandlers = memoizeOne__default['default']((callClient,
|
|
887
887
|
|
888
888
|
// Copyright (c) Microsoft Corporation.
|
889
889
|
// Licensed under the MIT license.
|
890
|
-
var __awaiter$
|
890
|
+
var __awaiter$D = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
891
891
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
892
892
|
return new (P || (P = Promise))(function (resolve, reject) {
|
893
893
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -919,7 +919,7 @@ const createDefaultTeamsCallingHandlers = memoizeOne__default['default']((callCl
|
|
919
919
|
},
|
920
920
|
/* @conditional-compile-remove(teams-identity-support) */
|
921
921
|
/* @conditional-compile-remove(PSTN-calls) */
|
922
|
-
onAddParticipant: (userId, options) => __awaiter$
|
922
|
+
onAddParticipant: (userId, options) => __awaiter$D(void 0, void 0, void 0, function* () {
|
923
923
|
const participant = _toCommunicationIdentifier(userId);
|
924
924
|
/* @conditional-compile-remove(teams-identity-support) */
|
925
925
|
const threadId = options === null || options === void 0 ? void 0 : options.threadId;
|
@@ -932,7 +932,7 @@ const createDefaultTeamsCallingHandlers = memoizeOne__default['default']((callCl
|
|
932
932
|
}
|
933
933
|
/* @conditional-compile-remove(teams-identity-support) */
|
934
934
|
call === null || call === void 0 ? void 0 : call.addParticipant(participant);
|
935
|
-
}), onRemoveParticipant: (userId) => __awaiter$
|
935
|
+
}), onRemoveParticipant: (userId) => __awaiter$D(void 0, void 0, void 0, function* () {
|
936
936
|
const participant = _toCommunicationIdentifier(userId);
|
937
937
|
if (communicationCommon.isCommunicationUserIdentifier(participant)) {
|
938
938
|
throw new Error('CommunicationIdentifier in Teams call is not supported!');
|
@@ -944,7 +944,7 @@ const createDefaultTeamsCallingHandlers = memoizeOne__default['default']((callCl
|
|
944
944
|
|
945
945
|
// Copyright (c) Microsoft Corporation.
|
946
946
|
// Licensed under the MIT license.
|
947
|
-
var __awaiter$
|
947
|
+
var __awaiter$C = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
948
948
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
949
949
|
return new (P || (P = Promise))(function (resolve, reject) {
|
950
950
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -993,13 +993,13 @@ class ProxyDeviceManager {
|
|
993
993
|
this.selectCamera = (videoDeviceInfo) => {
|
994
994
|
this._context.setDeviceManagerSelectedCamera(videoDeviceInfo);
|
995
995
|
};
|
996
|
-
this.videoDevicesUpdated = () => __awaiter$
|
996
|
+
this.videoDevicesUpdated = () => __awaiter$C(this, void 0, void 0, function* () {
|
997
997
|
// Device Manager always has a camera with '' name if there are no real camera devices available.
|
998
998
|
// We don't want to show that in the UI.
|
999
999
|
const realCameras = (yield this._deviceManager.getCameras()).filter((c) => !!c.name);
|
1000
1000
|
this._context.setDeviceManagerCameras(dedupeById(realCameras));
|
1001
1001
|
});
|
1002
|
-
this.audioDevicesUpdated = () => __awaiter$
|
1002
|
+
this.audioDevicesUpdated = () => __awaiter$C(this, void 0, void 0, function* () {
|
1003
1003
|
this._context.setDeviceManagerMicrophones(dedupeById(yield this._deviceManager.getMicrophones()));
|
1004
1004
|
this._context.setDeviceManagerSpeakers(dedupeById(yield this._deviceManager.getSpeakers()));
|
1005
1005
|
});
|
@@ -1202,7 +1202,7 @@ class CallIdHistory {
|
|
1202
1202
|
|
1203
1203
|
// Copyright (c) Microsoft Corporation.
|
1204
1204
|
// Licensed under the MIT license.
|
1205
|
-
var __awaiter$
|
1205
|
+
var __awaiter$B = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
1206
1206
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
1207
1207
|
return new (P || (P = Promise))(function (resolve, reject) {
|
1208
1208
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -1786,7 +1786,7 @@ class CallContext$2 {
|
|
1786
1786
|
* @throws CallError. Exceptions thrown from `f` are tagged with the failed `target.
|
1787
1787
|
*/
|
1788
1788
|
withAsyncErrorTeedToState(action, target) {
|
1789
|
-
return (...args) => __awaiter$
|
1789
|
+
return (...args) => __awaiter$B(this, void 0, void 0, function* () {
|
1790
1790
|
try {
|
1791
1791
|
return yield action(...args);
|
1792
1792
|
}
|
@@ -2313,7 +2313,7 @@ function _logStreamEvent(eventName, streamLogInfo, error) {
|
|
2313
2313
|
|
2314
2314
|
// Copyright (c) Microsoft Corporation.
|
2315
2315
|
// Licensed under the MIT license.
|
2316
|
-
var __awaiter$
|
2316
|
+
var __awaiter$A = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
2317
2317
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
2318
2318
|
return new (P || (P = Promise))(function (resolve, reject) {
|
2319
2319
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -2323,7 +2323,7 @@ var __awaiter$z = (window && window.__awaiter) || function (thisArg, _arguments,
|
|
2323
2323
|
});
|
2324
2324
|
};
|
2325
2325
|
function createViewVideo(context, internalContext, callId, stream, participantId, options) {
|
2326
|
-
return __awaiter$
|
2326
|
+
return __awaiter$A(this, void 0, void 0, function* () {
|
2327
2327
|
// we can only have 3 types of createView
|
2328
2328
|
let streamEventType;
|
2329
2329
|
// we will reuse these for local as well but we need to make sure the remote stream is passed in like before.
|
@@ -2445,7 +2445,7 @@ function createViewVideo(context, internalContext, callId, stream, participantId
|
|
2445
2445
|
});
|
2446
2446
|
}
|
2447
2447
|
function createViewUnparentedVideo(context, internalContext, stream, options) {
|
2448
|
-
return __awaiter$
|
2448
|
+
return __awaiter$A(this, void 0, void 0, function* () {
|
2449
2449
|
const renderInfo = internalContext.getUnparentedRenderInfo(stream);
|
2450
2450
|
if (renderInfo && renderInfo.status === 'Rendered') {
|
2451
2451
|
console.warn('Unparented LocalVideoStream is already rendered');
|
@@ -2613,7 +2613,7 @@ function createView(context, internalContext, callId, participantId, stream, opt
|
|
2613
2613
|
// Render LocalVideoStream that is not part of a Call
|
2614
2614
|
// Because it is not part of the call we don't tee errors to state naturally (e.g. via a Call Client function such as startVideo).
|
2615
2615
|
// We do not have a startLocalPreviewVideo function, so as a workaround we ensure any errors are propagated here.
|
2616
|
-
return context.withAsyncErrorTeedToState(() => __awaiter$
|
2616
|
+
return context.withAsyncErrorTeedToState(() => __awaiter$A(this, void 0, void 0, function* () { return yield createViewUnparentedVideo(context, internalContext, stream, options); }), 'Call.startVideo')();
|
2617
2617
|
}
|
2618
2618
|
else {
|
2619
2619
|
_logStreamEvent(EventNames.CREATE_STREAM_INVALID_PARAMS, { streamType });
|
@@ -3047,7 +3047,7 @@ class CallSubscriber {
|
|
3047
3047
|
|
3048
3048
|
// Copyright (c) Microsoft Corporation.
|
3049
3049
|
// Licensed under the MIT license.
|
3050
|
-
var __awaiter$
|
3050
|
+
var __awaiter$z = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
3051
3051
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
3052
3052
|
return new (P || (P = Promise))(function (resolve, reject) {
|
3053
3053
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -3067,14 +3067,14 @@ class ProxyIncomingCall {
|
|
3067
3067
|
switch (prop) {
|
3068
3068
|
case 'accept': {
|
3069
3069
|
return this._context.withAsyncErrorTeedToState(function (...args) {
|
3070
|
-
return __awaiter$
|
3070
|
+
return __awaiter$z(this, void 0, void 0, function* () {
|
3071
3071
|
return yield target.accept(...args);
|
3072
3072
|
});
|
3073
3073
|
}, 'IncomingCall.accept');
|
3074
3074
|
}
|
3075
3075
|
case 'reject': {
|
3076
3076
|
return this._context.withAsyncErrorTeedToState(function (...args) {
|
3077
|
-
return __awaiter$
|
3077
|
+
return __awaiter$z(this, void 0, void 0, function* () {
|
3078
3078
|
return yield target.reject(...args);
|
3079
3079
|
});
|
3080
3080
|
}, 'IncomingCall.reject');
|
@@ -3311,7 +3311,7 @@ const clearCallRelatedState = (context, internalContext) => {
|
|
3311
3311
|
|
3312
3312
|
// Copyright (c) Microsoft Corporation.
|
3313
3313
|
// Licensed under the MIT license.
|
3314
|
-
var __awaiter$
|
3314
|
+
var __awaiter$y = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
3315
3315
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
3316
3316
|
return new (P || (P = Promise))(function (resolve, reject) {
|
3317
3317
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -3337,56 +3337,56 @@ class ProxyCallCommon {
|
|
3337
3337
|
switch (prop) {
|
3338
3338
|
case 'mute': {
|
3339
3339
|
return this._context.withAsyncErrorTeedToState(function (...args) {
|
3340
|
-
return __awaiter$
|
3340
|
+
return __awaiter$y(this, void 0, void 0, function* () {
|
3341
3341
|
return yield target.mute(...args);
|
3342
3342
|
});
|
3343
3343
|
}, 'Call.mute');
|
3344
3344
|
}
|
3345
3345
|
case 'unmute': {
|
3346
3346
|
return this._context.withAsyncErrorTeedToState(function (...args) {
|
3347
|
-
return __awaiter$
|
3347
|
+
return __awaiter$y(this, void 0, void 0, function* () {
|
3348
3348
|
return yield target.unmute(...args);
|
3349
3349
|
});
|
3350
3350
|
}, 'Call.unmute');
|
3351
3351
|
}
|
3352
3352
|
case 'startVideo': {
|
3353
3353
|
return this._context.withAsyncErrorTeedToState(function (...args) {
|
3354
|
-
return __awaiter$
|
3354
|
+
return __awaiter$y(this, void 0, void 0, function* () {
|
3355
3355
|
return yield target.startVideo(...args);
|
3356
3356
|
});
|
3357
3357
|
}, 'Call.startVideo');
|
3358
3358
|
}
|
3359
3359
|
case 'stopVideo': {
|
3360
3360
|
return this._context.withAsyncErrorTeedToState(function (...args) {
|
3361
|
-
return __awaiter$
|
3361
|
+
return __awaiter$y(this, void 0, void 0, function* () {
|
3362
3362
|
return yield target.stopVideo(...args);
|
3363
3363
|
});
|
3364
3364
|
}, 'Call.stopVideo');
|
3365
3365
|
}
|
3366
3366
|
case 'startScreenSharing': {
|
3367
3367
|
return this._context.withAsyncErrorTeedToState(function (...args) {
|
3368
|
-
return __awaiter$
|
3368
|
+
return __awaiter$y(this, void 0, void 0, function* () {
|
3369
3369
|
return yield target.startScreenSharing(...args);
|
3370
3370
|
});
|
3371
3371
|
}, 'Call.startScreenSharing');
|
3372
3372
|
}
|
3373
3373
|
case 'stopScreenSharing': {
|
3374
3374
|
return this._context.withAsyncErrorTeedToState(function (...args) {
|
3375
|
-
return __awaiter$
|
3375
|
+
return __awaiter$y(this, void 0, void 0, function* () {
|
3376
3376
|
return yield target.stopScreenSharing(...args);
|
3377
3377
|
});
|
3378
3378
|
}, 'Call.stopScreenSharing');
|
3379
3379
|
}
|
3380
3380
|
case 'hold': {
|
3381
3381
|
return this._context.withAsyncErrorTeedToState(function (...args) {
|
3382
|
-
return __awaiter$
|
3382
|
+
return __awaiter$y(this, void 0, void 0, function* () {
|
3383
3383
|
return yield target.hold(...args);
|
3384
3384
|
});
|
3385
3385
|
}, 'Call.hold');
|
3386
3386
|
}
|
3387
3387
|
case 'resume': {
|
3388
3388
|
return this._context.withAsyncErrorTeedToState(function (...args) {
|
3389
|
-
return __awaiter$
|
3389
|
+
return __awaiter$y(this, void 0, void 0, function* () {
|
3390
3390
|
return yield target.resume(...args);
|
3391
3391
|
});
|
3392
3392
|
}, 'Call.resume');
|
@@ -3399,7 +3399,7 @@ class ProxyCallCommon {
|
|
3399
3399
|
|
3400
3400
|
// Copyright (c) Microsoft Corporation.
|
3401
3401
|
// Licensed under the MIT license.
|
3402
|
-
var __awaiter$
|
3402
|
+
var __awaiter$x = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
3403
3403
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
3404
3404
|
return new (P || (P = Promise))(function (resolve, reject) {
|
3405
3405
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -3413,7 +3413,7 @@ class ProxyCall extends ProxyCallCommon {
|
|
3413
3413
|
switch (prop) {
|
3414
3414
|
case 'addParticipant': {
|
3415
3415
|
return this.getContext().withAsyncErrorTeedToState(function (...args) {
|
3416
|
-
return __awaiter$
|
3416
|
+
return __awaiter$x(this, void 0, void 0, function* () {
|
3417
3417
|
return yield target.addParticipant(...args);
|
3418
3418
|
});
|
3419
3419
|
}, 'Call.addParticipant');
|
@@ -3634,7 +3634,7 @@ class InternalCallContext {
|
|
3634
3634
|
|
3635
3635
|
// Copyright (c) Microsoft Corporation.
|
3636
3636
|
// Licensed under the MIT license.
|
3637
|
-
var __awaiter$
|
3637
|
+
var __awaiter$w = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
3638
3638
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
3639
3639
|
return new (P || (P = Promise))(function (resolve, reject) {
|
3640
3640
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -3649,7 +3649,7 @@ class ProxyTeamsCall extends ProxyCallCommon {
|
|
3649
3649
|
switch (prop) {
|
3650
3650
|
case 'addParticipant': {
|
3651
3651
|
return this.getContext().withAsyncErrorTeedToState(function (...args) {
|
3652
|
-
return __awaiter$
|
3652
|
+
return __awaiter$w(this, void 0, void 0, function* () {
|
3653
3653
|
return yield target.addParticipant(...args);
|
3654
3654
|
});
|
3655
3655
|
}, 'TeamsCall.addParticipant');
|
@@ -3764,7 +3764,7 @@ const teamsCallAgentDeclaratify = (callAgent, context, internalContext) => {
|
|
3764
3764
|
|
3765
3765
|
// Copyright (c) Microsoft Corporation.
|
3766
3766
|
// Licensed under the MIT license.
|
3767
|
-
var __awaiter$
|
3767
|
+
var __awaiter$v = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
3768
3768
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
3769
3769
|
return new (P || (P = Promise))(function (resolve, reject) {
|
3770
3770
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -3786,7 +3786,7 @@ class ProxyVideoStreamRendererView {
|
|
3786
3786
|
get(target, prop) {
|
3787
3787
|
switch (prop) {
|
3788
3788
|
case 'updateScalingMode': {
|
3789
|
-
return (...args) => __awaiter$
|
3789
|
+
return (...args) => __awaiter$v(this, void 0, void 0, function* () {
|
3790
3790
|
yield target.updateScalingMode(...args);
|
3791
3791
|
this._context.setRemoteVideoStreamViewScalingMode(this._callId, this._participantId, this._streamId, args[0]);
|
3792
3792
|
});
|
@@ -3807,7 +3807,7 @@ const videoStreamRendererViewDeclaratify = (view, context, callId, participantId
|
|
3807
3807
|
|
3808
3808
|
// Copyright (c) Microsoft Corporation.
|
3809
3809
|
// Licensed under the MIT license.
|
3810
|
-
var __awaiter$
|
3810
|
+
var __awaiter$u = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
3811
3811
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
3812
3812
|
return new (P || (P = Promise))(function (resolve, reject) {
|
3813
3813
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -3829,7 +3829,7 @@ class ProxyCallClient {
|
|
3829
3829
|
get(target, prop) {
|
3830
3830
|
switch (prop) {
|
3831
3831
|
case 'createCallAgent': {
|
3832
|
-
return this._context.withAsyncErrorTeedToState((...args) => __awaiter$
|
3832
|
+
return this._context.withAsyncErrorTeedToState((...args) => __awaiter$u(this, void 0, void 0, function* () {
|
3833
3833
|
// createCallAgent will throw an exception if the previous callAgent was not disposed. If the previous
|
3834
3834
|
// callAgent was disposed then it would have unsubscribed to events so we can just create a new declarative
|
3835
3835
|
// callAgent if the createCallAgent succeeds.
|
@@ -3842,7 +3842,7 @@ class ProxyCallClient {
|
|
3842
3842
|
}), 'CallClient.createCallAgent');
|
3843
3843
|
}
|
3844
3844
|
case 'createTeamsCallAgent': {
|
3845
|
-
/* @conditional-compile-remove(teams-identity-support) */ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$
|
3845
|
+
/* @conditional-compile-remove(teams-identity-support) */ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$u(this, void 0, void 0, function* () {
|
3846
3846
|
// createCallAgent will throw an exception if the previous callAgent was not disposed. If the previous
|
3847
3847
|
// callAgent was disposed then it would have unsubscribed to events so we can just create a new declarative
|
3848
3848
|
// callAgent if the createCallAgent succeeds.
|
@@ -3855,7 +3855,7 @@ class ProxyCallClient {
|
|
3855
3855
|
}), 'CallClient.createTeamsCallAgent');
|
3856
3856
|
}
|
3857
3857
|
case 'getDeviceManager': {
|
3858
|
-
return this._context.withAsyncErrorTeedToState(() => __awaiter$
|
3858
|
+
return this._context.withAsyncErrorTeedToState(() => __awaiter$u(this, void 0, void 0, function* () {
|
3859
3859
|
// As of writing, the SDK always returns the same instance of DeviceManager so we keep a reference of
|
3860
3860
|
// DeviceManager and if it does not change we return the cached DeclarativeDeviceManager. If it does not we'll
|
3861
3861
|
// throw an error that indicate we need to fix this issue as our implementation has diverged from the SDK.
|
@@ -3884,7 +3884,7 @@ class ProxyCallClient {
|
|
3884
3884
|
/**
|
3885
3885
|
* add to this object if we want to proxy anything else off the DebugInfo feature object.
|
3886
3886
|
*/
|
3887
|
-
return Object.assign(Object.assign({}, feature), { getEnvironmentInfo: () => __awaiter$
|
3887
|
+
return Object.assign(Object.assign({}, feature), { getEnvironmentInfo: () => __awaiter$u(this, void 0, void 0, function* () {
|
3888
3888
|
const environmentInfo = yield feature.getEnvironmentInfo();
|
3889
3889
|
this._context.setEnvironmentInfo(environmentInfo);
|
3890
3890
|
return environmentInfo;
|
@@ -3937,7 +3937,7 @@ const createStatefulCallClientWithDeps = (callClient, context, internalContext)
|
|
3937
3937
|
});
|
3938
3938
|
Object.defineProperty(callClient, 'createView', {
|
3939
3939
|
configurable: false,
|
3940
|
-
value: (callId, participantId, stream, options) => __awaiter$
|
3940
|
+
value: (callId, participantId, stream, options) => __awaiter$u(void 0, void 0, void 0, function* () {
|
3941
3941
|
const participantIdKind = participantId ? communicationCommon.getIdentifierKind(participantId) : undefined;
|
3942
3942
|
const result = yield createView(context, internalContext, callId, participantIdKind, stream, options);
|
3943
3943
|
// We only need to declaratify the VideoStreamRendererView object for remote participants. Because the updateScalingMode only needs to be called on remote participant stream views.
|
@@ -4166,7 +4166,7 @@ const typingIndicatorStringStyle = react.mergeStyles({
|
|
4166
4166
|
wordBreak: 'break-word'
|
4167
4167
|
});
|
4168
4168
|
|
4169
|
-
var participantItem$d={isMeText:"(you)",menuTitle:"More Options",removeButtonLabel:"Remove",sharingIconLabel:"Sharing",mutedIconLabel:"Muted",displayNamePlaceholder:"Unnamed participant",participantStateRinging:"Calling...",participantStateHold:"On hold"};var typingIndicator$d={singleUser:"{user} is typing ...",multipleUsers:"{users} are typing ...",multipleUsersAbbreviateOne:"{users} and 1 other are typing ...",multipleUsersAbbreviateMany:"{users} and {numOthers} others are typing ...",delimiter:", "};var sendBox$d={placeholderText:"Enter a message",textTooLong:"Your message length is over the maximum limit.",sendButtonAriaLabel:"Send message",fileUploadsPendingError:"Uploading... Please wait.",removeFile:"Remove file",uploading:"Uploading",uploadCompleted:"Upload completed"};var messageStatusIndicator$d={deliveredAriaLabel:"Message sent",deliveredTooltipText:"Sent",seenAriaLabel:"Message seen by others",seenTooltipText:"Seen",readByTooltipText:"Read by {messageThreadReadCount} of {remoteParticipantsCount}",sendingAriaLabel:"Message sending",sendingTooltipText:"Sending",failedToSendAriaLabel:"Message failed to send",failedToSendTooltipText:"Failed to send"};var endCallButton$d={label:"Leave",tooltipContent:"Leave call"};var cameraButton$d={onLabel:"Turn off",offLabel:"Turn on",tooltipDisabledContent:"Camera is disabled",tooltipOnContent:"Turn off camera",tooltipOffContent:"Turn on camera",tooltipVideoLoadingContent:"Video is loading",cameraMenuTitle:"Camera",cameraMenuTooltip:"Choose camera",cameraButtonSplitRoleDescription:"Split button",onSplitButtonAriaLabel:"Turn off camera and camera options",offSplitButtonAriaLabel:"Turn on camera and camera options",cameraActionTurnedOnAnnouncement:"Your camera has been turned on",cameraActionTurnedOffAnnouncement:"Your camera has been turned off",onSplitButtonPrimaryActionCamera:"Turn off camera",offSplitButtonPrimaryActionCamera:"Turn on camera",cameraPrimaryActionSplitButtonTitle:"Use camera"};var microphoneButton$d={onLabel:"Mute",offLabel:"Unmute",tooltipDisabledContent:"Microphone is disabled",tooltipOnContent:"Mute microphone",tooltipOffContent:"Unmute microphone",microphoneMenuTitle:"Microphone",microphoneMenuTooltip:"Choose microphone",speakerMenuTitle:"Speaker",speakerMenuTooltip:"Choose speaker",microphoneButtonSplitRoleDescription:"Split button",onSplitButtonAriaLabel:"Mute microphone and audio options",offSplitButtonAriaLabel:"Unmute microphone and audio options",microphoneActionTurnedOnAnnouncement:"Your microphone has been turned on",microphoneActionTurnedOffAnnouncement:"Your microphone has been turned off",offSplitButtonMicrophonePrimaryAction:"Unmute microphone",onSplitButtonMicrophonePrimaryAction:"Mute microphone",micPrimaryActionSplitButtonTitle:"Use microphone"};var devicesButton$d={label:"Devices",tooltipContent:"Manage devices",cameraMenuTitle:"Camera",cameraMenuTooltip:"Choose camera",audioDeviceMenuTitle:"Audio Device",audioDeviceMenuTooltip:"Choose audio device",microphoneMenuTitle:"Microphone",microphoneMenuTooltip:"Choose microphone",speakerMenuTitle:"Speaker",speakerMenuTooltip:"Choose speaker"};var participantsButton$d={label:"People",tooltipContent:"Show participants",menuHeader:"In this call",participantsListButtonLabel:"{numParticipants} people",muteAllButtonLabel:"Mute all",copyInviteLinkButtonLabel:"Copy invite link",copyInviteLinkActionedAriaLabel:"Invite link copied"};var screenShareButton$d={onLabel:"Stop presenting",offLabel:"Present",tooltipDisabledContent:"Presenting is disabled",tooltipOnContent:"Presenting your screen",tooltipOffContent:"Present your screen"};var messageThread$d={yesterday:"Yesterday",sunday:"Sunday",monday:"Monday",tuesday:"Tuesday",wednesday:"Wednesday",thursday:"Thursday",friday:"Friday",saturday:"Saturday",participantJoined:"joined the chat.",participantLeft:"left the chat.",editMessage:"Edit",removeMessage:"Delete",resendMessage:"Try sending again",failToSendTag:"Failed to send",editedTag:"Edited",liveAuthorIntro:"{author} says",messageContentAriaText:"{author} said {message}",messageContentMineAriaText:"You said {message}",editBoxTextLimit:"Your message is over the limit of {limitNumber} characters",editBoxPlaceholderText:"Edit your message",newMessagesIndicator:"New messages",noDisplayNameSub:"No name",editBoxCancelButton:"Cancel",editBoxSubmitButton:"Submit",messageReadCount:"Read by {messageReadByCount} of {remoteParticipantsCount}",actionMenuMoreOptions:"More Options",downloadFile:"Download file"};var errorBar$d={unableToReachChatService:"You are offline",accessDenied:"Unable to access chat services - please check the user credentials provided",userNotInChatThread:"You are no longer in this chat thread",sendMessageNotInChatThread:"Failed to send message because you are no longer in this chat thread",sendMessageGeneric:"Failed to send message",callingNetworkFailure:"Troubling connecting call - you seem to be offline",startVideoGeneric:"Failed to start video",stopVideoGeneric:"Failed to stop video",muteGeneric:"Failed to mute microphone",unmuteGeneric:"Failed to unmute microphone",speakingWhileMuted:"Your microphone is muted",startScreenShareGeneric:"Failed to start screen sharing",stopScreenShareGeneric:"Failed to stop screen sharing",callNetworkQualityLow:"Network quality is low.",callNoSpeakerFound:"No speakers or headphones found. Connect an audio device to hear the call.",callNoMicrophoneFound:"No microphones found. Connect an audio input device.",callMicrophoneAccessDenied:"Unable to access microphone. Click the lock in the address bar to grant permission to this webpage.",callMicrophoneAccessDeniedSafari:"Unable to access microphone. Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",callMicrophoneMutedBySystem:"You are muted by your system.",callMicrophoneUnmutedBySystem:"Your microphone recovered and you were unmuted by your system.",callMacOsMicrophoneAccessDenied:"Unable to access microphone. Grant microphone permission in your macOS privacy settings.",callLocalVideoFreeze:"Network bandwidth is poor. Your video may appear paused for others on the call.",callCameraAccessDenied:"Unable to access camera. Click the lock in the address bar to grant permission to this webpage.",callCameraAccessDeniedSafari:"Unable to access camera. Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",callCameraAlreadyInUse:"Unable to access camera. It may already be in use by another application.",callVideoStoppedBySystem:"Your video has been stopped by your system.",callVideoRecoveredBySystem:"Your video has resumed.",callMacOsCameraAccessDenied:"MacOS is blocking access to your camera. Update your privacy settings to allow this browser to access your camera.",callMacOsScreenShareAccessDenied:"MacOS is blocking screen sharing. Update your privacy settings to allow this browser to record your screen.",dismissButtonAriaLabel:"Close",failedToJoinCallGeneric:"Failed to join call.",failedToJoinCallInvalidMeetingLink:"Unable to join Meeting. Invalid Link.",startScreenSharingGeneric:"There was an issue starting screen share.",cameraFrozenForRemoteParticipants:"Users in the call are having issues seeing your video. Please check your devices and network."};var videoGallery$d={screenIsBeingSharedMessage:"You are sharing your screen",screenShareLoadingMessage:"Loading {participant}'s screen",localVideoLabel:"You",localVideoCameraSwitcherLabel:"Switch camera",localVideoMovementLabel:"Movable Local Video Tile",localVideoSelectedDescription:"{cameraName} selected",displayNamePlaceholder:"Unnamed participant",fitRemoteParticipantToFrame:"Fit to frame",fillRemoteParticipantFrame:"Fill frame",pinParticipantForMe:"Pin for me",pinParticipantForMeLimitReached:"Pin (limit reached)",unpinParticipantForMe:"Unpin",pinParticipantMenuItemAriaLabel:"Pin {participantName}",unpinParticipantMenuItemAriaLabel:"Unpin {participantName}",pinnedParticipantAnnouncementAriaLabel:"Pinned {participantName}",unpinnedParticipantAnnouncementAriaLabel:"Unpinned {participantName}"};var dialpad$d={placeholderText:"Enter phone number",deleteButtonAriaLabel:"Delete"};var holdButton$d={onLabel:"Resume",offLabel:"Hold",tooltipOnContent:"Resume call",tooltipOffContent:"Hold call"};var videoTile$d={participantStateRinging:"Calling...",participantStateHold:"On hold"};var CameraAndMicrophoneSitePermissionsRequest={primaryText:"Allow {appName} to use your camera and microphone",secondaryText:"This is so participants can see and hear you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without camera and microphone",ariaLabel:"Allow camera and microphone access"};var CameraSitePermissionsRequest={primaryText:"Allow {appName} to use your camera",secondaryText:"This is so participants can see you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without camera",ariaLabel:"Allow camera access"};var MicrophoneSitePermissionsRequest={primaryText:"Allow {appName} to use your microphone",secondaryText:"This is so participants can hear you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without microphone",ariaLabel:"Allow microphone access"};var CameraAndMicrophoneSitePermissionsCheck={primaryText:"Checking for camera and microphone access",secondaryText:"Allow access if prompted. This is so participants can see and hear you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without camera and microphone",ariaLabel:"Checking for camera and microphone access. Allow access if prompted."};var CameraSitePermissionsCheck={primaryText:"Checking for camera access",secondaryText:"Allow access if prompted. This is so participants can see you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without camera",ariaLabel:"Checking for camera access. Allow access if prompted."};var MicrophoneSitePermissionsCheck={primaryText:"Checking for microphone access",secondaryText:"Allow access if prompted. This is so participants can hear you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without microphone",ariaLabel:"Checking for microphone access. Allow access if prompted."};var CameraAndMicrophoneSitePermissionsDenied={primaryText:"Unable to access camera and microphone",secondaryText:"Click the lock icon in the address bar to grant microphone permissions to this webpage. A page refresh may be required.",primaryButtonText:"Continue without camera and microphone",linkText:"Need help? Get troubleshooting help"};var CameraAndMicrophoneSitePermissionsDeniedSafari={primaryText:"Unable to access camera and microphone",secondaryText:"Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",primaryButtonText:"Continue without camera and microphone",linkText:"Need help? Get troubleshooting help"};var CameraSitePermissionsDenied={primaryText:"Unable to access camera",secondaryText:"Click the lock icon in the address bar to grant camera permissions to this webpage. A page refresh may be required.",primaryButtonText:"Continue without camera",linkText:"Need help? Get troubleshooting help"};var MicrophoneSitePermissionsDenied={primaryText:"Unable to access microphone",secondaryText:"Click the lock icon in the address bar to grant microphone permissions to this webpage. A page refresh may be required.",primaryButtonText:"Continue without microphone",linkText:"Need help? Get troubleshooting help"};var CameraSitePermissionsDeniedSafari={primaryText:"Unable to access camera",secondaryText:"Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",primaryButtonText:"Continue without camera",linkText:"Need help? Get troubleshooting help"};var MicrophoneSitePermissionsDeniedSafari={primaryText:"Unable to access microphone",secondaryText:"Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",primaryButtonText:"Continue without microphone",linkText:"Need help? Get troubleshooting help"};var UnsupportedBrowser$e={primaryText:"Browser not supported",secondaryText:"Please join this call using a compatible browser.",moreHelpLinkText:"See compatibility requirements"};var UnsupportedBrowserVersion$1={primaryText:"Browser update needed",secondaryText:"To ensure the best call possible, please update your browser and then try joining the call again.",moreHelpLinkText:"See compatibility requirements",continueAnywayButtonText:"Start call without updating"};var UnsupportedOperatingSystem$1={primaryText:"Operating system not supported",secondaryText:"Please join this call using a device with a compatible operating system.",moreHelpLinkText:"See compatibility requirements"};var BrowserPermissionDenied$d={primaryText:"Can't use your camera or microphone",secondaryText:"Your browser might not have access to your camera or microphone. To fix this, open System Preferences.",primaryButtonText:"Try again",linkText:"Need help? Get troubleshooting help"};var BrowserPermissionDeniedIOS$d={primaryText:"Allow microphone access to continue",secondaryText:"So other participants can hear you.",primaryButtonText:"Try again",imageAltText:"Microphone and camera device permission location for iOS",linkText:"Need help? Get troubleshooting help",step1Text:"Go to the Settings app",step2Text:"Scroll down to settings for this browser",step3Text:"Turn on Microphone (Camera optional)",step4Text:"Try joining the call again",step1DigitText:"1",step2DigitText:"2",step3DigitText:"3",step4DigitText:"4"};var VerticalGallery$1={leftNavButtonAriaLabel:"previous page",rightNavButtonAriaLabel:"next page"};var en_US$1 = {participantItem:participantItem$d,typingIndicator:typingIndicator$d,sendBox:sendBox$d,messageStatusIndicator:messageStatusIndicator$d,endCallButton:endCallButton$d,cameraButton:cameraButton$d,microphoneButton:microphoneButton$d,devicesButton:devicesButton$d,participantsButton:participantsButton$d,screenShareButton:screenShareButton$d,messageThread:messageThread$d,errorBar:errorBar$d,videoGallery:videoGallery$d,dialpad:dialpad$d,holdButton:holdButton$d,videoTile:videoTile$d,CameraAndMicrophoneSitePermissionsRequest:CameraAndMicrophoneSitePermissionsRequest,CameraSitePermissionsRequest:CameraSitePermissionsRequest,MicrophoneSitePermissionsRequest:MicrophoneSitePermissionsRequest,CameraAndMicrophoneSitePermissionsCheck:CameraAndMicrophoneSitePermissionsCheck,CameraSitePermissionsCheck:CameraSitePermissionsCheck,MicrophoneSitePermissionsCheck:MicrophoneSitePermissionsCheck,CameraAndMicrophoneSitePermissionsDenied:CameraAndMicrophoneSitePermissionsDenied,CameraAndMicrophoneSitePermissionsDeniedSafari:CameraAndMicrophoneSitePermissionsDeniedSafari,CameraSitePermissionsDenied:CameraSitePermissionsDenied,MicrophoneSitePermissionsDenied:MicrophoneSitePermissionsDenied,CameraSitePermissionsDeniedSafari:CameraSitePermissionsDeniedSafari,MicrophoneSitePermissionsDeniedSafari:MicrophoneSitePermissionsDeniedSafari,UnsupportedBrowser:UnsupportedBrowser$e,UnsupportedBrowserVersion:UnsupportedBrowserVersion$1,UnsupportedOperatingSystem:UnsupportedOperatingSystem$1,BrowserPermissionDenied:BrowserPermissionDenied$d,BrowserPermissionDeniedIOS:BrowserPermissionDeniedIOS$d,VerticalGallery:VerticalGallery$1};
|
4169
|
+
var participantItem$d={isMeText:"(you)",menuTitle:"More Options",removeButtonLabel:"Remove",sharingIconLabel:"Sharing",mutedIconLabel:"Muted",displayNamePlaceholder:"Unnamed participant",participantStateRinging:"Calling...",participantStateHold:"On hold"};var typingIndicator$d={singleUser:"{user} is typing ...",multipleUsers:"{users} are typing ...",multipleUsersAbbreviateOne:"{users} and 1 other are typing ...",multipleUsersAbbreviateMany:"{users} and {numOthers} others are typing ...",delimiter:", "};var sendBox$d={placeholderText:"Enter a message",textTooLong:"Your message length is over the maximum limit.",sendButtonAriaLabel:"Send message",fileUploadsPendingError:"Uploading... Please wait.",removeFile:"Remove file",uploading:"Uploading",uploadCompleted:"Upload completed"};var messageStatusIndicator$d={deliveredAriaLabel:"Message sent",deliveredTooltipText:"Sent",seenAriaLabel:"Message seen by others",seenTooltipText:"Seen",readByTooltipText:"Read by {messageThreadReadCount} of {remoteParticipantsCount}",sendingAriaLabel:"Message sending",sendingTooltipText:"Sending",failedToSendAriaLabel:"Message failed to send",failedToSendTooltipText:"Failed to send"};var endCallButton$d={label:"Leave",tooltipContent:"Leave call"};var cameraButton$d={onLabel:"Turn off",offLabel:"Turn on",tooltipDisabledContent:"Camera is disabled",tooltipOnContent:"Turn off camera",tooltipOffContent:"Turn on camera",tooltipVideoLoadingContent:"Video is loading",cameraMenuTitle:"Camera",cameraMenuTooltip:"Choose camera",cameraButtonSplitRoleDescription:"Split button",onSplitButtonAriaLabel:"Turn off camera and camera options",offSplitButtonAriaLabel:"Turn on camera and camera options",cameraActionTurnedOnAnnouncement:"Your camera has been turned on",cameraActionTurnedOffAnnouncement:"Your camera has been turned off",onSplitButtonPrimaryActionCamera:"Turn off camera",offSplitButtonPrimaryActionCamera:"Turn on camera",cameraPrimaryActionSplitButtonTitle:"Use camera"};var microphoneButton$d={onLabel:"Mute",offLabel:"Unmute",tooltipDisabledContent:"Microphone is disabled",tooltipOnContent:"Mute microphone",tooltipOffContent:"Unmute microphone",microphoneMenuTitle:"Microphone",microphoneMenuTooltip:"Choose microphone",speakerMenuTitle:"Speaker",speakerMenuTooltip:"Choose speaker",microphoneButtonSplitRoleDescription:"Split button",onSplitButtonAriaLabel:"Mute microphone and audio options",offSplitButtonAriaLabel:"Unmute microphone and audio options",microphoneActionTurnedOnAnnouncement:"Your microphone has been turned on",microphoneActionTurnedOffAnnouncement:"Your microphone has been turned off",offSplitButtonMicrophonePrimaryAction:"Unmute microphone",onSplitButtonMicrophonePrimaryAction:"Mute microphone",micPrimaryActionSplitButtonTitle:"Use microphone"};var devicesButton$d={label:"Devices",tooltipContent:"Manage devices",cameraMenuTitle:"Camera",cameraMenuTooltip:"Choose camera",audioDeviceMenuTitle:"Audio Device",audioDeviceMenuTooltip:"Choose audio device",microphoneMenuTitle:"Microphone",microphoneMenuTooltip:"Choose microphone",speakerMenuTitle:"Speaker",speakerMenuTooltip:"Choose speaker"};var participantsButton$d={label:"People",tooltipContent:"Show participants",menuHeader:"In this call",participantsListButtonLabel:"{numParticipants} people",muteAllButtonLabel:"Mute all",copyInviteLinkButtonLabel:"Copy invite link",copyInviteLinkActionedAriaLabel:"Invite link copied"};var screenShareButton$d={onLabel:"Stop presenting",offLabel:"Present",tooltipDisabledContent:"Presenting is disabled",tooltipOnContent:"Presenting your screen",tooltipOffContent:"Present your screen"};var messageThread$d={yesterday:"Yesterday",sunday:"Sunday",monday:"Monday",tuesday:"Tuesday",wednesday:"Wednesday",thursday:"Thursday",friday:"Friday",saturday:"Saturday",participantJoined:"joined the chat.",participantLeft:"left the chat.",editMessage:"Edit",removeMessage:"Delete",resendMessage:"Try sending again",failToSendTag:"Failed to send",editedTag:"Edited",liveAuthorIntro:"{author} says",messageContentAriaText:"{author} said {message}",messageContentMineAriaText:"You said {message}",editBoxTextLimit:"Your message is over the limit of {limitNumber} characters",editBoxPlaceholderText:"Edit your message",newMessagesIndicator:"New messages",noDisplayNameSub:"No name",editBoxCancelButton:"Cancel",editBoxSubmitButton:"Submit",messageReadCount:"Read by {messageReadByCount} of {remoteParticipantsCount}",actionMenuMoreOptions:"More Options",downloadFile:"Download file",blockedWarningText:"This message was deleted due to organizational policy.",blockedWarningLinkText:"Details"};var errorBar$d={unableToReachChatService:"You are offline",accessDenied:"Unable to access chat services - please check the user credentials provided",userNotInChatThread:"You are no longer in this chat thread",sendMessageNotInChatThread:"Failed to send message because you are no longer in this chat thread",sendMessageGeneric:"Failed to send message",callingNetworkFailure:"Troubling connecting call - you seem to be offline",startVideoGeneric:"Failed to start video",stopVideoGeneric:"Failed to stop video",muteGeneric:"Failed to mute microphone",unmuteGeneric:"Failed to unmute microphone",speakingWhileMuted:"Your microphone is muted",startScreenShareGeneric:"Failed to start screen sharing",stopScreenShareGeneric:"Failed to stop screen sharing",callNetworkQualityLow:"Network quality is low.",callNoSpeakerFound:"No speakers or headphones found. Connect an audio device to hear the call.",callNoMicrophoneFound:"No microphones found. Connect an audio input device.",callMicrophoneAccessDenied:"Unable to access microphone. Click the lock in the address bar to grant permission to this webpage.",callMicrophoneAccessDeniedSafari:"Unable to access microphone. Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",callMicrophoneMutedBySystem:"You are muted by your system.",callMicrophoneUnmutedBySystem:"Your microphone recovered and you were unmuted by your system.",callMacOsMicrophoneAccessDenied:"Unable to access microphone. Grant microphone permission in your macOS privacy settings.",callLocalVideoFreeze:"Network bandwidth is poor. Your video may appear paused for others on the call.",callCameraAccessDenied:"Unable to access camera. Click the lock in the address bar to grant permission to this webpage.",callCameraAccessDeniedSafari:"Unable to access camera. Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",callCameraAlreadyInUse:"Unable to access camera. It may already be in use by another application.",callVideoStoppedBySystem:"Your video has been stopped by your system.",callVideoRecoveredBySystem:"Your video has resumed.",callMacOsCameraAccessDenied:"MacOS is blocking access to your camera. Update your privacy settings to allow this browser to access your camera.",callMacOsScreenShareAccessDenied:"MacOS is blocking screen sharing. Update your privacy settings to allow this browser to record your screen.",dismissButtonAriaLabel:"Close",failedToJoinCallGeneric:"Failed to join call.",failedToJoinCallInvalidMeetingLink:"Unable to join Meeting. Invalid Link.",startScreenSharingGeneric:"There was an issue starting screen share.",cameraFrozenForRemoteParticipants:"Users in the call are having issues seeing your video. Please check your devices and network."};var videoGallery$d={screenIsBeingSharedMessage:"You are sharing your screen",screenShareLoadingMessage:"Loading {participant}'s screen",localVideoLabel:"You",localVideoCameraSwitcherLabel:"Switch camera",localVideoMovementLabel:"Movable Local Video Tile",localVideoSelectedDescription:"{cameraName} selected",displayNamePlaceholder:"Unnamed participant",fitRemoteParticipantToFrame:"Fit to frame",fillRemoteParticipantFrame:"Fill frame",pinParticipantForMe:"Pin for me",pinParticipantForMeLimitReached:"Pin (limit reached)",unpinParticipantForMe:"Unpin",pinParticipantMenuItemAriaLabel:"Pin {participantName}",unpinParticipantMenuItemAriaLabel:"Unpin {participantName}",pinnedParticipantAnnouncementAriaLabel:"Pinned {participantName}",unpinnedParticipantAnnouncementAriaLabel:"Unpinned {participantName}"};var dialpad$d={placeholderText:"Enter phone number",deleteButtonAriaLabel:"Delete"};var holdButton$d={onLabel:"Resume",offLabel:"Hold",tooltipOnContent:"Resume call",tooltipOffContent:"Hold call"};var videoTile$d={participantStateRinging:"Calling...",participantStateHold:"On hold"};var CameraAndMicrophoneSitePermissionsRequest={primaryText:"Allow {appName} to use your camera and microphone",secondaryText:"This is so participants can see and hear you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without camera and microphone",ariaLabel:"Allow camera and microphone access"};var CameraSitePermissionsRequest={primaryText:"Allow {appName} to use your camera",secondaryText:"This is so participants can see you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without camera",ariaLabel:"Allow camera access"};var MicrophoneSitePermissionsRequest={primaryText:"Allow {appName} to use your microphone",secondaryText:"This is so participants can hear you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without microphone",ariaLabel:"Allow microphone access"};var CameraAndMicrophoneSitePermissionsCheck={primaryText:"Checking for camera and microphone access",secondaryText:"Allow access if prompted. This is so participants can see and hear you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without camera and microphone",ariaLabel:"Checking for camera and microphone access. Allow access if prompted."};var CameraSitePermissionsCheck={primaryText:"Checking for camera access",secondaryText:"Allow access if prompted. This is so participants can see you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without camera",ariaLabel:"Checking for camera access. Allow access if prompted."};var MicrophoneSitePermissionsCheck={primaryText:"Checking for microphone access",secondaryText:"Allow access if prompted. This is so participants can hear you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without microphone",ariaLabel:"Checking for microphone access. Allow access if prompted."};var CameraAndMicrophoneSitePermissionsDenied={primaryText:"Unable to access camera and microphone",secondaryText:"Click the lock icon in the address bar to grant microphone permissions to this webpage. A page refresh may be required.",primaryButtonText:"Continue without camera and microphone",linkText:"Need help? Get troubleshooting help"};var CameraAndMicrophoneSitePermissionsDeniedSafari={primaryText:"Unable to access camera and microphone",secondaryText:"Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",primaryButtonText:"Continue without camera and microphone",linkText:"Need help? Get troubleshooting help"};var CameraSitePermissionsDenied={primaryText:"Unable to access camera",secondaryText:"Click the lock icon in the address bar to grant camera permissions to this webpage. A page refresh may be required.",primaryButtonText:"Continue without camera",linkText:"Need help? Get troubleshooting help"};var MicrophoneSitePermissionsDenied={primaryText:"Unable to access microphone",secondaryText:"Click the lock icon in the address bar to grant microphone permissions to this webpage. A page refresh may be required.",primaryButtonText:"Continue without microphone",linkText:"Need help? Get troubleshooting help"};var CameraSitePermissionsDeniedSafari={primaryText:"Unable to access camera",secondaryText:"Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",primaryButtonText:"Continue without camera",linkText:"Need help? Get troubleshooting help"};var MicrophoneSitePermissionsDeniedSafari={primaryText:"Unable to access microphone",secondaryText:"Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",primaryButtonText:"Continue without microphone",linkText:"Need help? Get troubleshooting help"};var UnsupportedBrowser$e={primaryText:"Browser not supported",secondaryText:"Please join this call using a compatible browser.",moreHelpLinkText:"See compatibility requirements"};var UnsupportedBrowserVersion$1={primaryText:"Browser update needed",secondaryText:"To ensure the best call possible, please update your browser and then try joining the call again.",moreHelpLinkText:"See compatibility requirements",continueAnywayButtonText:"Start call without updating"};var UnsupportedOperatingSystem$1={primaryText:"Operating system not supported",secondaryText:"Please join this call using a device with a compatible operating system.",moreHelpLinkText:"See compatibility requirements"};var BrowserPermissionDenied$d={primaryText:"Can't use your camera or microphone",secondaryText:"Your browser might not have access to your camera or microphone. To fix this, open System Preferences.",primaryButtonText:"Try again",linkText:"Need help? Get troubleshooting help"};var BrowserPermissionDeniedIOS$d={primaryText:"Allow microphone access to continue",secondaryText:"So other participants can hear you.",primaryButtonText:"Try again",imageAltText:"Microphone and camera device permission location for iOS",linkText:"Need help? Get troubleshooting help",step1Text:"Go to the Settings app",step2Text:"Scroll down to settings for this browser",step3Text:"Turn on Microphone (Camera optional)",step4Text:"Try joining the call again",step1DigitText:"1",step2DigitText:"2",step3DigitText:"3",step4DigitText:"4"};var VerticalGallery$1={leftNavButtonAriaLabel:"previous page",rightNavButtonAriaLabel:"next page"};var en_US$1 = {participantItem:participantItem$d,typingIndicator:typingIndicator$d,sendBox:sendBox$d,messageStatusIndicator:messageStatusIndicator$d,endCallButton:endCallButton$d,cameraButton:cameraButton$d,microphoneButton:microphoneButton$d,devicesButton:devicesButton$d,participantsButton:participantsButton$d,screenShareButton:screenShareButton$d,messageThread:messageThread$d,errorBar:errorBar$d,videoGallery:videoGallery$d,dialpad:dialpad$d,holdButton:holdButton$d,videoTile:videoTile$d,CameraAndMicrophoneSitePermissionsRequest:CameraAndMicrophoneSitePermissionsRequest,CameraSitePermissionsRequest:CameraSitePermissionsRequest,MicrophoneSitePermissionsRequest:MicrophoneSitePermissionsRequest,CameraAndMicrophoneSitePermissionsCheck:CameraAndMicrophoneSitePermissionsCheck,CameraSitePermissionsCheck:CameraSitePermissionsCheck,MicrophoneSitePermissionsCheck:MicrophoneSitePermissionsCheck,CameraAndMicrophoneSitePermissionsDenied:CameraAndMicrophoneSitePermissionsDenied,CameraAndMicrophoneSitePermissionsDeniedSafari:CameraAndMicrophoneSitePermissionsDeniedSafari,CameraSitePermissionsDenied:CameraSitePermissionsDenied,MicrophoneSitePermissionsDenied:MicrophoneSitePermissionsDenied,CameraSitePermissionsDeniedSafari:CameraSitePermissionsDeniedSafari,MicrophoneSitePermissionsDeniedSafari:MicrophoneSitePermissionsDeniedSafari,UnsupportedBrowser:UnsupportedBrowser$e,UnsupportedBrowserVersion:UnsupportedBrowserVersion$1,UnsupportedOperatingSystem:UnsupportedOperatingSystem$1,BrowserPermissionDenied:BrowserPermissionDenied$d,BrowserPermissionDeniedIOS:BrowserPermissionDeniedIOS$d,VerticalGallery:VerticalGallery$1};
|
4170
4170
|
|
4171
4171
|
var participantItem$c={isMeText:"(you)",menuTitle:"More Options",removeButtonLabel:"Remove",sharingIconLabel:"Sharing",mutedIconLabel:"Muted",displayNamePlaceholder:"Unnamed participant",participantStateConnecting:"Calling...",participantStateRinging:"Calling...",participantStateHold:"On hold"};var typingIndicator$c={singleUser:"{user} is typing ...",multipleUsers:"{users} are typing ...",multipleUsersAbbreviateOne:"{users} and 1 other are typing ...",multipleUsersAbbreviateMany:"{users} and {numOthers} others are typing ...",delimiter:", "};var sendBox$c={placeholderText:"Enter a message",textTooLong:"Your message length is over the maximum limit.",sendButtonAriaLabel:"Send message",fileUploadsPendingError:"Uploading... Please wait.",removeFile:"Remove file",uploading:"Uploading",uploadCompleted:"Upload completed"};var messageStatusIndicator$c={deliveredAriaLabel:"Message sent",deliveredTooltipText:"Sent",seenAriaLabel:"Message seen by others",seenTooltipText:"Seen",readByTooltipText:"Read by {messageThreadReadCount} of {remoteParticipantsCount}",sendingAriaLabel:"Message sending",sendingTooltipText:"Sending",failedToSendAriaLabel:"Message failed to send",failedToSendTooltipText:"Failed to send"};var endCallButton$c={label:"Leave",tooltipContent:"Leave call"};var cameraButton$c={onLabel:"Turn off",offLabel:"Turn on",tooltipDisabledContent:"Camera is disabled",tooltipOnContent:"Turn off camera",tooltipOffContent:"Turn on camera",tooltipVideoLoadingContent:"Video is loading",cameraMenuTitle:"Camera",cameraMenuTooltip:"Choose camera",cameraButtonSplitRoleDescription:"Split button",onSplitButtonAriaLabel:"Turn off camera and camera options",offSplitButtonAriaLabel:"Turn on camera and camera options",cameraActionTurnedOnAnnouncement:"Your camera has been turned on",cameraActionTurnedOffAnnouncement:"Your camera has been turned off"};var microphoneButton$c={onLabel:"Mute",offLabel:"Unmute",tooltipDisabledContent:"Microphone is disabled",tooltipOnContent:"Mute microphone",tooltipOffContent:"Unmute microphone",microphoneMenuTitle:"Microphone",microphoneMenuTooltip:"Choose microphone",speakerMenuTitle:"Speaker",speakerMenuTooltip:"Choose speaker",microphoneButtonSplitRoleDescription:"Split button",onSplitButtonAriaLabel:"Mute microphone and audio options",offSplitButtonAriaLabel:"Unmute microphone and audio options",microphoneActionTurnedOnAnnouncement:"Your microphone has been turned on",microphoneActionTurnedOffAnnouncement:"Your microphone has been turned off"};var devicesButton$c={label:"Devices",tooltipContent:"Manage devices",cameraMenuTitle:"Camera",cameraMenuTooltip:"Choose camera",audioDeviceMenuTitle:"Audio Device",audioDeviceMenuTooltip:"Choose audio device",microphoneMenuTitle:"Microphone",microphoneMenuTooltip:"Choose microphone",speakerMenuTitle:"Speaker",speakerMenuTooltip:"Choose speaker"};var participantsButton$c={label:"People",tooltipContent:"Show participants",menuHeader:"In this call",participantsListButtonLabel:"{numParticipants} people",muteAllButtonLabel:"Mute all",copyInviteLinkButtonLabel:"Copy invite link"};var screenShareButton$c={onLabel:"Stop presenting",offLabel:"Present",tooltipDisabledContent:"Presenting is disabled",tooltipOnContent:"Presenting your screen",tooltipOffContent:"Present your screen"};var messageThread$c={yesterday:"Yesterday",sunday:"Sunday",monday:"Monday",tuesday:"Tuesday",wednesday:"Wednesday",thursday:"Thursday",friday:"Friday",saturday:"Saturday",participantJoined:"joined the chat.",participantLeft:"left the chat.",editMessage:"Edit",removeMessage:"Delete",resendMessage:"Try sending again",failToSendTag:"Failed to send",editedTag:"Edited",liveAuthorIntro:"{author} says",messageContentAriaText:"{author} said {message}",messageContentMineAriaText:"You said {message}",editBoxTextLimit:"Your message is over the limit of {limitNumber} characters",editBoxPlaceholderText:"Edit your message",newMessagesIndicator:"New messages",noDisplayNameSub:"No name",editBoxCancelButton:"Cancel",editBoxSubmitButton:"Submit",messageReadCount:"Read by {messageReadByCount} of {remoteParticipantsCount}",actionMenuMoreOptions:"More Options",downloadFile:"Download file"};var errorBar$c={unableToReachChatService:"You are offline",accessDenied:"Unable to access chat services - please check the user credentials provided",userNotInChatThread:"You are no longer in this chat thread",sendMessageNotInChatThread:"Failed to send message because you are no longer in this chat thread",sendMessageGeneric:"Failed to send message",callingNetworkFailure:"Troubling connecting call - you seem to be offline",startVideoGeneric:"Failed to start video",stopVideoGeneric:"Failed to stop video",muteGeneric:"Failed to mute microphone",unmuteGeneric:"Failed to unmute microphone",speakingWhileMuted:"Your microphone is muted",startScreenShareGeneric:"Failed to start screen sharing",stopScreenShareGeneric:"Failed to stop screen sharing",callNetworkQualityLow:"Network quality is low.",callNoSpeakerFound:"No speakers or headphones found. Connect an audio device to hear the call.",callNoMicrophoneFound:"No microphones found. Connect an audio input device.",callMicrophoneAccessDenied:"Unable to access microphone. Click the lock in the address bar to grant permission to this webpage.",callMicrophoneMutedBySystem:"You are muted by your system.",callMicrophoneUnmutedBySystem:"Your microphone recovered and you were unmuted by your system.",callMacOsMicrophoneAccessDenied:"Unable to access microphone. Grant microphone permission in your macOS privacy settings.",callLocalVideoFreeze:"Network bandwidth is poor. Your video may appear paused for others on the call.",callCameraAccessDenied:"Unable to access camera. Click the lock in the address bar to grant permission to this webpage.",callCameraAlreadyInUse:"Unable to access camera. It may already be in use by another application.",callVideoStoppedBySystem:"Your video has been stopped by your system.",callVideoRecoveredBySystem:"Your video has resumed.",callMacOsCameraAccessDenied:"MacOS is blocking access to your camera. Update your privacy settings to allow this browser to access your camera.",callMacOsScreenShareAccessDenied:"MacOS is blocking screen sharing. Update your privacy settings to allow this browser to record your screen.",dismissButtonAriaLabel:"Close",failedToJoinCallGeneric:"Failed to join call.",failedToJoinCallInvalidMeetingLink:"Unable to join Meeting. Invalid Link."};var videoGallery$c={screenIsBeingSharedMessage:"You are sharing your screen",screenShareLoadingMessage:"Loading {participant}'s screen",localVideoLabel:"You",localVideoCameraSwitcherLabel:"Switch camera",localVideoMovementLabel:"Movable Local Video Tile",localVideoSelectedDescription:"{cameraName} selected",displayNamePlaceholder:"Unnamed participant"};var dialpad$c={placeholderText:"Enter phone number",deleteButtonAriaLabel:"Delete"};var holdButton$c={onLabel:"Resume",offLabel:"Hold",tooltipOnContent:"Resume call",tooltipOffContent:"Hold call"};var videoTile$c={participantStateConnecting:"Calling...",participantStateRinging:"Calling...",participantStateHold:"On hold"};var SitePermissions$c={primaryText:"Allow {appName} to use your camera and microphone",secondaryText:"This is so participants can see and hear you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Allow Access"};var UnsupportedBrowser$d={primaryText:"Browser not supported",secondaryText:"Please join this call using a compatible browser.",moreHelpLink:"More help"};var BrowserPermissionDenied$c={primaryText:"Can't use your camera or microphone",secondaryText:"Your browser might not have access to your camera or microphone. To fix this, open System Preferences.",primaryButtonText:"Try again",linkText:"Need help? Get troubleshooting help"};var BrowserPermissionDeniedIOS$c={primaryText:"Allow microphone access to continue",secondaryText:"So other participants can hear you.",primaryButtonText:"Try again",imageAltText:"Microphone and camera device permission location for iOS",linkText:"Need help? Get troubleshooting help",step1Text:"Go to the Settings app",step2Text:"Scroll down to settings for this browser",step3Text:"Turn on Microphone (Camera optional)",step4Text:"Try joining the call again",step1DigitText:"1",step2DigitText:"2",step3DigitText:"3",step4DigitText:"4"};var en_GB$1 = {participantItem:participantItem$c,typingIndicator:typingIndicator$c,sendBox:sendBox$c,messageStatusIndicator:messageStatusIndicator$c,endCallButton:endCallButton$c,cameraButton:cameraButton$c,microphoneButton:microphoneButton$c,devicesButton:devicesButton$c,participantsButton:participantsButton$c,screenShareButton:screenShareButton$c,messageThread:messageThread$c,errorBar:errorBar$c,videoGallery:videoGallery$c,dialpad:dialpad$c,holdButton:holdButton$c,videoTile:videoTile$c,SitePermissions:SitePermissions$c,UnsupportedBrowser:UnsupportedBrowser$d,BrowserPermissionDenied:BrowserPermissionDenied$c,BrowserPermissionDeniedIOS:BrowserPermissionDeniedIOS$c};
|
4172
4172
|
|
@@ -4676,6 +4676,25 @@ const customIconName = {
|
|
4676
4676
|
const isValidString = (string) => {
|
4677
4677
|
return !!string && string.length > 0;
|
4678
4678
|
};
|
4679
|
+
/**
|
4680
|
+
* Chunk an array into rows of a given size.
|
4681
|
+
* @private
|
4682
|
+
*/
|
4683
|
+
function chunk(options, itemsPerRow) {
|
4684
|
+
const rows = [];
|
4685
|
+
let currentRow = [];
|
4686
|
+
for (const option of options) {
|
4687
|
+
currentRow.push(option);
|
4688
|
+
if (currentRow.length === itemsPerRow) {
|
4689
|
+
rows.push(currentRow);
|
4690
|
+
currentRow = [];
|
4691
|
+
}
|
4692
|
+
}
|
4693
|
+
if (currentRow.length > 0) {
|
4694
|
+
rows.push(currentRow);
|
4695
|
+
}
|
4696
|
+
return rows;
|
4697
|
+
}
|
4679
4698
|
|
4680
4699
|
// Copyright (c) Microsoft Corporation.
|
4681
4700
|
/**
|
@@ -5233,6 +5252,10 @@ const BrowserPermissionDenied20Filled = () => {
|
|
5233
5252
|
React__default['default'].createElement("div", { className: react.mergeStyles(scaledIconStyles(theme)) },
|
5234
5253
|
React__default['default'].createElement(reactIcons.Important20Filled, null))));
|
5235
5254
|
};
|
5255
|
+
/* @conditional-compile-remove(data-loss-prevention) */
|
5256
|
+
const DataLossPreventionProhibited16Regular = () => {
|
5257
|
+
return React__default['default'].createElement(reactIcons.Prohibited16Regular, null);
|
5258
|
+
};
|
5236
5259
|
/**
|
5237
5260
|
* The default set of icons that are available to use in the UI components.
|
5238
5261
|
*
|
@@ -5257,6 +5280,8 @@ const DEFAULT_COMPONENT_ICONS = {
|
|
5257
5280
|
CancelFileUpload: React__default['default'].createElement(reactIcons.Dismiss16Regular, null),
|
5258
5281
|
/* @conditional-compile-remove(file-sharing) */
|
5259
5282
|
DownloadFile: React__default['default'].createElement(reactIcons.ArrowDownload16Regular, null),
|
5283
|
+
/* @conditional-compile-remove(data-loss-prevention) */
|
5284
|
+
DataLossPreventionProhibited: React__default['default'].createElement(DataLossPreventionProhibited16Regular, null),
|
5260
5285
|
EditBoxCancel: React__default['default'].createElement(reactIcons.Dismiss20Regular, null),
|
5261
5286
|
EditBoxSubmit: React__default['default'].createElement(reactIcons.Checkmark20Regular, null),
|
5262
5287
|
ErrorBarCallCameraAccessDenied: React__default['default'].createElement(reactIcons.VideoProhibited16Filled, null),
|
@@ -6172,6 +6197,34 @@ const defaultChatMessageContainer = (theme) => ({
|
|
6172
6197
|
// This makes message bubble show border in high contrast mode making each message distinguishable
|
6173
6198
|
border: '1px solid transparent'
|
6174
6199
|
});
|
6200
|
+
/**
|
6201
|
+
* @private
|
6202
|
+
* @conditional-compile-remove(data-loss-prevention)
|
6203
|
+
*/
|
6204
|
+
const defaultBlockedMessageStyleContainer = (theme) => ({
|
6205
|
+
maxWidth: '100%',
|
6206
|
+
minWidth: `${CHAT_MESSAGE_CONTAINER_MIN_WIDTH_REM}rem`,
|
6207
|
+
marginRight: '0rem',
|
6208
|
+
color: theme.palette.neutralSecondary,
|
6209
|
+
'& i': {
|
6210
|
+
paddingTop: '0.25rem'
|
6211
|
+
},
|
6212
|
+
'& p': {
|
6213
|
+
// Deal with awkward padding seen in messages from Teams.
|
6214
|
+
// For more info see https://github.com/Azure/communication-ui-library/pull/1507
|
6215
|
+
marginBlock: '0.125rem',
|
6216
|
+
paddingRight: '0.75rem',
|
6217
|
+
fontStyle: 'italic'
|
6218
|
+
},
|
6219
|
+
'& a': {
|
6220
|
+
marginBlock: '0.125rem',
|
6221
|
+
fontStyle: 'normal',
|
6222
|
+
color: theme.palette.themePrimary,
|
6223
|
+
textDecoration: 'none'
|
6224
|
+
},
|
6225
|
+
// This makes message bubble show border in high contrast mode making each message distinguishable
|
6226
|
+
border: '1px solid transparent'
|
6227
|
+
});
|
6175
6228
|
/**
|
6176
6229
|
* @private
|
6177
6230
|
*/
|
@@ -6744,20 +6797,44 @@ const ChatMessageContent = (props) => {
|
|
6744
6797
|
return React__default['default'].createElement(React__default['default'].Fragment, null);
|
6745
6798
|
}
|
6746
6799
|
};
|
6800
|
+
const MessageContentWithLiveAria = (props) => {
|
6801
|
+
return (React__default['default'].createElement("div", { "data-ui-status": props.message.status, role: "text", "aria-label": props.ariaLabel },
|
6802
|
+
React__default['default'].createElement(reactAriaLive.LiveMessage, { message: props.liveMessage, "aria-live": "polite" }),
|
6803
|
+
props.content));
|
6804
|
+
};
|
6747
6805
|
const MessageContentAsRichTextHTML = (props) => {
|
6748
6806
|
const htmlToReactParser = new htmlToReact.Parser();
|
6749
|
-
const liveAuthor = _formatString(props.liveAuthorIntro, { author: `${props.message.senderDisplayName}` });
|
6750
|
-
return (React__default['default'].createElement(
|
6751
|
-
React__default['default'].createElement(reactAriaLive.LiveMessage, { message: `${props.message.mine ? '' : liveAuthor} ${extractContent(props.message.content || '')}`, "aria-live": "polite" }),
|
6752
|
-
htmlToReactParser.parse(props.message.content)));
|
6807
|
+
const liveAuthor = _formatString(props.strings.liveAuthorIntro, { author: `${props.message.senderDisplayName}` });
|
6808
|
+
return (React__default['default'].createElement(MessageContentWithLiveAria, { message: props.message, liveMessage: `${props.message.mine ? '' : liveAuthor} ${extractContent(props.message.content || '')}`, ariaLabel: messageContentAriaText(props), content: htmlToReactParser.parse(props.message.content) }));
|
6753
6809
|
};
|
6754
6810
|
const MessageContentAsText = (props) => {
|
6755
|
-
const liveAuthor = _formatString(props.liveAuthorIntro, { author: `${props.message.senderDisplayName}` });
|
6756
|
-
return (React__default['default'].createElement(
|
6757
|
-
React__default['default'].createElement(reactAriaLive.LiveMessage, { message: `${props.message.mine ? '' : liveAuthor} ${props.message.content}`, "aria-live": "polite" }),
|
6758
|
-
React__default['default'].createElement(Linkify__default['default'], { componentDecorator: (decoratedHref, decoratedText, key) => {
|
6811
|
+
const liveAuthor = _formatString(props.strings.liveAuthorIntro, { author: `${props.message.senderDisplayName}` });
|
6812
|
+
return (React__default['default'].createElement(MessageContentWithLiveAria, { message: props.message, liveMessage: `${props.message.mine ? '' : liveAuthor} ${extractContent(props.message.content || '')}`, ariaLabel: messageContentAriaText(props), content: React__default['default'].createElement(Linkify__default['default'], { componentDecorator: (decoratedHref, decoratedText, key) => {
|
6759
6813
|
return (React__default['default'].createElement(react.Link, { target: "_blank", href: decoratedHref, key: key }, decoratedText));
|
6760
|
-
} }, props.message.content)));
|
6814
|
+
} }, props.message.content) }));
|
6815
|
+
};
|
6816
|
+
/* @conditional-compile-remove(data-loss-prevention) */
|
6817
|
+
/**
|
6818
|
+
* @private
|
6819
|
+
*/
|
6820
|
+
const BlockedMessageContent = (props) => {
|
6821
|
+
var _a;
|
6822
|
+
const Icon = React__default['default'].createElement(react.FontIcon, { iconName: 'DataLossPreventionProhibited' });
|
6823
|
+
const blockedMessage = props.message.warningText === false
|
6824
|
+
? ''
|
6825
|
+
: props.message.warningText === '' || props.message.warningText === undefined
|
6826
|
+
? props.strings.blockedWarningText
|
6827
|
+
: props.message.warningText;
|
6828
|
+
const blockedMessageLink = props.message.link;
|
6829
|
+
const blockedMessageLinkText = blockedMessageLink
|
6830
|
+
? (_a = props.message.linkText) !== null && _a !== void 0 ? _a : props.strings.blockedWarningLinkText
|
6831
|
+
: '';
|
6832
|
+
const liveAuthor = props.message.mine || props.message.senderDisplayName === undefined ? '' : props.message.senderDisplayName;
|
6833
|
+
const liveBlockedWarningText = `${liveAuthor} ${blockedMessage} ${blockedMessageLinkText}`;
|
6834
|
+
return (React__default['default'].createElement(MessageContentWithLiveAria, { message: props.message, liveMessage: liveBlockedWarningText, ariaLabel: liveBlockedWarningText, content: React__default['default'].createElement(react.Stack, { horizontal: true, wrap: true },
|
6835
|
+
Icon,
|
6836
|
+
blockedMessage && React__default['default'].createElement("p", null, blockedMessage),
|
6837
|
+
blockedMessageLink && (React__default['default'].createElement(react.Link, { target: '_blank', href: blockedMessageLink }, blockedMessageLinkText))) }));
|
6761
6838
|
};
|
6762
6839
|
// https://stackoverflow.com/questions/28899298/extract-the-text-out-of-html-string-using-javascript
|
6763
6840
|
const extractContent = (s) => {
|
@@ -6765,6 +6842,18 @@ const extractContent = (s) => {
|
|
6765
6842
|
span.innerHTML = s;
|
6766
6843
|
return span.textContent || span.innerText;
|
6767
6844
|
};
|
6845
|
+
const messageContentAriaText = (props) => {
|
6846
|
+
return props.message.content
|
6847
|
+
? props.message.mine
|
6848
|
+
? _formatString(props.strings.messageContentMineAriaText, {
|
6849
|
+
message: props.message.content
|
6850
|
+
})
|
6851
|
+
: _formatString(props.strings.messageContentAriaText, {
|
6852
|
+
author: `${props.message.senderDisplayName}`,
|
6853
|
+
message: props.message.content
|
6854
|
+
})
|
6855
|
+
: undefined;
|
6856
|
+
};
|
6768
6857
|
|
6769
6858
|
// Copyright (c) Microsoft Corporation.
|
6770
6859
|
/**
|
@@ -6798,7 +6887,7 @@ const chatMessageActionMenuProps = (menuProps) => {
|
|
6798
6887
|
return actionMenuProps;
|
6799
6888
|
};
|
6800
6889
|
|
6801
|
-
var __awaiter$
|
6890
|
+
var __awaiter$t = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
6802
6891
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
6803
6892
|
return new (P || (P = Promise))(function (resolve, reject) {
|
6804
6893
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -6823,7 +6912,7 @@ const _FileDownloadCards = (props) => {
|
|
6823
6912
|
var _a, _b;
|
6824
6913
|
return (_b = (_a = props.strings) === null || _a === void 0 ? void 0 : _a.downloadFile) !== null && _b !== void 0 ? _b : localeStrings.downloadFile;
|
6825
6914
|
}, [(_a = props.strings) === null || _a === void 0 ? void 0 : _a.downloadFile, localeStrings.downloadFile]);
|
6826
|
-
const fileDownloadHandler = React.useCallback((userId, file) => __awaiter$
|
6915
|
+
const fileDownloadHandler = React.useCallback((userId, file) => __awaiter$t(void 0, void 0, void 0, function* () {
|
6827
6916
|
if (!props.downloadHandler) {
|
6828
6917
|
window.open(file.url, '_blank', 'noopener,noreferrer');
|
6829
6918
|
}
|
@@ -6900,7 +6989,10 @@ const MessageBubble = (props) => {
|
|
6900
6989
|
const messageRef = React.useRef(null);
|
6901
6990
|
const messageActionButtonRef = React.useRef(null);
|
6902
6991
|
const [chatMessageActionFlyoutTarget, setChatMessageActionFlyoutTarget] = React.useState(undefined);
|
6903
|
-
const chatActionsEnabled = !disableEditing &&
|
6992
|
+
const chatActionsEnabled = !disableEditing &&
|
6993
|
+
message.status !== 'sending' &&
|
6994
|
+
!!message.mine &&
|
6995
|
+
/* @conditional-compile-remove(data-loss-prevention) */ message.messageType !== 'blocked';
|
6904
6996
|
const [messageReadBy, setMessageReadBy] = React.useState([]);
|
6905
6997
|
const actionMenuProps = wasInteractionByTouch
|
6906
6998
|
? undefined
|
@@ -6911,8 +7003,10 @@ const MessageBubble = (props) => {
|
|
6911
7003
|
// Force show the action button while the flyout is open (otherwise this will dismiss when the pointer is hovered over the flyout)
|
6912
7004
|
forceShow: chatMessageActionFlyoutTarget === messageActionButtonRef,
|
6913
7005
|
onActionButtonClick: () => {
|
6914
|
-
|
6915
|
-
|
7006
|
+
if (message.messageType === 'chat') {
|
7007
|
+
props.onActionButtonClick(message, setMessageReadBy);
|
7008
|
+
setChatMessageActionFlyoutTarget(messageActionButtonRef);
|
7009
|
+
}
|
6916
7010
|
},
|
6917
7011
|
theme
|
6918
7012
|
});
|
@@ -6935,23 +7029,29 @@ const MessageBubble = (props) => {
|
|
6935
7029
|
locale,
|
6936
7030
|
fileDownloadHandler
|
6937
7031
|
]);
|
6938
|
-
const
|
6939
|
-
|
6940
|
-
|
6941
|
-
|
6942
|
-
|
6943
|
-
|
6944
|
-
|
6945
|
-
|
6946
|
-
|
6947
|
-
|
7032
|
+
const editedOn = 'editedOn' in message ? message.editedOn : undefined;
|
7033
|
+
const getMessageDetails = React.useCallback(() => {
|
7034
|
+
if (messageStatus === 'failed') {
|
7035
|
+
return React__default['default'].createElement("div", { className: chatMessageFailedTagStyle(theme) }, strings.failToSendTag);
|
7036
|
+
}
|
7037
|
+
else if (message.messageType === 'chat' && editedOn) {
|
7038
|
+
return React__default['default'].createElement("div", { className: chatMessageEditedTagStyle(theme) }, strings.editedTag);
|
7039
|
+
}
|
7040
|
+
return undefined;
|
7041
|
+
}, [editedOn, message.messageType, messageStatus, strings.editedTag, strings.failToSendTag, theme]);
|
7042
|
+
const getContent = React.useCallback(() => {
|
7043
|
+
/* @conditional-compile-remove(data-loss-prevention) */
|
7044
|
+
if (message.messageType === 'blocked') {
|
7045
|
+
return (React__default['default'].createElement("div", { tabIndex: 0 },
|
7046
|
+
React__default['default'].createElement(BlockedMessageContent, { message: message, strings: strings })));
|
7047
|
+
}
|
7048
|
+
return (React__default['default'].createElement("div", { tabIndex: 0 },
|
7049
|
+
React__default['default'].createElement(ChatMessageContent, { message: message, strings: strings }),
|
7050
|
+
props.onRenderFileDownloads ? props.onRenderFileDownloads(userId, message) : defaultOnRenderFileDownloads()));
|
7051
|
+
}, [defaultOnRenderFileDownloads, message, props, strings, userId]);
|
6948
7052
|
const chatMessage = (React__default['default'].createElement(React__default['default'].Fragment, null,
|
6949
7053
|
React__default['default'].createElement("div", { ref: messageRef },
|
6950
|
-
React__default['default'].createElement(reactNorthstar.Chat.Message, { "data-ui-id": "chat-composite-message", className: react.mergeStyles(messageContainerStyle), styles: messageContainerStyle, content: React__default['default'].createElement(
|
6951
|
-
React__default['default'].createElement(ChatMessageContent, { message: message, liveAuthorIntro: strings.liveAuthorIntro, messageContentAriaText: messageContentAriaText }),
|
6952
|
-
props.onRenderFileDownloads
|
6953
|
-
? props.onRenderFileDownloads(userId, message)
|
6954
|
-
: defaultOnRenderFileDownloads()), author: React__default['default'].createElement(reactNorthstar.Text, { className: chatMessageDateStyle }, message.senderDisplayName), mine: message.mine, timestamp: React__default['default'].createElement(reactNorthstar.Text, { "data-ui-id": ids.messageTimestamp }, formattedTimestamp), details: messageStatus === 'failed' ? (React__default['default'].createElement("div", { className: chatMessageFailedTagStyle(theme) }, strings.failToSendTag)) : message.editedOn ? (React__default['default'].createElement("div", { className: chatMessageEditedTagStyle(theme) }, strings.editedTag)) : undefined, positionActionMenu: false, actionMenu: actionMenuProps, onTouchStart: () => setWasInteractionByTouch(true), onPointerDown: () => setWasInteractionByTouch(false), onKeyDown: () => setWasInteractionByTouch(false), onBlur: () => setWasInteractionByTouch(false), onClick: () => {
|
7054
|
+
React__default['default'].createElement(reactNorthstar.Chat.Message, { "data-ui-id": "chat-composite-message", className: react.mergeStyles(messageContainerStyle), styles: messageContainerStyle, content: getContent(), author: React__default['default'].createElement(reactNorthstar.Text, { className: chatMessageDateStyle }, message.senderDisplayName), mine: message.mine, timestamp: React__default['default'].createElement(reactNorthstar.Text, { "data-ui-id": ids.messageTimestamp }, formattedTimestamp), details: getMessageDetails(), positionActionMenu: false, actionMenu: actionMenuProps, onTouchStart: () => setWasInteractionByTouch(true), onPointerDown: () => setWasInteractionByTouch(false), onKeyDown: () => setWasInteractionByTouch(false), onBlur: () => setWasInteractionByTouch(false), onClick: () => {
|
6955
7055
|
if (!wasInteractionByTouch) {
|
6956
7056
|
return;
|
6957
7057
|
}
|
@@ -6961,7 +7061,9 @@ const MessageBubble = (props) => {
|
|
6961
7061
|
// In doing so here we set the target of the flyout to be the message and
|
6962
7062
|
// not the 3-dot menu button to position the flyout correctly.
|
6963
7063
|
setChatMessageActionFlyoutTarget(messageRef);
|
6964
|
-
|
7064
|
+
if (message.messageType === 'chat') {
|
7065
|
+
props.onActionButtonClick(message, setMessageReadBy);
|
7066
|
+
}
|
6965
7067
|
} })),
|
6966
7068
|
chatActionsEnabled && (React__default['default'].createElement(ChatMessageActionFlyout, { hidden: !chatMessageActionFlyoutTarget, target: chatMessageActionFlyoutTarget, increaseFlyoutItemSize: wasInteractionByTouch, onDismiss: onActionFlyoutDismiss, onEditClick: onEditClick, onRemoveClick: onRemoveClick, onResendClick: onResendClick, strings: strings, messageReadBy: messageReadBy, messageStatus: messageStatus !== null && messageStatus !== void 0 ? messageStatus : 'failed', remoteParticipantsCount: remoteParticipantsCount, onRenderAvatar: onRenderAvatar, showMessageStatus: showMessageStatus }))));
|
6967
7069
|
return chatMessage;
|
@@ -6971,7 +7073,7 @@ const ChatMessageComponentAsMessageBubble = React__default['default'].memo(Messa
|
|
6971
7073
|
|
6972
7074
|
// Copyright (c) Microsoft Corporation.
|
6973
7075
|
// Licensed under the MIT license.
|
6974
|
-
var __awaiter$
|
7076
|
+
var __awaiter$s = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
6975
7077
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
6976
7078
|
return new (P || (P = Promise))(function (resolve, reject) {
|
6977
7079
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -6987,28 +7089,26 @@ const ChatMessageComponent = (props) => {
|
|
6987
7089
|
const [isEditing, setIsEditing] = React.useState(false);
|
6988
7090
|
const onEditClick = React.useCallback(() => setIsEditing(true), [setIsEditing]);
|
6989
7091
|
const { onDeleteMessage, onSendMessage, message } = props;
|
7092
|
+
const clientMessageId = 'clientMessageId' in message ? message.clientMessageId : undefined;
|
7093
|
+
const content = 'content' in message ? message.content : undefined;
|
6990
7094
|
const onRemoveClick = React.useCallback(() => {
|
6991
7095
|
if (onDeleteMessage && message.messageId) {
|
6992
7096
|
onDeleteMessage(message.messageId);
|
6993
7097
|
}
|
6994
7098
|
// when fail to send, message does not have message id, delete message using clientmessageid
|
6995
|
-
else if (onDeleteMessage && message.clientMessageId) {
|
6996
|
-
onDeleteMessage(
|
7099
|
+
else if (onDeleteMessage && message.messageType === 'chat' && clientMessageId) {
|
7100
|
+
onDeleteMessage(clientMessageId);
|
6997
7101
|
}
|
6998
|
-
}, [message.messageId, message.
|
7102
|
+
}, [onDeleteMessage, message.messageId, message.messageType, clientMessageId]);
|
6999
7103
|
const onResendClick = React.useCallback(() => {
|
7000
|
-
|
7001
|
-
|
7002
|
-
|
7003
|
-
|
7004
|
-
|
7005
|
-
return React__default['default'].createElement(React__default['default'].Fragment, null);
|
7006
|
-
}
|
7007
|
-
else if (isEditing) {
|
7008
|
-
return (React__default['default'].createElement(ChatMessageComponentAsEditBox, { message: message, inlineEditButtons: props.inlineAcceptRejectEditButtons, strings: props.strings, onSubmit: (text, metadata, options) => __awaiter$r(void 0, void 0, void 0, function* () {
|
7104
|
+
onDeleteMessage && clientMessageId && onDeleteMessage(clientMessageId);
|
7105
|
+
onSendMessage && onSendMessage(content !== undefined ? content : '');
|
7106
|
+
}, [clientMessageId, content, onSendMessage, onDeleteMessage]);
|
7107
|
+
if (isEditing && message.messageType === 'chat') {
|
7108
|
+
return (React__default['default'].createElement(ChatMessageComponentAsEditBox, { message: message, inlineEditButtons: props.inlineAcceptRejectEditButtons, strings: props.strings, onSubmit: (text, metadata, options) => __awaiter$s(void 0, void 0, void 0, function* () {
|
7009
7109
|
props.onUpdateMessage &&
|
7010
|
-
|
7011
|
-
(yield props.onUpdateMessage(
|
7110
|
+
message.messageId &&
|
7111
|
+
(yield props.onUpdateMessage(message.messageId, text, metadata, options));
|
7012
7112
|
setIsEditing(false);
|
7013
7113
|
}), onCancel: () => {
|
7014
7114
|
setIsEditing(false);
|
@@ -7097,7 +7197,7 @@ const isShortHeight = (containerHeightRem) => containerHeightRem <= _convertRemT
|
|
7097
7197
|
*
|
7098
7198
|
* if MessageId of B is larger than message Id of A, then B is created after A
|
7099
7199
|
* if the last read message is created after the message A is sent, then user should have read message A as well */
|
7100
|
-
|
7200
|
+
var getParticipantsWhoHaveReadMessage = (message, readReceiptsBySenderId) => {
|
7101
7201
|
return (Object.entries(readReceiptsBySenderId)
|
7102
7202
|
// Filter to only read receipts that match the message OR the participant has read a different message after this message has been created
|
7103
7203
|
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
@@ -7111,7 +7211,7 @@ const getParticipantsWhoHaveReadMessage = (message, readReceiptsBySenderId) => {
|
|
7111
7211
|
|
7112
7212
|
// Copyright (c) Microsoft Corporation.
|
7113
7213
|
// Licensed under the MIT license.
|
7114
|
-
var __awaiter$
|
7214
|
+
var __awaiter$r = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
7115
7215
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
7116
7216
|
return new (P || (P = Promise))(function (resolve, reject) {
|
7117
7217
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -7207,7 +7307,7 @@ const DefaultSystemMessage = (props) => {
|
|
7207
7307
|
return React__default['default'].createElement(React__default['default'].Fragment, null);
|
7208
7308
|
};
|
7209
7309
|
const memoizeAllMessages = memoizeFnAll((_messageKey, message, showMessageDate, showMessageStatus, onRenderAvatar, shouldOverlapAvatarAndMessage, styles, onRenderMessageStatus, defaultStatusRenderer, defaultChatMessageRenderer, strings, theme, _attached, statusToRender, participantCount, readCount, onRenderMessage, onUpdateMessage, onDeleteMessage, onSendMessage, disableEditing) => {
|
7210
|
-
var _a, _b, _c, _d, _e, _f, _g;
|
7310
|
+
var _a, _b, _c, _d, _e, _f, _g, _h;
|
7211
7311
|
const messageProps = {
|
7212
7312
|
message,
|
7213
7313
|
strings,
|
@@ -7217,40 +7317,54 @@ const memoizeAllMessages = memoizeFnAll((_messageKey, message, showMessageDate,
|
|
7217
7317
|
onSendMessage,
|
7218
7318
|
disableEditing
|
7219
7319
|
};
|
7320
|
+
const chatMessageItemProps = (message, messageProps) => {
|
7321
|
+
var _a, _b, _c;
|
7322
|
+
const chatMessageComponent = onRenderMessage === undefined
|
7323
|
+
? defaultChatMessageRenderer(messageProps)
|
7324
|
+
: onRenderMessage(messageProps, defaultChatMessageRenderer);
|
7325
|
+
const personaOptions = {
|
7326
|
+
hidePersonaDetails: true,
|
7327
|
+
size: react.PersonaSize.size32,
|
7328
|
+
text: message.senderDisplayName,
|
7329
|
+
showOverflowTooltip: false
|
7330
|
+
};
|
7331
|
+
const chatItemMessageStyle = (message.mine ? styles === null || styles === void 0 ? void 0 : styles.myChatItemMessageContainer : styles === null || styles === void 0 ? void 0 : styles.chatItemMessageContainer) ||
|
7332
|
+
defaultChatItemMessageContainer(shouldOverlapAvatarAndMessage);
|
7333
|
+
const chatGutterStyles = message.attached === 'top' || message.attached === false ? gutterWithAvatar : gutterWithHiddenAvatar;
|
7334
|
+
return {
|
7335
|
+
gutter: {
|
7336
|
+
styles: chatGutterStyles,
|
7337
|
+
content: message.mine ? ('') : onRenderAvatar ? (onRenderAvatar((_a = message.senderId) !== null && _a !== void 0 ? _a : '', personaOptions)) : (React__default['default'].createElement(react.Persona, Object.assign({}, personaOptions)))
|
7338
|
+
},
|
7339
|
+
contentPosition: message.mine ? 'end' : 'start',
|
7340
|
+
message: {
|
7341
|
+
styles: chatItemMessageStyle,
|
7342
|
+
content: (React__default['default'].createElement(reactNorthstar.Flex, { hAlign: message.mine ? 'end' : undefined, vAlign: "end" },
|
7343
|
+
chatMessageComponent,
|
7344
|
+
React__default['default'].createElement("div", { className: react.mergeStyles(messageStatusContainerStyle((_b = message.mine) !== null && _b !== void 0 ? _b : false), (styles === null || styles === void 0 ? void 0 : styles.messageStatusContainer) ? styles.messageStatusContainer((_c = message.mine) !== null && _c !== void 0 ? _c : false) : '') }, showMessageStatus && statusToRender ? (onRenderMessageStatus ? (onRenderMessageStatus({ status: statusToRender })) : (defaultStatusRenderer(message, statusToRender, participantCount !== null && participantCount !== void 0 ? participantCount : 0, readCount !== null && readCount !== void 0 ? readCount : 0))) : (React__default['default'].createElement("div", { className: react.mergeStyles(noMessageStatusStyle) })))))
|
7345
|
+
},
|
7346
|
+
attached: message.attached,
|
7347
|
+
key: _messageKey
|
7348
|
+
};
|
7349
|
+
};
|
7350
|
+
/* @conditional-compile-remove(data-loss-prevention) */
|
7351
|
+
// Similar logic as switch statement case 'chat', if statement for conditional compile (merge logic to switch case when stablize)
|
7352
|
+
if (message.messageType === 'blocked') {
|
7353
|
+
const myChatMessageStyle = message.status === 'failed'
|
7354
|
+
? (_b = (_a = styles === null || styles === void 0 ? void 0 : styles.failedMyChatMessageContainer) !== null && _a !== void 0 ? _a : styles === null || styles === void 0 ? void 0 : styles.myChatMessageContainer) !== null && _b !== void 0 ? _b : FailedMyChatMessageContainer
|
7355
|
+
: (_c = styles === null || styles === void 0 ? void 0 : styles.myChatMessageContainer) !== null && _c !== void 0 ? _c : defaultBlockedMessageStyleContainer(theme);
|
7356
|
+
const blockedMessageStyle = (_d = styles === null || styles === void 0 ? void 0 : styles.blockedMessageContainer) !== null && _d !== void 0 ? _d : defaultBlockedMessageStyleContainer(theme);
|
7357
|
+
messageProps.messageContainerStyle = message.mine ? myChatMessageStyle : blockedMessageStyle;
|
7358
|
+
return chatMessageItemProps(message, messageProps);
|
7359
|
+
}
|
7220
7360
|
switch (message.messageType) {
|
7221
7361
|
case 'chat': {
|
7222
7362
|
const myChatMessageStyle = message.status === 'failed'
|
7223
|
-
? (
|
7224
|
-
: (
|
7225
|
-
const chatMessageStyle = (
|
7363
|
+
? (_f = (_e = styles === null || styles === void 0 ? void 0 : styles.failedMyChatMessageContainer) !== null && _e !== void 0 ? _e : styles === null || styles === void 0 ? void 0 : styles.myChatMessageContainer) !== null && _f !== void 0 ? _f : FailedMyChatMessageContainer
|
7364
|
+
: (_g = styles === null || styles === void 0 ? void 0 : styles.myChatMessageContainer) !== null && _g !== void 0 ? _g : defaultMyChatMessageContainer;
|
7365
|
+
const chatMessageStyle = (_h = styles === null || styles === void 0 ? void 0 : styles.chatMessageContainer) !== null && _h !== void 0 ? _h : defaultChatMessageContainer(theme);
|
7226
7366
|
messageProps.messageContainerStyle = message.mine ? myChatMessageStyle : chatMessageStyle;
|
7227
|
-
|
7228
|
-
? defaultChatMessageRenderer(messageProps)
|
7229
|
-
: onRenderMessage(messageProps, defaultChatMessageRenderer);
|
7230
|
-
const personaOptions = {
|
7231
|
-
hidePersonaDetails: true,
|
7232
|
-
size: react.PersonaSize.size32,
|
7233
|
-
text: message.senderDisplayName,
|
7234
|
-
showOverflowTooltip: false
|
7235
|
-
};
|
7236
|
-
const chatItemMessageStyle = (message.mine ? styles === null || styles === void 0 ? void 0 : styles.myChatItemMessageContainer : styles === null || styles === void 0 ? void 0 : styles.chatItemMessageContainer) ||
|
7237
|
-
defaultChatItemMessageContainer(shouldOverlapAvatarAndMessage);
|
7238
|
-
const chatGutterStyles = message.attached === 'top' || message.attached === false ? gutterWithAvatar : gutterWithHiddenAvatar;
|
7239
|
-
return {
|
7240
|
-
gutter: {
|
7241
|
-
styles: chatGutterStyles,
|
7242
|
-
content: message.mine ? ('') : onRenderAvatar ? (onRenderAvatar((_e = message.senderId) !== null && _e !== void 0 ? _e : '', personaOptions)) : (React__default['default'].createElement(react.Persona, Object.assign({}, personaOptions)))
|
7243
|
-
},
|
7244
|
-
contentPosition: message.mine ? 'end' : 'start',
|
7245
|
-
message: {
|
7246
|
-
styles: chatItemMessageStyle,
|
7247
|
-
content: (React__default['default'].createElement(reactNorthstar.Flex, { hAlign: message.mine ? 'end' : undefined, vAlign: "end" },
|
7248
|
-
chatMessageComponent,
|
7249
|
-
React__default['default'].createElement("div", { className: react.mergeStyles(messageStatusContainerStyle((_f = message.mine) !== null && _f !== void 0 ? _f : false), (styles === null || styles === void 0 ? void 0 : styles.messageStatusContainer) ? styles.messageStatusContainer((_g = message.mine) !== null && _g !== void 0 ? _g : false) : '') }, showMessageStatus && statusToRender ? (onRenderMessageStatus ? (onRenderMessageStatus({ status: statusToRender })) : (defaultStatusRenderer(message, statusToRender, participantCount !== null && participantCount !== void 0 ? participantCount : 0, readCount !== null && readCount !== void 0 ? readCount : 0))) : (React__default['default'].createElement("div", { className: react.mergeStyles(noMessageStatusStyle) })))))
|
7250
|
-
},
|
7251
|
-
attached: message.attached,
|
7252
|
-
key: _messageKey
|
7253
|
-
};
|
7367
|
+
return chatMessageItemProps(message, messageProps);
|
7254
7368
|
}
|
7255
7369
|
case 'system': {
|
7256
7370
|
messageProps.messageContainerStyle = styles === null || styles === void 0 ? void 0 : styles.systemMessageContainer;
|
@@ -7346,7 +7460,7 @@ const MessageThread = (props) => {
|
|
7346
7460
|
setChatMessagesInitialized(chatMessagesInitialized);
|
7347
7461
|
};
|
7348
7462
|
// we try to only send those message status if user is scrolled to the bottom.
|
7349
|
-
const sendMessageStatusIfAtBottom = React.useCallback(() => __awaiter$
|
7463
|
+
const sendMessageStatusIfAtBottom = React.useCallback(() => __awaiter$r(void 0, void 0, void 0, function* () {
|
7350
7464
|
if (!isAtBottomOfScrollRef.current ||
|
7351
7465
|
!document.hasFocus() ||
|
7352
7466
|
!messagesRef.current ||
|
@@ -7397,7 +7511,7 @@ const MessageThread = (props) => {
|
|
7397
7511
|
setIsAtBottomOfScrollRef(atBottom);
|
7398
7512
|
}, [scrollToBottom, sendMessageStatusIfAtBottom]);
|
7399
7513
|
// Infinite scrolling + threadInitialize function
|
7400
|
-
const fetchNewMessageWhenAtTop = React.useCallback(() => __awaiter$
|
7514
|
+
const fetchNewMessageWhenAtTop = React.useCallback(() => __awaiter$r(void 0, void 0, void 0, function* () {
|
7401
7515
|
if (!isLoadingChatMessagesRef.current) {
|
7402
7516
|
if (onLoadPreviousChatMessages) {
|
7403
7517
|
isLoadingChatMessagesRef.current = true;
|
@@ -7515,7 +7629,8 @@ const MessageThread = (props) => {
|
|
7515
7629
|
const strings = React.useMemo(() => (Object.assign(Object.assign({}, localeStrings), props.strings)), [localeStrings, props.strings]);
|
7516
7630
|
// To rerender the defaultChatMessageRenderer if app running across days(every new day chat time stamp need to be regenerated)
|
7517
7631
|
const defaultChatMessageRenderer = React.useCallback((messageProps) => {
|
7518
|
-
if (messageProps.message.messageType === 'chat'
|
7632
|
+
if (messageProps.message.messageType === 'chat' ||
|
7633
|
+
/* @conditional-compile-remove(data-loss-prevention) */ messageProps.message.messageType === 'blocked') {
|
7519
7634
|
return (React__default['default'].createElement(ChatMessageComponent, Object.assign({}, messageProps, { onRenderFileDownloads: onRenderFileDownloads,
|
7520
7635
|
/* @conditional-compile-remove(file-sharing) */
|
7521
7636
|
strings: strings, message: messageProps.message, userId: props.userId, remoteParticipantsCount: participantCount ? participantCount - 1 : 0, inlineAcceptRejectEditButtons: !isNarrow, onRenderAvatar: onRenderAvatar, showMessageStatus: showMessageStatus, messageStatus: messageProps.message.status, onActionButtonClick: onActionButtonClickMemo,
|
@@ -7554,8 +7669,9 @@ const MessageThread = (props) => {
|
|
7554
7669
|
return messages.map((message, index) => {
|
7555
7670
|
let key = message.messageId;
|
7556
7671
|
let statusToRender = undefined;
|
7557
|
-
if (message.messageType === 'chat'
|
7558
|
-
|
7672
|
+
if (message.messageType === 'chat' ||
|
7673
|
+
/* @conditional-compile-remove(data-loss-prevention) */ message.messageType === 'blocked') {
|
7674
|
+
if ((!message.messageId || message.messageId === '') && 'clientMessageId' in message) {
|
7559
7675
|
key = message.clientMessageId;
|
7560
7676
|
}
|
7561
7677
|
if (showMessageStatus && message.mine) {
|
@@ -7581,7 +7697,10 @@ const MessageThread = (props) => {
|
|
7581
7697
|
return memoizedMessageFn(key !== null && key !== void 0 ? key : 'id_' + index, message, showMessageDate, showMessageStatus, onRenderAvatar, isNarrow, styles, onRenderMessageStatus, defaultStatusRenderer, defaultChatMessageRenderer, strings, theme,
|
7582
7698
|
// Temporary solution to make sure we re-render if attach attribute is changed.
|
7583
7699
|
// The proper fix should be in selector.
|
7584
|
-
message.messageType === 'chat'
|
7700
|
+
message.messageType === 'chat' ||
|
7701
|
+
/* @conditional-compile-remove(data-loss-prevention) */ message.messageType === 'blocked'
|
7702
|
+
? message.attached
|
7703
|
+
: undefined, statusToRender, participantCount, readCountForHoveredIndicator, onRenderMessage, onUpdateMessage, onDeleteMessage, onSendMessage, props.disableEditing);
|
7585
7704
|
});
|
7586
7705
|
}), [
|
7587
7706
|
messages,
|
@@ -11718,7 +11837,7 @@ const DevicesButton = (props) => {
|
|
11718
11837
|
|
11719
11838
|
// Copyright (c) Microsoft Corporation.
|
11720
11839
|
// Licensed under the MIT license.
|
11721
|
-
var __awaiter$
|
11840
|
+
var __awaiter$q = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
11722
11841
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
11723
11842
|
return new (P || (P = Promise))(function (resolve, reject) {
|
11724
11843
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -11756,7 +11875,7 @@ const CameraButton = (props) => {
|
|
11756
11875
|
const toggleAnnouncerString = React.useCallback((isCameraOn) => {
|
11757
11876
|
setAnnouncerString(!isCameraOn ? strings.cameraActionTurnedOffAnnouncement : strings.cameraActionTurnedOnAnnouncement);
|
11758
11877
|
}, [strings.cameraActionTurnedOffAnnouncement, strings.cameraActionTurnedOnAnnouncement]);
|
11759
|
-
const onToggleClick = React.useCallback(() => __awaiter$
|
11878
|
+
const onToggleClick = React.useCallback(() => __awaiter$q(void 0, void 0, void 0, function* () {
|
11760
11879
|
// Throttle click on camera, need to await onToggleCamera then allow another click
|
11761
11880
|
if (onToggleCamera) {
|
11762
11881
|
setWaitForCamera(true);
|
@@ -11921,7 +12040,7 @@ const lightThemeCallButtonStyles = {
|
|
11921
12040
|
|
11922
12041
|
// Copyright (c) Microsoft Corporation.
|
11923
12042
|
// Licensed under the MIT license.
|
11924
|
-
var __awaiter$
|
12043
|
+
var __awaiter$p = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
11925
12044
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
11926
12045
|
return new (P || (P = Promise))(function (resolve, reject) {
|
11927
12046
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -11962,7 +12081,7 @@ const MicrophoneButton = (props) => {
|
|
11962
12081
|
const toggleAnnouncerString = React.useCallback((isMicOn) => {
|
11963
12082
|
setAnnouncerString(!isMicOn ? strings.microphoneActionTurnedOffAnnouncement : strings.microphoneActionTurnedOnAnnouncement);
|
11964
12083
|
}, [strings.microphoneActionTurnedOffAnnouncement, strings.microphoneActionTurnedOnAnnouncement]);
|
11965
|
-
const onToggleClick = React.useCallback(() => __awaiter$
|
12084
|
+
const onToggleClick = React.useCallback(() => __awaiter$p(void 0, void 0, void 0, function* () {
|
11966
12085
|
if (onToggleMicrophone) {
|
11967
12086
|
try {
|
11968
12087
|
yield onToggleMicrophone();
|
@@ -12850,7 +12969,7 @@ const formatPhoneNumber = (phoneNumber) => {
|
|
12850
12969
|
|
12851
12970
|
// Copyright (c) Microsoft Corporation.
|
12852
12971
|
// Licensed under the MIT license.
|
12853
|
-
var __awaiter$
|
12972
|
+
var __awaiter$o = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
12854
12973
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
12855
12974
|
return new (P || (P = Promise))(function (resolve, reject) {
|
12856
12975
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -12892,10 +13011,10 @@ const DialpadButton = (props) => {
|
|
12892
13011
|
const theme = react.useTheme();
|
12893
13012
|
const { digit, index, onClick, onLongPress, isMobile = false } = props;
|
12894
13013
|
const useLongPressProps = React__default['default'].useMemo(() => ({
|
12895
|
-
onClick: () => __awaiter$
|
13014
|
+
onClick: () => __awaiter$o(void 0, void 0, void 0, function* () {
|
12896
13015
|
onClick(digit, index);
|
12897
13016
|
}),
|
12898
|
-
onLongPress: () => __awaiter$
|
13017
|
+
onLongPress: () => __awaiter$o(void 0, void 0, void 0, function* () {
|
12899
13018
|
onLongPress(digit, index);
|
12900
13019
|
}),
|
12901
13020
|
touchEventsOnly: isMobile
|
@@ -13280,6 +13399,121 @@ const _DevicePermissionDropdown = (props) => {
|
|
13280
13399
|
}, options: options !== null && options !== void 0 ? options : [], styles: styles }));
|
13281
13400
|
};
|
13282
13401
|
|
13402
|
+
// Copyright (c) Microsoft Corporation.
|
13403
|
+
/**
|
13404
|
+
* A component for displaying a Video Background Effect Option.
|
13405
|
+
*
|
13406
|
+
* @internal
|
13407
|
+
*/
|
13408
|
+
const _VideoEffectsItem = (props) => {
|
13409
|
+
var _a, _b, _c, _d, _e, _f;
|
13410
|
+
const theme = react.useTheme();
|
13411
|
+
const isSelected = (_a = props.isSelected) !== null && _a !== void 0 ? _a : false;
|
13412
|
+
const disabled = (_b = props.disabled) !== null && _b !== void 0 ? _b : false;
|
13413
|
+
const backgroundImage = (_c = props.backgroundProps) === null || _c === void 0 ? void 0 : _c.url;
|
13414
|
+
const containerStyles = React.useCallback(() => videoEffectsItemContainerStyles({
|
13415
|
+
theme,
|
13416
|
+
isSelected,
|
13417
|
+
disabled,
|
13418
|
+
backgroundImage,
|
13419
|
+
backgroundPosition,
|
13420
|
+
backgroundSize
|
13421
|
+
}), [backgroundImage, disabled, isSelected, theme]);
|
13422
|
+
return (React__default['default'].createElement(react.TooltipHost, Object.assign({}, props.tooltipProps),
|
13423
|
+
React__default['default'].createElement(react.Stack, { key: props.key, className: react.mergeStyles((_d = props.styles) === null || _d === void 0 ? void 0 : _d.root), verticalAlign: "center", horizontalAlign: "center", styles: containerStyles, onClick: disabled ? undefined : () => { var _a; return (_a = props.onSelect) === null || _a === void 0 ? void 0 : _a.call(props, props.key); }, onKeyDown: disabled
|
13424
|
+
? undefined
|
13425
|
+
: (e) => {
|
13426
|
+
var _a;
|
13427
|
+
if (e.key === 'Enter' || e.key === ' ') {
|
13428
|
+
(_a = props.onSelect) === null || _a === void 0 ? void 0 : _a.call(props, props.key);
|
13429
|
+
}
|
13430
|
+
}, tabIndex: props.disabled ? -1 : 0, "aria-label": props.ariaLabel, "aria-disabled": props.disabled, role: "button" },
|
13431
|
+
props.iconProps && (React__default['default'].createElement(react.Stack.Item, { styles: { root: (_e = props.styles) === null || _e === void 0 ? void 0 : _e.iconContainer } },
|
13432
|
+
React__default['default'].createElement(react.Icon, Object.assign({}, props.iconProps)))),
|
13433
|
+
props.title && (React__default['default'].createElement(react.Stack.Item, { styles: { root: (_f = props.styles) === null || _f === void 0 ? void 0 : _f.textContainer } },
|
13434
|
+
React__default['default'].createElement(react.Text, { variant: "small" }, props.title))))));
|
13435
|
+
};
|
13436
|
+
const backgroundPosition = 'center';
|
13437
|
+
const backgroundSize = 'cover';
|
13438
|
+
const videoEffectsItemContainerStyles = (args) => {
|
13439
|
+
const borderDefaultThickness = '1px';
|
13440
|
+
const borderActiveThickness = '2px';
|
13441
|
+
return {
|
13442
|
+
root: {
|
13443
|
+
background: args.disabled ? args.theme.palette.neutralQuaternaryAlt : undefined,
|
13444
|
+
backgroundImage: args.backgroundImage ? `url(${args.backgroundImage})` : undefined,
|
13445
|
+
backgroundPosition: args.backgroundPosition,
|
13446
|
+
backgroundSize: args.backgroundSize,
|
13447
|
+
borderRadius: '0.25rem',
|
13448
|
+
color: args.theme.palette.neutralPrimary,
|
13449
|
+
cursor: args.disabled ? 'default' : 'pointer',
|
13450
|
+
height: '3.375rem',
|
13451
|
+
position: 'relative',
|
13452
|
+
width: '4.83rem',
|
13453
|
+
// Use :after to display a border element. This is used to prevent the background image
|
13454
|
+
// resizing when the border thichkness is changed. We also want the border to be inside
|
13455
|
+
// the frame of the container, i.e. we want it to expand inwards and not outwards when
|
13456
|
+
// border thickness changes from hover/selection.
|
13457
|
+
':after': {
|
13458
|
+
content: '""',
|
13459
|
+
position: 'absolute',
|
13460
|
+
boxSizing: 'border-box',
|
13461
|
+
border: args.isSelected
|
13462
|
+
? `${borderActiveThickness} solid ${args.theme.palette.themePrimary}`
|
13463
|
+
: `${borderDefaultThickness} solid ${args.theme.palette.neutralQuaternaryAlt}`,
|
13464
|
+
height: '100%',
|
13465
|
+
width: '100%',
|
13466
|
+
borderRadius: '0.25rem'
|
13467
|
+
},
|
13468
|
+
':hover': {
|
13469
|
+
':after': {
|
13470
|
+
border: args.disabled && !args.isSelected
|
13471
|
+
? `${borderDefaultThickness} solid ${args.theme.palette.neutralQuaternaryAlt}`
|
13472
|
+
: `${borderActiveThickness} solid ${args.theme.palette.themePrimary}`
|
13473
|
+
}
|
13474
|
+
}
|
13475
|
+
}
|
13476
|
+
};
|
13477
|
+
};
|
13478
|
+
|
13479
|
+
// Copyright (c) Microsoft Corporation.
|
13480
|
+
/**
|
13481
|
+
* Picker for choosing a Video Background Effect.
|
13482
|
+
*
|
13483
|
+
* @remarks
|
13484
|
+
* This functions similar to a radio group of buttons, where the user can select one of the options.
|
13485
|
+
*
|
13486
|
+
* @internal
|
13487
|
+
*/
|
13488
|
+
const _VideoBackgroundEffectsPicker = (props) => {
|
13489
|
+
var _a, _b, _c;
|
13490
|
+
const [componentControlledSelectedEffectKey, setComponentControlledSelectedEffectKey] = React__default['default'].useState(props.defaultSelectedEffectKey);
|
13491
|
+
// Warn the developer if they use the component in an incorrect controlled way.
|
13492
|
+
reactHooks.useWarnings({
|
13493
|
+
name: 'VideoBackgroundEffectsPicker',
|
13494
|
+
props,
|
13495
|
+
controlledUsage: {
|
13496
|
+
onChangeProp: 'onChange',
|
13497
|
+
valueProp: 'selectedEffectKey',
|
13498
|
+
defaultValueProp: 'defaultSelectedEffectKey'
|
13499
|
+
}
|
13500
|
+
});
|
13501
|
+
const selectedEffect = (_a = props.selectedEffectKey) !== null && _a !== void 0 ? _a : componentControlledSelectedEffectKey;
|
13502
|
+
const setSelectedEffect = (selectedEffectKey) => {
|
13503
|
+
var _a;
|
13504
|
+
setComponentControlledSelectedEffectKey(selectedEffectKey);
|
13505
|
+
(_a = props.onChange) === null || _a === void 0 ? void 0 : _a.call(props, selectedEffectKey);
|
13506
|
+
};
|
13507
|
+
const convertedOptions = props.options.map((option) => (Object.assign({ isSelected: option.key === selectedEffect, onSelect: () => setSelectedEffect(option.key) }, option)));
|
13508
|
+
const optionsByRow = props.itemsPerRow === 'wrap' ? [convertedOptions] : chunk(convertedOptions, (_b = props.itemsPerRow) !== null && _b !== void 0 ? _b : 3);
|
13509
|
+
return (React__default['default'].createElement(react.Stack, { tokens: { childrenGap: '0.5rem' } },
|
13510
|
+
React__default['default'].createElement(react.Label, { className: react.mergeStyles((_c = props.styles) === null || _c === void 0 ? void 0 : _c.label) }, props.label),
|
13511
|
+
optionsByRow.map((options, rowIndex) => {
|
13512
|
+
var _a;
|
13513
|
+
return (React__default['default'].createElement(react.Stack, { className: react.mergeStyles((_a = props.styles) === null || _a === void 0 ? void 0 : _a.rowRoot), wrap: props.itemsPerRow === 'wrap', horizontal: true, key: rowIndex, tokens: { childrenGap: '0.5rem' } }, options.map((option) => (React__default['default'].createElement(_VideoEffectsItem, Object.assign({}, option, { key: option.key }))))));
|
13514
|
+
})));
|
13515
|
+
};
|
13516
|
+
|
13283
13517
|
// Copyright (c) Microsoft Corporation.
|
13284
13518
|
/**
|
13285
13519
|
* @private
|
@@ -13852,7 +14086,7 @@ const findConditionalCompiledSelector = (component) => {
|
|
13852
14086
|
|
13853
14087
|
// Copyright (c) Microsoft Corporation.
|
13854
14088
|
// Licensed under the MIT license.
|
13855
|
-
var __awaiter$
|
14089
|
+
var __awaiter$n = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
13856
14090
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
13857
14091
|
return new (P || (P = Promise))(function (resolve, reject) {
|
13858
14092
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -13875,35 +14109,35 @@ const createDefaultChatHandlers = memoizeOne__default['default']((chatClient, ch
|
|
13875
14109
|
let messageIterator = undefined;
|
13876
14110
|
let readReceiptIterator = undefined;
|
13877
14111
|
return {
|
13878
|
-
onSendMessage: (content, options) => __awaiter$
|
14112
|
+
onSendMessage: (content, options) => __awaiter$n(void 0, void 0, void 0, function* () {
|
13879
14113
|
const sendMessageRequest = {
|
13880
14114
|
content,
|
13881
14115
|
senderDisplayName: chatClient.getState().displayName
|
13882
14116
|
};
|
13883
14117
|
yield chatThreadClient.sendMessage(sendMessageRequest, options);
|
13884
14118
|
}),
|
13885
|
-
onUpdateMessage: (messageId, content, metadata, options) => __awaiter$
|
14119
|
+
onUpdateMessage: (messageId, content, metadata, options) => __awaiter$n(void 0, void 0, void 0, function* () {
|
13886
14120
|
const updatedMetadata = metadata ? Object.assign({}, metadata) : {};
|
13887
14121
|
updatedMetadata['fileSharingMetadata'] = JSON.stringify((options === null || options === void 0 ? void 0 : options.attachedFilesMetadata) || []);
|
13888
14122
|
yield chatThreadClient.updateMessage(messageId, { content, metadata: updatedMetadata });
|
13889
14123
|
}),
|
13890
|
-
onDeleteMessage: (messageId) => __awaiter$
|
14124
|
+
onDeleteMessage: (messageId) => __awaiter$n(void 0, void 0, void 0, function* () {
|
13891
14125
|
yield chatThreadClient.deleteMessage(messageId);
|
13892
14126
|
}),
|
13893
14127
|
// This handler is designed for chatThread to consume
|
13894
|
-
onMessageSeen: (chatMessageId) => __awaiter$
|
14128
|
+
onMessageSeen: (chatMessageId) => __awaiter$n(void 0, void 0, void 0, function* () {
|
13895
14129
|
yield chatThreadClient.sendReadReceipt({ chatMessageId });
|
13896
14130
|
}),
|
13897
|
-
onTyping: () => __awaiter$
|
14131
|
+
onTyping: () => __awaiter$n(void 0, void 0, void 0, function* () {
|
13898
14132
|
yield chatThreadClient.sendTypingNotification();
|
13899
14133
|
}),
|
13900
|
-
onRemoveParticipant: (userId) => __awaiter$
|
14134
|
+
onRemoveParticipant: (userId) => __awaiter$n(void 0, void 0, void 0, function* () {
|
13901
14135
|
yield chatThreadClient.removeParticipant(fromFlatCommunicationIdentifier(userId));
|
13902
14136
|
}),
|
13903
|
-
updateThreadTopicName: (topicName) => __awaiter$
|
14137
|
+
updateThreadTopicName: (topicName) => __awaiter$n(void 0, void 0, void 0, function* () {
|
13904
14138
|
yield chatThreadClient.updateTopic(topicName);
|
13905
14139
|
}),
|
13906
|
-
onLoadPreviousChatMessages: (messagesToLoad) => __awaiter$
|
14140
|
+
onLoadPreviousChatMessages: (messagesToLoad) => __awaiter$n(void 0, void 0, void 0, function* () {
|
13907
14141
|
var _a, _b, _c;
|
13908
14142
|
if (messageIterator === undefined) {
|
13909
14143
|
// Lazy definition so that errors in the method call are reported correctly.
|
@@ -14153,6 +14387,10 @@ const PARTICIPANTS_THRESHOLD = 20;
|
|
14153
14387
|
* @private
|
14154
14388
|
*/
|
14155
14389
|
const MINUTE_IN_MS = 1000 * 60;
|
14390
|
+
/**
|
14391
|
+
* @private
|
14392
|
+
*/
|
14393
|
+
const DEFAULT_DATA_LOSS_PREVENTION_POLICY_URL = 'https://go.microsoft.com/fwlink/?LinkId=2132837';
|
14156
14394
|
/**
|
14157
14395
|
* @private
|
14158
14396
|
*
|
@@ -14197,39 +14435,49 @@ const updateMessagesWithAttached = (chatMessagesWithStatus) => {
|
|
14197
14435
|
chatMessagesWithStatus.sort(compareMessages);
|
14198
14436
|
chatMessagesWithStatus.forEach((message, index, messages) => {
|
14199
14437
|
var _a, _b;
|
14200
|
-
if (message.messageType
|
14201
|
-
|
14202
|
-
|
14203
|
-
|
14204
|
-
|
14205
|
-
|
14206
|
-
|
14207
|
-
|
14208
|
-
|
14209
|
-
|
14210
|
-
|
14211
|
-
|
14212
|
-
|
14213
|
-
|
14214
|
-
|
14215
|
-
|
14216
|
-
|
14217
|
-
|
14218
|
-
|
14219
|
-
|
14220
|
-
|
14221
|
-
|
14222
|
-
|
14223
|
-
|
14224
|
-
|
14438
|
+
if (message.messageType === 'chat' ||
|
14439
|
+
/* @conditional-compile-remove(data-loss-prevention) */ message.messageType === 'blocked') {
|
14440
|
+
/**
|
14441
|
+
* Attached === true means it is within a group of messages in the current order
|
14442
|
+
* Attached === top/bottom means it is on the top/bottom boundary
|
14443
|
+
* Attached === false means it is just a single message
|
14444
|
+
* A group of messages: continuous messages that belong to the same sender and not intercepted by other senders.
|
14445
|
+
*/
|
14446
|
+
let attached = false;
|
14447
|
+
const previousMessage = index > 0 ? messages[index - 1] : undefined;
|
14448
|
+
const nextMessage = index === messages.length - 1 ? undefined : messages[index + 1];
|
14449
|
+
const previousSenderId = (previousMessage === null || previousMessage === void 0 ? void 0 : previousMessage.messageType) === 'chat' ||
|
14450
|
+
/* @conditional-compile-remove(data-loss-prevention) */ (previousMessage === null || previousMessage === void 0 ? void 0 : previousMessage.messageType) === 'blocked'
|
14451
|
+
? previousMessage.senderId
|
14452
|
+
: undefined;
|
14453
|
+
const nextSenderId = (nextMessage === null || nextMessage === void 0 ? void 0 : nextMessage.messageType) === 'chat' ||
|
14454
|
+
/* @conditional-compile-remove(data-loss-prevention) */ (nextMessage === null || nextMessage === void 0 ? void 0 : nextMessage.messageType) === 'blocked'
|
14455
|
+
? nextMessage.senderId
|
14456
|
+
: undefined;
|
14457
|
+
const timediff = new Date((_a = message === null || message === void 0 ? void 0 : message.createdOn) !== null && _a !== void 0 ? _a : '').getTime() - new Date((_b = previousMessage === null || previousMessage === void 0 ? void 0 : previousMessage.createdOn) !== null && _b !== void 0 ? _b : '').getTime();
|
14458
|
+
const diffMins = Math.round(timediff / MINUTE_IN_MS); // minutes
|
14459
|
+
if (previousSenderId !== message.senderId) {
|
14460
|
+
attached = message.senderId === nextSenderId ? 'top' : false;
|
14461
|
+
}
|
14462
|
+
else if (diffMins && diffMins >= 5) {
|
14463
|
+
// if there are more than or equal to 5 mins time gap between messages do not attach and show time stamp
|
14464
|
+
attached = false;
|
14465
|
+
}
|
14466
|
+
else {
|
14467
|
+
attached = message.senderId === nextSenderId ? true : 'bottom';
|
14468
|
+
}
|
14469
|
+
message.attached = attached;
|
14225
14470
|
}
|
14226
|
-
message.attached = attached;
|
14227
14471
|
});
|
14228
14472
|
};
|
14229
14473
|
|
14230
14474
|
// Copyright (c) Microsoft Corporation.
|
14231
14475
|
const memoizedAllConvertChatMessage = memoizeFnAll((_key, chatMessage, userId, isSeen, isLargeGroup) => {
|
14232
14476
|
const messageType = chatMessage.type.toLowerCase();
|
14477
|
+
/* @conditional-compile-remove(data-loss-prevention) */
|
14478
|
+
if (chatMessage.policyViolation) {
|
14479
|
+
return convertToUiBlockedMessage(chatMessage, userId, isSeen, isLargeGroup);
|
14480
|
+
}
|
14233
14481
|
if (messageType === ACSKnownMessageType.text ||
|
14234
14482
|
messageType === ACSKnownMessageType.richtextHtml ||
|
14235
14483
|
messageType === ACSKnownMessageType.html) {
|
@@ -14253,6 +14501,23 @@ const extractAttachedFilesMetadata = (metadata) => {
|
|
14253
14501
|
return [];
|
14254
14502
|
}
|
14255
14503
|
};
|
14504
|
+
/* @conditional-compile-remove(data-loss-prevention) */
|
14505
|
+
const convertToUiBlockedMessage = (message, userId, isSeen, isLargeGroup) => {
|
14506
|
+
var _a;
|
14507
|
+
const messageSenderId = message.sender !== undefined ? toFlatCommunicationIdentifier(message.sender) : userId;
|
14508
|
+
return {
|
14509
|
+
messageType: 'blocked',
|
14510
|
+
createdOn: message.createdOn,
|
14511
|
+
warningText: (_a = message.content) === null || _a === void 0 ? void 0 : _a.message,
|
14512
|
+
status: !isLargeGroup && message.status === 'delivered' && isSeen ? 'seen' : message.status,
|
14513
|
+
senderDisplayName: message.senderDisplayName,
|
14514
|
+
senderId: messageSenderId,
|
14515
|
+
messageId: message.id,
|
14516
|
+
deletedOn: message.deletedOn,
|
14517
|
+
mine: messageSenderId === userId,
|
14518
|
+
link: DEFAULT_DATA_LOSS_PREVENTION_POLICY_URL
|
14519
|
+
};
|
14520
|
+
};
|
14256
14521
|
const convertToUiChatMessage = (message, userId, isSeen, isLargeGroup) => {
|
14257
14522
|
var _a;
|
14258
14523
|
const messageSenderId = message.sender !== undefined ? toFlatCommunicationIdentifier(message.sender) : userId;
|
@@ -14341,7 +14606,7 @@ const messageThreadSelector = reselect.createSelector([getUserId, getChatMessage
|
|
14341
14606
|
// TODO: Add support for topicUpdated system messages in MessageThread component.
|
14342
14607
|
// message.type === ACSKnownMessageType.topicUpdated ||
|
14343
14608
|
message.clientMessageId !== undefined)
|
14344
|
-
.filter(
|
14609
|
+
.filter(isMessageValidToRender)
|
14345
14610
|
.map((message) => {
|
14346
14611
|
var _a;
|
14347
14612
|
return memoizedFn((_a = message.id) !== null && _a !== void 0 ? _a : message.clientMessageId, message, userId, message.createdOn <= latestReadTime, isLargeGroup);
|
@@ -14361,7 +14626,7 @@ const sanitizedMessageContentType = (type) => {
|
|
14361
14626
|
? lowerCaseType
|
14362
14627
|
: 'unknown';
|
14363
14628
|
};
|
14364
|
-
const
|
14629
|
+
const isMessageValidToRender = (message) => {
|
14365
14630
|
var _a, _b;
|
14366
14631
|
if (message.deletedOn) {
|
14367
14632
|
return false;
|
@@ -14369,6 +14634,10 @@ const messagesWithContentOrFileSharingMetadata = (message) => {
|
|
14369
14634
|
if ((_a = message.metadata) === null || _a === void 0 ? void 0 : _a['fileSharingMetadata']) {
|
14370
14635
|
return true;
|
14371
14636
|
}
|
14637
|
+
/* @conditional-compile-remove(data-loss-prevention) */
|
14638
|
+
if (message.policyViolation) {
|
14639
|
+
return true;
|
14640
|
+
}
|
14372
14641
|
return !!(message.content && ((_b = message.content) === null || _b === void 0 ? void 0 : _b.message) !== '');
|
14373
14642
|
};
|
14374
14643
|
|
@@ -14640,7 +14909,7 @@ const chatStatefulLogger = logger.createClientLogger('communication-react:chat-s
|
|
14640
14909
|
|
14641
14910
|
// Copyright (c) Microsoft Corporation.
|
14642
14911
|
// Licensed under the MIT license.
|
14643
|
-
var __awaiter$
|
14912
|
+
var __awaiter$m = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
14644
14913
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
14645
14914
|
return new (P || (P = Promise))(function (resolve, reject) {
|
14646
14915
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -14915,7 +15184,7 @@ class ChatContext$1 {
|
|
14915
15184
|
* @throws ChatError. Exceptions thrown from `f` are tagged with the failed `target.
|
14916
15185
|
*/
|
14917
15186
|
withAsyncErrorTeedToState(f, target) {
|
14918
|
-
return (...args) => __awaiter$
|
15187
|
+
return (...args) => __awaiter$m(this, void 0, void 0, function* () {
|
14919
15188
|
try {
|
14920
15189
|
return yield f(...args);
|
14921
15190
|
}
|
@@ -15017,12 +15286,17 @@ const toChatError = (target, error) => {
|
|
15017
15286
|
* @private
|
15018
15287
|
*/
|
15019
15288
|
const convertChatMessage = (message, status = 'delivered', clientMessageId) => {
|
15020
|
-
|
15289
|
+
var _a, _b;
|
15290
|
+
return Object.assign(Object.assign({}, message), { clientMessageId: clientMessageId, status,
|
15291
|
+
/* @conditional-compile-remove(data-loss-prevention) */
|
15292
|
+
policyViolation: !!(((_a = message.sender) === null || _a === void 0 ? void 0 : _a.kind) === 'microsoftTeamsUser' &&
|
15293
|
+
!!message.editedOn &&
|
15294
|
+
((_b = message.content) === null || _b === void 0 ? void 0 : _b.message) === '') });
|
15021
15295
|
};
|
15022
15296
|
|
15023
15297
|
// Copyright (c) Microsoft Corporation.
|
15024
15298
|
// Licensed under the MIT license.
|
15025
|
-
var __awaiter$
|
15299
|
+
var __awaiter$l = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
15026
15300
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
15027
15301
|
return new (P || (P = Promise))(function (resolve, reject) {
|
15028
15302
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -15107,7 +15381,7 @@ class EventSubscriber {
|
|
15107
15381
|
};
|
15108
15382
|
// This is a temporary fix that no participant message is received for onChatMessageReceived event, which should be handled by JS SDK.
|
15109
15383
|
// Without the temporary fix, there are missing 'participant joined' and 'participant left' system messages in the chat thread.
|
15110
|
-
this.fetchLastParticipantMessage = (threadId, actionType) => __awaiter$
|
15384
|
+
this.fetchLastParticipantMessage = (threadId, actionType) => __awaiter$l(this, void 0, void 0, function* () {
|
15111
15385
|
var e_1, _a;
|
15112
15386
|
try {
|
15113
15387
|
for (var _b = __asyncValues$1(this.chatClient
|
@@ -15199,7 +15473,7 @@ class EventSubscriber {
|
|
15199
15473
|
|
15200
15474
|
// Copyright (c) Microsoft Corporation.
|
15201
15475
|
// Licensed under the MIT license.
|
15202
|
-
var __awaiter$
|
15476
|
+
var __awaiter$k = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
15203
15477
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
15204
15478
|
return new (P || (P = Promise))(function (resolve, reject) {
|
15205
15479
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -15221,7 +15495,7 @@ const createDecoratedIterator = (iteratorCreator, context, decorateFn) => {
|
|
15221
15495
|
const threadsIterator = iteratorCreator(...args);
|
15222
15496
|
return {
|
15223
15497
|
next() {
|
15224
|
-
return __awaiter$
|
15498
|
+
return __awaiter$k(this, void 0, void 0, function* () {
|
15225
15499
|
const result = yield threadsIterator.next();
|
15226
15500
|
if (!result.done && result.value) {
|
15227
15501
|
decorateFn(result.value, context);
|
@@ -15236,7 +15510,7 @@ const createDecoratedIterator = (iteratorCreator, context, decorateFn) => {
|
|
15236
15510
|
const pages = threadsIterator.byPage(settings);
|
15237
15511
|
return {
|
15238
15512
|
next() {
|
15239
|
-
return __awaiter$
|
15513
|
+
return __awaiter$k(this, void 0, void 0, function* () {
|
15240
15514
|
const result = yield pages.next();
|
15241
15515
|
const page = result.value;
|
15242
15516
|
if (!result.done && result.value) {
|
@@ -15320,7 +15594,7 @@ const createDecoratedListParticipants = (chatThreadClient, context) => {
|
|
15320
15594
|
|
15321
15595
|
// Copyright (c) Microsoft Corporation.
|
15322
15596
|
// Licensed under the MIT license.
|
15323
|
-
var __awaiter$
|
15597
|
+
var __awaiter$j = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
15324
15598
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
15325
15599
|
return new (P || (P = Promise))(function (resolve, reject) {
|
15326
15600
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -15339,14 +15613,14 @@ class ProxyChatThreadClient {
|
|
15339
15613
|
return createDecoratedListMessages(chatThreadClient, this._context);
|
15340
15614
|
}
|
15341
15615
|
case 'getMessage': {
|
15342
|
-
return this._context.withAsyncErrorTeedToState((...args) => __awaiter$
|
15616
|
+
return this._context.withAsyncErrorTeedToState((...args) => __awaiter$j(this, void 0, void 0, function* () {
|
15343
15617
|
const message = yield chatThreadClient.getMessage(...args);
|
15344
15618
|
this._context.setChatMessage(chatThreadClient.threadId, convertChatMessage(message));
|
15345
15619
|
return message;
|
15346
15620
|
}), 'ChatThreadClient.getMessage');
|
15347
15621
|
}
|
15348
15622
|
case 'sendMessage': {
|
15349
|
-
return this._context.withAsyncErrorTeedToState((...args) => __awaiter$
|
15623
|
+
return this._context.withAsyncErrorTeedToState((...args) => __awaiter$j(this, void 0, void 0, function* () {
|
15350
15624
|
// Retry logic?
|
15351
15625
|
const [request, options] = args;
|
15352
15626
|
const { content } = request;
|
@@ -15386,7 +15660,7 @@ class ProxyChatThreadClient {
|
|
15386
15660
|
}), 'ChatThreadClient.sendMessage');
|
15387
15661
|
}
|
15388
15662
|
case 'addParticipants': {
|
15389
|
-
return this._context.withAsyncErrorTeedToState((...args) => __awaiter$
|
15663
|
+
return this._context.withAsyncErrorTeedToState((...args) => __awaiter$j(this, void 0, void 0, function* () {
|
15390
15664
|
const result = yield chatThreadClient.addParticipants(...args);
|
15391
15665
|
const [addRequest] = args;
|
15392
15666
|
const participantsToAdd = addRequest.participants;
|
@@ -15395,7 +15669,7 @@ class ProxyChatThreadClient {
|
|
15395
15669
|
}), 'ChatThreadClient.addParticipants');
|
15396
15670
|
}
|
15397
15671
|
case 'deleteMessage': {
|
15398
|
-
return this._context.withAsyncErrorTeedToState((...args) => __awaiter$
|
15672
|
+
return this._context.withAsyncErrorTeedToState((...args) => __awaiter$j(this, void 0, void 0, function* () {
|
15399
15673
|
// DeleteMessage is able to either delete local one(for failed message) or synced message
|
15400
15674
|
const [messageId] = args;
|
15401
15675
|
if (this._context.deleteLocalMessage(chatThreadClient.threadId, messageId)) {
|
@@ -15413,12 +15687,12 @@ class ProxyChatThreadClient {
|
|
15413
15687
|
return createDecoratedListReadReceipts(chatThreadClient, this._context);
|
15414
15688
|
}
|
15415
15689
|
case 'sendTypingNotification': {
|
15416
|
-
return this._context.withAsyncErrorTeedToState((...args) => __awaiter$
|
15690
|
+
return this._context.withAsyncErrorTeedToState((...args) => __awaiter$j(this, void 0, void 0, function* () {
|
15417
15691
|
return yield chatThreadClient.sendTypingNotification(...args);
|
15418
15692
|
}), 'ChatThreadClient.sendTypingNotification');
|
15419
15693
|
}
|
15420
15694
|
case 'removeParticipant': {
|
15421
|
-
return this._context.withAsyncErrorTeedToState((...args) => __awaiter$
|
15695
|
+
return this._context.withAsyncErrorTeedToState((...args) => __awaiter$j(this, void 0, void 0, function* () {
|
15422
15696
|
const result = yield chatThreadClient.removeParticipant(...args);
|
15423
15697
|
const [removeIdentifier] = args;
|
15424
15698
|
this._context.deleteParticipant(chatThreadClient.threadId, communicationCommon.getIdentifierKind(removeIdentifier));
|
@@ -15426,7 +15700,7 @@ class ProxyChatThreadClient {
|
|
15426
15700
|
}), 'ChatThreadClient.removeParticipant');
|
15427
15701
|
}
|
15428
15702
|
case 'updateMessage': {
|
15429
|
-
return this._context.withAsyncErrorTeedToState((...args) => __awaiter$
|
15703
|
+
return this._context.withAsyncErrorTeedToState((...args) => __awaiter$j(this, void 0, void 0, function* () {
|
15430
15704
|
const result = yield chatThreadClient.updateMessage(...args);
|
15431
15705
|
const [messageId, updateOption] = args;
|
15432
15706
|
this._context.updateChatMessageContent(chatThreadClient.threadId, messageId, updateOption === null || updateOption === void 0 ? void 0 : updateOption.content);
|
@@ -15434,7 +15708,7 @@ class ProxyChatThreadClient {
|
|
15434
15708
|
}), 'ChatThreadClient.updateMessage');
|
15435
15709
|
}
|
15436
15710
|
case 'updateTopic': {
|
15437
|
-
return this._context.withAsyncErrorTeedToState((...args) => __awaiter$
|
15711
|
+
return this._context.withAsyncErrorTeedToState((...args) => __awaiter$j(this, void 0, void 0, function* () {
|
15438
15712
|
const result = yield chatThreadClient.updateTopic(...args);
|
15439
15713
|
const [topic] = args;
|
15440
15714
|
this._context.updateThreadTopic(chatThreadClient.threadId, topic);
|
@@ -15442,7 +15716,7 @@ class ProxyChatThreadClient {
|
|
15442
15716
|
}), 'ChatThreadClient.updateTopic');
|
15443
15717
|
}
|
15444
15718
|
case 'getProperties': {
|
15445
|
-
return this._context.withAsyncErrorTeedToState((...args) => __awaiter$
|
15719
|
+
return this._context.withAsyncErrorTeedToState((...args) => __awaiter$j(this, void 0, void 0, function* () {
|
15446
15720
|
const result = yield chatThreadClient.getProperties(...args);
|
15447
15721
|
this._context.updateThread(chatThreadClient.threadId, result);
|
15448
15722
|
return result;
|
@@ -15479,7 +15753,7 @@ const createDecoratedListThreads = (chatClient, context) => {
|
|
15479
15753
|
|
15480
15754
|
// Copyright (c) Microsoft Corporation.
|
15481
15755
|
// Licensed under the MIT license.
|
15482
|
-
var __awaiter$
|
15756
|
+
var __awaiter$i = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
15483
15757
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
15484
15758
|
return new (P || (P = Promise))(function (resolve, reject) {
|
15485
15759
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -15498,7 +15772,7 @@ const proxyChatClient = {
|
|
15498
15772
|
switch (prop) {
|
15499
15773
|
case 'createChatThread': {
|
15500
15774
|
return context.withAsyncErrorTeedToState(function (...args) {
|
15501
|
-
return __awaiter$
|
15775
|
+
return __awaiter$i(this, void 0, void 0, function* () {
|
15502
15776
|
const result = yield chatClient.createChatThread(...args);
|
15503
15777
|
const thread = result.chatThread;
|
15504
15778
|
if (thread) {
|
@@ -15511,7 +15785,7 @@ const proxyChatClient = {
|
|
15511
15785
|
}
|
15512
15786
|
case 'deleteChatThread': {
|
15513
15787
|
return context.withAsyncErrorTeedToState(function (...args) {
|
15514
|
-
return __awaiter$
|
15788
|
+
return __awaiter$i(this, void 0, void 0, function* () {
|
15515
15789
|
const result = yield chatClient.deleteChatThread(...args);
|
15516
15790
|
context.deleteThread(args[0]);
|
15517
15791
|
return result;
|
@@ -15531,7 +15805,7 @@ const proxyChatClient = {
|
|
15531
15805
|
}
|
15532
15806
|
case 'startRealtimeNotifications': {
|
15533
15807
|
return context.withAsyncErrorTeedToState(function (...args) {
|
15534
|
-
return __awaiter$
|
15808
|
+
return __awaiter$i(this, void 0, void 0, function* () {
|
15535
15809
|
const ret = yield chatClient.startRealtimeNotifications(...args);
|
15536
15810
|
if (!receiver.eventSubscriber) {
|
15537
15811
|
receiver.eventSubscriber = new EventSubscriber(chatClient, context);
|
@@ -15542,7 +15816,7 @@ const proxyChatClient = {
|
|
15542
15816
|
}
|
15543
15817
|
case 'stopRealtimeNotifications': {
|
15544
15818
|
return context.withAsyncErrorTeedToState(function (...args) {
|
15545
|
-
return __awaiter$
|
15819
|
+
return __awaiter$i(this, void 0, void 0, function* () {
|
15546
15820
|
const ret = yield chatClient.stopRealtimeNotifications(...args);
|
15547
15821
|
if (receiver.eventSubscriber) {
|
15548
15822
|
receiver.eventSubscriber.unsubscribe();
|
@@ -15698,7 +15972,11 @@ const COMPOSITE_ONLY_ICONS = {
|
|
15698
15972
|
/* @conditional-compile-remove(PSTN-calls) */
|
15699
15973
|
DialpadStartCall: React__default['default'].createElement(reactIcons.Call20Regular, null),
|
15700
15974
|
/* @conditional-compile-remove(rooms) */
|
15701
|
-
NoticePageInvalidRoom: React__default['default'].createElement(reactIcons.Info20Filled, null)
|
15975
|
+
NoticePageInvalidRoom: React__default['default'].createElement(reactIcons.Info20Filled, null),
|
15976
|
+
/* @conditional-compile-remove(video-background-effects) */
|
15977
|
+
BlurVideoBackground: React__default['default'].createElement(reactIcons.VideoBackgroundEffect20Regular, null),
|
15978
|
+
/* @conditional-compile-remove(video-background-effects) */
|
15979
|
+
RemoveVideoBackgroundEffect: React__default['default'].createElement(reactIcons.VideoPerson20Filled, null)
|
15702
15980
|
};
|
15703
15981
|
/**
|
15704
15982
|
* The default set of icons that are available to used in the Composites.
|
@@ -15731,7 +16009,7 @@ const CallCompositeIcon = (props) => (React__default['default'].createElement(re
|
|
15731
16009
|
*/
|
15732
16010
|
const CallWithChatCompositeIcon = (props) => (React__default['default'].createElement(react.FontIcon, Object.assign({}, props)));
|
15733
16011
|
|
15734
|
-
var call$d={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",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",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",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"};var chat$d={chatListHeader:"In this chat",uploadFile:"Upload File"};var callWithChat$d={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",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$d,chat:chat$d,callWithChat:callWithChat$d};
|
16012
|
+
var call$d={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",effects:"Effects",blurBackgroundEffectButtonLabel:"Blur",blurBackgroundTooltip:"Blur Background",removeBackgroundEffectButtonLabel:"None",removeBackgroundTooltip:"Remove Background",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",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",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"};var chat$d={chatListHeader:"In this chat",uploadFile:"Upload File"};var callWithChat$d={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",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$d,chat:chat$d,callWithChat:callWithChat$d};
|
15735
16013
|
|
15736
16014
|
var call$c={cameraLabel:"Camera",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",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",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",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",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..."};var chat$c={chatListHeader:"In this chat",uploadFile:"Upload File"};var callWithChat$c={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",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$c,chat:chat$c,callWithChat:callWithChat$c};
|
15737
16015
|
|
@@ -15981,7 +16259,7 @@ const uploadFileButtonStringTrampoline = () => {
|
|
15981
16259
|
|
15982
16260
|
// Copyright (c) Microsoft Corporation.
|
15983
16261
|
// Licensed under the MIT license.
|
15984
|
-
var __awaiter$
|
16262
|
+
var __awaiter$h = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
15985
16263
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
15986
16264
|
return new (P || (P = Promise))(function (resolve, reject) {
|
15987
16265
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -16100,7 +16378,7 @@ class AzureCommunicationFileUploadAdapter {
|
|
16100
16378
|
}
|
16101
16379
|
/* @conditional-compile-remove(teams-inline-images) */
|
16102
16380
|
downloadAuthenticatedAttachment(attachmentUrl) {
|
16103
|
-
return __awaiter$
|
16381
|
+
return __awaiter$h(this, void 0, void 0, function* () {
|
16104
16382
|
function fetchWithAuthentication(url, token) {
|
16105
16383
|
const headers = new Headers();
|
16106
16384
|
headers.append('Authorization', `Bearer ${token}`);
|
@@ -16178,7 +16456,7 @@ const END_CALL_PAGES = [
|
|
16178
16456
|
|
16179
16457
|
// Copyright (c) Microsoft Corporation.
|
16180
16458
|
// Licensed under the MIT license.
|
16181
|
-
var __awaiter$
|
16459
|
+
var __awaiter$g = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
16182
16460
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
16183
16461
|
return new (P || (P = Promise))(function (resolve, reject) {
|
16184
16462
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -16401,7 +16679,7 @@ const isDisabled$2 = (option) => {
|
|
16401
16679
|
/**
|
16402
16680
|
* @returns Permissions state for the camera.
|
16403
16681
|
*/
|
16404
|
-
const queryCameraPermissionFromPermissionsAPI = () => __awaiter$
|
16682
|
+
const queryCameraPermissionFromPermissionsAPI = () => __awaiter$g(void 0, void 0, void 0, function* () {
|
16405
16683
|
try {
|
16406
16684
|
return (yield navigator.permissions.query({ name: 'camera' })).state;
|
16407
16685
|
}
|
@@ -16414,7 +16692,7 @@ const queryCameraPermissionFromPermissionsAPI = () => __awaiter$f(void 0, void 0
|
|
16414
16692
|
/**
|
16415
16693
|
* @returns Permissions state for the microphone.
|
16416
16694
|
*/
|
16417
|
-
const queryMicrophonePermissionFromPermissionsAPI = () => __awaiter$
|
16695
|
+
const queryMicrophonePermissionFromPermissionsAPI = () => __awaiter$g(void 0, void 0, void 0, function* () {
|
16418
16696
|
try {
|
16419
16697
|
return (yield navigator.permissions.query({ name: 'microphone' })).state;
|
16420
16698
|
}
|
@@ -16431,7 +16709,7 @@ const queryMicrophonePermissionFromPermissionsAPI = () => __awaiter$f(void 0, vo
|
|
16431
16709
|
* If permission API is not supported on this browser, permission state is set to unsupported.
|
16432
16710
|
* @private
|
16433
16711
|
*/
|
16434
|
-
const getDevicePermissionState = (setVideoState, setAudioState) => __awaiter$
|
16712
|
+
const getDevicePermissionState = (setVideoState, setAudioState) => __awaiter$g(void 0, void 0, void 0, function* () {
|
16435
16713
|
const [cameraResult, microphoneResult] = yield Promise.all([
|
16436
16714
|
queryCameraPermissionFromPermissionsAPI(),
|
16437
16715
|
queryMicrophonePermissionFromPermissionsAPI()
|
@@ -16508,7 +16786,7 @@ const createParticipantModifier = (createModifiedParticipant) => {
|
|
16508
16786
|
|
16509
16787
|
// Copyright (c) Microsoft Corporation.
|
16510
16788
|
// Licensed under the MIT license.
|
16511
|
-
var __awaiter$
|
16789
|
+
var __awaiter$f = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
16512
16790
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
16513
16791
|
return new (P || (P = Promise))(function (resolve, reject) {
|
16514
16792
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -16636,9 +16914,9 @@ class AzureCommunicationChatAdapter {
|
|
16636
16914
|
this.unsubscribeAllEvents();
|
16637
16915
|
}
|
16638
16916
|
fetchInitialData() {
|
16639
|
-
return __awaiter$
|
16917
|
+
return __awaiter$f(this, void 0, void 0, function* () {
|
16640
16918
|
// If get properties fails we dont want to try to get the participants after.
|
16641
|
-
yield this.asyncTeeErrorToEventEmitter(() => __awaiter$
|
16919
|
+
yield this.asyncTeeErrorToEventEmitter(() => __awaiter$f(this, void 0, void 0, function* () {
|
16642
16920
|
var e_1, _a;
|
16643
16921
|
yield this.chatThreadClient.getProperties();
|
16644
16922
|
try {
|
@@ -16672,8 +16950,8 @@ class AzureCommunicationChatAdapter {
|
|
16672
16950
|
this.context.offStateChange(handler);
|
16673
16951
|
}
|
16674
16952
|
sendMessage(content, options = {}) {
|
16675
|
-
return __awaiter$
|
16676
|
-
yield this.asyncTeeErrorToEventEmitter(() => __awaiter$
|
16953
|
+
return __awaiter$f(this, void 0, void 0, function* () {
|
16954
|
+
yield this.asyncTeeErrorToEventEmitter(() => __awaiter$f(this, void 0, void 0, function* () {
|
16677
16955
|
/* @conditional-compile-remove(file-sharing) */
|
16678
16956
|
options.metadata = Object.assign(Object.assign({}, options.metadata), convertFileUploadsUiStateToMessageMetadata(this.context.getState().fileUploads));
|
16679
16957
|
/* @conditional-compile-remove(file-sharing) */
|
@@ -16690,51 +16968,51 @@ class AzureCommunicationChatAdapter {
|
|
16690
16968
|
});
|
16691
16969
|
}
|
16692
16970
|
sendReadReceipt(chatMessageId) {
|
16693
|
-
return __awaiter$
|
16694
|
-
yield this.asyncTeeErrorToEventEmitter(() => __awaiter$
|
16971
|
+
return __awaiter$f(this, void 0, void 0, function* () {
|
16972
|
+
yield this.asyncTeeErrorToEventEmitter(() => __awaiter$f(this, void 0, void 0, function* () {
|
16695
16973
|
yield this.handlers.onMessageSeen(chatMessageId);
|
16696
16974
|
}));
|
16697
16975
|
});
|
16698
16976
|
}
|
16699
16977
|
sendTypingIndicator() {
|
16700
|
-
return __awaiter$
|
16701
|
-
yield this.asyncTeeErrorToEventEmitter(() => __awaiter$
|
16978
|
+
return __awaiter$f(this, void 0, void 0, function* () {
|
16979
|
+
yield this.asyncTeeErrorToEventEmitter(() => __awaiter$f(this, void 0, void 0, function* () {
|
16702
16980
|
yield this.handlers.onTyping();
|
16703
16981
|
}));
|
16704
16982
|
});
|
16705
16983
|
}
|
16706
16984
|
removeParticipant(userId) {
|
16707
|
-
return __awaiter$
|
16708
|
-
yield this.asyncTeeErrorToEventEmitter(() => __awaiter$
|
16985
|
+
return __awaiter$f(this, void 0, void 0, function* () {
|
16986
|
+
yield this.asyncTeeErrorToEventEmitter(() => __awaiter$f(this, void 0, void 0, function* () {
|
16709
16987
|
yield this.handlers.onRemoveParticipant(userId);
|
16710
16988
|
}));
|
16711
16989
|
});
|
16712
16990
|
}
|
16713
16991
|
setTopic(topicName) {
|
16714
|
-
return __awaiter$
|
16715
|
-
yield this.asyncTeeErrorToEventEmitter(() => __awaiter$
|
16992
|
+
return __awaiter$f(this, void 0, void 0, function* () {
|
16993
|
+
yield this.asyncTeeErrorToEventEmitter(() => __awaiter$f(this, void 0, void 0, function* () {
|
16716
16994
|
yield this.handlers.updateThreadTopicName(topicName);
|
16717
16995
|
}));
|
16718
16996
|
});
|
16719
16997
|
}
|
16720
16998
|
loadPreviousChatMessages(messagesToLoad) {
|
16721
|
-
return __awaiter$
|
16722
|
-
return yield this.asyncTeeErrorToEventEmitter(() => __awaiter$
|
16999
|
+
return __awaiter$f(this, void 0, void 0, function* () {
|
17000
|
+
return yield this.asyncTeeErrorToEventEmitter(() => __awaiter$f(this, void 0, void 0, function* () {
|
16723
17001
|
return yield this.handlers.onLoadPreviousChatMessages(messagesToLoad);
|
16724
17002
|
}));
|
16725
17003
|
});
|
16726
17004
|
}
|
16727
17005
|
updateMessage(messageId, content, metadata, options) {
|
16728
|
-
return __awaiter$
|
16729
|
-
return yield this.asyncTeeErrorToEventEmitter(() => __awaiter$
|
17006
|
+
return __awaiter$f(this, void 0, void 0, function* () {
|
17007
|
+
return yield this.asyncTeeErrorToEventEmitter(() => __awaiter$f(this, void 0, void 0, function* () {
|
16730
17008
|
/* @conditional-compile-remove(file-sharing) */
|
16731
17009
|
return yield this.handlers.onUpdateMessage(messageId, content, metadata, options);
|
16732
17010
|
}));
|
16733
17011
|
});
|
16734
17012
|
}
|
16735
17013
|
deleteMessage(messageId) {
|
16736
|
-
return __awaiter$
|
16737
|
-
return yield this.asyncTeeErrorToEventEmitter(() => __awaiter$
|
17014
|
+
return __awaiter$f(this, void 0, void 0, function* () {
|
17015
|
+
return yield this.asyncTeeErrorToEventEmitter(() => __awaiter$f(this, void 0, void 0, function* () {
|
16738
17016
|
return yield this.handlers.onDeleteMessage(messageId);
|
16739
17017
|
}));
|
16740
17018
|
});
|
@@ -16769,7 +17047,7 @@ class AzureCommunicationChatAdapter {
|
|
16769
17047
|
}
|
16770
17048
|
/* @conditional-compile-remove(teams-inline-images) */
|
16771
17049
|
downloadAuthenticatedAttachment(attachmentUrl) {
|
16772
|
-
return __awaiter$
|
17050
|
+
return __awaiter$f(this, void 0, void 0, function* () {
|
16773
17051
|
if (!this.fileUploadAdapter.downloadAuthenticatedAttachment) {
|
16774
17052
|
return '';
|
16775
17053
|
}
|
@@ -16824,7 +17102,7 @@ class AzureCommunicationChatAdapter {
|
|
16824
17102
|
this.emitter.off(event, listener);
|
16825
17103
|
}
|
16826
17104
|
asyncTeeErrorToEventEmitter(f) {
|
16827
|
-
return __awaiter$
|
17105
|
+
return __awaiter$f(this, void 0, void 0, function* () {
|
16828
17106
|
try {
|
16829
17107
|
return yield f();
|
16830
17108
|
}
|
@@ -16866,7 +17144,7 @@ const convertEventType = (type) => {
|
|
16866
17144
|
*
|
16867
17145
|
* @public
|
16868
17146
|
*/
|
16869
|
-
const createAzureCommunicationChatAdapter = ({ endpoint: endpointUrl, userId, displayName, credential, threadId }) => __awaiter$
|
17147
|
+
const createAzureCommunicationChatAdapter = ({ endpoint: endpointUrl, userId, displayName, credential, threadId }) => __awaiter$f(void 0, void 0, void 0, function* () {
|
16870
17148
|
if (!isValidIdentifier(userId)) {
|
16871
17149
|
throw new Error('Provided userId is invalid. Please provide valid identifier object.');
|
16872
17150
|
}
|
@@ -16932,7 +17210,7 @@ beforeDispose) => {
|
|
16932
17210
|
if (!credential || !displayName || !endpoint || !threadId || !userId) {
|
16933
17211
|
return;
|
16934
17212
|
}
|
16935
|
-
(() => __awaiter$
|
17213
|
+
(() => __awaiter$f(void 0, void 0, void 0, function* () {
|
16936
17214
|
if (adapterRef.current) {
|
16937
17215
|
// Dispose the old adapter when a new one is created.
|
16938
17216
|
//
|
@@ -16964,7 +17242,7 @@ beforeDispose) => {
|
|
16964
17242
|
// Dispose any existing adapter when the component unmounts.
|
16965
17243
|
React.useEffect(() => {
|
16966
17244
|
return () => {
|
16967
|
-
(() => __awaiter$
|
17245
|
+
(() => __awaiter$f(void 0, void 0, void 0, function* () {
|
16968
17246
|
if (adapterRef.current) {
|
16969
17247
|
if (beforeDisposeRef.current) {
|
16970
17248
|
yield beforeDisposeRef.current(adapterRef.current);
|
@@ -16985,7 +17263,7 @@ beforeDispose) => {
|
|
16985
17263
|
*
|
16986
17264
|
* @public
|
16987
17265
|
*/
|
16988
|
-
const createAzureCommunicationChatAdapterFromClient = (chatClient, chatThreadClient) => __awaiter$
|
17266
|
+
const createAzureCommunicationChatAdapterFromClient = (chatClient, chatThreadClient) => __awaiter$f(void 0, void 0, void 0, function* () {
|
16989
17267
|
return new AzureCommunicationChatAdapter(chatClient, chatThreadClient);
|
16990
17268
|
});
|
16991
17269
|
const isChatError = (e) => {
|
@@ -17196,7 +17474,7 @@ const sendboxContainerStyles = {
|
|
17196
17474
|
|
17197
17475
|
// Copyright (c) Microsoft Corporation.
|
17198
17476
|
// Licensed under the MIT license.
|
17199
|
-
var __awaiter$
|
17477
|
+
var __awaiter$e = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
17200
17478
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
17201
17479
|
return new (P || (P = Promise))(function (resolve, reject) {
|
17202
17480
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -17217,7 +17495,7 @@ const AvatarPersona = (props) => {
|
|
17217
17495
|
const { userId, dataProvider, text, imageUrl, imageInitials, initialsColor, initialsTextColor, showOverflowTooltip } = props;
|
17218
17496
|
const [data, setData] = React.useState();
|
17219
17497
|
React.useEffect(() => {
|
17220
|
-
(() => __awaiter$
|
17498
|
+
(() => __awaiter$e(void 0, void 0, void 0, function* () {
|
17221
17499
|
if (dataProvider && userId) {
|
17222
17500
|
const newData = yield dataProvider(userId);
|
17223
17501
|
if (avatarDeepDifferenceCheck(data, newData)) {
|
@@ -17581,7 +17859,7 @@ const FileDownloadErrorBar = (props) => {
|
|
17581
17859
|
|
17582
17860
|
// Copyright (c) Microsoft Corporation.
|
17583
17861
|
// Licensed under the MIT license.
|
17584
|
-
var __awaiter$
|
17862
|
+
var __awaiter$d = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
17585
17863
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
17586
17864
|
return new (P || (P = Promise))(function (resolve, reject) {
|
17587
17865
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -17602,7 +17880,7 @@ const ChatScreen = (props) => {
|
|
17602
17880
|
const theme = useTheme();
|
17603
17881
|
React.useEffect(() => {
|
17604
17882
|
// Initial data should be always fetched by the composite(or external caller) instead of the adapter
|
17605
|
-
const fetchData = () => __awaiter$
|
17883
|
+
const fetchData = () => __awaiter$d(void 0, void 0, void 0, function* () {
|
17606
17884
|
// Fetch initial data for adapter
|
17607
17885
|
yield adapter.fetchInitialData();
|
17608
17886
|
// Fetch initial set of messages. Without fetching messages here, if the Composite's adapter is changed the message thread does not load new messages.
|
@@ -17807,7 +18085,7 @@ const adaptCompositeState = (compositeState) => {
|
|
17807
18085
|
|
17808
18086
|
// Copyright (c) Microsoft Corporation.
|
17809
18087
|
// Licensed under the MIT license.
|
17810
|
-
var __awaiter$
|
18088
|
+
var __awaiter$c = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
17811
18089
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
17812
18090
|
return new (P || (P = Promise))(function (resolve, reject) {
|
17813
18091
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -17826,88 +18104,88 @@ _component) => {
|
|
17826
18104
|
return createCompositeHandlers(useAdapter());
|
17827
18105
|
};
|
17828
18106
|
const createCompositeHandlers = memoizeOne__default['default']((adapter) => ({
|
17829
|
-
onCreateLocalStreamView: (options) => __awaiter$
|
18107
|
+
onCreateLocalStreamView: (options) => __awaiter$c(void 0, void 0, void 0, function* () {
|
17830
18108
|
return yield adapter.createStreamView(undefined, options);
|
17831
18109
|
}),
|
17832
|
-
onCreateRemoteStreamView: (userId, options) => __awaiter$
|
18110
|
+
onCreateRemoteStreamView: (userId, options) => __awaiter$c(void 0, void 0, void 0, function* () {
|
17833
18111
|
return yield adapter.createStreamView(userId, options);
|
17834
18112
|
}),
|
17835
|
-
onHangUp: (forEveryone) => __awaiter$
|
18113
|
+
onHangUp: (forEveryone) => __awaiter$c(void 0, void 0, void 0, function* () {
|
17836
18114
|
yield adapter.leaveCall(forEveryone);
|
17837
18115
|
}),
|
17838
18116
|
/* @conditional-compile-remove(PSTN-calls) */
|
17839
|
-
onToggleHold: () => __awaiter$
|
18117
|
+
onToggleHold: () => __awaiter$c(void 0, void 0, void 0, function* () {
|
17840
18118
|
var _a;
|
17841
18119
|
return ((_a = adapter.getState().call) === null || _a === void 0 ? void 0 : _a.state) === 'LocalHold' ? yield adapter.resumeCall() : yield adapter.holdCall();
|
17842
18120
|
}),
|
17843
18121
|
/* @conditional-compile-remove(PSTN-calls) */
|
17844
|
-
onAddParticipant: (participant, options) => __awaiter$
|
18122
|
+
onAddParticipant: (participant, options) => __awaiter$c(void 0, void 0, void 0, function* () {
|
17845
18123
|
return yield adapter.addParticipant(participant, options);
|
17846
18124
|
}),
|
17847
18125
|
/* @conditional-compile-remove(PSTN-calls) */
|
17848
|
-
onSendDtmfTone: (dtmfTone) => __awaiter$
|
18126
|
+
onSendDtmfTone: (dtmfTone) => __awaiter$c(void 0, void 0, void 0, function* () {
|
17849
18127
|
yield adapter.sendDtmfTone(dtmfTone);
|
17850
18128
|
}),
|
17851
|
-
onRemoveParticipant: (userId) => __awaiter$
|
18129
|
+
onRemoveParticipant: (userId) => __awaiter$c(void 0, void 0, void 0, function* () {
|
17852
18130
|
yield adapter.removeParticipant(userId);
|
17853
18131
|
}),
|
17854
|
-
onSelectCamera: (deviceInfo, options) => __awaiter$
|
18132
|
+
onSelectCamera: (deviceInfo, options) => __awaiter$c(void 0, void 0, void 0, function* () {
|
17855
18133
|
yield adapter.setCamera(deviceInfo, options);
|
17856
18134
|
}),
|
17857
|
-
onSelectMicrophone: (deviceInfo) => __awaiter$
|
18135
|
+
onSelectMicrophone: (deviceInfo) => __awaiter$c(void 0, void 0, void 0, function* () {
|
17858
18136
|
yield adapter.setMicrophone(deviceInfo);
|
17859
18137
|
}),
|
17860
|
-
onSelectSpeaker: (deviceInfo) => __awaiter$
|
18138
|
+
onSelectSpeaker: (deviceInfo) => __awaiter$c(void 0, void 0, void 0, function* () {
|
17861
18139
|
yield adapter.setSpeaker(deviceInfo);
|
17862
18140
|
}),
|
17863
18141
|
onStartCall: (participants, options) => {
|
17864
18142
|
const rawIds = participants.map((participant) => toFlatCommunicationIdentifier(participant));
|
17865
18143
|
return adapter.startCall(rawIds, options);
|
17866
18144
|
},
|
17867
|
-
onStartScreenShare: () => __awaiter$
|
18145
|
+
onStartScreenShare: () => __awaiter$c(void 0, void 0, void 0, function* () {
|
17868
18146
|
yield adapter.startScreenShare();
|
17869
18147
|
}),
|
17870
|
-
onStopScreenShare: () => __awaiter$
|
18148
|
+
onStopScreenShare: () => __awaiter$c(void 0, void 0, void 0, function* () {
|
17871
18149
|
yield adapter.stopScreenShare();
|
17872
18150
|
}),
|
17873
|
-
onToggleCamera: (options) => __awaiter$
|
18151
|
+
onToggleCamera: (options) => __awaiter$c(void 0, void 0, void 0, function* () {
|
17874
18152
|
isCameraOn(adapter.getState()) ? yield adapter.stopCamera() : yield adapter.startCamera(options);
|
17875
18153
|
}),
|
17876
|
-
onToggleMicrophone: () => __awaiter$
|
18154
|
+
onToggleMicrophone: () => __awaiter$c(void 0, void 0, void 0, function* () {
|
17877
18155
|
var _b;
|
17878
18156
|
return ((_b = adapter.getState().call) === null || _b === void 0 ? void 0 : _b.isMuted) ? yield adapter.unmute() : yield adapter.mute();
|
17879
18157
|
}),
|
17880
|
-
onToggleScreenShare: () => __awaiter$
|
18158
|
+
onToggleScreenShare: () => __awaiter$c(void 0, void 0, void 0, function* () {
|
17881
18159
|
var _c;
|
17882
18160
|
return ((_c = adapter.getState().call) === null || _c === void 0 ? void 0 : _c.isScreenSharingOn)
|
17883
18161
|
? yield adapter.stopScreenShare()
|
17884
18162
|
: yield adapter.startScreenShare();
|
17885
18163
|
}),
|
17886
|
-
onStartLocalVideo: () => __awaiter$
|
18164
|
+
onStartLocalVideo: () => __awaiter$c(void 0, void 0, void 0, function* () {
|
17887
18165
|
if (adapter.getState().call) {
|
17888
18166
|
return adapter.startCamera();
|
17889
18167
|
}
|
17890
18168
|
}),
|
17891
|
-
onDisposeLocalStreamView: () => __awaiter$
|
18169
|
+
onDisposeLocalStreamView: () => __awaiter$c(void 0, void 0, void 0, function* () {
|
17892
18170
|
return adapter.disposeStreamView();
|
17893
18171
|
}),
|
17894
|
-
onDisposeRemoteStreamView: (userId) => __awaiter$
|
18172
|
+
onDisposeRemoteStreamView: (userId) => __awaiter$c(void 0, void 0, void 0, function* () {
|
17895
18173
|
return adapter.disposeStreamView(userId);
|
17896
18174
|
}),
|
17897
18175
|
/* @conditional-compile-remove(call-readiness) */
|
17898
|
-
askDevicePermission: (constrain) => __awaiter$
|
18176
|
+
askDevicePermission: (constrain) => __awaiter$c(void 0, void 0, void 0, function* () {
|
17899
18177
|
return adapter.askDevicePermission(constrain);
|
17900
18178
|
}),
|
17901
18179
|
/* @conditional-compile-remove(video-background-effects) */
|
17902
|
-
onRemoveVideoBackgroundEffects: () => __awaiter$
|
18180
|
+
onRemoveVideoBackgroundEffects: () => __awaiter$c(void 0, void 0, void 0, function* () {
|
17903
18181
|
return yield adapter.stopVideoBackgroundEffect();
|
17904
18182
|
}),
|
17905
18183
|
/* @conditional-compile-remove(video-background-effects) */
|
17906
|
-
onBlurVideoBackground: (bgBlurConfig) => __awaiter$
|
18184
|
+
onBlurVideoBackground: (bgBlurConfig) => __awaiter$c(void 0, void 0, void 0, function* () {
|
17907
18185
|
return yield adapter.blurVideoBackground(bgBlurConfig);
|
17908
18186
|
}),
|
17909
18187
|
/* @conditional-compile-remove(video-background-effects) */
|
17910
|
-
onReplaceVideoBackground: (bgReplacementConfig) => __awaiter$
|
18188
|
+
onReplaceVideoBackground: (bgReplacementConfig) => __awaiter$c(void 0, void 0, void 0, function* () {
|
17911
18189
|
return yield adapter.replaceVideoBackground(bgReplacementConfig);
|
17912
18190
|
})
|
17913
18191
|
}));
|
@@ -19259,7 +19537,7 @@ const AddPeopleButton = (props) => {
|
|
19259
19537
|
|
19260
19538
|
// Copyright (c) Microsoft Corporation.
|
19261
19539
|
// Licensed under the MIT license.
|
19262
|
-
var __awaiter$
|
19540
|
+
var __awaiter$b = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
19263
19541
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
19264
19542
|
return new (P || (P = Promise))(function (resolve, reject) {
|
19265
19543
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -19295,7 +19573,7 @@ const PeoplePaneContent = (props) => {
|
|
19295
19573
|
setDrawerMenuItems
|
19296
19574
|
]);
|
19297
19575
|
const participantListProps = React.useMemo(() => {
|
19298
|
-
const onRemoveAParticipant = (participantId) => __awaiter$
|
19576
|
+
const onRemoveAParticipant = (participantId) => __awaiter$b(void 0, void 0, void 0, function* () { return onRemoveParticipant(participantId); });
|
19299
19577
|
return Object.assign(Object.assign({}, participantListDefaultProps), {
|
19300
19578
|
// Passing undefined callback for mobile to avoid context menus for participants in ParticipantList are clicked
|
19301
19579
|
onRemoveParticipant: props.mobileView ? undefined : onRemoveAParticipant,
|
@@ -19494,7 +19772,7 @@ const useMinMaxDragPosition = (modalLayerHostId, rtl) => {
|
|
19494
19772
|
return { minDragPosition: minDragPosition, maxDragPosition: maxDragPosition };
|
19495
19773
|
};
|
19496
19774
|
|
19497
|
-
var __awaiter$
|
19775
|
+
var __awaiter$a = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
19498
19776
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
19499
19777
|
return new (P || (P = Promise))(function (resolve, reject) {
|
19500
19778
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -19524,11 +19802,11 @@ const CallPane = (props) => {
|
|
19524
19802
|
/**
|
19525
19803
|
* In a Call Composite when a participant is removed, we must remove them from the call.
|
19526
19804
|
*/
|
19527
|
-
const removeParticipantFromCall = (participantId) => __awaiter$
|
19805
|
+
const removeParticipantFromCall = (participantId) => __awaiter$a(void 0, void 0, void 0, function* () {
|
19528
19806
|
yield props.callAdapter.removeParticipant(participantId);
|
19529
19807
|
});
|
19530
19808
|
/* @conditional-compile-remove(PSTN-calls) */
|
19531
|
-
const addParticipantToCall = (participant, options) => __awaiter$
|
19809
|
+
const addParticipantToCall = (participant, options) => __awaiter$a(void 0, void 0, void 0, function* () {
|
19532
19810
|
yield props.callAdapter.addParticipant(participant, options);
|
19533
19811
|
});
|
19534
19812
|
const minMaxDragPosition = useMinMaxDragPosition(props.modalLayerHostId, props.rtl);
|
@@ -19654,12 +19932,6 @@ const CallArrangement = (props) => {
|
|
19654
19932
|
return (React__default['default'].createElement("div", { ref: containerRef, className: react.mergeStyles(containerDivStyles), id: props.id },
|
19655
19933
|
React__default['default'].createElement(react.Stack, { verticalFill: true, horizontalAlign: "stretch", className: containerClassName, "data-ui-id": props.dataUiId },
|
19656
19934
|
React__default['default'].createElement(react.Stack, { grow: true, styles: callArrangementContainerStyles },
|
19657
|
-
React__default['default'].createElement(react.Stack.Item, { styles: notificationsContainerStyles },
|
19658
|
-
React__default['default'].createElement(react.Stack, { styles: bannerNotificationStyles },
|
19659
|
-
React__default['default'].createElement(_ComplianceBanner, Object.assign({}, props.complianceBannerProps))),
|
19660
|
-
errorBarProps !== false && (React__default['default'].createElement(react.Stack, { styles: bannerNotificationStyles },
|
19661
|
-
React__default['default'].createElement(ErrorBar, Object.assign({}, errorBarProps)))),
|
19662
|
-
canUnmute && !!props.mutedNotificationProps && React__default['default'].createElement(MutedNotification, Object.assign({}, props.mutedNotificationProps))),
|
19663
19935
|
((_b = props.callControlProps) === null || _b === void 0 ? void 0 : _b.options) !== false &&
|
19664
19936
|
/* @conditional-compile-remove(one-to-n-calling) @conditional-compile-remove(PSTN-calls) */
|
19665
19937
|
!isMobileWithActivePane && (React__default['default'].createElement(react.Stack.Item, { className: callControlsContainerStyles },
|
@@ -19670,7 +19942,15 @@ const CallArrangement = (props) => {
|
|
19670
19942
|
onPeopleButtonClicked: togglePeoplePane })))),
|
19671
19943
|
React__default['default'].createElement(react.Stack, { horizontal: true, grow: true },
|
19672
19944
|
React__default['default'].createElement(react.Stack.Item, { grow: true, style: callCompositeContainerFlex() },
|
19673
|
-
React__default['default'].createElement(react.Stack.Item, { styles: callGalleryStyles, grow: true },
|
19945
|
+
React__default['default'].createElement(react.Stack.Item, { styles: callGalleryStyles, grow: true },
|
19946
|
+
React__default['default'].createElement(react.Stack, { verticalFill: true, styles: mediaGalleryContainerStyles$1 },
|
19947
|
+
React__default['default'].createElement(react.Stack.Item, { styles: notificationsContainerStyles },
|
19948
|
+
React__default['default'].createElement(react.Stack, { styles: bannerNotificationStyles },
|
19949
|
+
React__default['default'].createElement(_ComplianceBanner, Object.assign({}, props.complianceBannerProps))),
|
19950
|
+
errorBarProps !== false && (React__default['default'].createElement(react.Stack, { styles: bannerNotificationStyles },
|
19951
|
+
React__default['default'].createElement(ErrorBar, Object.assign({}, errorBarProps)))),
|
19952
|
+
canUnmute && !!props.mutedNotificationProps && (React__default['default'].createElement(MutedNotification, Object.assign({}, props.mutedNotificationProps)))),
|
19953
|
+
props.onRenderGalleryContent && props.onRenderGalleryContent()))),
|
19674
19954
|
/* @conditional-compile-remove(one-to-n-calling) @conditional-compile-remove(PSTN-calls) */
|
19675
19955
|
callPaneContent())))));
|
19676
19956
|
};
|
@@ -20416,103 +20696,6 @@ const devicePermissionSelector = reselect__namespace.createSelector([getDeviceMa
|
|
20416
20696
|
};
|
20417
20697
|
});
|
20418
20698
|
|
20419
|
-
// Copyright (c) Microsoft Corporation.
|
20420
|
-
/**
|
20421
|
-
* @private
|
20422
|
-
*/
|
20423
|
-
const localPreviewSelector = reselect__namespace.createSelector([getDeviceManager], (deviceManager) => {
|
20424
|
-
// TODO: we should take in a LocalVideoStream that developer wants to use as their 'Preview' view. We should also
|
20425
|
-
// handle cases where 'Preview' view is in progress and not necessary completed.
|
20426
|
-
const view = deviceManager.cameras.length > 0 && // This ensures that the video stream is reset if camera devices are removed.
|
20427
|
-
deviceManager.unparentedViews.length > 0 &&
|
20428
|
-
deviceManager.unparentedViews[0].view;
|
20429
|
-
return {
|
20430
|
-
videoStreamElement: view ? view.target : null
|
20431
|
-
};
|
20432
|
-
});
|
20433
|
-
|
20434
|
-
// Copyright (c) Microsoft Corporation.
|
20435
|
-
const localPreviewContainerStyle = {
|
20436
|
-
borderRadius: '.25rem'
|
20437
|
-
};
|
20438
|
-
/**
|
20439
|
-
* @private
|
20440
|
-
*/
|
20441
|
-
const localPreviewContainerStyleDesktop = react.mergeStyles(Object.assign(Object.assign({}, localPreviewContainerStyle), { width: '50%', minWidth: '11rem', maxWidth: '25rem', height: '18.75rem', padding: '0.5rem' }));
|
20442
|
-
/**
|
20443
|
-
* @private
|
20444
|
-
*/
|
20445
|
-
const localPreviewContainerStyleMobile = react.mergeStyles(Object.assign(Object.assign({}, localPreviewContainerStyle), { width: '100%', height: '100%' }));
|
20446
|
-
/**
|
20447
|
-
* @private
|
20448
|
-
*/
|
20449
|
-
const cameraOffLabelStyle = react.mergeStyles({
|
20450
|
-
fontSize: '0.75rem' // 12px
|
20451
|
-
});
|
20452
|
-
/**
|
20453
|
-
* @private
|
20454
|
-
*/
|
20455
|
-
const localPreviewTileStyle = {
|
20456
|
-
root: {
|
20457
|
-
borderRadius: '.25rem'
|
20458
|
-
}
|
20459
|
-
};
|
20460
|
-
|
20461
|
-
// Copyright (c) Microsoft Corporation.
|
20462
|
-
// Licensed under the MIT license.
|
20463
|
-
var __awaiter$8 = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
20464
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
20465
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
20466
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
20467
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
20468
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
20469
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
20470
|
-
});
|
20471
|
-
};
|
20472
|
-
/**
|
20473
|
-
* @private
|
20474
|
-
*/
|
20475
|
-
const LocalPreview = (props) => {
|
20476
|
-
const locale = useLocale();
|
20477
|
-
const cameraButtonProps = usePropsFor$1(CameraButton);
|
20478
|
-
const localPreviewProps = useSelector$1(localPreviewSelector);
|
20479
|
-
const devicesButtonProps = usePropsFor$1(DevicesButton);
|
20480
|
-
const { audio: microphonePermissionGranted, video: cameraPermissionGranted } = useSelector$1(devicePermissionSelector);
|
20481
|
-
const isLocalMicrophoneEnabled = useSelector$1(getLocalMicrophoneEnabled);
|
20482
|
-
const adapter = useAdapter();
|
20483
|
-
const onToggleMic = React.useCallback(() => __awaiter$8(void 0, void 0, void 0, function* () {
|
20484
|
-
isLocalMicrophoneEnabled ? adapter.mute() : adapter.unmute();
|
20485
|
-
}), [adapter, isLocalMicrophoneEnabled]);
|
20486
|
-
const hasNoDevices = devicesButtonProps.cameras.length === 0 &&
|
20487
|
-
devicesButtonProps.microphones.length === 0 &&
|
20488
|
-
devicesButtonProps.speakers.length === 0;
|
20489
|
-
const hasCameras = devicesButtonProps.cameras.length > 0;
|
20490
|
-
const hasMicrophones = devicesButtonProps.microphones.length > 0;
|
20491
|
-
const theme = useTheme();
|
20492
|
-
const onRenderPlaceholder = React.useCallback(() => {
|
20493
|
-
return (React__default['default'].createElement(react.Stack, { className: react.mergeStyles({ width: '100%', height: '100%' }), verticalAlign: "center", tokens: { childrenGap: '0.25rem' } },
|
20494
|
-
React__default['default'].createElement(react.Stack.Item, { align: "center" },
|
20495
|
-
React__default['default'].createElement(CallCompositeIcon, { iconName: "LocalPreviewPlaceholder", className: react.mergeStyles(cameraOffLabelStyle, { color: theme.palette.neutralTertiary }) })),
|
20496
|
-
React__default['default'].createElement(react.Stack.Item, { align: "center" },
|
20497
|
-
React__default['default'].createElement(react.Text, { className: react.mergeStyles(cameraOffLabelStyle, { color: theme.palette.neutralSecondary }) }, locale.strings.call.cameraTurnedOff))));
|
20498
|
-
}, [theme, locale.strings.call.cameraTurnedOff]);
|
20499
|
-
const devicesButtonStyles = props.mobileView
|
20500
|
-
? {
|
20501
|
-
menuStyles: {
|
20502
|
-
menuItemStyles: buttonFlyoutIncreasedSizeStyles
|
20503
|
-
}
|
20504
|
-
}
|
20505
|
-
: undefined;
|
20506
|
-
return (React__default['default'].createElement(react.Stack, { "data-ui-id": "call-composite-local-preview", className: props.mobileView ? localPreviewContainerStyleMobile : localPreviewContainerStyleDesktop },
|
20507
|
-
React__default['default'].createElement(VideoTile, { styles: localPreviewTileStyle, renderElement: (localPreviewProps === null || localPreviewProps === void 0 ? void 0 : localPreviewProps.videoStreamElement) ? (React__default['default'].createElement(StreamMedia, { videoStreamElement: localPreviewProps.videoStreamElement })) : undefined, onRenderPlaceholder: onRenderPlaceholder },
|
20508
|
-
React__default['default'].createElement(ControlBar, { layout: "floatingBottom" },
|
20509
|
-
React__default['default'].createElement(MicrophoneButton, { "data-ui-id": "call-composite-local-device-settings-microphone-button", checked: isLocalMicrophoneEnabled, onToggleMicrophone: onToggleMic, disabled: !microphonePermissionGranted || !hasMicrophones, showLabel: true }),
|
20510
|
-
React__default['default'].createElement(CameraButton, Object.assign({ "data-ui-id": "call-composite-local-device-settings-camera-button" }, cameraButtonProps, { showLabel: true, disabled: !cameraPermissionGranted || !hasCameras })),
|
20511
|
-
props.showDevicesButton && (React__default['default'].createElement(DevicesButton, Object.assign({ "data-ui-id": "call-composite-local-device-settings-options-button" }, devicesButtonProps, {
|
20512
|
-
// disable button whilst all other buttons are disabled
|
20513
|
-
disabled: !microphonePermissionGranted || !cameraPermissionGranted || hasNoDevices, showLabel: true, styles: devicesButtonStyles })))))));
|
20514
|
-
};
|
20515
|
-
|
20516
20699
|
// Copyright (c) Microsoft Corporation.
|
20517
20700
|
/**
|
20518
20701
|
* @private
|
@@ -20610,6 +20793,123 @@ const startCallButtonStyleMobile = react.mergeStyles({
|
|
20610
20793
|
width: '100%',
|
20611
20794
|
maxWidth: 'unset'
|
20612
20795
|
});
|
20796
|
+
/**
|
20797
|
+
* @private
|
20798
|
+
*/
|
20799
|
+
const effectsButtonStyles = (theme) => {
|
20800
|
+
return {
|
20801
|
+
root: {
|
20802
|
+
background: 'transparent',
|
20803
|
+
border: 'none',
|
20804
|
+
color: theme.palette.blue,
|
20805
|
+
width: '40%',
|
20806
|
+
alignSelf: 'end',
|
20807
|
+
':hover, :focus': {
|
20808
|
+
color: theme.palette.blue
|
20809
|
+
}
|
20810
|
+
},
|
20811
|
+
rootChecked: {
|
20812
|
+
color: theme.palette.blue
|
20813
|
+
}
|
20814
|
+
};
|
20815
|
+
};
|
20816
|
+
|
20817
|
+
// Copyright (c) Microsoft Corporation.
|
20818
|
+
/**
|
20819
|
+
* @private
|
20820
|
+
*/
|
20821
|
+
const localPreviewSelector = reselect__namespace.createSelector([getDeviceManager], (deviceManager) => {
|
20822
|
+
// TODO: we should take in a LocalVideoStream that developer wants to use as their 'Preview' view. We should also
|
20823
|
+
// handle cases where 'Preview' view is in progress and not necessary completed.
|
20824
|
+
const view = deviceManager.cameras.length > 0 && // This ensures that the video stream is reset if camera devices are removed.
|
20825
|
+
deviceManager.unparentedViews.length > 0 &&
|
20826
|
+
deviceManager.unparentedViews[0].view;
|
20827
|
+
return {
|
20828
|
+
videoStreamElement: view ? view.target : null
|
20829
|
+
};
|
20830
|
+
});
|
20831
|
+
|
20832
|
+
// Copyright (c) Microsoft Corporation.
|
20833
|
+
const localPreviewContainerStyle = {
|
20834
|
+
borderRadius: '.25rem'
|
20835
|
+
};
|
20836
|
+
/**
|
20837
|
+
* @private
|
20838
|
+
*/
|
20839
|
+
const localPreviewContainerStyleDesktop = react.mergeStyles(Object.assign(Object.assign({}, localPreviewContainerStyle), { width: '50%', minWidth: '11rem', maxWidth: '25rem', height: '18.75rem', padding: '0.5rem' }));
|
20840
|
+
/**
|
20841
|
+
* @private
|
20842
|
+
*/
|
20843
|
+
const localPreviewContainerStyleMobile = react.mergeStyles(Object.assign(Object.assign({}, localPreviewContainerStyle), { width: '100%', height: '100%' }));
|
20844
|
+
/**
|
20845
|
+
* @private
|
20846
|
+
*/
|
20847
|
+
const cameraOffLabelStyle = react.mergeStyles({
|
20848
|
+
fontSize: '0.75rem' // 12px
|
20849
|
+
});
|
20850
|
+
/**
|
20851
|
+
* @private
|
20852
|
+
*/
|
20853
|
+
const localPreviewTileStyle = {
|
20854
|
+
root: {
|
20855
|
+
borderRadius: '.25rem'
|
20856
|
+
}
|
20857
|
+
};
|
20858
|
+
|
20859
|
+
// Copyright (c) Microsoft Corporation.
|
20860
|
+
// Licensed under the MIT license.
|
20861
|
+
var __awaiter$9 = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
20862
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
20863
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
20864
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
20865
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
20866
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
20867
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
20868
|
+
});
|
20869
|
+
};
|
20870
|
+
/**
|
20871
|
+
* @private
|
20872
|
+
*/
|
20873
|
+
const LocalPreview = (props) => {
|
20874
|
+
const locale = useLocale();
|
20875
|
+
const cameraButtonProps = usePropsFor$1(CameraButton);
|
20876
|
+
const localPreviewProps = useSelector$1(localPreviewSelector);
|
20877
|
+
const devicesButtonProps = usePropsFor$1(DevicesButton);
|
20878
|
+
const { audio: microphonePermissionGranted, video: cameraPermissionGranted } = useSelector$1(devicePermissionSelector);
|
20879
|
+
const isLocalMicrophoneEnabled = useSelector$1(getLocalMicrophoneEnabled);
|
20880
|
+
const adapter = useAdapter();
|
20881
|
+
const onToggleMic = React.useCallback(() => __awaiter$9(void 0, void 0, void 0, function* () {
|
20882
|
+
isLocalMicrophoneEnabled ? adapter.mute() : adapter.unmute();
|
20883
|
+
}), [adapter, isLocalMicrophoneEnabled]);
|
20884
|
+
const hasNoDevices = devicesButtonProps.cameras.length === 0 &&
|
20885
|
+
devicesButtonProps.microphones.length === 0 &&
|
20886
|
+
devicesButtonProps.speakers.length === 0;
|
20887
|
+
const hasCameras = devicesButtonProps.cameras.length > 0;
|
20888
|
+
const hasMicrophones = devicesButtonProps.microphones.length > 0;
|
20889
|
+
const theme = useTheme();
|
20890
|
+
const onRenderPlaceholder = React.useCallback(() => {
|
20891
|
+
return (React__default['default'].createElement(react.Stack, { className: react.mergeStyles({ width: '100%', height: '100%' }), verticalAlign: "center", tokens: { childrenGap: '0.25rem' } },
|
20892
|
+
React__default['default'].createElement(react.Stack.Item, { align: "center" },
|
20893
|
+
React__default['default'].createElement(CallCompositeIcon, { iconName: "LocalPreviewPlaceholder", className: react.mergeStyles(cameraOffLabelStyle, { color: theme.palette.neutralTertiary }) })),
|
20894
|
+
React__default['default'].createElement(react.Stack.Item, { align: "center" },
|
20895
|
+
React__default['default'].createElement(react.Text, { className: react.mergeStyles(cameraOffLabelStyle, { color: theme.palette.neutralSecondary }) }, locale.strings.call.cameraTurnedOff))));
|
20896
|
+
}, [theme, locale.strings.call.cameraTurnedOff]);
|
20897
|
+
const devicesButtonStyles = props.mobileView
|
20898
|
+
? {
|
20899
|
+
menuStyles: {
|
20900
|
+
menuItemStyles: buttonFlyoutIncreasedSizeStyles
|
20901
|
+
}
|
20902
|
+
}
|
20903
|
+
: undefined;
|
20904
|
+
return (React__default['default'].createElement(react.Stack, { "data-ui-id": "call-composite-local-preview", className: props.mobileView ? localPreviewContainerStyleMobile : localPreviewContainerStyleDesktop },
|
20905
|
+
React__default['default'].createElement(VideoTile, { styles: localPreviewTileStyle, renderElement: (localPreviewProps === null || localPreviewProps === void 0 ? void 0 : localPreviewProps.videoStreamElement) ? (React__default['default'].createElement(StreamMedia, { videoStreamElement: localPreviewProps.videoStreamElement })) : undefined, onRenderPlaceholder: onRenderPlaceholder },
|
20906
|
+
React__default['default'].createElement(ControlBar, { layout: "floatingBottom" },
|
20907
|
+
React__default['default'].createElement(MicrophoneButton, { "data-ui-id": "call-composite-local-device-settings-microphone-button", checked: isLocalMicrophoneEnabled, onToggleMicrophone: onToggleMic, disabled: !microphonePermissionGranted || !hasMicrophones, showLabel: true }),
|
20908
|
+
React__default['default'].createElement(CameraButton, Object.assign({ "data-ui-id": "call-composite-local-device-settings-camera-button" }, cameraButtonProps, { showLabel: true, disabled: !cameraPermissionGranted || !hasCameras })),
|
20909
|
+
props.showDevicesButton && (React__default['default'].createElement(DevicesButton, Object.assign({ "data-ui-id": "call-composite-local-device-settings-options-button" }, devicesButtonProps, {
|
20910
|
+
// disable button whilst all other buttons are disabled
|
20911
|
+
disabled: !microphonePermissionGranted || !cameraPermissionGranted || hasNoDevices, showLabel: true, styles: devicesButtonStyles })))))));
|
20912
|
+
};
|
20613
20913
|
|
20614
20914
|
// Copyright (c) Microsoft Corporation.
|
20615
20915
|
/**
|
@@ -20831,6 +21131,71 @@ const CallReadinessModalFallBack = (props) => {
|
|
20831
21131
|
}
|
20832
21132
|
};
|
20833
21133
|
|
21134
|
+
var __awaiter$8 = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
21135
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
21136
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
21137
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
21138
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
21139
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
21140
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
21141
|
+
});
|
21142
|
+
};
|
21143
|
+
/**
|
21144
|
+
* Pane that is used to show video effects button
|
21145
|
+
* @private
|
21146
|
+
*/
|
21147
|
+
/** @beta */
|
21148
|
+
const VideoEffectsPane = (props) => {
|
21149
|
+
const { showVideoEffectsOptions, setshowVideoEffectsOptions } = props;
|
21150
|
+
/* @conditional-compile-remove(video-background-effects) */
|
21151
|
+
const locale = useLocale();
|
21152
|
+
/* @conditional-compile-remove(video-background-effects) */
|
21153
|
+
const strings = locale.strings.call;
|
21154
|
+
/* @conditional-compile-remove(video-background-effects) */
|
21155
|
+
const selectableVideoEffects = [
|
21156
|
+
{
|
21157
|
+
key: 'none',
|
21158
|
+
iconProps: {
|
21159
|
+
iconName: 'RemoveVideoBackgroundEffect'
|
21160
|
+
},
|
21161
|
+
title: strings.removeBackgroundEffectButtonLabel,
|
21162
|
+
tooltipProps: {
|
21163
|
+
content: strings.removeBackgroundTooltip
|
21164
|
+
}
|
21165
|
+
},
|
21166
|
+
{
|
21167
|
+
key: 'blur',
|
21168
|
+
iconProps: {
|
21169
|
+
iconName: 'BlurVideoBackground'
|
21170
|
+
},
|
21171
|
+
title: strings.blurBackgroundEffectButtonLabel,
|
21172
|
+
tooltipProps: {
|
21173
|
+
content: strings.blurBackgroundTooltip
|
21174
|
+
}
|
21175
|
+
}
|
21176
|
+
];
|
21177
|
+
/* @conditional-compile-remove(video-background-effects) */
|
21178
|
+
const onEffectChange = React.useCallback((effectKey) => __awaiter$8(void 0, void 0, void 0, function* () {
|
21179
|
+
if (effectKey === 'blur') {
|
21180
|
+
props.adapter.blurVideoBackground();
|
21181
|
+
}
|
21182
|
+
else if (effectKey === 'none') {
|
21183
|
+
props.adapter.stopVideoBackgroundEffect();
|
21184
|
+
}
|
21185
|
+
}), [props.adapter]);
|
21186
|
+
return VideoEffectsPaneTrampoline(showVideoEffectsOptions, setshowVideoEffectsOptions,
|
21187
|
+
/* @conditional-compile-remove(video-background-effects) */
|
21188
|
+
selectableVideoEffects,
|
21189
|
+
/* @conditional-compile-remove(video-background-effects) */
|
21190
|
+
onEffectChange);
|
21191
|
+
};
|
21192
|
+
const VideoEffectsPaneTrampoline = (showVideoEffectsOptions, setshowVideoEffectsOptions, selectableVideoEffects, onEffectChange) => {
|
21193
|
+
/* @conditional-compile-remove(video-background-effects) */
|
21194
|
+
const locale = useLocale();
|
21195
|
+
/* @conditional-compile-remove(video-background-effects) */
|
21196
|
+
return (React__default['default'].createElement(react.Panel, { headerText: locale.strings.call.effects, isOpen: showVideoEffectsOptions, onDismiss: () => setshowVideoEffectsOptions(false), hasCloseButton: true, closeButtonAriaLabel: "Close", isLightDismiss: true }, selectableVideoEffects && (React__default['default'].createElement(_VideoBackgroundEffectsPicker, { options: selectableVideoEffects, onChange: onEffectChange }))));
|
21197
|
+
};
|
21198
|
+
|
20834
21199
|
// Copyright (c) Microsoft Corporation.
|
20835
21200
|
/**
|
20836
21201
|
* @private
|
@@ -20842,6 +21207,8 @@ const ConfigurationPage = (props) => {
|
|
20842
21207
|
/* @conditional-compile-remove(call-readiness) */ deviceChecks,
|
20843
21208
|
/* @conditional-compile-remove(call-readiness) */ onPermissionsTroubleshootingClick,
|
20844
21209
|
/* @conditional-compile-remove(call-readiness) */ onNetworkingTroubleShootingClick } = props;
|
21210
|
+
/* @conditional-compile-remove(video-background-effects) */
|
21211
|
+
const [showVideoEffectsPane, setVideoEffectsPane] = React.useState(false);
|
20845
21212
|
const options = useAdaptedSelector(getSelector$1(DevicesButton));
|
20846
21213
|
const localDeviceSettingsHandlers = useHandlers();
|
20847
21214
|
const { video: cameraPermissionGranted, audio: microphonePermissionGranted } = useSelector$1(devicePermissionSelector);
|
@@ -20854,6 +21221,8 @@ const ConfigurationPage = (props) => {
|
|
20854
21221
|
getDevicePermissionState(setVideoState, setAudioState);
|
20855
21222
|
let errorBarProps = usePropsFor$1(ErrorBar);
|
20856
21223
|
const adapter = useAdapter();
|
21224
|
+
/* @conditional-compile-remove(video-background-effects) */
|
21225
|
+
const theme = react.useTheme();
|
20857
21226
|
const deviceState = adapter.getState().devices;
|
20858
21227
|
/* @conditional-compile-remove(unsupported-browser) */
|
20859
21228
|
const environmentInfo = adapter.getState().environmentInfo;
|
@@ -20968,6 +21337,10 @@ const ConfigurationPage = (props) => {
|
|
20968
21337
|
React__default['default'].createElement(react.Stack.Item, { styles: callDetailsContainerStylesDesktop },
|
20969
21338
|
title,
|
20970
21339
|
callDescription),
|
21340
|
+
/* @conditional-compile-remove(video-background-effects) */
|
21341
|
+
React__default['default'].createElement(react.DefaultButton, { iconProps: { iconName: 'OptionsVideoBackgroundEffect' }, styles: effectsButtonStyles(theme), onClick: () => {
|
21342
|
+
setVideoEffectsPane(!showVideoEffectsPane);
|
21343
|
+
} }, locale.strings.call.effects),
|
20971
21344
|
React__default['default'].createElement(LocalDeviceSettings, Object.assign({}, options, localDeviceSettingsHandlers, { cameraPermissionGranted: cameraPermissionGrantedTrampoline(cameraPermissionGranted,
|
20972
21345
|
/* @conditional-compile-remove(call-readiness) */ videoState), microphonePermissionGranted: micPermissionGrantedTrampoline(microphonePermissionGranted,
|
20973
21346
|
/* @conditional-compile-remove(call-readiness) */ audioState),
|
@@ -20976,7 +21349,9 @@ const ConfigurationPage = (props) => {
|
|
20976
21349
|
setIsPermissionsModalDismissed(true);
|
20977
21350
|
} })))),
|
20978
21351
|
React__default['default'].createElement(react.Stack, { styles: mobileWithPreview ? startCallButtonContainerStyleMobile : startCallButtonContainerStyleDesktop },
|
20979
|
-
React__default['default'].createElement(StartCallButton, { className: mobileWithPreview ? startCallButtonStyleMobile : undefined, onClick: startCallHandler, disabled: disableStartCallButton }))))
|
21352
|
+
React__default['default'].createElement(StartCallButton, { className: mobileWithPreview ? startCallButtonStyleMobile : undefined, onClick: startCallHandler, disabled: disableStartCallButton })))),
|
21353
|
+
/* @conditional-compile-remove(video-background-effects) */
|
21354
|
+
React__default['default'].createElement(VideoEffectsPane, { showVideoEffectsOptions: showVideoEffectsPane, setshowVideoEffectsOptions: setVideoEffectsPane, adapter: adapter })));
|
20980
21355
|
};
|
20981
21356
|
const localPreviewTrampoline = (mobileView, doNotShow) => {
|
20982
21357
|
/* @conditional-compile-remove(rooms) */
|
@@ -23102,7 +23477,8 @@ const callCompositeContainerStyles = {
|
|
23102
23477
|
// Start a new stacking context so that any `position:absolute` elements
|
23103
23478
|
// inside the call composite do not compete with its siblings.
|
23104
23479
|
position: 'relative',
|
23105
|
-
width: '100%'
|
23480
|
+
width: '100%',
|
23481
|
+
minWidth: 0
|
23106
23482
|
}
|
23107
23483
|
};
|
23108
23484
|
/** @private */
|
@@ -23626,20 +24002,6 @@ const CallWithChatPane = (props) => {
|
|
23626
24002
|
React__default['default'].createElement(_DrawerMenu, { onLightDismiss: () => setDrawerMenuItems([]), items: drawerMenuItems })))));
|
23627
24003
|
};
|
23628
24004
|
|
23629
|
-
// Copyright (c) Microsoft Corporation.
|
23630
|
-
/**
|
23631
|
-
* Pane that is used to show video effects button
|
23632
|
-
* @private
|
23633
|
-
*/
|
23634
|
-
/** @beta */
|
23635
|
-
const VideoEffectsPane = (props) => {
|
23636
|
-
return VideoEffectsPaneTrampoline(props.showVideoEffectsOptions, props.setshowVideoEffectsOptions);
|
23637
|
-
};
|
23638
|
-
const VideoEffectsPaneTrampoline = (showVideoEffectsOptions, setshowVideoEffectsOptions) => {
|
23639
|
-
/* @conditional-compile-remove(video-background-effects) */
|
23640
|
-
return (React__default['default'].createElement(react.Panel, { headerText: "Effects", isOpen: showVideoEffectsOptions, onDismiss: () => setshowVideoEffectsOptions(false), hasCloseButton: true, closeButtonAriaLabel: "Close", isLightDismiss: true }));
|
23641
|
-
};
|
23642
|
-
|
23643
24005
|
// Copyright (c) Microsoft Corporation.
|
23644
24006
|
const CallWithChatScreen = (props) => {
|
23645
24007
|
const { callWithChatAdapter, fluentTheme, formFactor = 'desktop' } = props;
|
@@ -23795,7 +24157,7 @@ const CallWithChatScreen = (props) => {
|
|
23795
24157
|
style: callCompositeContainerCSS },
|
23796
24158
|
React__default['default'].createElement(CallComposite, Object.assign({}, props, { formFactor: formFactor, options: callCompositeOptions, adapter: callAdapter, fluentTheme: fluentTheme }))),
|
23797
24159
|
/* @conditional-compile-remove(video-background-effects) */
|
23798
|
-
React__default['default'].createElement(VideoEffectsPane, { showVideoEffectsOptions: showVideoEffectsPane, setshowVideoEffectsOptions: setShowVideoEffectsPane }),
|
24160
|
+
React__default['default'].createElement(VideoEffectsPane, { showVideoEffectsOptions: showVideoEffectsPane, setshowVideoEffectsOptions: setShowVideoEffectsPane, adapter: callAdapter }),
|
23799
24161
|
chatProps.adapter && callAdapter && hasJoinedCall && (React__default['default'].createElement(CallWithChatPane, { chatCompositeProps: chatProps, inviteLink: props.joinInvitationURL, onClose: closePane, chatAdapter: chatProps.adapter, callAdapter: callAdapter, onFetchAvatarPersonaData: props.onFetchAvatarPersonaData, onFetchParticipantMenuItems: props.onFetchParticipantMenuItems, onChatButtonClicked: showShowChatTabHeaderButton(props.callControls) ? selectChat : undefined, onPeopleButtonClicked: showShowPeopleTabHeaderButton(props.callControls) ? selectPeople : undefined, modalLayerHostId: modalLayerHostId, mobileView: mobileView, activePane: activePane,
|
23800
24162
|
/* @conditional-compile-remove(file-sharing) */
|
23801
24163
|
fileSharing: props.fileSharing, rtl: props.rtl, callControls: typeof props.callControls !== 'boolean' ? props.callControls : undefined }))),
|