@azure/communication-react 1.18.0-alpha-202407040014 → 1.18.0-alpha-202407060013
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 +117 -27
- package/dist/dist-cjs/communication-react/{ChatMessageComponentAsRichTextEditBox-DI2PbeU3.js → ChatMessageComponentAsRichTextEditBox-DMEk2o-G.js} +2 -2
- package/dist/dist-cjs/communication-react/{ChatMessageComponentAsRichTextEditBox-DI2PbeU3.js.map → ChatMessageComponentAsRichTextEditBox-DMEk2o-G.js.map} +1 -1
- package/dist/dist-cjs/communication-react/{RichTextSendBoxWrapper-ByURv_W1.js → RichTextSendBoxWrapper-ByJFtf0Z.js} +2 -2
- package/dist/dist-cjs/communication-react/{RichTextSendBoxWrapper-ByURv_W1.js.map → RichTextSendBoxWrapper-ByJFtf0Z.js.map} +1 -1
- package/dist/dist-cjs/communication-react/{index-BCxHilMO.js → index-BPO9X27C.js} +860 -519
- package/dist/dist-cjs/communication-react/index-BPO9X27C.js.map +1 -0
- package/dist/dist-cjs/communication-react/index.js +1 -1
- package/dist/dist-esm/acs-ui-common/src/common.d.ts +13 -0
- package/dist/dist-esm/acs-ui-common/src/common.js.map +1 -1
- package/dist/dist-esm/acs-ui-common/src/dataConversion.d.ts +6 -0
- package/dist/dist-esm/acs-ui-common/src/dataConversion.js +17 -0
- package/dist/dist-esm/acs-ui-common/src/dataConversion.js.map +1 -0
- package/dist/dist-esm/acs-ui-common/src/index.d.ts +2 -0
- package/dist/dist-esm/acs-ui-common/src/index.js +2 -0
- package/dist/dist-esm/acs-ui-common/src/index.js.map +1 -1
- package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js +1 -1
- package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js.map +1 -1
- package/dist/dist-esm/calling-stateful-client/src/CallClientState.d.ts +1 -1
- package/dist/dist-esm/calling-stateful-client/src/CallClientState.js.map +1 -1
- package/dist/dist-esm/chat-component-bindings/src/handlers/createHandlers.d.ts +3 -0
- package/dist/dist-esm/chat-component-bindings/src/handlers/createHandlers.js +15 -0
- package/dist/dist-esm/chat-component-bindings/src/handlers/createHandlers.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/MessageStatusIndicatorInternal.js +1 -1
- package/dist/dist-esm/react-components/src/components/MessageStatusIndicatorInternal.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/NotificationStack.d.ts +58 -26
- package/dist/dist-esm/react-components/src/components/NotificationStack.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/CopyPastePlugin.d.ts +6 -0
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/CopyPastePlugin.js +27 -1
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/CopyPastePlugin.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/UpdateContentPlugin.d.ts +1 -1
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/UpdateContentPlugin.js +27 -1
- package/dist/dist-esm/react-components/src/components/RichTextEditor/Plugins/UpdateContentPlugin.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextEditor.d.ts +2 -1
- package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextEditor.js +31 -14
- package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextEditor.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextInputBoxComponent.d.ts +2 -1
- package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextInputBoxComponent.js +6 -2
- package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextInputBoxComponent.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextSendBox.d.ts +16 -0
- package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextSendBox.js +73 -15
- package/dist/dist-esm/react-components/src/components/RichTextEditor/RichTextSendBox.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/styles/RichTextEditor.styles.js +7 -3
- package/dist/dist-esm/react-components/src/components/styles/RichTextEditor.styles.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/utils/RichTextEditorUtils.d.ts +5 -1
- package/dist/dist-esm/react-components/src/components/utils/RichTextEditorUtils.js +21 -0
- package/dist/dist-esm/react-components/src/components/utils/RichTextEditorUtils.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/utils/SendBoxUtils.d.ts +4 -0
- package/dist/dist-esm/react-components/src/components/utils/SendBoxUtils.js +15 -0
- package/dist/dist-esm/react-components/src/components/utils/SendBoxUtils.js.map +1 -1
- package/dist/dist-esm/react-components/src/components/utils.js +16 -1
- package/dist/dist-esm/react-components/src/components/utils.js.map +1 -1
- package/dist/dist-esm/react-components/src/localization/locales/en-US/strings.json +40 -0
- package/dist/dist-esm/react-components/src/theming/icons.d.ts +1 -0
- package/dist/dist-esm/react-components/src/theming/icons.js +4 -0
- package/dist/dist-esm/react-components/src/theming/icons.js.map +1 -1
- package/dist/dist-esm/react-components/src/types/Attachment.d.ts +4 -0
- package/dist/dist-esm/react-components/src/types/Attachment.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.js +65 -13
- package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.d.ts +1 -0
- package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js +8 -3
- 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/CallPage.d.ts +1 -0
- package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/CallPage.js +6 -2
- package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/CallPage.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/HoldPage.d.ts +1 -0
- package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/HoldPage.js +3 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/HoldPage.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/LobbyPage.d.ts +1 -0
- package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/LobbyPage.js +3 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/LobbyPage.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/TransferPage.js +5 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/TransferPage.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/TrackErrors.d.ts +6 -6
- package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/TrackErrors.js +22 -20
- package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/TrackErrors.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.d.ts +47 -0
- package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.js +104 -0
- package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.d.ts +5 -0
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js +22 -0
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatAdapter.d.ts +13 -0
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatAdapter.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedChatAdapter.d.ts +5 -0
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedChatAdapter.js +16 -0
- package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedChatAdapter.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.js +19 -2
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/AzureCommunicationChatAdapter.d.ts +3 -0
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/AzureCommunicationChatAdapter.js +20 -0
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/AzureCommunicationChatAdapter.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/ChatAdapter.d.ts +9 -0
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/adapter/ChatAdapter.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/file-sharing/AttachmentUpload.d.ts +1 -1
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/file-sharing/AttachmentUpload.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/hooks/useHandlers.js +4 -0
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/hooks/useHandlers.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/image-upload/useImageUpload.d.ts +12 -0
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/image-upload/useImageUpload.js +129 -0
- package/dist/dist-esm/react-composites/src/composites/ChatComposite/image-upload/useImageUpload.js.map +1 -0
- package/dist/dist-esm/react-composites/src/composites/common/SendBoxPicker.d.ts +3 -0
- package/dist/dist-esm/react-composites/src/composites/common/SendBoxPicker.js +1 -2
- package/dist/dist-esm/react-composites/src/composites/common/SendBoxPicker.js.map +1 -1
- package/dist/dist-esm/react-composites/src/composites/common/icons.d.ts +1 -0
- package/package.json +2 -2
- package/dist/dist-cjs/communication-react/index-BCxHilMO.js.map +0 -1
@@ -175,7 +175,7 @@ function getDefaultExportFromCjs (x) {
|
|
175
175
|
// Copyright (c) Microsoft Corporation.
|
176
176
|
// Licensed under the MIT License.
|
177
177
|
// GENERATED FILE. DO NOT EDIT MANUALLY.
|
178
|
-
var telemetryVersion = '1.18.0-alpha-
|
178
|
+
var telemetryVersion = '1.18.0-alpha-202407060013';
|
179
179
|
|
180
180
|
|
181
181
|
var telemetryVersion$1 = /*@__PURE__*/getDefaultExportFromCjs(telemetryVersion);
|
@@ -343,6 +343,23 @@ function _getKeys(obj) {
|
|
343
343
|
return Object.keys(obj);
|
344
344
|
}
|
345
345
|
|
346
|
+
// Copyright (c) Microsoft Corporation.
|
347
|
+
// Licensed under the MIT License.
|
348
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
349
|
+
/**
|
350
|
+
* Convert a base64 string to a Blob.
|
351
|
+
* @internal
|
352
|
+
*/
|
353
|
+
const _base64ToBlob = (dataURI) => {
|
354
|
+
const byteString = atob(dataURI.split(',')[1]);
|
355
|
+
const arrayBuffer = new ArrayBuffer(byteString.length);
|
356
|
+
const uint8Array = new Uint8Array(arrayBuffer);
|
357
|
+
for (let i = 0; i < byteString.length; i++) {
|
358
|
+
uint8Array[i] = byteString.charCodeAt(i);
|
359
|
+
}
|
360
|
+
return new Blob([arrayBuffer]);
|
361
|
+
};
|
362
|
+
|
346
363
|
// Copyright (c) Microsoft Corporation.
|
347
364
|
// Licensed under the MIT License.
|
348
365
|
/**
|
@@ -512,7 +529,7 @@ const getSupportedSpokenLanguages = (state, props) => {
|
|
512
529
|
|
513
530
|
// Copyright (c) Microsoft Corporation.
|
514
531
|
// Licensed under the MIT License.
|
515
|
-
var __awaiter$
|
532
|
+
var __awaiter$T = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
516
533
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
517
534
|
return new (P || (P = Promise))(function (resolve, reject) {
|
518
535
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -551,7 +568,7 @@ const _isPreviewOn = (deviceManager) => {
|
|
551
568
|
*
|
552
569
|
* @private
|
553
570
|
*/
|
554
|
-
const disposeAllLocalPreviewViews = (callClient) => __awaiter$
|
571
|
+
const disposeAllLocalPreviewViews = (callClient) => __awaiter$T(void 0, void 0, void 0, function* () {
|
555
572
|
const unparentedViews = callClient.getState().deviceManager.unparentedViews;
|
556
573
|
for (const view of unparentedViews) {
|
557
574
|
yield callClient.disposeView(undefined, undefined, view);
|
@@ -728,7 +745,7 @@ const holdButtonSelector = reselect__namespace.createSelector([getCallState], (c
|
|
728
745
|
|
729
746
|
// Copyright (c) Microsoft Corporation.
|
730
747
|
// Licensed under the MIT License.
|
731
|
-
var __awaiter$
|
748
|
+
var __awaiter$S = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
732
749
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
733
750
|
return new (P || (P = Promise))(function (resolve, reject) {
|
734
751
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -749,7 +766,7 @@ const areStreamsEqual = (prevStream, newStream) => {
|
|
749
766
|
* @private
|
750
767
|
*/
|
751
768
|
const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager, call, options) => {
|
752
|
-
const onStartLocalVideo = () => __awaiter$
|
769
|
+
const onStartLocalVideo = () => __awaiter$S(void 0, void 0, void 0, function* () {
|
753
770
|
// Before the call object creates a stream, dispose of any local preview streams.
|
754
771
|
// @TODO: is there any way to parent the unparented view to the call object instead
|
755
772
|
// of disposing and creating a new stream?
|
@@ -769,7 +786,7 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
|
|
769
786
|
yield call.startVideo(stream);
|
770
787
|
}
|
771
788
|
});
|
772
|
-
const onStopLocalVideo = (stream) => __awaiter$
|
789
|
+
const onStopLocalVideo = (stream) => __awaiter$S(void 0, void 0, void 0, function* () {
|
773
790
|
const callId = call === null || call === void 0 ? void 0 : call.id;
|
774
791
|
if (!callId) {
|
775
792
|
return;
|
@@ -778,7 +795,7 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
|
|
778
795
|
yield call.stopVideo(stream);
|
779
796
|
}
|
780
797
|
});
|
781
|
-
const onToggleCamera = (options) => __awaiter$
|
798
|
+
const onToggleCamera = (options) => __awaiter$S(void 0, void 0, void 0, function* () {
|
782
799
|
const previewOn = _isPreviewOn(callClient.getState().deviceManager);
|
783
800
|
// the disposal of the unparented views is to workaround: https://skype.visualstudio.com/SPOOL/_workitems/edit/3030558.
|
784
801
|
// The root cause of the issue is caused by never transitioning the unparented view to the
|
@@ -835,19 +852,19 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
|
|
835
852
|
}
|
836
853
|
}
|
837
854
|
});
|
838
|
-
const onSelectMicrophone = (device) => __awaiter$
|
855
|
+
const onSelectMicrophone = (device) => __awaiter$S(void 0, void 0, void 0, function* () {
|
839
856
|
if (!deviceManager) {
|
840
857
|
return;
|
841
858
|
}
|
842
859
|
return deviceManager.selectMicrophone(device);
|
843
860
|
});
|
844
|
-
const onSelectSpeaker = (device) => __awaiter$
|
861
|
+
const onSelectSpeaker = (device) => __awaiter$S(void 0, void 0, void 0, function* () {
|
845
862
|
if (!deviceManager) {
|
846
863
|
return;
|
847
864
|
}
|
848
865
|
return deviceManager.selectSpeaker(device);
|
849
866
|
});
|
850
|
-
const onSelectCamera = (device, options) => __awaiter$
|
867
|
+
const onSelectCamera = (device, options) => __awaiter$S(void 0, void 0, void 0, function* () {
|
851
868
|
if (!deviceManager) {
|
852
869
|
return;
|
853
870
|
}
|
@@ -877,9 +894,9 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
|
|
877
894
|
}, options);
|
878
895
|
}
|
879
896
|
});
|
880
|
-
const onRaiseHand = () => __awaiter$
|
881
|
-
const onLowerHand = () => __awaiter$
|
882
|
-
const onToggleRaiseHand = () => __awaiter$
|
897
|
+
const onRaiseHand = () => __awaiter$S(void 0, void 0, void 0, function* () { var _a; return yield ((_a = call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.RaiseHand)) === null || _a === void 0 ? void 0 : _a.raiseHand()); });
|
898
|
+
const onLowerHand = () => __awaiter$S(void 0, void 0, void 0, function* () { var _b; return yield ((_b = call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.RaiseHand)) === null || _b === void 0 ? void 0 : _b.lowerHand()); });
|
899
|
+
const onToggleRaiseHand = () => __awaiter$S(void 0, void 0, void 0, function* () {
|
883
900
|
const raiseHandFeature = call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.RaiseHand);
|
884
901
|
const localUserId = callClient.getState().userId;
|
885
902
|
const isLocalRaisedHand = raiseHandFeature === null || raiseHandFeature === void 0 ? void 0 : raiseHandFeature.getRaisedHands().find((publishedState) => toFlatCommunicationIdentifier(publishedState.identifier) === toFlatCommunicationIdentifier(localUserId));
|
@@ -890,7 +907,7 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
|
|
890
907
|
yield (raiseHandFeature === null || raiseHandFeature === void 0 ? void 0 : raiseHandFeature.raiseHand());
|
891
908
|
}
|
892
909
|
});
|
893
|
-
const onReactionClick = (reaction) => __awaiter$
|
910
|
+
const onReactionClick = (reaction) => __awaiter$S(void 0, void 0, void 0, function* () {
|
894
911
|
var _c;
|
895
912
|
if (reaction === 'like' ||
|
896
913
|
reaction === 'applause' ||
|
@@ -904,19 +921,19 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
|
|
904
921
|
}
|
905
922
|
return;
|
906
923
|
});
|
907
|
-
const onToggleMicrophone = () => __awaiter$
|
924
|
+
const onToggleMicrophone = () => __awaiter$S(void 0, void 0, void 0, function* () {
|
908
925
|
if (!call || !(_isInCall(call.state) || _isInLobbyOrConnecting(call.state))) {
|
909
926
|
throw new Error(`Please invoke onToggleMicrophone after call is started`);
|
910
927
|
}
|
911
928
|
return call.isMuted ? yield call.unmute() : yield call.mute();
|
912
929
|
});
|
913
|
-
const onStartScreenShare = () => __awaiter$
|
914
|
-
const onStopScreenShare = () => __awaiter$
|
915
|
-
const onToggleScreenShare = () => __awaiter$
|
916
|
-
const onHangUp = (forEveryone) => __awaiter$
|
930
|
+
const onStartScreenShare = () => __awaiter$S(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.startScreenSharing()); });
|
931
|
+
const onStopScreenShare = () => __awaiter$S(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.stopScreenSharing()); });
|
932
|
+
const onToggleScreenShare = () => __awaiter$S(void 0, void 0, void 0, function* () { return (call === null || call === void 0 ? void 0 : call.isScreenSharingOn) ? yield onStopScreenShare() : yield onStartScreenShare(); });
|
933
|
+
const onHangUp = (forEveryone) => __awaiter$S(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.hangUp({ forEveryone: forEveryone === true ? true : false })); });
|
917
934
|
/* @conditional-compile-remove(PSTN-calls) */
|
918
|
-
const onToggleHold = () => __awaiter$
|
919
|
-
const onCreateLocalStreamView = (...args_1) => __awaiter$
|
935
|
+
const onToggleHold = () => __awaiter$S(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()); });
|
936
|
+
const onCreateLocalStreamView = (...args_1) => __awaiter$S(void 0, [...args_1], void 0, function* (options = { scalingMode: 'Crop', isMirrored: true }) {
|
920
937
|
var _d;
|
921
938
|
if (!call || call.localVideoStreams.length === 0) {
|
922
939
|
return;
|
@@ -932,7 +949,7 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
|
|
932
949
|
const { view } = (_d = (yield callClient.createView(call.id, undefined, localStream, options))) !== null && _d !== void 0 ? _d : {};
|
933
950
|
return view ? { view } : undefined;
|
934
951
|
});
|
935
|
-
const onCreateRemoteStreamView = (userId_1, ...args_2) => __awaiter$
|
952
|
+
const onCreateRemoteStreamView = (userId_1, ...args_2) => __awaiter$S(void 0, [userId_1, ...args_2], void 0, function* (userId, options = { scalingMode: 'Crop' }) {
|
936
953
|
if (!call) {
|
937
954
|
return;
|
938
955
|
}
|
@@ -969,7 +986,7 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
|
|
969
986
|
}
|
970
987
|
return (createViewResult === null || createViewResult === void 0 ? void 0 : createViewResult.view) ? { view: createViewResult === null || createViewResult === void 0 ? void 0 : createViewResult.view } : undefined;
|
971
988
|
});
|
972
|
-
const onDisposeRemoteStreamView = (userId) => __awaiter$
|
989
|
+
const onDisposeRemoteStreamView = (userId) => __awaiter$S(void 0, void 0, void 0, function* () {
|
973
990
|
if (!call) {
|
974
991
|
return;
|
975
992
|
}
|
@@ -990,7 +1007,7 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
|
|
990
1007
|
callClient.disposeView(call.id, participant.identifier, screenShareStream);
|
991
1008
|
}
|
992
1009
|
});
|
993
|
-
const onDisposeRemoteVideoStreamView = (userId) => __awaiter$
|
1010
|
+
const onDisposeRemoteVideoStreamView = (userId) => __awaiter$S(void 0, void 0, void 0, function* () {
|
994
1011
|
if (!call) {
|
995
1012
|
return;
|
996
1013
|
}
|
@@ -1007,7 +1024,7 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
|
|
1007
1024
|
callClient.disposeView(call.id, participant.identifier, remoteVideoStream);
|
1008
1025
|
}
|
1009
1026
|
});
|
1010
|
-
const onDisposeRemoteScreenShareStreamView = (userId) => __awaiter$
|
1027
|
+
const onDisposeRemoteScreenShareStreamView = (userId) => __awaiter$S(void 0, void 0, void 0, function* () {
|
1011
1028
|
if (!call) {
|
1012
1029
|
return;
|
1013
1030
|
}
|
@@ -1024,7 +1041,7 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
|
|
1024
1041
|
callClient.disposeView(call.id, participant.identifier, screenShareStream);
|
1025
1042
|
}
|
1026
1043
|
});
|
1027
|
-
const onDisposeLocalStreamView = () => __awaiter$
|
1044
|
+
const onDisposeLocalStreamView = () => __awaiter$S(void 0, void 0, void 0, function* () {
|
1028
1045
|
// If the user is currently in a call, dispose of the local stream view attached to that call.
|
1029
1046
|
const callState = call && callClient.getState().calls[call.id];
|
1030
1047
|
const localStream = callState === null || callState === void 0 ? void 0 : callState.localVideoStreams.find((item) => item.mediaStreamType === 'Video');
|
@@ -1036,17 +1053,17 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
|
|
1036
1053
|
// TODO: we need to remember which LocalVideoStream was used for LocalPreview and dispose that one.
|
1037
1054
|
yield disposeAllLocalPreviewViews(callClient);
|
1038
1055
|
});
|
1039
|
-
const onSendDtmfTone = (dtmfTone) => __awaiter$
|
1056
|
+
const onSendDtmfTone = (dtmfTone) => __awaiter$S(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.sendDtmf(dtmfTone)); });
|
1040
1057
|
const notImplemented = () => {
|
1041
1058
|
throw new Error('Not implemented, cannot call a method from an abstract object');
|
1042
1059
|
};
|
1043
1060
|
/* @conditional-compile-remove(call-readiness) */
|
1044
|
-
const askDevicePermission = (constrain) => __awaiter$
|
1061
|
+
const askDevicePermission = (constrain) => __awaiter$S(void 0, void 0, void 0, function* () {
|
1045
1062
|
if (deviceManager) {
|
1046
1063
|
yield (deviceManager === null || deviceManager === void 0 ? void 0 : deviceManager.askDevicePermission(constrain));
|
1047
1064
|
}
|
1048
1065
|
});
|
1049
|
-
const onRemoveVideoBackgroundEffects = () => __awaiter$
|
1066
|
+
const onRemoveVideoBackgroundEffects = () => __awaiter$S(void 0, void 0, void 0, function* () {
|
1050
1067
|
const stream = (call === null || call === void 0 ? void 0 : call.localVideoStreams.find((stream) => stream.mediaStreamType === 'Video')) ||
|
1051
1068
|
(deviceManager === null || deviceManager === void 0 ? void 0 : deviceManager.getUnparentedVideoStreams().find((stream) => stream.mediaStreamType === 'Video'));
|
1052
1069
|
if (stream) {
|
@@ -1058,7 +1075,7 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
|
|
1058
1075
|
}
|
1059
1076
|
}
|
1060
1077
|
});
|
1061
|
-
const onBlurVideoBackground = (backgroundBlurConfig) => __awaiter$
|
1078
|
+
const onBlurVideoBackground = (backgroundBlurConfig) => __awaiter$S(void 0, void 0, void 0, function* () {
|
1062
1079
|
var _e;
|
1063
1080
|
const stream = (call === null || call === void 0 ? void 0 : call.localVideoStreams.find((stream) => stream.mediaStreamType === 'Video')) ||
|
1064
1081
|
(deviceManager === null || deviceManager === void 0 ? void 0 : deviceManager.getUnparentedVideoStreams().find((stream) => stream.mediaStreamType === 'Video'));
|
@@ -1071,7 +1088,7 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
|
|
1071
1088
|
return createEffect && stream.feature(communicationCalling.Features.VideoEffects).startEffects(createEffect(backgroundBlurConfig));
|
1072
1089
|
}
|
1073
1090
|
});
|
1074
|
-
const onReplaceVideoBackground = (backgroundReplacementConfig) => __awaiter$
|
1091
|
+
const onReplaceVideoBackground = (backgroundReplacementConfig) => __awaiter$S(void 0, void 0, void 0, function* () {
|
1075
1092
|
var _f;
|
1076
1093
|
const stream = (call === null || call === void 0 ? void 0 : call.localVideoStreams.find((stream) => stream.mediaStreamType === 'Video')) ||
|
1077
1094
|
(deviceManager === null || deviceManager === void 0 ? void 0 : deviceManager.getUnparentedVideoStreams().find((stream) => stream.mediaStreamType === 'Video'));
|
@@ -1084,38 +1101,38 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
|
|
1084
1101
|
return (createEffect && stream.feature(communicationCalling.Features.VideoEffects).startEffects(createEffect(backgroundReplacementConfig)));
|
1085
1102
|
}
|
1086
1103
|
});
|
1087
|
-
const onStartCaptions = (options) => __awaiter$
|
1104
|
+
const onStartCaptions = (options) => __awaiter$S(void 0, void 0, void 0, function* () {
|
1088
1105
|
const captionsFeature = call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.Captions).captions;
|
1089
1106
|
yield (captionsFeature === null || captionsFeature === void 0 ? void 0 : captionsFeature.startCaptions(options));
|
1090
1107
|
});
|
1091
|
-
const onStopCaptions = () => __awaiter$
|
1108
|
+
const onStopCaptions = () => __awaiter$S(void 0, void 0, void 0, function* () {
|
1092
1109
|
const captionsFeature = call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.Captions).captions;
|
1093
1110
|
yield (captionsFeature === null || captionsFeature === void 0 ? void 0 : captionsFeature.stopCaptions());
|
1094
1111
|
});
|
1095
|
-
const onSetSpokenLanguage = (language) => __awaiter$
|
1112
|
+
const onSetSpokenLanguage = (language) => __awaiter$S(void 0, void 0, void 0, function* () {
|
1096
1113
|
const captionsFeature = call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.Captions).captions;
|
1097
1114
|
yield (captionsFeature === null || captionsFeature === void 0 ? void 0 : captionsFeature.setSpokenLanguage(language));
|
1098
1115
|
});
|
1099
|
-
const onSetCaptionLanguage = (language) => __awaiter$
|
1116
|
+
const onSetCaptionLanguage = (language) => __awaiter$S(void 0, void 0, void 0, function* () {
|
1100
1117
|
const captionsFeature = call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.Captions).captions;
|
1101
1118
|
yield captionsFeature.setCaptionLanguage(language);
|
1102
1119
|
});
|
1103
|
-
const onSubmitSurvey = (survey) => __awaiter$
|
1104
|
-
const onStartSpotlight = (userIds) => __awaiter$
|
1120
|
+
const onSubmitSurvey = (survey) => __awaiter$S(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.CallSurvey).submitSurvey(survey)); });
|
1121
|
+
const onStartSpotlight = (userIds) => __awaiter$S(void 0, void 0, void 0, function* () {
|
1105
1122
|
const participants = userIds === null || userIds === void 0 ? void 0 : userIds.map((userId) => _toCommunicationIdentifier(userId));
|
1106
1123
|
yield (call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.Spotlight).startSpotlight(participants));
|
1107
1124
|
});
|
1108
|
-
const onStopSpotlight = (userIds) => __awaiter$
|
1125
|
+
const onStopSpotlight = (userIds) => __awaiter$S(void 0, void 0, void 0, function* () {
|
1109
1126
|
const participants = userIds === null || userIds === void 0 ? void 0 : userIds.map((userId) => _toCommunicationIdentifier(userId));
|
1110
1127
|
yield (call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.Spotlight).stopSpotlight(participants));
|
1111
1128
|
});
|
1112
|
-
const onStopAllSpotlight = () => __awaiter$
|
1129
|
+
const onStopAllSpotlight = () => __awaiter$S(void 0, void 0, void 0, function* () {
|
1113
1130
|
yield (call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.Spotlight).stopAllSpotlight());
|
1114
1131
|
});
|
1115
1132
|
/* @conditional-compile-remove(soft-mute) */
|
1116
|
-
const onMuteParticipant = (userId) => __awaiter$
|
1133
|
+
const onMuteParticipant = (userId) => __awaiter$S(void 0, void 0, void 0, function* () {
|
1117
1134
|
if (call === null || call === void 0 ? void 0 : call.remoteParticipants) {
|
1118
|
-
call === null || call === void 0 ? void 0 : call.remoteParticipants.forEach((participant) => __awaiter$
|
1135
|
+
call === null || call === void 0 ? void 0 : call.remoteParticipants.forEach((participant) => __awaiter$S(void 0, void 0, void 0, function* () {
|
1119
1136
|
// Using toFlatCommunicationIdentifier to convert the CommunicationIdentifier to string
|
1120
1137
|
// as _toCommunicationIdentifier(userId) comparison to participant.identifier did not work for this case
|
1121
1138
|
if (toFlatCommunicationIdentifier(participant.identifier) === userId) {
|
@@ -1125,27 +1142,27 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
|
|
1125
1142
|
}
|
1126
1143
|
});
|
1127
1144
|
/* @conditional-compile-remove(soft-mute) */
|
1128
|
-
const onMuteAllRemoteParticipants = () => __awaiter$
|
1145
|
+
const onMuteAllRemoteParticipants = () => __awaiter$S(void 0, void 0, void 0, function* () {
|
1129
1146
|
call === null || call === void 0 ? void 0 : call.muteAllRemoteParticipants();
|
1130
1147
|
});
|
1131
1148
|
const canStartSpotlight = call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.Capabilities).capabilities.spotlightParticipant.isPresent;
|
1132
1149
|
const canRemoveSpotlight = call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.Capabilities).capabilities.removeParticipantsSpotlight.isPresent;
|
1133
1150
|
const onStartLocalSpotlight = canStartSpotlight
|
1134
|
-
? () => __awaiter$
|
1151
|
+
? () => __awaiter$S(void 0, void 0, void 0, function* () {
|
1135
1152
|
yield (call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.Spotlight).startSpotlight());
|
1136
1153
|
})
|
1137
1154
|
: undefined;
|
1138
|
-
const onStopLocalSpotlight = () => __awaiter$
|
1155
|
+
const onStopLocalSpotlight = () => __awaiter$S(void 0, void 0, void 0, function* () {
|
1139
1156
|
yield (call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.Spotlight).stopSpotlight());
|
1140
1157
|
});
|
1141
1158
|
const onStartRemoteSpotlight = canStartSpotlight
|
1142
|
-
? (userIds) => __awaiter$
|
1159
|
+
? (userIds) => __awaiter$S(void 0, void 0, void 0, function* () {
|
1143
1160
|
const participants = userIds === null || userIds === void 0 ? void 0 : userIds.map((userId) => _toCommunicationIdentifier(userId));
|
1144
1161
|
yield (call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.Spotlight).startSpotlight(participants));
|
1145
1162
|
})
|
1146
1163
|
: undefined;
|
1147
1164
|
const onStopRemoteSpotlight = canRemoveSpotlight
|
1148
|
-
? (userIds) => __awaiter$
|
1165
|
+
? (userIds) => __awaiter$S(void 0, void 0, void 0, function* () {
|
1149
1166
|
const participants = userIds === null || userIds === void 0 ? void 0 : userIds.map((userId) => _toCommunicationIdentifier(userId));
|
1150
1167
|
yield (call === null || call === void 0 ? void 0 : call.feature(communicationCalling.Features.Spotlight).stopSpotlight(participants));
|
1151
1168
|
})
|
@@ -1204,7 +1221,7 @@ const createDefaultCommonCallingHandlers = memoizeOne((callClient, deviceManager
|
|
1204
1221
|
|
1205
1222
|
// Copyright (c) Microsoft Corporation.
|
1206
1223
|
// Licensed under the MIT License.
|
1207
|
-
var __awaiter$
|
1224
|
+
var __awaiter$R = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
1208
1225
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
1209
1226
|
return new (P || (P = Promise))(function (resolve, reject) {
|
1210
1227
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -1230,7 +1247,7 @@ const createDefaultCallingHandlers = memoizeOne((...args) => {
|
|
1230
1247
|
return callAgent === null || callAgent === void 0 ? void 0 : callAgent.startCall(participants, options);
|
1231
1248
|
},
|
1232
1249
|
/* @conditional-compile-remove(PSTN-calls) */
|
1233
|
-
onAddParticipant: (userId, options) => __awaiter$
|
1250
|
+
onAddParticipant: (userId, options) => __awaiter$R(void 0, void 0, void 0, function* () {
|
1234
1251
|
const participant = _toCommunicationIdentifier(userId);
|
1235
1252
|
if (communicationCommon.isPhoneNumberIdentifier(participant)) {
|
1236
1253
|
call === null || call === void 0 ? void 0 : call.addParticipant(participant, options);
|
@@ -1238,7 +1255,7 @@ const createDefaultCallingHandlers = memoizeOne((...args) => {
|
|
1238
1255
|
else if (communicationCommon.isCommunicationUserIdentifier(participant) || communicationCommon.isMicrosoftTeamsUserIdentifier(participant)) {
|
1239
1256
|
call === null || call === void 0 ? void 0 : call.addParticipant(participant);
|
1240
1257
|
}
|
1241
|
-
}), onRemoveParticipant: (userId) => __awaiter$
|
1258
|
+
}), onRemoveParticipant: (userId) => __awaiter$R(void 0, void 0, void 0, function* () {
|
1242
1259
|
const participant = _toCommunicationIdentifier(userId);
|
1243
1260
|
yield (call === null || call === void 0 ? void 0 : call.removeParticipant(participant));
|
1244
1261
|
}) });
|
@@ -1246,7 +1263,7 @@ const createDefaultCallingHandlers = memoizeOne((...args) => {
|
|
1246
1263
|
|
1247
1264
|
// Copyright (c) Microsoft Corporation.
|
1248
1265
|
// Licensed under the MIT License.
|
1249
|
-
var __awaiter$
|
1266
|
+
var __awaiter$Q = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
1250
1267
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
1251
1268
|
return new (P || (P = Promise))(function (resolve, reject) {
|
1252
1269
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -1277,7 +1294,7 @@ const createDefaultTeamsCallingHandlers = memoizeOne((callClient, callAgent, dev
|
|
1277
1294
|
return undefined;
|
1278
1295
|
},
|
1279
1296
|
/* @conditional-compile-remove(PSTN-calls) */
|
1280
|
-
onAddParticipant: (userId, options) => __awaiter$
|
1297
|
+
onAddParticipant: (userId, options) => __awaiter$Q(void 0, void 0, void 0, function* () {
|
1281
1298
|
const participant = _toCommunicationIdentifier(userId);
|
1282
1299
|
/* @conditional-compile-remove(teams-identity-support) */
|
1283
1300
|
const threadId = options === null || options === void 0 ? void 0 : options.threadId;
|
@@ -1293,7 +1310,7 @@ const createDefaultTeamsCallingHandlers = memoizeOne((callClient, callAgent, dev
|
|
1293
1310
|
}
|
1294
1311
|
/* @conditional-compile-remove(teams-identity-support) */
|
1295
1312
|
call === null || call === void 0 ? void 0 : call.addParticipant(participant);
|
1296
|
-
}), onRemoveParticipant: (userId) => __awaiter$
|
1313
|
+
}), onRemoveParticipant: (userId) => __awaiter$Q(void 0, void 0, void 0, function* () {
|
1297
1314
|
const participant = _toCommunicationIdentifier(userId);
|
1298
1315
|
if (communicationCommon.isCommunicationUserIdentifier(participant)) {
|
1299
1316
|
throw new Error('CommunicationIdentifier in Teams call is not supported!');
|
@@ -1526,7 +1543,7 @@ const getCaptionsSpeakerIdentifier = (captions) => {
|
|
1526
1543
|
|
1527
1544
|
// Copyright (c) Microsoft Corporation.
|
1528
1545
|
// Licensed under the MIT License.
|
1529
|
-
var __awaiter$
|
1546
|
+
var __awaiter$P = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
1530
1547
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
1531
1548
|
return new (P || (P = Promise))(function (resolve, reject) {
|
1532
1549
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -1603,7 +1620,7 @@ class ProxyDeviceManager {
|
|
1603
1620
|
console.info('Could not Unsubscribe to Permissions API Camera changed events, API is not supported by browser', e);
|
1604
1621
|
}
|
1605
1622
|
};
|
1606
|
-
this.permissionsApiStateChangeHandler = () => __awaiter$
|
1623
|
+
this.permissionsApiStateChangeHandler = () => __awaiter$P(this, void 0, void 0, function* () {
|
1607
1624
|
yield this.updateDevicePermissionState();
|
1608
1625
|
});
|
1609
1626
|
/**
|
@@ -1614,13 +1631,13 @@ class ProxyDeviceManager {
|
|
1614
1631
|
this.selectCamera = (videoDeviceInfo) => {
|
1615
1632
|
this._context.setDeviceManagerSelectedCamera(videoDeviceInfo);
|
1616
1633
|
};
|
1617
|
-
this.videoDevicesUpdated = () => __awaiter$
|
1634
|
+
this.videoDevicesUpdated = () => __awaiter$P(this, void 0, void 0, function* () {
|
1618
1635
|
// Device Manager always has a camera with '' name if there are no real camera devices available.
|
1619
1636
|
// We don't want to show that in the UI.
|
1620
1637
|
const realCameras = (yield this._deviceManager.getCameras()).filter((c) => !!c.name);
|
1621
1638
|
this._context.setDeviceManagerCameras(dedupeById(realCameras));
|
1622
1639
|
});
|
1623
|
-
this.audioDevicesUpdated = () => __awaiter$
|
1640
|
+
this.audioDevicesUpdated = () => __awaiter$P(this, void 0, void 0, function* () {
|
1624
1641
|
this._context.setDeviceManagerMicrophones(dedupeById(yield this._deviceManager.getMicrophones()));
|
1625
1642
|
this._context.setDeviceManagerSpeakers(dedupeById(yield this._deviceManager.getSpeakers()));
|
1626
1643
|
});
|
@@ -1630,7 +1647,7 @@ class ProxyDeviceManager {
|
|
1630
1647
|
this.selectedSpeakerChanged = () => {
|
1631
1648
|
this._context.setDeviceManagerSelectedSpeaker(this._deviceManager.selectedSpeaker);
|
1632
1649
|
};
|
1633
|
-
this.updateDevicePermissionState = (sdkDeviceAccessState) => __awaiter$
|
1650
|
+
this.updateDevicePermissionState = (sdkDeviceAccessState) => __awaiter$P(this, void 0, void 0, function* () {
|
1634
1651
|
let hasCameraPermission = !!(sdkDeviceAccessState === null || sdkDeviceAccessState === void 0 ? void 0 : sdkDeviceAccessState.video);
|
1635
1652
|
let hasMicPermission = !!(sdkDeviceAccessState === null || sdkDeviceAccessState === void 0 ? void 0 : sdkDeviceAccessState.audio);
|
1636
1653
|
// Supplement the SDK values with values from the Permissions API to get a better understanding of the device
|
@@ -1706,7 +1723,7 @@ class ProxyDeviceManager {
|
|
1706
1723
|
}
|
1707
1724
|
case 'askDevicePermission': {
|
1708
1725
|
return this._context.withAsyncErrorTeedToState((...args) => {
|
1709
|
-
return target.askDevicePermission(...args).then((deviceAccess) => __awaiter$
|
1726
|
+
return target.askDevicePermission(...args).then((deviceAccess) => __awaiter$P(this, void 0, void 0, function* () {
|
1710
1727
|
yield this.updateDevicePermissionState(deviceAccess);
|
1711
1728
|
return deviceAccess;
|
1712
1729
|
}));
|
@@ -2083,7 +2100,7 @@ class CallIdHistory {
|
|
2083
2100
|
|
2084
2101
|
// Copyright (c) Microsoft Corporation.
|
2085
2102
|
// Licensed under the MIT License.
|
2086
|
-
var __awaiter$
|
2103
|
+
var __awaiter$O = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
2087
2104
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
2088
2105
|
return new (P || (P = Promise))(function (resolve, reject) {
|
2089
2106
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -3011,7 +3028,7 @@ let CallContext$2 = class CallContext {
|
|
3011
3028
|
* @throws CallError. Exceptions thrown from `f` are tagged with the failed `target.
|
3012
3029
|
*/
|
3013
3030
|
withAsyncErrorTeedToState(action, target) {
|
3014
|
-
return (...args) => __awaiter$
|
3031
|
+
return (...args) => __awaiter$O(this, void 0, void 0, function* () {
|
3015
3032
|
try {
|
3016
3033
|
return yield action(...args);
|
3017
3034
|
}
|
@@ -3536,7 +3553,7 @@ function _logStreamEvent(eventName, streamLogInfo, error) {
|
|
3536
3553
|
|
3537
3554
|
// Copyright (c) Microsoft Corporation.
|
3538
3555
|
// Licensed under the MIT License.
|
3539
|
-
var __awaiter$
|
3556
|
+
var __awaiter$N = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
3540
3557
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
3541
3558
|
return new (P || (P = Promise))(function (resolve, reject) {
|
3542
3559
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -3546,7 +3563,7 @@ var __awaiter$M = (window && window.__awaiter) || function (thisArg, _arguments,
|
|
3546
3563
|
});
|
3547
3564
|
};
|
3548
3565
|
function createViewVideo(context, internalContext, callId, stream, participantId, options) {
|
3549
|
-
return __awaiter$
|
3566
|
+
return __awaiter$N(this, void 0, void 0, function* () {
|
3550
3567
|
// we can only have 3 types of createView
|
3551
3568
|
let streamEventType;
|
3552
3569
|
// we will reuse these for local as well but we need to make sure the remote stream is passed in like before.
|
@@ -3675,7 +3692,7 @@ function createViewVideo(context, internalContext, callId, stream, participantId
|
|
3675
3692
|
});
|
3676
3693
|
}
|
3677
3694
|
function createViewUnparentedVideo(context, internalContext, stream, options) {
|
3678
|
-
return __awaiter$
|
3695
|
+
return __awaiter$N(this, void 0, void 0, function* () {
|
3679
3696
|
const renderInfo = internalContext.getUnparentedRenderInfo(stream);
|
3680
3697
|
if (renderInfo && renderInfo.status === 'Rendered') {
|
3681
3698
|
console.warn('Unparented LocalVideoStream is already rendered');
|
@@ -3844,7 +3861,7 @@ function createView(context, internalContext, callId, participantId, stream, opt
|
|
3844
3861
|
// Render LocalVideoStream that is not part of a Call
|
3845
3862
|
// 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).
|
3846
3863
|
// We do not have a startLocalPreviewVideo function, so as a workaround we ensure any errors are propagated here.
|
3847
|
-
return context.withAsyncErrorTeedToState(() => __awaiter$
|
3864
|
+
return context.withAsyncErrorTeedToState(() => __awaiter$N(this, void 0, void 0, function* () { return yield createViewUnparentedVideo(context, internalContext, stream, options); }), 'Call.startVideo')();
|
3848
3865
|
}
|
3849
3866
|
else {
|
3850
3867
|
_logStreamEvent(EventNames.CREATE_STREAM_INVALID_PARAMS, { streamType });
|
@@ -4030,7 +4047,7 @@ class RecordingSubscriber {
|
|
4030
4047
|
|
4031
4048
|
// Copyright (c) Microsoft Corporation.
|
4032
4049
|
// Licensed under the MIT License.
|
4033
|
-
var __awaiter$
|
4050
|
+
var __awaiter$M = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
4034
4051
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
4035
4052
|
return new (P || (P = Promise))(function (resolve, reject) {
|
4036
4053
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -4054,7 +4071,7 @@ class PPTLiveSubscriber {
|
|
4054
4071
|
this._context.setCallPPTLiveActive(this._callIdRef.callId, this._pptLive.isActive);
|
4055
4072
|
this.checkAndUpdatePPTLiveParticipant();
|
4056
4073
|
};
|
4057
|
-
this.checkAndUpdatePPTLiveParticipant = () => __awaiter$
|
4074
|
+
this.checkAndUpdatePPTLiveParticipant = () => __awaiter$M(this, void 0, void 0, function* () {
|
4058
4075
|
if (this._pptLive.isActive) {
|
4059
4076
|
// TODO: need to refactor if Web Calling SDK has this logic ready
|
4060
4077
|
if (this._call.isScreenSharingOn) {
|
@@ -4567,7 +4584,7 @@ class CallSubscriber {
|
|
4567
4584
|
|
4568
4585
|
// Copyright (c) Microsoft Corporation.
|
4569
4586
|
// Licensed under the MIT License.
|
4570
|
-
var __awaiter$
|
4587
|
+
var __awaiter$L = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
4571
4588
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
4572
4589
|
return new (P || (P = Promise))(function (resolve, reject) {
|
4573
4590
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -4587,14 +4604,14 @@ class ProxyIncomingCall {
|
|
4587
4604
|
switch (prop) {
|
4588
4605
|
case 'accept': {
|
4589
4606
|
return this._context.withAsyncErrorTeedToState(function (...args) {
|
4590
|
-
return __awaiter$
|
4607
|
+
return __awaiter$L(this, void 0, void 0, function* () {
|
4591
4608
|
return yield target.accept(...args);
|
4592
4609
|
});
|
4593
4610
|
}, 'IncomingCall.accept');
|
4594
4611
|
}
|
4595
4612
|
case 'reject': {
|
4596
4613
|
return this._context.withAsyncErrorTeedToState(function (...args) {
|
4597
|
-
return __awaiter$
|
4614
|
+
return __awaiter$L(this, void 0, void 0, function* () {
|
4598
4615
|
return yield target.reject(...args);
|
4599
4616
|
});
|
4600
4617
|
}, 'IncomingCall.reject');
|
@@ -4835,7 +4852,7 @@ const clearCallRelatedState = (context, internalContext) => {
|
|
4835
4852
|
|
4836
4853
|
// Copyright (c) Microsoft Corporation.
|
4837
4854
|
// Licensed under the MIT License.
|
4838
|
-
var __awaiter$
|
4855
|
+
var __awaiter$K = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
4839
4856
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
4840
4857
|
return new (P || (P = Promise))(function (resolve, reject) {
|
4841
4858
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -4861,56 +4878,56 @@ class ProxyCallCommon {
|
|
4861
4878
|
switch (prop) {
|
4862
4879
|
case 'mute': {
|
4863
4880
|
return this._context.withAsyncErrorTeedToState(function (...args) {
|
4864
|
-
return __awaiter$
|
4881
|
+
return __awaiter$K(this, void 0, void 0, function* () {
|
4865
4882
|
return yield target.mute(...args);
|
4866
4883
|
});
|
4867
4884
|
}, 'Call.mute');
|
4868
4885
|
}
|
4869
4886
|
case 'unmute': {
|
4870
4887
|
return this._context.withAsyncErrorTeedToState(function (...args) {
|
4871
|
-
return __awaiter$
|
4888
|
+
return __awaiter$K(this, void 0, void 0, function* () {
|
4872
4889
|
return yield target.unmute(...args);
|
4873
4890
|
});
|
4874
4891
|
}, 'Call.unmute');
|
4875
4892
|
}
|
4876
4893
|
case 'startVideo': {
|
4877
4894
|
return this._context.withAsyncErrorTeedToState(function (...args) {
|
4878
|
-
return __awaiter$
|
4895
|
+
return __awaiter$K(this, void 0, void 0, function* () {
|
4879
4896
|
return yield target.startVideo(...args);
|
4880
4897
|
});
|
4881
4898
|
}, 'Call.startVideo');
|
4882
4899
|
}
|
4883
4900
|
case 'stopVideo': {
|
4884
4901
|
return this._context.withAsyncErrorTeedToState(function (...args) {
|
4885
|
-
return __awaiter$
|
4902
|
+
return __awaiter$K(this, void 0, void 0, function* () {
|
4886
4903
|
return yield target.stopVideo(...args);
|
4887
4904
|
});
|
4888
4905
|
}, 'Call.stopVideo');
|
4889
4906
|
}
|
4890
4907
|
case 'startScreenSharing': {
|
4891
4908
|
return this._context.withAsyncErrorTeedToState(function (...args) {
|
4892
|
-
return __awaiter$
|
4909
|
+
return __awaiter$K(this, void 0, void 0, function* () {
|
4893
4910
|
return yield target.startScreenSharing(...args);
|
4894
4911
|
});
|
4895
4912
|
}, 'Call.startScreenSharing');
|
4896
4913
|
}
|
4897
4914
|
case 'stopScreenSharing': {
|
4898
4915
|
return this._context.withAsyncErrorTeedToState(function (...args) {
|
4899
|
-
return __awaiter$
|
4916
|
+
return __awaiter$K(this, void 0, void 0, function* () {
|
4900
4917
|
return yield target.stopScreenSharing(...args);
|
4901
4918
|
});
|
4902
4919
|
}, 'Call.stopScreenSharing');
|
4903
4920
|
}
|
4904
4921
|
case 'hold': {
|
4905
4922
|
return this._context.withAsyncErrorTeedToState(function (...args) {
|
4906
|
-
return __awaiter$
|
4923
|
+
return __awaiter$K(this, void 0, void 0, function* () {
|
4907
4924
|
return yield target.hold(...args);
|
4908
4925
|
});
|
4909
4926
|
}, 'Call.hold');
|
4910
4927
|
}
|
4911
4928
|
case 'resume': {
|
4912
4929
|
return this._context.withAsyncErrorTeedToState(function (...args) {
|
4913
|
-
return __awaiter$
|
4930
|
+
return __awaiter$K(this, void 0, void 0, function* () {
|
4914
4931
|
return yield target.resume(...args);
|
4915
4932
|
});
|
4916
4933
|
}, 'Call.resume');
|
@@ -4978,7 +4995,7 @@ class ProxyTeamsCaptions {
|
|
4978
4995
|
get(target, prop) {
|
4979
4996
|
switch (prop) {
|
4980
4997
|
case 'startCaptions':
|
4981
|
-
return this._context.withAsyncErrorTeedToState((...args) => __awaiter$
|
4998
|
+
return this._context.withAsyncErrorTeedToState((...args) => __awaiter$K(this, void 0, void 0, function* () {
|
4982
4999
|
var _a, _b;
|
4983
5000
|
this._context.setStartCaptionsInProgress(this._call.id, true);
|
4984
5001
|
try {
|
@@ -4992,7 +5009,7 @@ class ProxyTeamsCaptions {
|
|
4992
5009
|
}
|
4993
5010
|
}), 'Call.feature');
|
4994
5011
|
case 'stopCaptions':
|
4995
|
-
return this._context.withAsyncErrorTeedToState((...args) => __awaiter$
|
5012
|
+
return this._context.withAsyncErrorTeedToState((...args) => __awaiter$K(this, void 0, void 0, function* () {
|
4996
5013
|
const ret = yield target.stopCaptions(...args);
|
4997
5014
|
this._context.setIsCaptionActive(this._call.id, false);
|
4998
5015
|
this._context.setStartCaptionsInProgress(this._call.id, false);
|
@@ -5000,13 +5017,13 @@ class ProxyTeamsCaptions {
|
|
5000
5017
|
return ret;
|
5001
5018
|
}), 'Call.feature');
|
5002
5019
|
case 'setSpokenLanguage':
|
5003
|
-
return this._context.withAsyncErrorTeedToState((...args) => __awaiter$
|
5020
|
+
return this._context.withAsyncErrorTeedToState((...args) => __awaiter$K(this, void 0, void 0, function* () {
|
5004
5021
|
const ret = yield target.setSpokenLanguage(...args);
|
5005
5022
|
this._context.setSelectedSpokenLanguage(this._call.id, args[0]);
|
5006
5023
|
return ret;
|
5007
5024
|
}), 'Call.feature');
|
5008
5025
|
case 'setCaptionLanguage':
|
5009
|
-
return this._context.withAsyncErrorTeedToState((...args) => __awaiter$
|
5026
|
+
return this._context.withAsyncErrorTeedToState((...args) => __awaiter$K(this, void 0, void 0, function* () {
|
5010
5027
|
const ret = yield target.setCaptionLanguage(...args);
|
5011
5028
|
this._context.setSelectedCaptionLanguage(this._call.id, args[0]);
|
5012
5029
|
return ret;
|
@@ -5028,7 +5045,7 @@ class ProxyCaptions {
|
|
5028
5045
|
get(target, prop) {
|
5029
5046
|
switch (prop) {
|
5030
5047
|
case 'startCaptions':
|
5031
|
-
return this._context.withAsyncErrorTeedToState((...args) => __awaiter$
|
5048
|
+
return this._context.withAsyncErrorTeedToState((...args) => __awaiter$K(this, void 0, void 0, function* () {
|
5032
5049
|
var _a, _b;
|
5033
5050
|
this._context.setStartCaptionsInProgress(this._call.id, true);
|
5034
5051
|
try {
|
@@ -5042,7 +5059,7 @@ class ProxyCaptions {
|
|
5042
5059
|
}
|
5043
5060
|
}), 'Call.feature');
|
5044
5061
|
case 'stopCaptions':
|
5045
|
-
return this._context.withAsyncErrorTeedToState((...args) => __awaiter$
|
5062
|
+
return this._context.withAsyncErrorTeedToState((...args) => __awaiter$K(this, void 0, void 0, function* () {
|
5046
5063
|
const ret = yield target.stopCaptions(...args);
|
5047
5064
|
this._context.setIsCaptionActive(this._call.id, false);
|
5048
5065
|
this._context.setStartCaptionsInProgress(this._call.id, false);
|
@@ -5050,7 +5067,7 @@ class ProxyCaptions {
|
|
5050
5067
|
return ret;
|
5051
5068
|
}), 'Call.feature');
|
5052
5069
|
case 'setSpokenLanguage':
|
5053
|
-
return this._context.withAsyncErrorTeedToState((...args) => __awaiter$
|
5070
|
+
return this._context.withAsyncErrorTeedToState((...args) => __awaiter$K(this, void 0, void 0, function* () {
|
5054
5071
|
const ret = yield target.setSpokenLanguage(...args);
|
5055
5072
|
this._context.setSelectedSpokenLanguage(this._call.id, args[0]);
|
5056
5073
|
return ret;
|
@@ -5070,12 +5087,12 @@ class ProxySpotlightCallFeature {
|
|
5070
5087
|
get(target, prop) {
|
5071
5088
|
switch (prop) {
|
5072
5089
|
case 'startSpotlight':
|
5073
|
-
return this._context.withAsyncErrorTeedToState((...args) => __awaiter$
|
5090
|
+
return this._context.withAsyncErrorTeedToState((...args) => __awaiter$K(this, void 0, void 0, function* () {
|
5074
5091
|
const ret = yield target.startSpotlight(...args);
|
5075
5092
|
return ret;
|
5076
5093
|
}), 'Call.feature');
|
5077
5094
|
case 'stopSpotlight':
|
5078
|
-
return this._context.withAsyncErrorTeedToState((...args) => __awaiter$
|
5095
|
+
return this._context.withAsyncErrorTeedToState((...args) => __awaiter$K(this, void 0, void 0, function* () {
|
5079
5096
|
const ret = yield target.stopSpotlight(...args);
|
5080
5097
|
return ret;
|
5081
5098
|
}), 'Call.feature');
|
@@ -5117,7 +5134,7 @@ class ProxyTransferCallFeature {
|
|
5117
5134
|
|
5118
5135
|
// Copyright (c) Microsoft Corporation.
|
5119
5136
|
// Licensed under the MIT License.
|
5120
|
-
var __awaiter$
|
5137
|
+
var __awaiter$J = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
5121
5138
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
5122
5139
|
return new (P || (P = Promise))(function (resolve, reject) {
|
5123
5140
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -5131,7 +5148,7 @@ class ProxyCall extends ProxyCallCommon {
|
|
5131
5148
|
switch (prop) {
|
5132
5149
|
case 'addParticipant': {
|
5133
5150
|
return this.getContext().withAsyncErrorTeedToState(function (...args) {
|
5134
|
-
return __awaiter$
|
5151
|
+
return __awaiter$J(this, void 0, void 0, function* () {
|
5135
5152
|
return yield target.addParticipant(...args);
|
5136
5153
|
});
|
5137
5154
|
}, 'Call.addParticipant');
|
@@ -5366,7 +5383,7 @@ class InternalCallContext {
|
|
5366
5383
|
|
5367
5384
|
// Copyright (c) Microsoft Corporation.
|
5368
5385
|
// Licensed under the MIT License.
|
5369
|
-
var __awaiter$
|
5386
|
+
var __awaiter$I = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
5370
5387
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
5371
5388
|
return new (P || (P = Promise))(function (resolve, reject) {
|
5372
5389
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -5382,7 +5399,7 @@ class ProxyTeamsCall extends ProxyCallCommon {
|
|
5382
5399
|
/* @conditional-compile-remove(PSTN-calls) */
|
5383
5400
|
case 'addParticipant': {
|
5384
5401
|
return this.getContext().withAsyncErrorTeedToState(function (...args) {
|
5385
|
-
return __awaiter$
|
5402
|
+
return __awaiter$I(this, void 0, void 0, function* () {
|
5386
5403
|
return yield target.addParticipant(...args);
|
5387
5404
|
});
|
5388
5405
|
}, 'TeamsCall.addParticipant');
|
@@ -5501,7 +5518,7 @@ const teamsCallAgentDeclaratify = (callAgent, context, internalContext) => {
|
|
5501
5518
|
|
5502
5519
|
// Copyright (c) Microsoft Corporation.
|
5503
5520
|
// Licensed under the MIT License.
|
5504
|
-
var __awaiter$
|
5521
|
+
var __awaiter$H = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
5505
5522
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
5506
5523
|
return new (P || (P = Promise))(function (resolve, reject) {
|
5507
5524
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -5523,7 +5540,7 @@ class ProxyVideoStreamRendererView {
|
|
5523
5540
|
get(target, prop) {
|
5524
5541
|
switch (prop) {
|
5525
5542
|
case 'updateScalingMode': {
|
5526
|
-
return (...args) => __awaiter$
|
5543
|
+
return (...args) => __awaiter$H(this, void 0, void 0, function* () {
|
5527
5544
|
yield target.updateScalingMode(...args);
|
5528
5545
|
this._context.setRemoteVideoStreamViewScalingMode(this._callId, this._participantId, this._streamId, args[0]);
|
5529
5546
|
});
|
@@ -5544,7 +5561,7 @@ const videoStreamRendererViewDeclaratify = (view, context, callId, participantId
|
|
5544
5561
|
|
5545
5562
|
// Copyright (c) Microsoft Corporation.
|
5546
5563
|
// Licensed under the MIT License.
|
5547
|
-
var __awaiter$
|
5564
|
+
var __awaiter$G = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
5548
5565
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
5549
5566
|
return new (P || (P = Promise))(function (resolve, reject) {
|
5550
5567
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -5566,7 +5583,7 @@ class ProxyCallClient {
|
|
5566
5583
|
get(target, prop) {
|
5567
5584
|
switch (prop) {
|
5568
5585
|
case 'createCallAgent': {
|
5569
|
-
return this._context.withAsyncErrorTeedToState((...args) => __awaiter$
|
5586
|
+
return this._context.withAsyncErrorTeedToState((...args) => __awaiter$G(this, void 0, void 0, function* () {
|
5570
5587
|
// createCallAgent will throw an exception if the previous callAgent was not disposed. If the previous
|
5571
5588
|
// callAgent was disposed then it would have unsubscribed to events so we can just create a new declarative
|
5572
5589
|
// callAgent if the createCallAgent succeeds.
|
@@ -5579,7 +5596,7 @@ class ProxyCallClient {
|
|
5579
5596
|
}), 'CallClient.createCallAgent');
|
5580
5597
|
}
|
5581
5598
|
case 'createTeamsCallAgent': {
|
5582
|
-
/* @conditional-compile-remove(teams-identity-support) */ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$
|
5599
|
+
/* @conditional-compile-remove(teams-identity-support) */ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$G(this, void 0, void 0, function* () {
|
5583
5600
|
// createCallAgent will throw an exception if the previous callAgent was not disposed. If the previous
|
5584
5601
|
// callAgent was disposed then it would have unsubscribed to events so we can just create a new declarative
|
5585
5602
|
// callAgent if the createCallAgent succeeds.
|
@@ -5592,7 +5609,7 @@ class ProxyCallClient {
|
|
5592
5609
|
}), 'CallClient.createTeamsCallAgent');
|
5593
5610
|
}
|
5594
5611
|
case 'getDeviceManager': {
|
5595
|
-
return this._context.withAsyncErrorTeedToState(() => __awaiter$
|
5612
|
+
return this._context.withAsyncErrorTeedToState(() => __awaiter$G(this, void 0, void 0, function* () {
|
5596
5613
|
// As of writing, the SDK always returns the same instance of DeviceManager so we keep a reference of
|
5597
5614
|
// DeviceManager and if it does not change we return the cached DeclarativeDeviceManager. If it does not we'll
|
5598
5615
|
// throw an error that indicate we need to fix this issue as our implementation has diverged from the SDK.
|
@@ -5621,7 +5638,7 @@ class ProxyCallClient {
|
|
5621
5638
|
/**
|
5622
5639
|
* add to this object if we want to proxy anything else off the DebugInfo feature object.
|
5623
5640
|
*/
|
5624
|
-
return Object.assign(Object.assign({}, feature), { getEnvironmentInfo: () => __awaiter$
|
5641
|
+
return Object.assign(Object.assign({}, feature), { getEnvironmentInfo: () => __awaiter$G(this, void 0, void 0, function* () {
|
5625
5642
|
const environmentInfo = yield feature.getEnvironmentInfo();
|
5626
5643
|
this._context.setEnvironmentInfo(environmentInfo);
|
5627
5644
|
return environmentInfo;
|
@@ -5682,7 +5699,7 @@ const createStatefulCallClientWithDeps = (callClient, context, internalContext)
|
|
5682
5699
|
});
|
5683
5700
|
Object.defineProperty(callClient, 'createView', {
|
5684
5701
|
configurable: false,
|
5685
|
-
value: (callId, participantId, stream, options) => __awaiter$
|
5702
|
+
value: (callId, participantId, stream, options) => __awaiter$G(void 0, void 0, void 0, function* () {
|
5686
5703
|
const participantIdKind = participantId ? communicationCommon.getIdentifierKind(participantId) : undefined;
|
5687
5704
|
const result = yield createView(context, internalContext, callId, participantIdKind, stream, options);
|
5688
5705
|
// We only need to declaratify the VideoStreamRendererView object for remote participants. Because the updateScalingMode only needs to be called on remote participant stream views.
|
@@ -5915,7 +5932,7 @@ const typingIndicatorStringStyle = react.mergeStyles({
|
|
5915
5932
|
wordBreak: 'break-word'
|
5916
5933
|
});
|
5917
5934
|
|
5918
|
-
var participantItem$k={isMeText:"(you)",menuTitle:"More Options",removeButtonLabel:"Remove",sharingIconLabel:"Sharing",mutedIconLabel:"Muted",displayNamePlaceholder:"Unnamed participant",participantStateRinging:"Calling...",participantStateHold:"On hold",attendeeRole:"Attendee"};var ParticipantList$l={overflowParticipantCount:"+{overflowCount} more"};var typingIndicator$k={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$k={placeholderText:"Enter a message",textTooLong:"Your message length is over the maximum limit.",sendButtonAriaLabel:"Send message",attachmentUploadsPendingError:"Uploading... Please wait.",removeAttachment:"Remove file",uploading:"Uploading",uploadCompleted:"Upload completed",attachmentMoreMenu:"More Options"};var richTextSendBox$k={placeholderText:"Enter a message",textTooLong:"Your message length is over the maximum limit.",sendButtonAriaLabel:"Send message",attachmentUploadsPendingError:"Uploading... Please wait.",removeAttachment:"Remove file",uploading:"Uploading",uploadCompleted:"Upload completed",richTextBoldTooltip:"Bold",richTextItalicTooltip:"Italic",richTextUnderlineTooltip:"Underline",richTextBulletListTooltip:"Bulleted list",richTextNumberListTooltip:"Numbered list",richTextIncreaseIndentTooltip:"Increase indent",richTextDecreaseIndentTooltip:"Decrease indent",richTextInsertTableTooltip:"Insert table",richTextFormatButtonTooltip:"Format",richTextInsertRowOrColumnMenu:"Insert",richTextInsertTableMenuTitle:"Insert {column} x {row} table",richTextInsertRowAboveMenu:"Insert above",richTextInsertRowBelowMenu:"Insert below",richTextInsertColumnLeftMenu:"Insert left",richTextInsertColumnRightMenu:"Insert right",richTextDeleteRowOrColumnMenu:"Delete",richTextDeleteColumnMenu:"Delete column",richTextDeleteRowMenu:"Delete row",richTextDeleteTableMenu:"Delete table",richTextToolbarMoreButtonAriaLabel:"More options",attachmentMoreMenu:"More Options"};var mentionPopover$k={mentionPopoverHeader:"Suggestions"};var imageOverlay$k={downloadButtonLabel:"Download",dismissButtonAriaLabel:"Close"};var messageStatusIndicator$k={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$k={label:"Leave",tooltipContent:"Leave call",leaveOption:"Leave",endCallOption:"End call for everyone"};var cameraButton$k={onLabel:"Camera",offLabel:"Camera",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",videoEffectsMenuItemTitle:"Effects"};var microphoneButton$k={onLabel:"Mic",offLabel:"Mic",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",microphonePrimaryActionSplitButtonTitle:"Use microphone"};var devicesButton$k={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$k={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$k={onLabel:"Stop presenting",offLabel:"Present",tooltipDisabledContent:"Presenting is disabled",tooltipOnContent:"Presenting your screen",tooltipOffContent:"Present your screen"};var raiseHandButton$k={offLabel:"Raise",onLabel:"Lower",tooltipDisabledContent:"Raise Hand action is disabled",tooltipOnContent:"Lower Hand",tooltipOffContent:"Raise Hand"};var reactionButton$k={label:"React",ariaLabel:"React Button, Send a reaction",tooltipDisabledContent:"Reaction action is disabled",tooltipContent:"Send a reaction",likeReactionTooltipContent:"Like",heartReactionTooltipContent:"Love",laughReactionTooltipContent:"Laugh",applauseReactionTooltipContent:"Applause",surprisedReactionTooltipContent:"Surprised"};var messageThread$k={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:"{status} {author} said {message}",messageContentMineAriaText:"{status} 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:"Done",messageReadCount:"Read by {messageReadByCount} of {remoteParticipantsCount}",actionMenuMoreOptions:"More Options",downloadAttachment:"Download file",openAttachment:"Open file",blockedWarningText:"This message was deleted due to organizational policy.",blockedWarningLinkText:"Details",attachmentCardGroupMessage:"The message has {attachmentCount} attachment",messageDeletedAnnouncementAriaLabel:"The message is deleted",richTextBoldTooltip:"Bold",richTextItalicTooltip:"Italic",richTextUnderlineTooltip:"Underline",richTextBulletListTooltip:"Bulleted list",richTextNumberListTooltip:"Numbered list",richTextIncreaseIndentTooltip:"Increase indent",richTextDecreaseIndentTooltip:"Decrease indent",richTextInsertTableTooltip:"Insert table",richTextFormatButtonTooltip:"Format",richTextInsertRowOrColumnMenu:"Insert",richTextInsertTableMenuTitle:"Insert {column} x {row} table",richTextInsertRowAboveMenu:"Insert above",richTextInsertRowBelowMenu:"Insert below",richTextInsertColumnLeftMenu:"Insert left",richTextInsertColumnRightMenu:"Insert right",richTextDeleteRowOrColumnMenu:"Delete",richTextDeleteColumnMenu:"Delete column",richTextDeleteRowMenu:"Delete row",richTextDeleteTableMenu:"Delete table",richTextToolbarMoreButtonAriaLabel:"More options"};var errorBar$k={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:"There was an issue starting screen share.",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.",cameraFrozenForRemoteParticipants:"Users in the call are having issues seeing your video. Please check your devices and network.",unableToStartVideoEffect:"Unable to apply video effect.",startSpotlightWhileMaxParticipantsAreSpotlighted:"Cannot start spotlight on participant(s) because the maximum number of participants are already spotlighted.",mutedByRemoteParticipant:"You were muted by another participant."};var notificationStack={callingNetworkFailure:{title:"Troubling connecting call",message:"You seem to be offline. Please check your network connection and try again.",closeButtonAriaLabel:"Close"},startVideoGeneric:{title:"Failed to start video.",closeButtonAriaLabel:"Close"},stopVideoGeneric:{title:"Failed to stop video.",closeButtonAriaLabel:"Close"},muteGeneric:{title:"Failed to mute microphone.",closeButtonAriaLabel:"Close"},unmuteGeneric:{title:"Failed to unmute microphone.",closeButtonAriaLabel:"Close"},speakingWhileMuted:{title:"You're muted.",closeButtonAriaLabel:"Close"},startScreenShareGeneric:{title:"There was an issue starting screen share.",closeButtonAriaLabel:"Close"},stopScreenShareGeneric:{title:"Failed to stop screen sharing.",closeButtonAriaLabel:"Close"},callNetworkQualityLow:{title:"Network quality is low.",closeButtonAriaLabel:"Close"},callNoSpeakerFound:{title:"No speakers or headphones found",message:"Connect an audio device to hear the call.",closeButtonAriaLabel:"Close"},callNoMicrophoneFound:{title:"No microphones found",message:"Connect an audio input device.",closeButtonAriaLabel:"Close"},callMicrophoneAccessDenied:{title:"Unable to access microphone",message:"Click the lock in the address bar to grant permission to this webpage.",closeButtonAriaLabel:"Close"},callMicrophoneAccessDeniedSafari:{title:"Unable to access microphone",message:"Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",closeButtonAriaLabel:"Close"},callMicrophoneMutedBySystem:{title:"You are muted by your system.",closeButtonAriaLabel:"Close"},callMicrophoneUnmutedBySystem:{title:"Your microphone recovered and you were unmuted by your system.",closeButtonAriaLabel:"Close"},callMacOsMicrophoneAccessDenied:{title:"Unable to access microphone",message:"Grant microphone permission in your macOS privacy settings.",closeButtonAriaLabel:"Close"},callLocalVideoFreeze:{title:"Network bandwidth is poor",message:"Your video may appear paused for others on the call.",closeButtonAriaLabel:"Close"},callCameraAccessDenied:{title:"Unable to access camera",message:"Click the lock in the address bar to grant permission to this webpage.",closeButtonAriaLabel:"Close"},callCameraAccessDeniedSafari:{title:"Unable to access camera",message:"Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",closeButtonAriaLabel:"Close"},callCameraAlreadyInUse:{title:"Unable to access camera",message:"It may already be in use by another application.",closeButtonAriaLabel:"Close"},callVideoStoppedBySystem:{title:"Your video has been stopped by your system.",closeButtonAriaLabel:"Close"},callVideoRecoveredBySystem:{title:"Your video has resumed.",closeButtonAriaLabel:"Close"},callMacOsCameraAccessDenied:{title:"MacOS is blocking access to your camera",message:"Update your privacy settings to allow this browser to access your camera.",closeButtonAriaLabel:"Close"},callMacOsScreenShareAccessDenied:{title:"MacOS is blocking screen sharing",message:"Update your privacy settings to allow this browser to record your screen.",closeButtonAriaLabel:"Close"},failedToJoinCallGeneric:{title:"Failed to join call.",closeButtonAriaLabel:"Close"},failedToJoinCallInvalidMeetingLink:{title:"Unable to join Meeting. Invalid Link.",closeButtonAriaLabel:"Close"},cameraFrozenForRemoteParticipants:{title:"Users in the call are having issues seeing your video",message:"Please check your devices and network.",closeButtonAriaLabel:"Close"},unableToStartVideoEffect:{title:"Unable to apply video effect.",closeButtonAriaLabel:"Close"},startSpotlightWhileMaxParticipantsAreSpotlighted:{title:"Cannot start spotlight on participant(s)",message:"The maximum number of participants are already spotlighted.",closeButtonAriaLabel:"Close"},mutedByRemoteParticipant:{title:"You were muted by another participant.",closeButtonAriaLabel:"Close"}};var videoGallery$k={screenIsBeingSharedMessage:"You are sharing your screen",screenShareLoadingMessage:"Loading {participant}'s screen",localVideoLabel:"You",localVideoCameraSwitcherLabel:"Switch camera",localVideoMovementLabel:"Movable Local Video Tile",localVideoMovementAriaLabel:"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}",startSpotlightVideoTileMenuLabel:"Spotlight for everyone",addSpotlightVideoTileMenuLabel:"Add spotlight",spotlightLimitReachedMenuTitle:"Spotlight limit reached",stopSpotlightVideoTileMenuLabel:"Stop spotlighting",stopSpotlightOnSelfVideoTileMenuLabel:"Exit spotlight",attendeeRole:"Attendee",muteParticipantMenuItemLabel:"Mute"};var dialpad$k={placeholderText:"Enter phone number",deleteButtonAriaLabel:"Delete"};var holdButton$k={onLabel:"Resume",offLabel:"Hold",tooltipOnContent:"Resume call",tooltipOffContent:"Hold call"};var videoTile$k={participantStateRinging:"Calling...",participantStateHold:"On hold",moreOptionsButtonAriaLabel:"More Options"};var CameraAndMicrophoneSitePermissionsRequest$k={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$k={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$k={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$k={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$k={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$k={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$k={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$k={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$k={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$k={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$k={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$k={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$l={primaryText:"Browser not supported",secondaryText:"Please join this call using a compatible browser.",moreHelpLinkText:"See compatibility requirements"};var UnsupportedBrowserVersion$l={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$l={primaryText:"Operating system not supported",secondaryText:"Please join this call using a device with a compatible operating system.",moreHelpLinkText:"See compatibility requirements"};var BrowserPermissionDenied$k={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$k={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$k={leftNavButtonAriaLabel:"previous page",rightNavButtonAriaLabel:"next page"};var MeetingConferencePhoneInfo$k={meetingConferencePhoneInfoModalTitle:"Join call from your phone",meetingConferencePhoneInfoModalDialIn:"Dial number",meetingConferencePhoneInfoModalMeetingId:"Enter meeting ID",meetingConferencePhoneInfoModalWait:"Wait to be admitted by organizer",meetingConferencePhoneInfoModalNoPhoneAvailable:"No phone available",meetingConferencePhoneInfoModalTollGeoData:"{country}, {city}",meetingConferencePhoneInfoModalTollFree:"(Toll-free)",meetingConferencePhoneInfoModalToll:"(Toll)"};var en_US$1 = {participantItem:participantItem$k,ParticipantList:ParticipantList$l,typingIndicator:typingIndicator$k,sendBox:sendBox$k,richTextSendBox:richTextSendBox$k,mentionPopover:mentionPopover$k,imageOverlay:imageOverlay$k,messageStatusIndicator:messageStatusIndicator$k,endCallButton:endCallButton$k,cameraButton:cameraButton$k,microphoneButton:microphoneButton$k,devicesButton:devicesButton$k,participantsButton:participantsButton$k,screenShareButton:screenShareButton$k,raiseHandButton:raiseHandButton$k,reactionButton:reactionButton$k,messageThread:messageThread$k,errorBar:errorBar$k,notificationStack:notificationStack,videoGallery:videoGallery$k,dialpad:dialpad$k,holdButton:holdButton$k,videoTile:videoTile$k,CameraAndMicrophoneSitePermissionsRequest:CameraAndMicrophoneSitePermissionsRequest$k,CameraSitePermissionsRequest:CameraSitePermissionsRequest$k,MicrophoneSitePermissionsRequest:MicrophoneSitePermissionsRequest$k,CameraAndMicrophoneSitePermissionsCheck:CameraAndMicrophoneSitePermissionsCheck$k,CameraSitePermissionsCheck:CameraSitePermissionsCheck$k,MicrophoneSitePermissionsCheck:MicrophoneSitePermissionsCheck$k,CameraAndMicrophoneSitePermissionsDenied:CameraAndMicrophoneSitePermissionsDenied$k,CameraAndMicrophoneSitePermissionsDeniedSafari:CameraAndMicrophoneSitePermissionsDeniedSafari$k,CameraSitePermissionsDenied:CameraSitePermissionsDenied$k,MicrophoneSitePermissionsDenied:MicrophoneSitePermissionsDenied$k,CameraSitePermissionsDeniedSafari:CameraSitePermissionsDeniedSafari$k,MicrophoneSitePermissionsDeniedSafari:MicrophoneSitePermissionsDeniedSafari$k,UnsupportedBrowser:UnsupportedBrowser$l,UnsupportedBrowserVersion:UnsupportedBrowserVersion$l,UnsupportedOperatingSystem:UnsupportedOperatingSystem$l,BrowserPermissionDenied:BrowserPermissionDenied$k,BrowserPermissionDeniedIOS:BrowserPermissionDeniedIOS$k,verticalGallery:verticalGallery$k,MeetingConferencePhoneInfo:MeetingConferencePhoneInfo$k};
|
5935
|
+
var participantItem$k={isMeText:"(you)",menuTitle:"More Options",removeButtonLabel:"Remove",sharingIconLabel:"Sharing",mutedIconLabel:"Muted",displayNamePlaceholder:"Unnamed participant",participantStateRinging:"Calling...",participantStateHold:"On hold",attendeeRole:"Attendee"};var ParticipantList$l={overflowParticipantCount:"+{overflowCount} more"};var typingIndicator$k={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$k={placeholderText:"Enter a message",textTooLong:"Your message length is over the maximum limit.",sendButtonAriaLabel:"Send message",attachmentUploadsPendingError:"Uploading... Please wait.",removeAttachment:"Remove file",uploading:"Uploading",uploadCompleted:"Upload completed",attachmentMoreMenu:"More Options"};var richTextSendBox$k={placeholderText:"Enter a message",textTooLong:"Your message length is over the maximum limit.",sendButtonAriaLabel:"Send message",attachmentUploadsPendingError:"Uploading... Please wait.",removeAttachment:"Remove file",uploading:"Uploading",uploadCompleted:"Upload completed",richTextBoldTooltip:"Bold",richTextItalicTooltip:"Italic",richTextUnderlineTooltip:"Underline",richTextBulletListTooltip:"Bulleted list",richTextNumberListTooltip:"Numbered list",richTextIncreaseIndentTooltip:"Increase indent",richTextDecreaseIndentTooltip:"Decrease indent",richTextInsertTableTooltip:"Insert table",richTextFormatButtonTooltip:"Format",richTextInsertRowOrColumnMenu:"Insert",richTextInsertTableMenuTitle:"Insert {column} x {row} table",richTextInsertRowAboveMenu:"Insert above",richTextInsertRowBelowMenu:"Insert below",richTextInsertColumnLeftMenu:"Insert left",richTextInsertColumnRightMenu:"Insert right",richTextDeleteRowOrColumnMenu:"Delete",richTextDeleteColumnMenu:"Delete column",richTextDeleteRowMenu:"Delete row",richTextDeleteTableMenu:"Delete table",richTextToolbarMoreButtonAriaLabel:"More options",attachmentMoreMenu:"More Options"};var mentionPopover$k={mentionPopoverHeader:"Suggestions"};var imageOverlay$k={downloadButtonLabel:"Download",dismissButtonAriaLabel:"Close"};var messageStatusIndicator$k={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$k={label:"Leave",tooltipContent:"Leave call",leaveOption:"Leave",endCallOption:"End call for everyone"};var cameraButton$k={onLabel:"Camera",offLabel:"Camera",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",videoEffectsMenuItemTitle:"Effects"};var microphoneButton$k={onLabel:"Mic",offLabel:"Mic",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",microphonePrimaryActionSplitButtonTitle:"Use microphone"};var devicesButton$k={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$k={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$k={onLabel:"Stop presenting",offLabel:"Present",tooltipDisabledContent:"Presenting is disabled",tooltipOnContent:"Presenting your screen",tooltipOffContent:"Present your screen"};var raiseHandButton$k={offLabel:"Raise",onLabel:"Lower",tooltipDisabledContent:"Raise Hand action is disabled",tooltipOnContent:"Lower Hand",tooltipOffContent:"Raise Hand"};var reactionButton$k={label:"React",ariaLabel:"React Button, Send a reaction",tooltipDisabledContent:"Reaction action is disabled",tooltipContent:"Send a reaction",likeReactionTooltipContent:"Like",heartReactionTooltipContent:"Love",laughReactionTooltipContent:"Laugh",applauseReactionTooltipContent:"Applause",surprisedReactionTooltipContent:"Surprised"};var messageThread$k={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:"{status} {author} said {message}",messageContentMineAriaText:"{status} 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:"Done",messageReadCount:"Read by {messageReadByCount} of {remoteParticipantsCount}",actionMenuMoreOptions:"More Options",downloadAttachment:"Download file",openAttachment:"Open file",blockedWarningText:"This message was deleted due to organizational policy.",blockedWarningLinkText:"Details",attachmentCardGroupMessage:"The message has {attachmentCount} attachment",messageDeletedAnnouncementAriaLabel:"The message is deleted",richTextBoldTooltip:"Bold",richTextItalicTooltip:"Italic",richTextUnderlineTooltip:"Underline",richTextBulletListTooltip:"Bulleted list",richTextNumberListTooltip:"Numbered list",richTextIncreaseIndentTooltip:"Increase indent",richTextDecreaseIndentTooltip:"Decrease indent",richTextInsertTableTooltip:"Insert table",richTextFormatButtonTooltip:"Format",richTextInsertRowOrColumnMenu:"Insert",richTextInsertTableMenuTitle:"Insert {column} x {row} table",richTextInsertRowAboveMenu:"Insert above",richTextInsertRowBelowMenu:"Insert below",richTextInsertColumnLeftMenu:"Insert left",richTextInsertColumnRightMenu:"Insert right",richTextDeleteRowOrColumnMenu:"Delete",richTextDeleteColumnMenu:"Delete column",richTextDeleteRowMenu:"Delete row",richTextDeleteTableMenu:"Delete table",richTextToolbarMoreButtonAriaLabel:"More options"};var errorBar$k={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:"There was an issue starting screen share.",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.",cameraFrozenForRemoteParticipants:"Users in the call are having issues seeing your video. Please check your devices and network.",unableToStartVideoEffect:"Unable to apply video effect.",startSpotlightWhileMaxParticipantsAreSpotlighted:"Cannot start spotlight on participant(s) because the maximum number of participants are already spotlighted.",mutedByRemoteParticipant:"You were muted by another participant."};var notificationStack={callingNetworkFailure:{title:"Troubling connecting call",message:"You seem to be offline. Please check your network connection and try again.",closeButtonAriaLabel:"Close"},startVideoGeneric:{title:"Failed to start video.",closeButtonAriaLabel:"Close"},stopVideoGeneric:{title:"Failed to stop video.",closeButtonAriaLabel:"Close"},muteGeneric:{title:"Failed to mute microphone.",closeButtonAriaLabel:"Close"},unmuteGeneric:{title:"Failed to unmute microphone.",closeButtonAriaLabel:"Close"},speakingWhileMuted:{title:"You're muted.",closeButtonAriaLabel:"Close"},startScreenShareGeneric:{title:"There was an issue starting screen share.",closeButtonAriaLabel:"Close"},stopScreenShareGeneric:{title:"Failed to stop screen sharing.",closeButtonAriaLabel:"Close"},callNetworkQualityLow:{title:"Network quality is low.",closeButtonAriaLabel:"Close"},callNoSpeakerFound:{title:"No speakers or headphones found",message:"Connect an audio device to hear the call.",closeButtonAriaLabel:"Close"},callNoMicrophoneFound:{title:"No microphones found",message:"Connect an audio input device.",closeButtonAriaLabel:"Close"},callMicrophoneAccessDenied:{title:"Unable to access microphone",message:"Click the lock in the address bar to grant permission to this webpage.",closeButtonAriaLabel:"Close"},callMicrophoneAccessDeniedSafari:{title:"Unable to access microphone",message:"Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",closeButtonAriaLabel:"Close"},callMicrophoneMutedBySystem:{title:"You are muted by your system.",closeButtonAriaLabel:"Close"},callMicrophoneUnmutedBySystem:{title:"Your microphone recovered and you were unmuted by your system.",closeButtonAriaLabel:"Close"},callMacOsMicrophoneAccessDenied:{title:"Unable to access microphone",message:"Grant microphone permission in your macOS privacy settings.",closeButtonAriaLabel:"Close"},callLocalVideoFreeze:{title:"Network bandwidth is poor",message:"Your video may appear paused for others on the call.",closeButtonAriaLabel:"Close"},callCameraAccessDenied:{title:"Unable to access camera",message:"Click the lock in the address bar to grant permission to this webpage.",closeButtonAriaLabel:"Close"},callCameraAccessDeniedSafari:{title:"Unable to access camera",message:"Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",closeButtonAriaLabel:"Close"},callCameraAlreadyInUse:{title:"Unable to access camera",message:"It may already be in use by another application.",closeButtonAriaLabel:"Close"},callVideoStoppedBySystem:{title:"Your video has been stopped by your system.",closeButtonAriaLabel:"Close"},callVideoRecoveredBySystem:{title:"Your video has resumed.",closeButtonAriaLabel:"Close"},callMacOsCameraAccessDenied:{title:"MacOS is blocking access to your camera",message:"Update your privacy settings to allow this browser to access your camera.",closeButtonAriaLabel:"Close"},callMacOsScreenShareAccessDenied:{title:"MacOS is blocking screen sharing",message:"Update your privacy settings to allow this browser to record your screen.",closeButtonAriaLabel:"Close"},failedToJoinCallGeneric:{title:"Failed to join call.",closeButtonAriaLabel:"Close"},failedToJoinCallInvalidMeetingLink:{title:"Unable to join Meeting. Invalid Link.",closeButtonAriaLabel:"Close"},cameraFrozenForRemoteParticipants:{title:"Users in the call are having issues seeing your video",message:"Please check your devices and network.",closeButtonAriaLabel:"Close"},unableToStartVideoEffect:{title:"Unable to apply video effect.",closeButtonAriaLabel:"Close"},startSpotlightWhileMaxParticipantsAreSpotlighted:{title:"Cannot start spotlight on participant(s)",message:"The maximum number of participants are already spotlighted.",closeButtonAriaLabel:"Close"},mutedByRemoteParticipant:{title:"You were muted by another participant.",closeButtonAriaLabel:"Close"},recordingStarted:{title:"Recording has started.",message:"By joining, you are giving consent for this meeting to be transcribed.",closeButtonAriaLabel:"Close"},transcriptionStarted:{title:"Transcription has started.",message:"By joining, you are giving consent for this meeting to be transcribed.",closeButtonAriaLabel:"Close"},recordingStopped:{title:"Recording is being saved.",message:"Recording has stopped.",closeButtonAriaLabel:"Close"},transcriptionStopped:{title:"Transcription is being saved.",message:"Transcription has stopped.",closeButtonAriaLabel:"Close"},recordingAndTranscriptionStarted:{title:"Recording and transcription have started.",message:"By joining, you are giving consent for this meeting to be transcribed.",closeButtonAriaLabel:"Close"},recordingAndTranscriptionStopped:{title:"Recording and transcription are being saved.",message:"Recording and transcription have stopped.",closeButtonAriaLabel:"Close"},recordingStoppedStillTranscribing:{title:"Recording has stopped.",message:"You are now only transcribing this meeting.",closeButtonAriaLabel:"Close"},transcriptionStoppedStillRecording:{title:"Transcription has stopped.",message:"You are now only recording this meeting.",closeButtonAriaLabel:"Close"}};var videoGallery$k={screenIsBeingSharedMessage:"You are sharing your screen",screenShareLoadingMessage:"Loading {participant}'s screen",localVideoLabel:"You",localVideoCameraSwitcherLabel:"Switch camera",localVideoMovementLabel:"Movable Local Video Tile",localVideoMovementAriaLabel:"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}",startSpotlightVideoTileMenuLabel:"Spotlight for everyone",addSpotlightVideoTileMenuLabel:"Add spotlight",spotlightLimitReachedMenuTitle:"Spotlight limit reached",stopSpotlightVideoTileMenuLabel:"Stop spotlighting",stopSpotlightOnSelfVideoTileMenuLabel:"Exit spotlight",attendeeRole:"Attendee",muteParticipantMenuItemLabel:"Mute"};var dialpad$k={placeholderText:"Enter phone number",deleteButtonAriaLabel:"Delete"};var holdButton$k={onLabel:"Resume",offLabel:"Hold",tooltipOnContent:"Resume call",tooltipOffContent:"Hold call"};var videoTile$k={participantStateRinging:"Calling...",participantStateHold:"On hold",moreOptionsButtonAriaLabel:"More Options"};var CameraAndMicrophoneSitePermissionsRequest$k={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$k={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$k={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$k={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$k={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$k={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$k={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$k={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$k={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$k={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$k={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$k={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$l={primaryText:"Browser not supported",secondaryText:"Please join this call using a compatible browser.",moreHelpLinkText:"See compatibility requirements"};var UnsupportedBrowserVersion$l={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$l={primaryText:"Operating system not supported",secondaryText:"Please join this call using a device with a compatible operating system.",moreHelpLinkText:"See compatibility requirements"};var BrowserPermissionDenied$k={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$k={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$k={leftNavButtonAriaLabel:"previous page",rightNavButtonAriaLabel:"next page"};var MeetingConferencePhoneInfo$k={meetingConferencePhoneInfoModalTitle:"Join call from your phone",meetingConferencePhoneInfoModalDialIn:"Dial number",meetingConferencePhoneInfoModalMeetingId:"Enter meeting ID",meetingConferencePhoneInfoModalWait:"Wait to be admitted by organizer",meetingConferencePhoneInfoModalNoPhoneAvailable:"No phone available",meetingConferencePhoneInfoModalTollGeoData:"{country}, {city}",meetingConferencePhoneInfoModalTollFree:"(Toll-free)",meetingConferencePhoneInfoModalToll:"(Toll)"};var en_US$1 = {participantItem:participantItem$k,ParticipantList:ParticipantList$l,typingIndicator:typingIndicator$k,sendBox:sendBox$k,richTextSendBox:richTextSendBox$k,mentionPopover:mentionPopover$k,imageOverlay:imageOverlay$k,messageStatusIndicator:messageStatusIndicator$k,endCallButton:endCallButton$k,cameraButton:cameraButton$k,microphoneButton:microphoneButton$k,devicesButton:devicesButton$k,participantsButton:participantsButton$k,screenShareButton:screenShareButton$k,raiseHandButton:raiseHandButton$k,reactionButton:reactionButton$k,messageThread:messageThread$k,errorBar:errorBar$k,notificationStack:notificationStack,videoGallery:videoGallery$k,dialpad:dialpad$k,holdButton:holdButton$k,videoTile:videoTile$k,CameraAndMicrophoneSitePermissionsRequest:CameraAndMicrophoneSitePermissionsRequest$k,CameraSitePermissionsRequest:CameraSitePermissionsRequest$k,MicrophoneSitePermissionsRequest:MicrophoneSitePermissionsRequest$k,CameraAndMicrophoneSitePermissionsCheck:CameraAndMicrophoneSitePermissionsCheck$k,CameraSitePermissionsCheck:CameraSitePermissionsCheck$k,MicrophoneSitePermissionsCheck:MicrophoneSitePermissionsCheck$k,CameraAndMicrophoneSitePermissionsDenied:CameraAndMicrophoneSitePermissionsDenied$k,CameraAndMicrophoneSitePermissionsDeniedSafari:CameraAndMicrophoneSitePermissionsDeniedSafari$k,CameraSitePermissionsDenied:CameraSitePermissionsDenied$k,MicrophoneSitePermissionsDenied:MicrophoneSitePermissionsDenied$k,CameraSitePermissionsDeniedSafari:CameraSitePermissionsDeniedSafari$k,MicrophoneSitePermissionsDeniedSafari:MicrophoneSitePermissionsDeniedSafari$k,UnsupportedBrowser:UnsupportedBrowser$l,UnsupportedBrowserVersion:UnsupportedBrowserVersion$l,UnsupportedOperatingSystem:UnsupportedOperatingSystem$l,BrowserPermissionDenied:BrowserPermissionDenied$k,BrowserPermissionDeniedIOS:BrowserPermissionDeniedIOS$k,verticalGallery:verticalGallery$k,MeetingConferencePhoneInfo:MeetingConferencePhoneInfo$k};
|
5919
5936
|
|
5920
5937
|
// Copyright (c) Microsoft Corporation.
|
5921
5938
|
// Licensed under the MIT License.
|
@@ -6430,8 +6447,23 @@ const customNotificationIconName = {
|
|
6430
6447
|
callMacOsCameraAccessDenied: 'ErrorBarCallMacOsCameraAccessDenied',
|
6431
6448
|
/* @conditional-compile-remove(soft-mute) */
|
6432
6449
|
mutedByRemoteParticipant: 'ErrorBarMutedByRemoteParticipant',
|
6450
|
+
speakingWhileMuted: 'ErrorBarCallMicrophoneMutedBySystem',
|
6451
|
+
/* @conditional-compile-remove(notifications) */
|
6452
|
+
recordingStarted: 'NotificationBarRecording',
|
6453
|
+
/* @conditional-compile-remove(notifications) */
|
6454
|
+
transcriptionStarted: 'NotificationBarRecording',
|
6455
|
+
/* @conditional-compile-remove(notifications) */
|
6456
|
+
recordingStopped: 'NotificationBarRecording',
|
6457
|
+
/* @conditional-compile-remove(notifications) */
|
6458
|
+
transcriptionStopped: 'NotificationBarRecording',
|
6433
6459
|
/* @conditional-compile-remove(notifications) */
|
6434
|
-
|
6460
|
+
recordingAndTranscriptionStarted: 'NotificationBarRecording',
|
6461
|
+
/* @conditional-compile-remove(notifications) */
|
6462
|
+
recordingAndTranscriptionStopped: 'NotificationBarRecording',
|
6463
|
+
/* @conditional-compile-remove(notifications) */
|
6464
|
+
recordingStoppedStillTranscribing: 'NotificationBarRecording',
|
6465
|
+
/* @conditional-compile-remove(notifications) */
|
6466
|
+
transcriptionStoppedStillRecording: 'NotificationBarRecording'
|
6435
6467
|
};
|
6436
6468
|
/**
|
6437
6469
|
* @private
|
@@ -7132,6 +7164,8 @@ const DEFAULT_COMPONENT_ICONS = {
|
|
7132
7164
|
ErrorBarCallVideoStoppedBySystem: React.createElement(reactIcons.VideoProhibited16Filled, null),
|
7133
7165
|
/* @conditional-compile-remove(soft-mute) */
|
7134
7166
|
ErrorBarMutedByRemoteParticipant: React.createElement(reactIcons.MicOff16Regular, null),
|
7167
|
+
/* @conditional-compile-remove(notifications) */
|
7168
|
+
NotificationBarRecording: React.createElement(reactIcons.Record16Regular, null),
|
7135
7169
|
HorizontalGalleryLeftButton: React.createElement(GalleryLeftButton, null),
|
7136
7170
|
HorizontalGalleryRightButton: React.createElement(GalleryRightButton, null),
|
7137
7171
|
MessageDelivered: React.createElement(reactIcons.CheckmarkCircle16Regular, null),
|
@@ -8363,7 +8397,7 @@ const _MentionPopover = (props) => {
|
|
8363
8397
|
|
8364
8398
|
// Copyright (c) Microsoft Corporation.
|
8365
8399
|
// Licensed under the MIT License.
|
8366
|
-
var __awaiter$
|
8400
|
+
var __awaiter$F = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
8367
8401
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
8368
8402
|
return new (P || (P = Promise))(function (resolve, reject) {
|
8369
8403
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -8549,7 +8583,7 @@ const TextFieldWithMention = (props) => {
|
|
8549
8583
|
onSuggestionSelected,
|
8550
8584
|
updateMentionSuggestions
|
8551
8585
|
]);
|
8552
|
-
const debouncedQueryUpdate = useDebounce.useDebouncedCallback((query) => __awaiter$
|
8586
|
+
const debouncedQueryUpdate = useDebounce.useDebouncedCallback((query) => __awaiter$F(void 0, void 0, void 0, function* () {
|
8553
8587
|
var _a;
|
8554
8588
|
let suggestions = (_a = (yield (mentionLookupOptions === null || mentionLookupOptions === void 0 ? void 0 : mentionLookupOptions.onQueryUpdated(query)))) !== null && _a !== void 0 ? _a : [];
|
8555
8589
|
suggestions = suggestions.filter((suggestion) => suggestion.displayText.trim() !== '');
|
@@ -8726,7 +8760,7 @@ const TextFieldWithMention = (props) => {
|
|
8726
8760
|
});
|
8727
8761
|
}
|
8728
8762
|
}, [updateSelectionIndexesWithMentionIfNeeded, setSelectionStartValue, setSelectionEndValue]);
|
8729
|
-
const handleOnChange = React.useCallback((_b) => __awaiter$
|
8763
|
+
const handleOnChange = React.useCallback((_b) => __awaiter$F(void 0, [_b], void 0, function* ({ currentSelectionEnd, currentSelectionStart, currentTriggerStartIndex, event, htmlTextValue, inputTextValue, previousSelectionEnd, previousSelectionStart, tagsValue, updatedValue }) {
|
8730
8764
|
var _c;
|
8731
8765
|
debouncedQueryUpdate.cancel();
|
8732
8766
|
if (event.currentTarget === null) {
|
@@ -9235,7 +9269,7 @@ const ATTACHMENT_CARD_MIN_PROGRESS = 0.05;
|
|
9235
9269
|
|
9236
9270
|
// Copyright (c) Microsoft Corporation.
|
9237
9271
|
// Licensed under the MIT License.
|
9238
|
-
var __awaiter$
|
9272
|
+
var __awaiter$E = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
9239
9273
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
9240
9274
|
return new (P || (P = Promise))(function (resolve, reject) {
|
9241
9275
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -9317,7 +9351,7 @@ const MappedMenuItems = (menuActions, attachment, handleOnClickError) => {
|
|
9317
9351
|
React.createElement(reactComponents.MenuTrigger, null,
|
9318
9352
|
React.createElement(reactComponents.ToolbarButton, { "aria-label": localeStrings.attachmentMoreMenu, role: "button", icon: React.createElement(react.Icon, { iconName: "AttachmentMoreMenu" }) }))),
|
9319
9353
|
React.createElement(reactComponents.MenuPopover, null,
|
9320
|
-
React.createElement(reactComponents.MenuList, null, menuActions.map((menuItem, index) => (React.createElement(reactComponents.MenuItem, { "aria-label": menuItem.name, key: index, icon: menuItem.icon, onClick: () => __awaiter$
|
9354
|
+
React.createElement(reactComponents.MenuList, null, menuActions.map((menuItem, index) => (React.createElement(reactComponents.MenuItem, { "aria-label": menuItem.name, key: index, icon: menuItem.icon, onClick: () => __awaiter$E(void 0, void 0, void 0, function* () {
|
9321
9355
|
try {
|
9322
9356
|
yield menuItem.onClick(attachment);
|
9323
9357
|
}
|
@@ -9474,6 +9508,21 @@ const hasIncompleteAttachmentUploads = (attachmentsWithProgress) => {
|
|
9474
9508
|
const isAttachmentUploadCompleted = (attachmentsWithProgress) => {
|
9475
9509
|
return !!(attachmentsWithProgress === null || attachmentsWithProgress === void 0 ? void 0 : attachmentsWithProgress.find((attachment) => !attachment.error));
|
9476
9510
|
};
|
9511
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
9512
|
+
/**
|
9513
|
+
* @private
|
9514
|
+
*/
|
9515
|
+
// Before sending the image, we need to add the image id we get back after uploading the images to the message content.
|
9516
|
+
const addUploadedImagesToMessage = (message, uploadInlineImages) => {
|
9517
|
+
const document = new DOMParser().parseFromString(message !== null && message !== void 0 ? message : '', 'text/html');
|
9518
|
+
document.querySelectorAll('img').forEach((img) => {
|
9519
|
+
var _a, _b;
|
9520
|
+
img.id = (_b = (_a = uploadInlineImages.find((imageUpload) => !imageUpload.error && imageUpload.url === img.src)) === null || _a === void 0 ? void 0 : _a.id) !== null && _b !== void 0 ? _b : '';
|
9521
|
+
img.src = '';
|
9522
|
+
});
|
9523
|
+
const newMessage = document.body.innerHTML;
|
9524
|
+
return newMessage;
|
9525
|
+
};
|
9477
9526
|
/**
|
9478
9527
|
* @private
|
9479
9528
|
*/
|
@@ -10335,6 +10384,9 @@ const richTextEditorWrapperStyle = (theme, addTopOffset) => {
|
|
10335
10384
|
verticalAlign: 'top'
|
10336
10385
|
}
|
10337
10386
|
}
|
10387
|
+
},
|
10388
|
+
'& img': {
|
10389
|
+
width: '119px'
|
10338
10390
|
}
|
10339
10391
|
});
|
10340
10392
|
};
|
@@ -10533,7 +10585,7 @@ const insertTableMenuCellButtonStyles = (theme) => {
|
|
10533
10585
|
return {
|
10534
10586
|
width: '24px',
|
10535
10587
|
height: '24px',
|
10536
|
-
border: `solid
|
10588
|
+
border: `solid 1px ${theme.palette.neutralSecondaryAlt}`,
|
10537
10589
|
cursor: 'pointer',
|
10538
10590
|
background: 'transparent'
|
10539
10591
|
};
|
@@ -10543,7 +10595,8 @@ const insertTableMenuCellButtonStyles = (theme) => {
|
|
10543
10595
|
*/
|
10544
10596
|
const insertTableMenuCellButtonSelectedStyles = (theme) => {
|
10545
10597
|
return {
|
10546
|
-
background: theme.palette.themePrimary
|
10598
|
+
background: theme.palette.themePrimary,
|
10599
|
+
border: `solid 1px ${theme.palette.themeLighterAlt}`
|
10547
10600
|
};
|
10548
10601
|
};
|
10549
10602
|
/**
|
@@ -10561,7 +10614,7 @@ const insertTableMenuFocusZone = (theme) => {
|
|
10561
10614
|
return react.mergeStyles({
|
10562
10615
|
display: 'inline-grid',
|
10563
10616
|
gridTemplateColumns: 'auto auto auto auto auto',
|
10564
|
-
border: `solid
|
10617
|
+
border: `solid 1px ${theme.palette.neutralSecondaryAlt}`
|
10565
10618
|
});
|
10566
10619
|
};
|
10567
10620
|
/**
|
@@ -10631,6 +10684,27 @@ const dataSetApplier = (format, element, context) => {
|
|
10631
10684
|
context.defaultFormatAppliers.dataset(format, element, context);
|
10632
10685
|
}
|
10633
10686
|
};
|
10687
|
+
// divParagraphSanitizer and DefaultSanitizers should be deleted from here and used as part of PastePlugin instead (from roosterjs packages)
|
10688
|
+
// https://github.com/microsoft/roosterjs/issues/2737
|
10689
|
+
/**
|
10690
|
+
* @private
|
10691
|
+
*/
|
10692
|
+
const divParagraphSanitizer = (value, tagName) => {
|
10693
|
+
const tag = tagName.toLowerCase();
|
10694
|
+
if (tag === 'div' || tag === 'p') {
|
10695
|
+
return null;
|
10696
|
+
}
|
10697
|
+
return value;
|
10698
|
+
};
|
10699
|
+
/**
|
10700
|
+
* @private
|
10701
|
+
*/
|
10702
|
+
const DefaultSanitizers = {
|
10703
|
+
width: divParagraphSanitizer,
|
10704
|
+
height: divParagraphSanitizer,
|
10705
|
+
'inline-size': divParagraphSanitizer,
|
10706
|
+
'block-size': divParagraphSanitizer
|
10707
|
+
};
|
10634
10708
|
|
10635
10709
|
/**
|
10636
10710
|
* CopyPastePlugin is a plugin for handling copy and paste events in the editor.
|
@@ -10648,6 +10722,8 @@ class CopyPastePlugin {
|
|
10648
10722
|
dispose() { }
|
10649
10723
|
onPluginEvent(event) {
|
10650
10724
|
handleBeforePasteEvent(event, /* @conditional-compile-remove(rich-text-editor-image-upload) */ this.onPaste);
|
10725
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
10726
|
+
handleInlineImage(event, this.onUploadInlineImage);
|
10651
10727
|
if (this.editor !== null && !this.editor.isDisposed()) {
|
10652
10728
|
// scroll the editor to the correct position after pasting content
|
10653
10729
|
scrollToBottomAfterContentPaste(event);
|
@@ -10663,6 +10739,29 @@ const handleBeforePasteEvent = (event,
|
|
10663
10739
|
return;
|
10664
10740
|
}
|
10665
10741
|
};
|
10742
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
10743
|
+
/**
|
10744
|
+
* @internal
|
10745
|
+
* Exported only for unit testing
|
10746
|
+
*/
|
10747
|
+
const handleInlineImage = (event, onUploadInlineImage) => {
|
10748
|
+
if (event.eventType === PluginEventType.BeforePaste && event.pasteType === 'normal' && onUploadInlineImage) {
|
10749
|
+
event.fragment.querySelectorAll('img').forEach((image) => {
|
10750
|
+
const clipboardImage = event.clipboardData.image;
|
10751
|
+
const fileName = (clipboardImage === null || clipboardImage === void 0 ? void 0 : clipboardImage.name) || (clipboardImage === null || clipboardImage === void 0 ? void 0 : clipboardImage.type.replace('/', '.')) || 'image.png';
|
10752
|
+
// If the image src is an external url, call the onUploadInlineImage callback with the url.
|
10753
|
+
let imageUrl = image.src;
|
10754
|
+
if (image.src.startsWith('data:image/')) {
|
10755
|
+
const blobImage = _base64ToBlob(image.src);
|
10756
|
+
imageUrl = URL.createObjectURL(blobImage);
|
10757
|
+
}
|
10758
|
+
onUploadInlineImage(imageUrl, fileName);
|
10759
|
+
image.src = imageUrl;
|
10760
|
+
image.alt = image.alt || 'image';
|
10761
|
+
image.style.width = '119px'; // TODO: find a way to get the original width and height of the image
|
10762
|
+
});
|
10763
|
+
}
|
10764
|
+
};
|
10666
10765
|
/**
|
10667
10766
|
* Update the scroll position of the editor after pasting content to ensure the content is visible.
|
10668
10767
|
* @param event - The plugin event.
|
@@ -10737,6 +10836,11 @@ var UpdateEvent;
|
|
10737
10836
|
UpdateEvent["UserInput"] = "UserInput";
|
10738
10837
|
UpdateEvent["Blur"] = "Blur";
|
10739
10838
|
})(UpdateEvent || (UpdateEvent = {}));
|
10839
|
+
var Keys;
|
10840
|
+
(function (Keys) {
|
10841
|
+
Keys[Keys["BACKSPACE"] = 8] = "BACKSPACE";
|
10842
|
+
Keys[Keys["DELETE"] = 46] = "DELETE";
|
10843
|
+
})(Keys || (Keys = {}));
|
10740
10844
|
/**
|
10741
10845
|
* A plugin to handle content update
|
10742
10846
|
*/
|
@@ -10774,9 +10878,11 @@ class UpdateContentPlugin {
|
|
10774
10878
|
}
|
10775
10879
|
}
|
10776
10880
|
onPluginEvent(event) {
|
10881
|
+
var _a;
|
10777
10882
|
if (this.onUpdate === null) {
|
10778
10883
|
return;
|
10779
10884
|
}
|
10885
|
+
let imageSrcArray;
|
10780
10886
|
switch (event.eventType) {
|
10781
10887
|
case PluginEventType.EditorReady:
|
10782
10888
|
this.onUpdate(UpdateEvent.Init);
|
@@ -10785,7 +10891,26 @@ class UpdateContentPlugin {
|
|
10785
10891
|
this.onUpdate(UpdateEvent.Dispose);
|
10786
10892
|
break;
|
10787
10893
|
case PluginEventType.ContentChanged:
|
10788
|
-
|
10894
|
+
if (event.source.toLowerCase() === 'cut' ||
|
10895
|
+
(event.source.toLowerCase() === 'keyboard' && (event.data === Keys.BACKSPACE || event.data === Keys.DELETE))) {
|
10896
|
+
(_a = event.contentModel) === null || _a === void 0 ? void 0 : _a.blocks.map((block) => {
|
10897
|
+
if (block.blockType === 'Paragraph') {
|
10898
|
+
const segments = block.segments;
|
10899
|
+
segments.map((segment) => {
|
10900
|
+
if (segment.segmentType === 'Image') {
|
10901
|
+
if (!imageSrcArray) {
|
10902
|
+
imageSrcArray = [];
|
10903
|
+
}
|
10904
|
+
imageSrcArray === null || imageSrcArray === void 0 ? void 0 : imageSrcArray.push(segment.src);
|
10905
|
+
}
|
10906
|
+
});
|
10907
|
+
}
|
10908
|
+
});
|
10909
|
+
}
|
10910
|
+
else {
|
10911
|
+
imageSrcArray = undefined;
|
10912
|
+
}
|
10913
|
+
this.onUpdate(UpdateEvent.ContentChanged, imageSrcArray);
|
10789
10914
|
break;
|
10790
10915
|
case PluginEventType.Input:
|
10791
10916
|
this.onUpdate(UpdateEvent.UserInput);
|
@@ -11421,7 +11546,9 @@ class PlaceholderPlugin extends roosterjsContentModelPlugins.WatermarkPlugin {
|
|
11421
11546
|
const RichTextEditor = React.forwardRef((props, ref) => {
|
11422
11547
|
const { initialContent, onChange, placeholderText, strings, showRichTextEditorFormatting, autoFocus, onKeyDown, onContentModelUpdate, contentModel,
|
11423
11548
|
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
11424
|
-
onPaste
|
11549
|
+
onPaste,
|
11550
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
11551
|
+
onUploadInlineImage } = props;
|
11425
11552
|
const editor = React.useRef(null);
|
11426
11553
|
const editorDiv = React.useRef(null);
|
11427
11554
|
const theme = useTheme();
|
@@ -11435,15 +11562,18 @@ const RichTextEditor = React.forwardRef((props, ref) => {
|
|
11435
11562
|
},
|
11436
11563
|
setEmptyContent() {
|
11437
11564
|
if (editor.current) {
|
11438
|
-
editor.current.formatContentModel;
|
11439
11565
|
// remove all content from the editor and update the model
|
11440
11566
|
// ContentChanged event will be sent by RoosterJS automatically
|
11441
11567
|
editor.current.formatContentModel((model) => {
|
11442
|
-
|
11568
|
+
// Create a new empty paragraph with selection marker
|
11569
|
+
// this is needed for correct processing of images after the content is deleted
|
11570
|
+
const block = roosterjsContentModelDom.createParagraph(true);
|
11571
|
+
setSelectionAfterLastSegment(model, block);
|
11572
|
+
model.blocks = [block];
|
11443
11573
|
return true;
|
11444
11574
|
});
|
11445
11575
|
//reset content model
|
11446
|
-
onContentModelUpdate && onContentModelUpdate(
|
11576
|
+
onContentModelUpdate && onContentModelUpdate(editor.current.getContentModelCopy('disconnected'));
|
11447
11577
|
}
|
11448
11578
|
},
|
11449
11579
|
getPlainContent() {
|
@@ -11486,9 +11616,12 @@ const RichTextEditor = React.forwardRef((props, ref) => {
|
|
11486
11616
|
const updatePlugin = React.useMemo(() => {
|
11487
11617
|
return new UpdateContentPlugin();
|
11488
11618
|
}, []);
|
11619
|
+
const copyPastePlugin = React.useMemo(() => {
|
11620
|
+
return new CopyPastePlugin();
|
11621
|
+
}, []);
|
11489
11622
|
React.useEffect(() => {
|
11490
11623
|
// don't set callback in plugin constructor to update callback without plugin recreation
|
11491
|
-
updatePlugin.onUpdate = (event) => {
|
11624
|
+
updatePlugin.onUpdate = (event, imageSrcArray) => {
|
11492
11625
|
if (editor.current === null) {
|
11493
11626
|
return;
|
11494
11627
|
}
|
@@ -11496,10 +11629,14 @@ const RichTextEditor = React.forwardRef((props, ref) => {
|
|
11496
11629
|
onContentModelUpdate && onContentModelUpdate(editor.current.getContentModelCopy('disconnected'));
|
11497
11630
|
}
|
11498
11631
|
else {
|
11499
|
-
onChange && onChange(roosterjsContentModelCore.exportContent(editor.current));
|
11632
|
+
onChange && onChange(roosterjsContentModelCore.exportContent(editor.current), imageSrcArray);
|
11500
11633
|
}
|
11501
11634
|
};
|
11502
11635
|
}, [onChange, onContentModelUpdate, updatePlugin]);
|
11636
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
11637
|
+
React.useEffect(() => {
|
11638
|
+
copyPastePlugin.onUploadInlineImage = onUploadInlineImage;
|
11639
|
+
}, [copyPastePlugin, onUploadInlineImage]);
|
11503
11640
|
const keyboardInputPlugin = React.useMemo(() => {
|
11504
11641
|
return new KeyboardInputPlugin();
|
11505
11642
|
}, []);
|
@@ -11523,9 +11660,6 @@ const RichTextEditor = React.forwardRef((props, ref) => {
|
|
11523
11660
|
const onContextMenuDismiss = React.useCallback(() => {
|
11524
11661
|
setContextMenuProps(null);
|
11525
11662
|
}, []);
|
11526
|
-
const copyPastePlugin = React.useMemo(() => {
|
11527
|
-
return new CopyPastePlugin();
|
11528
|
-
}, []);
|
11529
11663
|
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
11530
11664
|
React.useEffect(() => {
|
11531
11665
|
copyPastePlugin.onPaste = onPaste;
|
@@ -11534,7 +11668,12 @@ const RichTextEditor = React.forwardRef((props, ref) => {
|
|
11534
11668
|
const contentEdit = new roosterjsContentModelPlugins.EditPlugin({ handleTabKey: false });
|
11535
11669
|
// AutoFormatPlugin previously was a part of the edit plugin
|
11536
11670
|
const autoFormatPlugin = new roosterjsContentModelPlugins.AutoFormatPlugin({ autoBullet: true, autoNumbering: true, autoLink: true });
|
11537
|
-
const roosterPastePlugin = new roosterjsContentModelPlugins.PastePlugin(false
|
11671
|
+
const roosterPastePlugin = new roosterjsContentModelPlugins.PastePlugin(false, {
|
11672
|
+
additionalDisallowedTags: ['head', '!doctype', '!cdata', '#comment'],
|
11673
|
+
additionalAllowedTags: [],
|
11674
|
+
styleSanitizers: DefaultSanitizers,
|
11675
|
+
attributeSanitizers: {}
|
11676
|
+
});
|
11538
11677
|
const shortcutPlugin = new roosterjsContentModelPlugins.ShortcutPlugin();
|
11539
11678
|
const contextMenuPlugin = new ContextMenuPlugin(onContextMenuRender, onContextMenuDismiss);
|
11540
11679
|
return [
|
@@ -11618,13 +11757,16 @@ const createEditorInitialModel = (initialContent, contentModel) => {
|
|
11618
11757
|
lastBlock = roosterjsContentModelDom.createParagraph(true);
|
11619
11758
|
initialModel.blocks.push(lastBlock);
|
11620
11759
|
}
|
11621
|
-
|
11622
|
-
lastBlock.segments.push(marker);
|
11623
|
-
roosterjsContentModelDom.setSelection(initialModel, marker);
|
11760
|
+
setSelectionAfterLastSegment(initialModel, lastBlock);
|
11624
11761
|
}
|
11625
11762
|
return initialModel;
|
11626
11763
|
}
|
11627
11764
|
};
|
11765
|
+
const setSelectionAfterLastSegment = (model, block) => {
|
11766
|
+
const marker = roosterjsContentModelDom.createSelectionMarker();
|
11767
|
+
block.segments.push(marker);
|
11768
|
+
roosterjsContentModelDom.setSelection(model, marker);
|
11769
|
+
};
|
11628
11770
|
|
11629
11771
|
// Copyright (c) Microsoft Corporation.
|
11630
11772
|
// Licensed under the MIT License.
|
@@ -11668,7 +11810,9 @@ const RichTextInputBoxComponent = (props) => {
|
|
11668
11810
|
/* @conditional-compile-remove(file-sharing-acs) */
|
11669
11811
|
onRenderAttachmentUploads,
|
11670
11812
|
/* @conditional-compile-remove(file-sharing-acs) */
|
11671
|
-
hasAttachments, richTextEditorStyleProps, isHorizontalLayoutDisabled = false, autoFocus, onTyping
|
11813
|
+
hasAttachments, richTextEditorStyleProps, isHorizontalLayoutDisabled = false, autoFocus, onTyping,
|
11814
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
11815
|
+
onUploadInlineImage } = props;
|
11672
11816
|
const theme = useTheme();
|
11673
11817
|
// undefined is used to indicate that the rich text editor toolbar state wasn't changed yet
|
11674
11818
|
const [showRichTextEditorFormatting, setShowRichTextEditorFormatting] = React.useState(undefined);
|
@@ -11741,7 +11885,9 @@ const RichTextInputBoxComponent = (props) => {
|
|
11741
11885
|
React.createElement(react.Stack.Item, { className: inputBoxRichTextStackItemStyle },
|
11742
11886
|
React.createElement(RichTextEditor, { contentModel: contentModel, initialContent: initialContent, placeholderText: placeholderText, onChange: onChange, onKeyDown: onKeyDown, ref: editorComponentRef, strings: strings, showRichTextEditorFormatting: showRichTextEditorFormatting === true, styles: richTextEditorStyle, autoFocus: autoFocus, onContentModelUpdate: onContentModelUpdate,
|
11743
11887
|
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
11744
|
-
onPaste: props.onPaste
|
11888
|
+
onPaste: props.onPaste,
|
11889
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
11890
|
+
onUploadInlineImage: onUploadInlineImage })), /* @conditional-compile-remove(file-sharing-acs) */
|
11745
11891
|
onRenderAttachmentUploads && onRenderAttachmentUploads()),
|
11746
11892
|
actionButtons)));
|
11747
11893
|
};
|
@@ -11826,7 +11972,13 @@ const RichTextSendBox = (props) => {
|
|
11826
11972
|
/* @conditional-compile-remove(file-sharing-acs) */
|
11827
11973
|
onCancelAttachmentUpload,
|
11828
11974
|
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
11829
|
-
onPaste
|
11975
|
+
onPaste,
|
11976
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
11977
|
+
onUploadInlineImage,
|
11978
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
11979
|
+
imageUploadsInProgress,
|
11980
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
11981
|
+
onCancelInlineImageUpload } = props;
|
11830
11982
|
const theme = useTheme();
|
11831
11983
|
const locale = useLocale$1();
|
11832
11984
|
const localeStrings = React.useMemo(() => {
|
@@ -11851,6 +12003,22 @@ const RichTextSendBox = (props) => {
|
|
11851
12003
|
setContentValueOverflow(isMessageTooLong(newValue.length));
|
11852
12004
|
setContentValue(newValue);
|
11853
12005
|
}, []);
|
12006
|
+
const onChangeHandler = React.useCallback((newValue,
|
12007
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */ imageSrcArray) => {
|
12008
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
12009
|
+
if (imageSrcArray && imageUploadsInProgress && (imageUploadsInProgress === null || imageUploadsInProgress === void 0 ? void 0 : imageUploadsInProgress.length) > 0) {
|
12010
|
+
imageUploadsInProgress === null || imageUploadsInProgress === void 0 ? void 0 : imageUploadsInProgress.map((uploadImage) => {
|
12011
|
+
if (uploadImage.url && imageSrcArray && !(imageSrcArray === null || imageSrcArray === void 0 ? void 0 : imageSrcArray.includes(uploadImage.url))) {
|
12012
|
+
onCancelInlineImageUpload === null || onCancelInlineImageUpload === void 0 ? void 0 : onCancelInlineImageUpload(uploadImage.id);
|
12013
|
+
}
|
12014
|
+
});
|
12015
|
+
}
|
12016
|
+
setContent(newValue);
|
12017
|
+
}, [
|
12018
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */ onCancelInlineImageUpload,
|
12019
|
+
setContent,
|
12020
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */ imageUploadsInProgress
|
12021
|
+
]);
|
11854
12022
|
const hasContent = React.useMemo(() => {
|
11855
12023
|
var _a;
|
11856
12024
|
// get plain text content from the editor to check if the message is empty
|
@@ -11859,16 +12027,24 @@ const RichTextSendBox = (props) => {
|
|
11859
12027
|
return sanitizeText(contentValue !== null && contentValue !== void 0 ? contentValue : '').length > 0 && sanitizeText(plainTextContent !== null && plainTextContent !== void 0 ? plainTextContent : '').length > 0;
|
11860
12028
|
}, [contentValue]);
|
11861
12029
|
/* @conditional-compile-remove(file-sharing-acs) */
|
11862
|
-
|
12030
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
12031
|
+
const toAttachmentMetadata = React.useCallback((attachmentsWithProgress,
|
12032
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */ attachmentType) => {
|
11863
12033
|
return attachmentsWithProgress === null || attachmentsWithProgress === void 0 ? void 0 : attachmentsWithProgress.filter((attachment) => {
|
11864
12034
|
var _a;
|
11865
12035
|
return !('error' in attachment) && !((_a = attachment.error) === null || _a === void 0 ? void 0 : _a.message);
|
11866
12036
|
}).map((attachment) => {
|
11867
|
-
|
12037
|
+
let url = attachment.url || '';
|
12038
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
12039
|
+
if (attachmentType === 'image') {
|
12040
|
+
url = '';
|
12041
|
+
}
|
11868
12042
|
return {
|
11869
12043
|
id: attachment.id,
|
11870
12044
|
name: attachment.name,
|
11871
|
-
url
|
12045
|
+
url,
|
12046
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
12047
|
+
attachmentType: attachmentType
|
11872
12048
|
};
|
11873
12049
|
});
|
11874
12050
|
}, []);
|
@@ -11881,19 +12057,35 @@ const RichTextSendBox = (props) => {
|
|
11881
12057
|
/* @conditional-compile-remove(file-sharing-acs) */
|
11882
12058
|
setAttachmentUploadsPendingError(undefined);
|
11883
12059
|
/* @conditional-compile-remove(file-sharing-acs) */
|
11884
|
-
|
12060
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
12061
|
+
if (
|
12062
|
+
/* @conditional-compile-remove(file-sharing-acs) */ hasIncompleteAttachmentUploads(attachments) ||
|
12063
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */ hasIncompleteAttachmentUploads(imageUploadsInProgress)) {
|
11885
12064
|
setAttachmentUploadsPendingError({ message: strings.attachmentUploadsPendingError, timestamp: Date.now() });
|
11886
12065
|
return;
|
11887
12066
|
}
|
11888
|
-
|
12067
|
+
let message = contentValue;
|
11889
12068
|
// we don't want to send empty messages including spaces, newlines, tabs
|
11890
12069
|
// Message can be empty if there is a valid attachment upload
|
11891
|
-
if (hasContent ||
|
12070
|
+
if (hasContent ||
|
12071
|
+
/* @conditional-compile-remove(file-sharing-acs) */ isAttachmentUploadCompleted(attachments) ||
|
12072
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */ isAttachmentUploadCompleted(imageUploadsInProgress)) {
|
12073
|
+
/* @conditional-compile-remove(file-sharing-acs) */
|
12074
|
+
let attachmentArray = toAttachmentMetadata(attachments);
|
12075
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
12076
|
+
if (imageUploadsInProgress) {
|
12077
|
+
const imageArray = toAttachmentMetadata(imageUploadsInProgress, 'image');
|
12078
|
+
if (imageArray) {
|
12079
|
+
message = addUploadedImagesToMessage(message, imageUploadsInProgress);
|
12080
|
+
attachmentArray = attachmentArray === null || attachmentArray === void 0 ? void 0 : attachmentArray.concat(imageArray);
|
12081
|
+
}
|
12082
|
+
}
|
11892
12083
|
onSendMessage(message,
|
11893
12084
|
/* @conditional-compile-remove(file-sharing-acs) */ /* @conditional-compile-remove(rich-text-editor-composite-support) */
|
11894
12085
|
{
|
11895
12086
|
/* @conditional-compile-remove(file-sharing-acs) */
|
11896
|
-
|
12087
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
12088
|
+
attachments: attachmentArray,
|
11897
12089
|
/* @conditional-compile-remove(rich-text-editor-composite-support) */
|
11898
12090
|
type: 'html'
|
11899
12091
|
});
|
@@ -11906,29 +12098,37 @@ const RichTextSendBox = (props) => {
|
|
11906
12098
|
contentValueOverflow,
|
11907
12099
|
/* @conditional-compile-remove(file-sharing-acs) */
|
11908
12100
|
attachments,
|
12101
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
12102
|
+
imageUploadsInProgress,
|
11909
12103
|
contentValue,
|
11910
12104
|
hasContent,
|
11911
12105
|
/* @conditional-compile-remove(file-sharing-acs) */
|
12106
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
11912
12107
|
strings.attachmentUploadsPendingError,
|
11913
|
-
onSendMessage,
|
11914
12108
|
/* @conditional-compile-remove(file-sharing-acs) */
|
11915
|
-
|
12109
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
12110
|
+
toAttachmentMetadata,
|
12111
|
+
onSendMessage
|
11916
12112
|
]);
|
11917
12113
|
const hasErrorMessage = React.useMemo(() => {
|
11918
|
-
var _a;
|
12114
|
+
var _a, _b;
|
11919
12115
|
return (!!systemMessage ||
|
11920
12116
|
!!contentTooLongMessage ||
|
11921
12117
|
/* @conditional-compile-remove(file-sharing-acs) */
|
11922
12118
|
!!attachmentUploadsPendingError ||
|
11923
12119
|
/* @conditional-compile-remove(file-sharing-acs) */
|
11924
|
-
!!((_a = attachments === null || attachments === void 0 ? void 0 : attachments.filter((attachmentUpload) => attachmentUpload.error).pop()) === null || _a === void 0 ? void 0 : _a.error)
|
12120
|
+
!!((_a = attachments === null || attachments === void 0 ? void 0 : attachments.filter((attachmentUpload) => attachmentUpload.error).pop()) === null || _a === void 0 ? void 0 : _a.error) ||
|
12121
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
12122
|
+
!!((_b = imageUploadsInProgress === null || imageUploadsInProgress === void 0 ? void 0 : imageUploadsInProgress.filter((image) => image.error).pop()) === null || _b === void 0 ? void 0 : _b.error));
|
11925
12123
|
}, [
|
11926
12124
|
/* @conditional-compile-remove(file-sharing-acs) */
|
11927
12125
|
attachments,
|
11928
12126
|
contentTooLongMessage,
|
11929
12127
|
/* @conditional-compile-remove(file-sharing-acs) */
|
11930
12128
|
attachmentUploadsPendingError,
|
11931
|
-
systemMessage
|
12129
|
+
systemMessage,
|
12130
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
12131
|
+
imageUploadsInProgress
|
11932
12132
|
]);
|
11933
12133
|
const onRenderSendIcon = React.useCallback((isHover) => {
|
11934
12134
|
return (React.createElement(react.Icon, { iconName: isHover && hasContent ? 'SendBoxSendHovered' : 'SendBoxSend', className: sendIconStyle({
|
@@ -12007,13 +12207,15 @@ const RichTextSendBox = (props) => {
|
|
12007
12207
|
}, [attachments]);
|
12008
12208
|
return (React.createElement(react.Stack, null,
|
12009
12209
|
React.createElement(RichTextSendBoxErrors, Object.assign({}, sendBoxErrorsProps)),
|
12010
|
-
React.createElement(RichTextInputBoxComponent, { placeholderText: strings.placeholderText, autoFocus: autoFocus, onChange:
|
12210
|
+
React.createElement(RichTextInputBoxComponent, { placeholderText: strings.placeholderText, autoFocus: autoFocus, onChange: onChangeHandler, onEnterKeyDown: sendMessageOnClick, onTyping: onTyping, editorComponentRef: editorComponentRef, strings: strings, disabled: disabled, actionComponents: sendButton, richTextEditorStyleProps: sendBoxRichTextEditorStyle,
|
12011
12211
|
/* @conditional-compile-remove(file-sharing-acs) */
|
12012
12212
|
onRenderAttachmentUploads: onRenderAttachmentUploads,
|
12013
12213
|
/* @conditional-compile-remove(file-sharing-acs) */
|
12014
12214
|
hasAttachments: hasAttachmentUploads,
|
12015
12215
|
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
12016
|
-
onPaste: onPaste
|
12216
|
+
onPaste: onPaste,
|
12217
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
12218
|
+
onUploadInlineImage: onUploadInlineImage })));
|
12017
12219
|
};
|
12018
12220
|
|
12019
12221
|
// Copyright (c) Microsoft Corporation.
|
@@ -12671,7 +12873,7 @@ const MessageStatusIndicatorInternal = (props) => {
|
|
12671
12873
|
switch (status) {
|
12672
12874
|
case 'failed':
|
12673
12875
|
return (React.createElement(react.TooltipHost, { content: strings.failedToSendTooltipText, "data-ui-id": "chat-composite-message-tooltip", calloutProps: Object.assign({}, calloutProps), styles: hostStyles$1 },
|
12674
|
-
React.createElement(MemoMessageStatusIcon, { shouldAnnounce: shouldAnnounce, iconName: "MessageFailed", iconClassName: react.mergeStyles(MessageStatusIndicatorErrorIconStyle, { color: theme.palette.redDark }, styles === null || styles === void 0 ? void 0 : styles.root), ariaLabel: strings.failedToSendAriaLabel })));
|
12876
|
+
React.createElement(MemoMessageStatusIcon, { shouldAnnounce: shouldAnnounce, iconName: "MessageFailed", iconClassName: react.mergeStyles(MessageStatusIndicatorErrorIconStyle, { color: isDarkThemed(theme) ? theme.semanticColors.errorText : theme.palette.redDark }, styles === null || styles === void 0 ? void 0 : styles.root), ariaLabel: strings.failedToSendAriaLabel })));
|
12675
12877
|
case 'sending':
|
12676
12878
|
return (React.createElement(react.TooltipHost, { content: strings.sendingTooltipText, "data-ui-id": "chat-composite-message-tooltip", calloutProps: Object.assign({}, calloutProps), styles: hostStyles$1 },
|
12677
12879
|
React.createElement(MemoMessageStatusIcon, { shouldAnnounce: shouldAnnounce, iconName: "MessageSending", iconClassName: react.mergeStyles(MessageStatusIndicatorIconStyle, { color: theme.palette.themePrimary }, styles === null || styles === void 0 ? void 0 : styles.root), ariaLabel: strings.sendingAriaLabel })));
|
@@ -13959,7 +14161,7 @@ class _ErrorBoundary extends React.Component {
|
|
13959
14161
|
// Copyright (c) Microsoft Corporation.
|
13960
14162
|
// Licensed under the MIT License.
|
13961
14163
|
/* @conditional-compile-remove(rich-text-editor) */
|
13962
|
-
const ChatMessageComponentAsRichTextEditBox = React.lazy(() => Promise.resolve().then(function () { return require('./ChatMessageComponentAsRichTextEditBox-
|
14164
|
+
const ChatMessageComponentAsRichTextEditBox = React.lazy(() => Promise.resolve().then(function () { return require('./ChatMessageComponentAsRichTextEditBox-DMEk2o-G.js'); }));
|
13963
14165
|
/**
|
13964
14166
|
* @private
|
13965
14167
|
* Use this function to load RoosterJS dependencies early in the lifecycle.
|
@@ -13967,7 +14169,7 @@ const ChatMessageComponentAsRichTextEditBox = React.lazy(() => Promise.resolve()
|
|
13967
14169
|
*
|
13968
14170
|
* @conditional-compile-remove(rich-text-editor)
|
13969
14171
|
*/
|
13970
|
-
const loadChatMessageComponentAsRichTextEditBox = () => Promise.resolve().then(function () { return require('./ChatMessageComponentAsRichTextEditBox-
|
14172
|
+
const loadChatMessageComponentAsRichTextEditBox = () => Promise.resolve().then(function () { return require('./ChatMessageComponentAsRichTextEditBox-DMEk2o-G.js'); });
|
13971
14173
|
/**
|
13972
14174
|
* @private
|
13973
14175
|
*/
|
@@ -13990,7 +14192,7 @@ const ChatMessageComponentAsEditBoxPicker = (props) => {
|
|
13990
14192
|
|
13991
14193
|
// Copyright (c) Microsoft Corporation.
|
13992
14194
|
// Licensed under the MIT License.
|
13993
|
-
var __awaiter$
|
14195
|
+
var __awaiter$D = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
13994
14196
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
13995
14197
|
return new (P || (P = Promise))(function (resolve, reject) {
|
13996
14198
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -14035,7 +14237,7 @@ const ChatMyMessageComponent = (props) => {
|
|
14035
14237
|
function (text,
|
14036
14238
|
/* @conditional-compile-remove(file-sharing-acs) */
|
14037
14239
|
attachments) {
|
14038
|
-
return __awaiter$
|
14240
|
+
return __awaiter$D(this, void 0, void 0, function* () {
|
14039
14241
|
/* @conditional-compile-remove(file-sharing-acs) */
|
14040
14242
|
if (`attachments` in message && attachments) {
|
14041
14243
|
message.attachments = attachments;
|
@@ -14443,7 +14645,7 @@ const fluentChatComponent = (props) => {
|
|
14443
14645
|
|
14444
14646
|
// Copyright (c) Microsoft Corporation.
|
14445
14647
|
// Licensed under the MIT License.
|
14446
|
-
var __awaiter$
|
14648
|
+
var __awaiter$C = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
14447
14649
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
14448
14650
|
return new (P || (P = Promise))(function (resolve, reject) {
|
14449
14651
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -14639,7 +14841,7 @@ const MessageThreadWrapper = (props) => {
|
|
14639
14841
|
loadChatMessageComponentAsRichTextEditBox();
|
14640
14842
|
}
|
14641
14843
|
}, [richTextEditorOptions]);
|
14642
|
-
const onDeleteMessageCallback = React.useCallback((messageId) => __awaiter$
|
14844
|
+
const onDeleteMessageCallback = React.useCallback((messageId) => __awaiter$C(void 0, void 0, void 0, function* () {
|
14643
14845
|
if (!onDeleteMessage) {
|
14644
14846
|
return;
|
14645
14847
|
}
|
@@ -14720,7 +14922,7 @@ const MessageThreadWrapper = (props) => {
|
|
14720
14922
|
*/
|
14721
14923
|
const clientHeight = (_a = chatThreadRef.current) === null || _a === void 0 ? void 0 : _a.clientHeight;
|
14722
14924
|
// we try to only send those message status if user is scrolled to the bottom.
|
14723
|
-
const sendMessageStatusIfAtBottom = React.useCallback(() => __awaiter$
|
14925
|
+
const sendMessageStatusIfAtBottom = React.useCallback(() => __awaiter$C(void 0, void 0, void 0, function* () {
|
14724
14926
|
if (!isAtBottomOfScrollRef.current ||
|
14725
14927
|
!document.hasFocus() ||
|
14726
14928
|
!messagesRef.current ||
|
@@ -14771,7 +14973,7 @@ const MessageThreadWrapper = (props) => {
|
|
14771
14973
|
setIsAtBottomOfScrollRef(atBottom);
|
14772
14974
|
}, [scrollToBottom, sendMessageStatusIfAtBottom]);
|
14773
14975
|
// Infinite scrolling + threadInitialize function
|
14774
|
-
const fetchNewMessageWhenAtTop = React.useCallback(() => __awaiter$
|
14976
|
+
const fetchNewMessageWhenAtTop = React.useCallback(() => __awaiter$C(void 0, void 0, void 0, function* () {
|
14775
14977
|
if (!isLoadingChatMessagesRef.current) {
|
14776
14978
|
if (onLoadPreviousChatMessages) {
|
14777
14979
|
isLoadingChatMessagesRef.current = true;
|
@@ -17801,7 +18003,7 @@ const localVideoTileContainerStyles = {
|
|
17801
18003
|
|
17802
18004
|
// Copyright (c) Microsoft Corporation.
|
17803
18005
|
// Licensed under the MIT License.
|
17804
|
-
var __awaiter$
|
18006
|
+
var __awaiter$B = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
17805
18007
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
17806
18008
|
return new (P || (P = Promise))(function (resolve, reject) {
|
17807
18009
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -17818,7 +18020,7 @@ const LocalVideoCameraCycleButton = (props) => {
|
|
17818
18020
|
const { cameras, selectedCamera, onSelectCamera, label, ariaDescription, size } = props;
|
17819
18021
|
const theme = react.useTheme();
|
17820
18022
|
const [waitForCamera, setWaitForCamera] = React.useState(false);
|
17821
|
-
const onChangeCameraClick = React.useCallback((device) => __awaiter$
|
18023
|
+
const onChangeCameraClick = React.useCallback((device) => __awaiter$B(void 0, void 0, void 0, function* () {
|
17822
18024
|
// Throttle changing camera to prevent too many callbacks
|
17823
18025
|
if (onSelectCamera) {
|
17824
18026
|
setWaitForCamera(true);
|
@@ -20591,7 +20793,7 @@ const DevicesButton = (props) => {
|
|
20591
20793
|
|
20592
20794
|
// Copyright (c) Microsoft Corporation.
|
20593
20795
|
// Licensed under the MIT License.
|
20594
|
-
var __awaiter$
|
20796
|
+
var __awaiter$A = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
20595
20797
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
20596
20798
|
return new (P || (P = Promise))(function (resolve, reject) {
|
20597
20799
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -20629,7 +20831,7 @@ const CameraButton = (props) => {
|
|
20629
20831
|
const toggleAnnouncerString = React.useCallback((isCameraOn) => {
|
20630
20832
|
setAnnouncerString(!isCameraOn ? strings.cameraActionTurnedOffAnnouncement : strings.cameraActionTurnedOnAnnouncement);
|
20631
20833
|
}, [strings.cameraActionTurnedOffAnnouncement, strings.cameraActionTurnedOnAnnouncement]);
|
20632
|
-
const onToggleClick = React.useCallback(() => __awaiter$
|
20834
|
+
const onToggleClick = React.useCallback(() => __awaiter$A(void 0, void 0, void 0, function* () {
|
20633
20835
|
// Throttle click on camera, need to await onToggleCamera then allow another click
|
20634
20836
|
if (onToggleCamera) {
|
20635
20837
|
setWaitForCamera(true);
|
@@ -20643,7 +20845,7 @@ const CameraButton = (props) => {
|
|
20643
20845
|
}
|
20644
20846
|
}
|
20645
20847
|
}), [cameraOn, localVideoViewOptions, onToggleCamera, toggleAnnouncerString]);
|
20646
|
-
const onChangeCameraClick = React.useCallback((device) => __awaiter$
|
20848
|
+
const onChangeCameraClick = React.useCallback((device) => __awaiter$A(void 0, void 0, void 0, function* () {
|
20647
20849
|
// Throttle changing camera to prevent too many callbacks
|
20648
20850
|
if (onSelectCamera) {
|
20649
20851
|
setWaitForCamera(true);
|
@@ -20864,7 +21066,7 @@ const menupButtonPadding = {
|
|
20864
21066
|
|
20865
21067
|
// Copyright (c) Microsoft Corporation.
|
20866
21068
|
// Licensed under the MIT License.
|
20867
|
-
var __awaiter$
|
21069
|
+
var __awaiter$z = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
20868
21070
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
20869
21071
|
return new (P || (P = Promise))(function (resolve, reject) {
|
20870
21072
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -20905,7 +21107,7 @@ const MicrophoneButton = (props) => {
|
|
20905
21107
|
const toggleAnnouncerString = React.useCallback((isMicOn) => {
|
20906
21108
|
setAnnouncerString(!isMicOn ? strings.microphoneActionTurnedOffAnnouncement : strings.microphoneActionTurnedOnAnnouncement);
|
20907
21109
|
}, [strings.microphoneActionTurnedOffAnnouncement, strings.microphoneActionTurnedOnAnnouncement]);
|
20908
|
-
const onToggleClick = React.useCallback(() => __awaiter$
|
21110
|
+
const onToggleClick = React.useCallback(() => __awaiter$z(void 0, void 0, void 0, function* () {
|
20909
21111
|
if (onToggleMicrophone) {
|
20910
21112
|
try {
|
20911
21113
|
yield onToggleMicrophone();
|
@@ -21536,247 +21738,6 @@ const secondaryTileFloatingStyles = {
|
|
21536
21738
|
right: '0.125rem'
|
21537
21739
|
};
|
21538
21740
|
|
21539
|
-
// Copyright (c) Microsoft Corporation.
|
21540
|
-
// Licensed under the MIT License.
|
21541
|
-
/**
|
21542
|
-
* Return different conditions based on the current and previous state of recording and transcribing
|
21543
|
-
*
|
21544
|
-
* @param callRecordState - The current call record state: on, off, stopped
|
21545
|
-
* @param callTranscribeState - The current call transcribe state: on, off, stopped
|
21546
|
-
*
|
21547
|
-
* @remarks - The stopped state means: previously on but currently off
|
21548
|
-
*
|
21549
|
-
* @private
|
21550
|
-
*/
|
21551
|
-
const computeVariant = (callRecordState, callTranscribeState) => {
|
21552
|
-
if (callRecordState === 'on' && callTranscribeState === 'on') {
|
21553
|
-
return 'RECORDING_AND_TRANSCRIPTION_STARTED';
|
21554
|
-
}
|
21555
|
-
else if (callRecordState === 'on' && callTranscribeState === 'off') {
|
21556
|
-
return 'RECORDING_STARTED';
|
21557
|
-
}
|
21558
|
-
else if (callRecordState === 'off' && callTranscribeState === 'on') {
|
21559
|
-
return 'TRANSCRIPTION_STARTED';
|
21560
|
-
}
|
21561
|
-
else if (callRecordState === 'on' && callTranscribeState === 'stopped') {
|
21562
|
-
return 'TRANSCRIPTION_STOPPED_STILL_RECORDING';
|
21563
|
-
}
|
21564
|
-
else if (callRecordState === 'stopped' && callTranscribeState === 'on') {
|
21565
|
-
return 'RECORDING_STOPPED_STILL_TRANSCRIBING';
|
21566
|
-
}
|
21567
|
-
else if (callRecordState === 'off' && callTranscribeState === 'stopped') {
|
21568
|
-
return 'TRANSCRIPTION_STOPPED';
|
21569
|
-
}
|
21570
|
-
else if (callRecordState === 'stopped' && callTranscribeState === 'off') {
|
21571
|
-
return 'RECORDING_STOPPED';
|
21572
|
-
}
|
21573
|
-
else if (callRecordState === 'stopped' && callTranscribeState === 'stopped') {
|
21574
|
-
return 'RECORDING_AND_TRANSCRIPTION_STOPPED';
|
21575
|
-
}
|
21576
|
-
else {
|
21577
|
-
return 'NO_STATE';
|
21578
|
-
}
|
21579
|
-
};
|
21580
|
-
|
21581
|
-
// Copyright (c) Microsoft Corporation.
|
21582
|
-
// Licensed under the MIT License.
|
21583
|
-
/** @private */
|
21584
|
-
function BannerMessage(props) {
|
21585
|
-
const { variant, strings } = props;
|
21586
|
-
switch (variant) {
|
21587
|
-
case 'TRANSCRIPTION_STOPPED_STILL_RECORDING':
|
21588
|
-
return (React.createElement(React.Fragment, null,
|
21589
|
-
React.createElement("b", null, strings.complianceBannerTranscriptionStopped),
|
21590
|
-
` ${strings.complianceBannerNowOnlyRecording}`,
|
21591
|
-
React.createElement(PrivacyPolicy, { linkText: strings.privacyPolicy })));
|
21592
|
-
case 'RECORDING_STOPPED_STILL_TRANSCRIBING':
|
21593
|
-
return (React.createElement(React.Fragment, null,
|
21594
|
-
React.createElement("b", null, strings.complianceBannerRecordingStopped),
|
21595
|
-
` ${strings.complianceBannerNowOnlyTranscription}`,
|
21596
|
-
React.createElement(PrivacyPolicy, { linkText: strings.privacyPolicy })));
|
21597
|
-
case 'RECORDING_AND_TRANSCRIPTION_STOPPED':
|
21598
|
-
return (React.createElement(React.Fragment, null,
|
21599
|
-
React.createElement("b", null, strings.complianceBannerRecordingAndTranscriptionSaved),
|
21600
|
-
` ${strings.complianceBannerRecordingAndTranscriptionStopped}`,
|
21601
|
-
React.createElement(LearnMore, { linkText: strings.learnMore })));
|
21602
|
-
case 'RECORDING_AND_TRANSCRIPTION_STARTED':
|
21603
|
-
return (React.createElement(React.Fragment, null,
|
21604
|
-
React.createElement("b", null, strings.complianceBannerRecordingAndTranscriptionStarted),
|
21605
|
-
` ${strings.complianceBannerTranscriptionConsent}`,
|
21606
|
-
React.createElement(PrivacyPolicy, { linkText: strings.privacyPolicy })));
|
21607
|
-
case 'TRANSCRIPTION_STARTED':
|
21608
|
-
return (React.createElement(React.Fragment, null,
|
21609
|
-
React.createElement("b", null, strings.complianceBannerTranscriptionStarted),
|
21610
|
-
` ${strings.complianceBannerTranscriptionConsent}`,
|
21611
|
-
React.createElement(PrivacyPolicy, { linkText: strings.privacyPolicy })));
|
21612
|
-
case 'RECORDING_STOPPED':
|
21613
|
-
return (React.createElement(React.Fragment, null,
|
21614
|
-
React.createElement("b", null, strings.complianceBannerRecordingSaving),
|
21615
|
-
` ${strings.complianceBannerRecordingStopped}`,
|
21616
|
-
React.createElement(LearnMore, { linkText: strings.learnMore })));
|
21617
|
-
case 'RECORDING_STARTED':
|
21618
|
-
return (React.createElement(React.Fragment, null,
|
21619
|
-
React.createElement("b", null, strings.complianceBannerRecordingStarted),
|
21620
|
-
` ${strings.complianceBannerTranscriptionConsent}`,
|
21621
|
-
React.createElement(PrivacyPolicy, { linkText: strings.privacyPolicy })));
|
21622
|
-
case 'TRANSCRIPTION_STOPPED':
|
21623
|
-
return (React.createElement(React.Fragment, null,
|
21624
|
-
React.createElement("b", null, strings.complianceBannerTranscriptionSaving),
|
21625
|
-
` ${strings.complianceBannerTranscriptionStopped}`,
|
21626
|
-
React.createElement(LearnMore, { linkText: strings.learnMore })));
|
21627
|
-
}
|
21628
|
-
return React.createElement(React.Fragment, null);
|
21629
|
-
}
|
21630
|
-
function PrivacyPolicy(props) {
|
21631
|
-
return (React.createElement(react.Link, { href: "https://privacy.microsoft.com/privacystatement#mainnoticetoendusersmodule", target: "_blank", underline: true }, props.linkText));
|
21632
|
-
}
|
21633
|
-
function LearnMore(props) {
|
21634
|
-
return (React.createElement(react.Link, { href: "https://support.microsoft.com/office/record-a-meeting-in-teams-34dfbe7f-b07d-4a27-b4c6-de62f1348c24", target: "_blank", underline: true }, props.linkText));
|
21635
|
-
}
|
21636
|
-
|
21637
|
-
// Copyright (c) Microsoft Corporation.
|
21638
|
-
// Licensed under the MIT License.
|
21639
|
-
const BANNER_OVERWRITE_DELAY_MS = 3000;
|
21640
|
-
/**
|
21641
|
-
* Shows a {@link BannerMessage} in a {@link MessageBar} tracking `variant` internally.
|
21642
|
-
*
|
21643
|
-
* This component delays and combines frequent updates to `variant` such that:
|
21644
|
-
* - Updates that happen within {@link BANNER_OVERWRITE_DELAY_MS} are delayed.
|
21645
|
-
* - Once {@link BANNER_OVERWRITE_DELAY_MS} has passed since the last update, the _latest_ pending update is shown.
|
21646
|
-
*
|
21647
|
-
* This ensures that there is enough time for the user to see a banner message before it is overwritten.
|
21648
|
-
* In case of multiple delayed messages, the user always sees the final message as it reflects the final state
|
21649
|
-
* of recording and transcription.
|
21650
|
-
*
|
21651
|
-
* @private
|
21652
|
-
*/
|
21653
|
-
function DelayedUpdateBanner(props) {
|
21654
|
-
const { variant, lastUpdated: variantLastUpdated } = props.variant;
|
21655
|
-
// Tracks the variant that is currently visible in the UI.
|
21656
|
-
const [visible, setVisible] = React.useState({
|
21657
|
-
variant,
|
21658
|
-
lastUpdated: Date.now()
|
21659
|
-
});
|
21660
|
-
const pendingUpdateHandle = React.useRef(null);
|
21661
|
-
if (variant !== visible.variant && variantLastUpdated > visible.lastUpdated) {
|
21662
|
-
// Always clear pending updates.
|
21663
|
-
// We'll either update now, or schedule an update for later.
|
21664
|
-
if (pendingUpdateHandle.current) {
|
21665
|
-
clearTimeout(pendingUpdateHandle.current);
|
21666
|
-
}
|
21667
|
-
const now = Date.now();
|
21668
|
-
const timeToNextUpdate = BANNER_OVERWRITE_DELAY_MS - (now - visible.lastUpdated);
|
21669
|
-
if (variant === 'NO_STATE' || timeToNextUpdate <= 0) {
|
21670
|
-
setVisible({
|
21671
|
-
variant,
|
21672
|
-
lastUpdated: now
|
21673
|
-
});
|
21674
|
-
}
|
21675
|
-
else {
|
21676
|
-
pendingUpdateHandle.current = setTimeout(() => {
|
21677
|
-
// Set the actual update time, not the computed time when the update should happen.
|
21678
|
-
// The actual update might be later than we planned.
|
21679
|
-
setVisible({
|
21680
|
-
variant,
|
21681
|
-
lastUpdated: Date.now()
|
21682
|
-
});
|
21683
|
-
}, timeToNextUpdate);
|
21684
|
-
}
|
21685
|
-
}
|
21686
|
-
if (visible.variant === 'NO_STATE') {
|
21687
|
-
return React.createElement(React.Fragment, null);
|
21688
|
-
}
|
21689
|
-
return (React.createElement(react.MessageBar, { messageBarType: react.MessageBarType.warning, onDismiss: () => {
|
21690
|
-
// when closing the banner, change variant to nostate and change stopped state to off state.
|
21691
|
-
// Reason: on banner close, going back to the default state.
|
21692
|
-
setVisible({
|
21693
|
-
variant: 'NO_STATE',
|
21694
|
-
lastUpdated: Date.now()
|
21695
|
-
});
|
21696
|
-
props.onDismiss();
|
21697
|
-
}, dismissButtonAriaLabel: props.strings.close },
|
21698
|
-
React.createElement(BannerMessage, { variant: visible.variant, strings: props.strings })));
|
21699
|
-
}
|
21700
|
-
|
21701
|
-
// Copyright (c) Microsoft Corporation.
|
21702
|
-
// Licensed under the MIT License.
|
21703
|
-
/**
|
21704
|
-
* A component that displays banners to notify the user when call recording and
|
21705
|
-
* transcription is enabled or disabled in a call.
|
21706
|
-
*
|
21707
|
-
* This component implements a state machine that tracks the changes to call
|
21708
|
-
* recording and transcription state and shows the corresponding message.
|
21709
|
-
*
|
21710
|
-
* @internal
|
21711
|
-
*/
|
21712
|
-
const _ComplianceBanner = (props) => {
|
21713
|
-
const cachedProps = React.useRef({
|
21714
|
-
latestBooleanState: {
|
21715
|
-
callTranscribeState: false,
|
21716
|
-
callRecordState: false
|
21717
|
-
},
|
21718
|
-
latestStringState: {
|
21719
|
-
callTranscribeState: 'off',
|
21720
|
-
callRecordState: 'off'
|
21721
|
-
},
|
21722
|
-
lastUpdated: Date.now()
|
21723
|
-
});
|
21724
|
-
// Only update cached props and variant if there is _some_ change in the latest props.
|
21725
|
-
// This ensures that state machine is only updated if there is an actual change in the props.
|
21726
|
-
const shouldUpdateCached = props.callRecordState !== cachedProps.current.latestBooleanState.callRecordState ||
|
21727
|
-
props.callTranscribeState !== cachedProps.current.latestBooleanState.callTranscribeState;
|
21728
|
-
// The following three operations must be performed in this exact order:
|
21729
|
-
// [1]: Update cached state to transition the state machine.
|
21730
|
-
if (shouldUpdateCached) {
|
21731
|
-
cachedProps.current = {
|
21732
|
-
latestBooleanState: props,
|
21733
|
-
latestStringState: {
|
21734
|
-
callRecordState: determineStates(cachedProps.current.latestStringState.callRecordState, props.callRecordState),
|
21735
|
-
callTranscribeState: determineStates(cachedProps.current.latestStringState.callTranscribeState, props.callTranscribeState)
|
21736
|
-
},
|
21737
|
-
lastUpdated: Date.now()
|
21738
|
-
};
|
21739
|
-
}
|
21740
|
-
// [2]: Compute the variant, using the transitioned state machine.
|
21741
|
-
const variant = computeVariant(cachedProps.current.latestStringState.callRecordState, cachedProps.current.latestStringState.callTranscribeState);
|
21742
|
-
// [3]: Transition the state machine again to deal with some end-states.
|
21743
|
-
if (shouldUpdateCached &&
|
21744
|
-
cachedProps.current.latestStringState.callRecordState === 'stopped' &&
|
21745
|
-
cachedProps.current.latestStringState.callTranscribeState === 'stopped') {
|
21746
|
-
// When both states are stopped, after displaying message "RECORDING_AND_TRANSCRIPTION_STOPPED", change both states to off (going back to the default state).
|
21747
|
-
cachedProps.current.latestStringState.callRecordState = 'off';
|
21748
|
-
cachedProps.current.latestStringState.callTranscribeState = 'off';
|
21749
|
-
}
|
21750
|
-
return (React.createElement(DelayedUpdateBanner, { variant: {
|
21751
|
-
variant,
|
21752
|
-
lastUpdated: cachedProps.current.lastUpdated
|
21753
|
-
}, strings: props.strings, onDismiss: () => {
|
21754
|
-
if (cachedProps.current.latestStringState.callRecordState === 'stopped') {
|
21755
|
-
cachedProps.current.latestStringState.callRecordState = 'off';
|
21756
|
-
}
|
21757
|
-
if (cachedProps.current.latestStringState.callTranscribeState === 'stopped') {
|
21758
|
-
cachedProps.current.latestStringState.callTranscribeState = 'off';
|
21759
|
-
}
|
21760
|
-
} }));
|
21761
|
-
};
|
21762
|
-
function determineStates(previous, current) {
|
21763
|
-
// if current state is on, then return on
|
21764
|
-
if (current) {
|
21765
|
-
return 'on';
|
21766
|
-
}
|
21767
|
-
// if current state is off
|
21768
|
-
else {
|
21769
|
-
// if previous state is on and current state is off, return stopped (on -> off)
|
21770
|
-
if (previous === 'on') {
|
21771
|
-
return 'stopped';
|
21772
|
-
}
|
21773
|
-
// otherwise remain previous state unchanged
|
21774
|
-
else {
|
21775
|
-
return previous;
|
21776
|
-
}
|
21777
|
-
}
|
21778
|
-
}
|
21779
|
-
|
21780
21741
|
// Copyright (c) Microsoft Corporation.
|
21781
21742
|
// Licensed under the MIT License.
|
21782
21743
|
/**
|
@@ -22008,7 +21969,7 @@ const dtmfFrequencies = {
|
|
22008
21969
|
|
22009
21970
|
// Copyright (c) Microsoft Corporation.
|
22010
21971
|
// Licensed under the MIT License.
|
22011
|
-
var __awaiter$
|
21972
|
+
var __awaiter$y = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
22012
21973
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
22013
21974
|
return new (P || (P = Promise))(function (resolve, reject) {
|
22014
21975
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -22052,10 +22013,10 @@ const DialpadButton = (props) => {
|
|
22052
22013
|
const [buttonPressed, setButtonPressed] = React.useState(false);
|
22053
22014
|
const dtmfToneSound = React.useRef(new Tone(dtmfToneAudioContext, dtmfFrequencies[digit].f1, dtmfFrequencies[digit].f2));
|
22054
22015
|
const useLongPressProps = React.useMemo(() => ({
|
22055
|
-
onClick: () => __awaiter$
|
22016
|
+
onClick: () => __awaiter$y(void 0, void 0, void 0, function* () {
|
22056
22017
|
onClick(digit, index);
|
22057
22018
|
}),
|
22058
|
-
onLongPress: () => __awaiter$
|
22019
|
+
onLongPress: () => __awaiter$y(void 0, void 0, void 0, function* () {
|
22059
22020
|
onLongPress(digit, index);
|
22060
22021
|
}),
|
22061
22022
|
touchEventsOnly: longPressTrigger === 'touch'
|
@@ -23206,7 +23167,7 @@ const _spokenLanguageToCaptionLanguage = {
|
|
23206
23167
|
|
23207
23168
|
// Copyright (c) Microsoft Corporation.
|
23208
23169
|
// Licensed under the MIT License.
|
23209
|
-
var __awaiter$
|
23170
|
+
var __awaiter$x = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
23210
23171
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
23211
23172
|
return new (P || (P = Promise))(function (resolve, reject) {
|
23212
23173
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -23245,7 +23206,7 @@ const _CaptionsSettingsModal = (props) => {
|
|
23245
23206
|
onDismissCaptionsSettings();
|
23246
23207
|
}
|
23247
23208
|
}, [onDismissCaptionsSettings]);
|
23248
|
-
const onConfirm = React.useCallback(() => __awaiter$
|
23209
|
+
const onConfirm = React.useCallback(() => __awaiter$x(void 0, void 0, void 0, function* () {
|
23249
23210
|
const spokenLanguageCode = selectedSpokenLanguage.key;
|
23250
23211
|
const captionLanguageCode = selectedCaptionLanguage.key;
|
23251
23212
|
if (isCaptionsFeatureActive) {
|
@@ -24655,7 +24616,7 @@ const findConditionalCompiledSelector = (component) => {
|
|
24655
24616
|
|
24656
24617
|
// Copyright (c) Microsoft Corporation.
|
24657
24618
|
// Licensed under the MIT License.
|
24658
|
-
var __awaiter$
|
24619
|
+
var __awaiter$w = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
24659
24620
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
24660
24621
|
return new (P || (P = Promise))(function (resolve, reject) {
|
24661
24622
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -24681,12 +24642,13 @@ const createDefaultChatHandlers = memoizeOne((chatClient, chatThreadClient) => {
|
|
24681
24642
|
// due to a bug in babel, we can't use arrow function here
|
24682
24643
|
// affecting conditional-compile-remove(attachment-upload)
|
24683
24644
|
onSendMessage: function (content, options) {
|
24684
|
-
return __awaiter$
|
24645
|
+
return __awaiter$w(this, void 0, void 0, function* () {
|
24685
24646
|
const sendMessageRequest = {
|
24686
24647
|
content,
|
24687
24648
|
senderDisplayName: chatClient.getState().displayName
|
24688
24649
|
};
|
24689
24650
|
/* @conditional-compile-remove(file-sharing-acs) */
|
24651
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
24690
24652
|
if (options &&
|
24691
24653
|
'attachments' in options &&
|
24692
24654
|
options.attachments &&
|
@@ -24702,12 +24664,26 @@ const createDefaultChatHandlers = memoizeOne((chatClient, chatThreadClient) => {
|
|
24702
24664
|
yield chatThreadClient.sendMessage(sendMessageRequest, options);
|
24703
24665
|
});
|
24704
24666
|
},
|
24667
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
24668
|
+
onUploadImage: function (image, imageFilename) {
|
24669
|
+
return __awaiter$w(this, void 0, void 0, function* () {
|
24670
|
+
const imageResult = yield chatThreadClient.uploadImage(image, imageFilename);
|
24671
|
+
return imageResult;
|
24672
|
+
});
|
24673
|
+
},
|
24674
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
24675
|
+
onDeleteImage: function (imageId) {
|
24676
|
+
return __awaiter$w(this, void 0, void 0, function* () {
|
24677
|
+
yield chatThreadClient.deleteImage(imageId);
|
24678
|
+
return;
|
24679
|
+
});
|
24680
|
+
},
|
24705
24681
|
// due to a bug in babel, we can't use arrow function here
|
24706
24682
|
// affecting conditional-compile-remove(attachment-upload)
|
24707
24683
|
onUpdateMessage: function (messageId, content,
|
24708
24684
|
/* @conditional-compile-remove(file-sharing-acs) */
|
24709
24685
|
options) {
|
24710
|
-
return __awaiter$
|
24686
|
+
return __awaiter$w(this, void 0, void 0, function* () {
|
24711
24687
|
const updateMessageOptions = {
|
24712
24688
|
content,
|
24713
24689
|
/* @conditional-compile-remove(file-sharing-acs) */
|
@@ -24716,23 +24692,23 @@ const createDefaultChatHandlers = memoizeOne((chatClient, chatThreadClient) => {
|
|
24716
24692
|
yield chatThreadClient.updateMessage(messageId, updateMessageOptions);
|
24717
24693
|
});
|
24718
24694
|
},
|
24719
|
-
onDeleteMessage: (messageId) => __awaiter$
|
24695
|
+
onDeleteMessage: (messageId) => __awaiter$w(void 0, void 0, void 0, function* () {
|
24720
24696
|
yield chatThreadClient.deleteMessage(messageId);
|
24721
24697
|
}),
|
24722
24698
|
// This handler is designed for chatThread to consume
|
24723
|
-
onMessageSeen: (chatMessageId) => __awaiter$
|
24699
|
+
onMessageSeen: (chatMessageId) => __awaiter$w(void 0, void 0, void 0, function* () {
|
24724
24700
|
yield chatThreadClient.sendReadReceipt({ chatMessageId });
|
24725
24701
|
}),
|
24726
|
-
onTyping: () => __awaiter$
|
24702
|
+
onTyping: () => __awaiter$w(void 0, void 0, void 0, function* () {
|
24727
24703
|
yield chatThreadClient.sendTypingNotification();
|
24728
24704
|
}),
|
24729
|
-
onRemoveParticipant: (userId) => __awaiter$
|
24705
|
+
onRemoveParticipant: (userId) => __awaiter$w(void 0, void 0, void 0, function* () {
|
24730
24706
|
yield chatThreadClient.removeParticipant(fromFlatCommunicationIdentifier(userId));
|
24731
24707
|
}),
|
24732
|
-
updateThreadTopicName: (topicName) => __awaiter$
|
24708
|
+
updateThreadTopicName: (topicName) => __awaiter$w(void 0, void 0, void 0, function* () {
|
24733
24709
|
yield chatThreadClient.updateTopic(topicName);
|
24734
24710
|
}),
|
24735
|
-
onLoadPreviousChatMessages: (messagesToLoad) => __awaiter$
|
24711
|
+
onLoadPreviousChatMessages: (messagesToLoad) => __awaiter$w(void 0, void 0, void 0, function* () {
|
24736
24712
|
var _a, _b, _c;
|
24737
24713
|
if (messageIterator === undefined) {
|
24738
24714
|
// Lazy definition so that errors in the method call are reported correctly.
|
@@ -25642,7 +25618,7 @@ const Constants = {
|
|
25642
25618
|
*/
|
25643
25619
|
const chatStatefulLogger = logger.createClientLogger('communication-react:chat-stateful');
|
25644
25620
|
|
25645
|
-
var __awaiter$
|
25621
|
+
var __awaiter$v = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
25646
25622
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
25647
25623
|
return new (P || (P = Promise))(function (resolve, reject) {
|
25648
25624
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -25684,7 +25660,7 @@ class ResourceDownloadQueue {
|
|
25684
25660
|
this._messagesNeedingResourceRetrieval.push(copy);
|
25685
25661
|
}
|
25686
25662
|
startQueue(threadId, operation, options) {
|
25687
|
-
return __awaiter$
|
25663
|
+
return __awaiter$v(this, void 0, void 0, function* () {
|
25688
25664
|
if (this.isActive) {
|
25689
25665
|
return;
|
25690
25666
|
}
|
@@ -25720,7 +25696,7 @@ class ResourceDownloadQueue {
|
|
25720
25696
|
}
|
25721
25697
|
}
|
25722
25698
|
downloadSingleUrl(message, resourceUrl, operation) {
|
25723
|
-
return __awaiter$
|
25699
|
+
return __awaiter$v(this, void 0, void 0, function* () {
|
25724
25700
|
const response = { sourceUrl: '' };
|
25725
25701
|
try {
|
25726
25702
|
const abortController = new AbortController();
|
@@ -25736,7 +25712,7 @@ class ResourceDownloadQueue {
|
|
25736
25712
|
});
|
25737
25713
|
}
|
25738
25714
|
downloadAllPreviewUrls(message, operation) {
|
25739
|
-
return __awaiter$
|
25715
|
+
return __awaiter$v(this, void 0, void 0, function* () {
|
25740
25716
|
var _a;
|
25741
25717
|
const attachments = (_a = message.content) === null || _a === void 0 ? void 0 : _a.attachments;
|
25742
25718
|
if (message.type === 'html' && attachments) {
|
@@ -25763,7 +25739,7 @@ class ResourceDownloadQueue {
|
|
25763
25739
|
});
|
25764
25740
|
}
|
25765
25741
|
downloadResource(operation, url, abortController) {
|
25766
|
-
return __awaiter$
|
25742
|
+
return __awaiter$v(this, void 0, void 0, function* () {
|
25767
25743
|
this._requestsToCancel[url] = { src: url, abortController };
|
25768
25744
|
const blobUrl = yield operation(url, { credential: this._credential, endpoint: this._endpoint }, { abortController });
|
25769
25745
|
delete this._requestsToCancel[url];
|
@@ -25774,9 +25750,9 @@ class ResourceDownloadQueue {
|
|
25774
25750
|
/**
|
25775
25751
|
* @private
|
25776
25752
|
*/
|
25777
|
-
const fetchImageSource = (src, authentication, options) => __awaiter$
|
25753
|
+
const fetchImageSource = (src, authentication, options) => __awaiter$v(void 0, void 0, void 0, function* () {
|
25778
25754
|
function fetchWithAuthentication(url, token, options) {
|
25779
|
-
return __awaiter$
|
25755
|
+
return __awaiter$v(this, void 0, void 0, function* () {
|
25780
25756
|
const headers = new Headers();
|
25781
25757
|
headers.append('Authorization', `Bearer ${token}`);
|
25782
25758
|
return yield fetchWithTimeout(url, {
|
@@ -25787,7 +25763,7 @@ const fetchImageSource = (src, authentication, options) => __awaiter$u(void 0, v
|
|
25787
25763
|
});
|
25788
25764
|
}
|
25789
25765
|
function fetchWithTimeout(resource, options) {
|
25790
|
-
return __awaiter$
|
25766
|
+
return __awaiter$v(this, void 0, void 0, function* () {
|
25791
25767
|
// default timeout is 30 seconds
|
25792
25768
|
const { timeout = 30000, abortController } = options;
|
25793
25769
|
const id = setTimeout(() => {
|
@@ -25811,7 +25787,7 @@ const fetchImageSource = (src, authentication, options) => __awaiter$u(void 0, v
|
|
25811
25787
|
|
25812
25788
|
// Copyright (c) Microsoft Corporation.
|
25813
25789
|
// Licensed under the MIT License.
|
25814
|
-
var __awaiter$
|
25790
|
+
var __awaiter$u = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
25815
25791
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
25816
25792
|
return new (P || (P = Promise))(function (resolve, reject) {
|
25817
25793
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -25887,7 +25863,7 @@ let ChatContext$1 = class ChatContext {
|
|
25887
25863
|
// Any item in queue should be removed.
|
25888
25864
|
}
|
25889
25865
|
downloadResourceToCache(threadId, messageId, resourceUrl) {
|
25890
|
-
return __awaiter$
|
25866
|
+
return __awaiter$u(this, void 0, void 0, function* () {
|
25891
25867
|
var _a;
|
25892
25868
|
let message = (_a = this.getState().threads[threadId]) === null || _a === void 0 ? void 0 : _a.chatMessages[messageId];
|
25893
25869
|
if (message && this._fullsizeImageQueue) {
|
@@ -26166,7 +26142,7 @@ let ChatContext$1 = class ChatContext {
|
|
26166
26142
|
* @throws ChatError. Exceptions thrown from `f` are tagged with the failed `target.
|
26167
26143
|
*/
|
26168
26144
|
withAsyncErrorTeedToState(f, target) {
|
26169
|
-
return (...args) => __awaiter$
|
26145
|
+
return (...args) => __awaiter$u(this, void 0, void 0, function* () {
|
26170
26146
|
try {
|
26171
26147
|
return yield f(...args);
|
26172
26148
|
}
|
@@ -26273,7 +26249,7 @@ const convertChatMessage = (message, status = 'delivered', clientMessageId) => {
|
|
26273
26249
|
|
26274
26250
|
// Copyright (c) Microsoft Corporation.
|
26275
26251
|
// Licensed under the MIT License.
|
26276
|
-
var __awaiter$
|
26252
|
+
var __awaiter$t = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
26277
26253
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
26278
26254
|
return new (P || (P = Promise))(function (resolve, reject) {
|
26279
26255
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -26363,7 +26339,7 @@ class EventSubscriber {
|
|
26363
26339
|
};
|
26364
26340
|
// This is a temporary fix that no participant message is received for onChatMessageReceived event, which should be handled by JS SDK.
|
26365
26341
|
// Without the temporary fix, there are missing 'participant joined' and 'participant left' system messages in the chat thread.
|
26366
|
-
this.fetchLastParticipantMessage = (threadId, actionType) => __awaiter$
|
26342
|
+
this.fetchLastParticipantMessage = (threadId, actionType) => __awaiter$t(this, void 0, void 0, function* () {
|
26367
26343
|
var _a, e_1, _b, _c;
|
26368
26344
|
try {
|
26369
26345
|
for (var _d = true, _e = __asyncValues$1(this.chatClient
|
@@ -26457,7 +26433,7 @@ class EventSubscriber {
|
|
26457
26433
|
|
26458
26434
|
// Copyright (c) Microsoft Corporation.
|
26459
26435
|
// Licensed under the MIT License.
|
26460
|
-
var __awaiter$
|
26436
|
+
var __awaiter$s = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
26461
26437
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
26462
26438
|
return new (P || (P = Promise))(function (resolve, reject) {
|
26463
26439
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -26479,7 +26455,7 @@ const createDecoratedIterator = (iteratorCreator, context, decorateFn) => {
|
|
26479
26455
|
const threadsIterator = iteratorCreator(...args);
|
26480
26456
|
return {
|
26481
26457
|
next() {
|
26482
|
-
return __awaiter$
|
26458
|
+
return __awaiter$s(this, void 0, void 0, function* () {
|
26483
26459
|
const result = yield threadsIterator.next();
|
26484
26460
|
if (!result.done && result.value) {
|
26485
26461
|
decorateFn(result.value, context);
|
@@ -26494,7 +26470,7 @@ const createDecoratedIterator = (iteratorCreator, context, decorateFn) => {
|
|
26494
26470
|
const pages = threadsIterator.byPage(settings);
|
26495
26471
|
return {
|
26496
26472
|
next() {
|
26497
|
-
return __awaiter$
|
26473
|
+
return __awaiter$s(this, void 0, void 0, function* () {
|
26498
26474
|
const result = yield pages.next();
|
26499
26475
|
const page = result.value;
|
26500
26476
|
if (!result.done && result.value) {
|
@@ -26581,7 +26557,7 @@ const createDecoratedListParticipants = (chatThreadClient, context) => {
|
|
26581
26557
|
|
26582
26558
|
// Copyright (c) Microsoft Corporation.
|
26583
26559
|
// Licensed under the MIT License.
|
26584
|
-
var __awaiter$
|
26560
|
+
var __awaiter$r = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
26585
26561
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
26586
26562
|
return new (P || (P = Promise))(function (resolve, reject) {
|
26587
26563
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -26600,14 +26576,14 @@ class ProxyChatThreadClient {
|
|
26600
26576
|
return createDecoratedListMessages(chatThreadClient, this._context);
|
26601
26577
|
}
|
26602
26578
|
case 'getMessage': {
|
26603
|
-
return this._context.withAsyncErrorTeedToState((...args) => __awaiter$
|
26579
|
+
return this._context.withAsyncErrorTeedToState((...args) => __awaiter$r(this, void 0, void 0, function* () {
|
26604
26580
|
const message = yield chatThreadClient.getMessage(...args);
|
26605
26581
|
this._context.setChatMessage(chatThreadClient.threadId, convertChatMessage(message));
|
26606
26582
|
return message;
|
26607
26583
|
}), 'ChatThreadClient.getMessage');
|
26608
26584
|
}
|
26609
26585
|
case 'sendMessage': {
|
26610
|
-
return this._context.withAsyncErrorTeedToState((...args) => __awaiter$
|
26586
|
+
return this._context.withAsyncErrorTeedToState((...args) => __awaiter$r(this, void 0, void 0, function* () {
|
26611
26587
|
var _a;
|
26612
26588
|
// Retry logic?
|
26613
26589
|
const [request, options] = args;
|
@@ -26648,7 +26624,7 @@ class ProxyChatThreadClient {
|
|
26648
26624
|
}), 'ChatThreadClient.sendMessage');
|
26649
26625
|
}
|
26650
26626
|
case 'addParticipants': {
|
26651
|
-
return this._context.withAsyncErrorTeedToState((...args) => __awaiter$
|
26627
|
+
return this._context.withAsyncErrorTeedToState((...args) => __awaiter$r(this, void 0, void 0, function* () {
|
26652
26628
|
const result = yield chatThreadClient.addParticipants(...args);
|
26653
26629
|
const [addRequest] = args;
|
26654
26630
|
const participantsToAdd = addRequest.participants;
|
@@ -26657,7 +26633,7 @@ class ProxyChatThreadClient {
|
|
26657
26633
|
}), 'ChatThreadClient.addParticipants');
|
26658
26634
|
}
|
26659
26635
|
case 'deleteMessage': {
|
26660
|
-
return this._context.withAsyncErrorTeedToState((...args) => __awaiter$
|
26636
|
+
return this._context.withAsyncErrorTeedToState((...args) => __awaiter$r(this, void 0, void 0, function* () {
|
26661
26637
|
// DeleteMessage is able to either delete local one(for failed message) or synced message
|
26662
26638
|
const [messageId] = args;
|
26663
26639
|
if (this._context.deleteLocalMessage(chatThreadClient.threadId, messageId)) {
|
@@ -26675,12 +26651,12 @@ class ProxyChatThreadClient {
|
|
26675
26651
|
return createDecoratedListReadReceipts(chatThreadClient, this._context);
|
26676
26652
|
}
|
26677
26653
|
case 'sendTypingNotification': {
|
26678
|
-
return this._context.withAsyncErrorTeedToState((...args) => __awaiter$
|
26654
|
+
return this._context.withAsyncErrorTeedToState((...args) => __awaiter$r(this, void 0, void 0, function* () {
|
26679
26655
|
return yield chatThreadClient.sendTypingNotification(...args);
|
26680
26656
|
}), 'ChatThreadClient.sendTypingNotification');
|
26681
26657
|
}
|
26682
26658
|
case 'removeParticipant': {
|
26683
|
-
return this._context.withAsyncErrorTeedToState((...args) => __awaiter$
|
26659
|
+
return this._context.withAsyncErrorTeedToState((...args) => __awaiter$r(this, void 0, void 0, function* () {
|
26684
26660
|
const result = yield chatThreadClient.removeParticipant(...args);
|
26685
26661
|
const [removeIdentifier] = args;
|
26686
26662
|
this._context.deleteParticipant(chatThreadClient.threadId, communicationCommon.getIdentifierKind(removeIdentifier));
|
@@ -26688,7 +26664,7 @@ class ProxyChatThreadClient {
|
|
26688
26664
|
}), 'ChatThreadClient.removeParticipant');
|
26689
26665
|
}
|
26690
26666
|
case 'updateMessage': {
|
26691
|
-
return this._context.withAsyncErrorTeedToState((...args) => __awaiter$
|
26667
|
+
return this._context.withAsyncErrorTeedToState((...args) => __awaiter$r(this, void 0, void 0, function* () {
|
26692
26668
|
const result = yield chatThreadClient.updateMessage(...args);
|
26693
26669
|
const [messageId, updateOption] = args;
|
26694
26670
|
this._context.updateChatMessageContent(chatThreadClient.threadId, messageId, updateOption === null || updateOption === void 0 ? void 0 : updateOption.content);
|
@@ -26696,7 +26672,7 @@ class ProxyChatThreadClient {
|
|
26696
26672
|
}), 'ChatThreadClient.updateMessage');
|
26697
26673
|
}
|
26698
26674
|
case 'updateTopic': {
|
26699
|
-
return this._context.withAsyncErrorTeedToState((...args) => __awaiter$
|
26675
|
+
return this._context.withAsyncErrorTeedToState((...args) => __awaiter$r(this, void 0, void 0, function* () {
|
26700
26676
|
const result = yield chatThreadClient.updateTopic(...args);
|
26701
26677
|
const [topic] = args;
|
26702
26678
|
this._context.updateThreadTopic(chatThreadClient.threadId, topic);
|
@@ -26704,7 +26680,7 @@ class ProxyChatThreadClient {
|
|
26704
26680
|
}), 'ChatThreadClient.updateTopic');
|
26705
26681
|
}
|
26706
26682
|
case 'getProperties': {
|
26707
|
-
return this._context.withAsyncErrorTeedToState((...args) => __awaiter$
|
26683
|
+
return this._context.withAsyncErrorTeedToState((...args) => __awaiter$r(this, void 0, void 0, function* () {
|
26708
26684
|
const result = yield chatThreadClient.getProperties(...args);
|
26709
26685
|
this._context.updateThread(chatThreadClient.threadId, result);
|
26710
26686
|
return result;
|
@@ -26742,7 +26718,7 @@ const createDecoratedListThreads = (chatClient, context) => {
|
|
26742
26718
|
|
26743
26719
|
// Copyright (c) Microsoft Corporation.
|
26744
26720
|
// Licensed under the MIT License.
|
26745
|
-
var __awaiter$
|
26721
|
+
var __awaiter$q = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
26746
26722
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
26747
26723
|
return new (P || (P = Promise))(function (resolve, reject) {
|
26748
26724
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -26761,7 +26737,7 @@ const proxyChatClient = {
|
|
26761
26737
|
switch (prop) {
|
26762
26738
|
case 'createChatThread': {
|
26763
26739
|
return context.withAsyncErrorTeedToState(function (...args) {
|
26764
|
-
return __awaiter$
|
26740
|
+
return __awaiter$q(this, void 0, void 0, function* () {
|
26765
26741
|
const result = yield chatClient.createChatThread(...args);
|
26766
26742
|
const thread = result.chatThread;
|
26767
26743
|
if (thread) {
|
@@ -26774,7 +26750,7 @@ const proxyChatClient = {
|
|
26774
26750
|
}
|
26775
26751
|
case 'deleteChatThread': {
|
26776
26752
|
return context.withAsyncErrorTeedToState(function (...args) {
|
26777
|
-
return __awaiter$
|
26753
|
+
return __awaiter$q(this, void 0, void 0, function* () {
|
26778
26754
|
const result = yield chatClient.deleteChatThread(...args);
|
26779
26755
|
context.deleteThread(args[0]);
|
26780
26756
|
return result;
|
@@ -26794,7 +26770,7 @@ const proxyChatClient = {
|
|
26794
26770
|
}
|
26795
26771
|
case 'startRealtimeNotifications': {
|
26796
26772
|
return context.withAsyncErrorTeedToState(function (...args) {
|
26797
|
-
return __awaiter$
|
26773
|
+
return __awaiter$q(this, void 0, void 0, function* () {
|
26798
26774
|
const ret = yield chatClient.startRealtimeNotifications(...args);
|
26799
26775
|
if (!receiver.eventSubscriber) {
|
26800
26776
|
receiver.eventSubscriber = new EventSubscriber(chatClient, context);
|
@@ -26805,7 +26781,7 @@ const proxyChatClient = {
|
|
26805
26781
|
}
|
26806
26782
|
case 'stopRealtimeNotifications': {
|
26807
26783
|
return context.withAsyncErrorTeedToState(function (...args) {
|
26808
|
-
return __awaiter$
|
26784
|
+
return __awaiter$q(this, void 0, void 0, function* () {
|
26809
26785
|
const ret = yield chatClient.stopRealtimeNotifications(...args);
|
26810
26786
|
if (receiver.eventSubscriber) {
|
26811
26787
|
receiver.eventSubscriber.unsubscribe();
|
@@ -26908,7 +26884,7 @@ const CHAT_CONTAINER_MIN_WIDTH_REM = 17.5;
|
|
26908
26884
|
|
26909
26885
|
// Copyright (c) Microsoft Corporation.
|
26910
26886
|
// Licensed under the MIT License.
|
26911
|
-
var __awaiter$
|
26887
|
+
var __awaiter$p = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
26912
26888
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
26913
26889
|
return new (P || (P = Promise))(function (resolve, reject) {
|
26914
26890
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -27004,6 +26980,10 @@ class AzureCommunicationChatAdapter {
|
|
27004
26980
|
this.dispose = this.dispose.bind(this);
|
27005
26981
|
this.fetchInitialData = this.fetchInitialData.bind(this);
|
27006
26982
|
this.sendMessage = this.sendMessage.bind(this);
|
26983
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
26984
|
+
this.uploadImage = this.uploadImage.bind(this);
|
26985
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
26986
|
+
this.deleteImage = this.deleteImage.bind(this);
|
27007
26987
|
this.sendReadReceipt = this.sendReadReceipt.bind(this);
|
27008
26988
|
this.sendTypingIndicator = this.sendTypingIndicator.bind(this);
|
27009
26989
|
this.updateMessage = this.updateMessage.bind(this);
|
@@ -27021,9 +27001,9 @@ class AzureCommunicationChatAdapter {
|
|
27021
27001
|
this.chatClient.dispose();
|
27022
27002
|
}
|
27023
27003
|
fetchInitialData() {
|
27024
|
-
return __awaiter$
|
27004
|
+
return __awaiter$p(this, void 0, void 0, function* () {
|
27025
27005
|
// If get properties fails we dont want to try to get the participants after.
|
27026
|
-
yield this.asyncTeeErrorToEventEmitter(() => __awaiter$
|
27006
|
+
yield this.asyncTeeErrorToEventEmitter(() => __awaiter$p(this, void 0, void 0, function* () {
|
27027
27007
|
var _a, e_1, _b, _c;
|
27028
27008
|
yield this.chatThreadClient.getProperties();
|
27029
27009
|
try {
|
@@ -27059,50 +27039,66 @@ class AzureCommunicationChatAdapter {
|
|
27059
27039
|
this.context.offStateChange(handler);
|
27060
27040
|
}
|
27061
27041
|
sendMessage(content, options) {
|
27062
|
-
return __awaiter$
|
27063
|
-
yield this.asyncTeeErrorToEventEmitter(() => __awaiter$
|
27042
|
+
return __awaiter$p(this, void 0, void 0, function* () {
|
27043
|
+
yield this.asyncTeeErrorToEventEmitter(() => __awaiter$p(this, void 0, void 0, function* () {
|
27064
27044
|
return yield this.handlers.onSendMessage(content, options);
|
27065
27045
|
}));
|
27066
27046
|
});
|
27067
27047
|
}
|
27048
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
27049
|
+
uploadImage(image, imageFilename) {
|
27050
|
+
return __awaiter$p(this, void 0, void 0, function* () {
|
27051
|
+
return yield this.asyncTeeErrorToEventEmitter(() => __awaiter$p(this, void 0, void 0, function* () {
|
27052
|
+
return yield this.handlers.onUploadImage(image, imageFilename);
|
27053
|
+
}));
|
27054
|
+
});
|
27055
|
+
}
|
27056
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
27057
|
+
deleteImage(imageId) {
|
27058
|
+
return __awaiter$p(this, void 0, void 0, function* () {
|
27059
|
+
return yield this.asyncTeeErrorToEventEmitter(() => __awaiter$p(this, void 0, void 0, function* () {
|
27060
|
+
return yield this.handlers.onDeleteImage(imageId);
|
27061
|
+
}));
|
27062
|
+
});
|
27063
|
+
}
|
27068
27064
|
sendReadReceipt(chatMessageId) {
|
27069
|
-
return __awaiter$
|
27070
|
-
yield this.asyncTeeErrorToEventEmitter(() => __awaiter$
|
27065
|
+
return __awaiter$p(this, void 0, void 0, function* () {
|
27066
|
+
yield this.asyncTeeErrorToEventEmitter(() => __awaiter$p(this, void 0, void 0, function* () {
|
27071
27067
|
yield this.handlers.onMessageSeen(chatMessageId);
|
27072
27068
|
}));
|
27073
27069
|
});
|
27074
27070
|
}
|
27075
27071
|
sendTypingIndicator() {
|
27076
|
-
return __awaiter$
|
27077
|
-
yield this.asyncTeeErrorToEventEmitter(() => __awaiter$
|
27072
|
+
return __awaiter$p(this, void 0, void 0, function* () {
|
27073
|
+
yield this.asyncTeeErrorToEventEmitter(() => __awaiter$p(this, void 0, void 0, function* () {
|
27078
27074
|
yield this.handlers.onTyping();
|
27079
27075
|
}));
|
27080
27076
|
});
|
27081
27077
|
}
|
27082
27078
|
removeParticipant(userId) {
|
27083
|
-
return __awaiter$
|
27084
|
-
yield this.asyncTeeErrorToEventEmitter(() => __awaiter$
|
27079
|
+
return __awaiter$p(this, void 0, void 0, function* () {
|
27080
|
+
yield this.asyncTeeErrorToEventEmitter(() => __awaiter$p(this, void 0, void 0, function* () {
|
27085
27081
|
yield this.handlers.onRemoveParticipant(userId);
|
27086
27082
|
}));
|
27087
27083
|
});
|
27088
27084
|
}
|
27089
27085
|
setTopic(topicName) {
|
27090
|
-
return __awaiter$
|
27091
|
-
yield this.asyncTeeErrorToEventEmitter(() => __awaiter$
|
27086
|
+
return __awaiter$p(this, void 0, void 0, function* () {
|
27087
|
+
yield this.asyncTeeErrorToEventEmitter(() => __awaiter$p(this, void 0, void 0, function* () {
|
27092
27088
|
yield this.handlers.updateThreadTopicName(topicName);
|
27093
27089
|
}));
|
27094
27090
|
});
|
27095
27091
|
}
|
27096
27092
|
loadPreviousChatMessages(messagesToLoad) {
|
27097
|
-
return __awaiter$
|
27098
|
-
return yield this.asyncTeeErrorToEventEmitter(() => __awaiter$
|
27093
|
+
return __awaiter$p(this, void 0, void 0, function* () {
|
27094
|
+
return yield this.asyncTeeErrorToEventEmitter(() => __awaiter$p(this, void 0, void 0, function* () {
|
27099
27095
|
return yield this.handlers.onLoadPreviousChatMessages(messagesToLoad);
|
27100
27096
|
}));
|
27101
27097
|
});
|
27102
27098
|
}
|
27103
27099
|
updateMessage(messageId, content, options) {
|
27104
|
-
return __awaiter$
|
27105
|
-
return yield this.asyncTeeErrorToEventEmitter(() => __awaiter$
|
27100
|
+
return __awaiter$p(this, void 0, void 0, function* () {
|
27101
|
+
return yield this.asyncTeeErrorToEventEmitter(() => __awaiter$p(this, void 0, void 0, function* () {
|
27106
27102
|
var _a;
|
27107
27103
|
/* @conditional-compile-remove(file-sharing-acs) */
|
27108
27104
|
const messageOptions = {};
|
@@ -27133,14 +27129,14 @@ class AzureCommunicationChatAdapter {
|
|
27133
27129
|
});
|
27134
27130
|
}
|
27135
27131
|
deleteMessage(messageId) {
|
27136
|
-
return __awaiter$
|
27137
|
-
return yield this.asyncTeeErrorToEventEmitter(() => __awaiter$
|
27132
|
+
return __awaiter$p(this, void 0, void 0, function* () {
|
27133
|
+
return yield this.asyncTeeErrorToEventEmitter(() => __awaiter$p(this, void 0, void 0, function* () {
|
27138
27134
|
return yield this.handlers.onDeleteMessage(messageId);
|
27139
27135
|
}));
|
27140
27136
|
});
|
27141
27137
|
}
|
27142
27138
|
downloadResourceToCache(resourceDetails) {
|
27143
|
-
return __awaiter$
|
27139
|
+
return __awaiter$p(this, void 0, void 0, function* () {
|
27144
27140
|
this.chatClient.downloadResourceToCache(resourceDetails.threadId, resourceDetails.messageId, resourceDetails.resourceUrl);
|
27145
27141
|
});
|
27146
27142
|
}
|
@@ -27219,7 +27215,7 @@ class AzureCommunicationChatAdapter {
|
|
27219
27215
|
this.emitter.off(event, listener);
|
27220
27216
|
}
|
27221
27217
|
asyncTeeErrorToEventEmitter(f) {
|
27222
|
-
return __awaiter$
|
27218
|
+
return __awaiter$p(this, void 0, void 0, function* () {
|
27223
27219
|
try {
|
27224
27220
|
return yield f();
|
27225
27221
|
}
|
@@ -27269,7 +27265,7 @@ const convertEventType = (type) => {
|
|
27269
27265
|
*
|
27270
27266
|
* @public
|
27271
27267
|
*/
|
27272
|
-
const createAzureCommunicationChatAdapter = (_a) => __awaiter$
|
27268
|
+
const createAzureCommunicationChatAdapter = (_a) => __awaiter$p(void 0, [_a], void 0, function* ({ endpoint: endpointUrl, userId, displayName, credential, threadId }) {
|
27273
27269
|
return _createAzureCommunicationChatAdapterInner(endpointUrl, userId, displayName, credential, threadId);
|
27274
27270
|
});
|
27275
27271
|
/**
|
@@ -27277,7 +27273,7 @@ const createAzureCommunicationChatAdapter = (_a) => __awaiter$o(void 0, [_a], vo
|
|
27277
27273
|
*
|
27278
27274
|
* @internal
|
27279
27275
|
*/
|
27280
|
-
const _createAzureCommunicationChatAdapterInner = (endpoint_1, userId_1, displayName_1, credential_1, threadId_1, ...args_1) => __awaiter$
|
27276
|
+
const _createAzureCommunicationChatAdapterInner = (endpoint_1, userId_1, displayName_1, credential_1, threadId_1, ...args_1) => __awaiter$p(void 0, [endpoint_1, userId_1, displayName_1, credential_1, threadId_1, ...args_1], void 0, function* (endpoint, userId, displayName, credential, threadId, telemetryImplementationHint = 'Chat') {
|
27281
27277
|
if (!_isValidIdentifier(userId)) {
|
27282
27278
|
throw new Error('Provided userId is invalid. Please provide valid identifier object.');
|
27283
27279
|
}
|
@@ -27297,7 +27293,7 @@ const _createAzureCommunicationChatAdapterInner = (endpoint_1, userId_1, display
|
|
27297
27293
|
* ThreadId is a promise to allow for lazy initialization of the adapter.
|
27298
27294
|
* @internal
|
27299
27295
|
*/
|
27300
|
-
const _createLazyAzureCommunicationChatAdapterInner = (endpoint_2, userId_2, displayName_2, credential_2, threadId_2, ...args_2) => __awaiter$
|
27296
|
+
const _createLazyAzureCommunicationChatAdapterInner = (endpoint_2, userId_2, displayName_2, credential_2, threadId_2, ...args_2) => __awaiter$p(void 0, [endpoint_2, userId_2, displayName_2, credential_2, threadId_2, ...args_2], void 0, function* (endpoint, userId, displayName, credential, threadId, telemetryImplementationHint = 'Chat') {
|
27301
27297
|
if (!_isValidIdentifier(userId)) {
|
27302
27298
|
throw new Error('Provided userId is invalid. Please provide valid identifier object.');
|
27303
27299
|
}
|
@@ -27307,7 +27303,7 @@ const _createLazyAzureCommunicationChatAdapterInner = (endpoint_2, userId_2, dis
|
|
27307
27303
|
endpoint,
|
27308
27304
|
credential
|
27309
27305
|
}, undefined, telemetryImplementationHint);
|
27310
|
-
return threadId.then((threadId) => __awaiter$
|
27306
|
+
return threadId.then((threadId) => __awaiter$p(void 0, void 0, void 0, function* () {
|
27311
27307
|
if (UNSUPPORTED_CHAT_THREAD_TYPE.some((t) => threadId.includes(t))) {
|
27312
27308
|
console.error(`Invalid Chat ThreadId: ${threadId}. Please note with Teams Channel Meetings, only Calling is supported and Chat is not currently supported. Read more: ${TEAMS_LIMITATION_LEARN_MORE}.`);
|
27313
27309
|
}
|
@@ -27368,7 +27364,7 @@ beforeDispose) => {
|
|
27368
27364
|
if (!credential || !displayName || !endpoint || !threadId || !userId) {
|
27369
27365
|
return;
|
27370
27366
|
}
|
27371
|
-
(() => __awaiter$
|
27367
|
+
(() => __awaiter$p(void 0, void 0, void 0, function* () {
|
27372
27368
|
if (adapterRef.current) {
|
27373
27369
|
// Dispose the old adapter when a new one is created.
|
27374
27370
|
//
|
@@ -27400,7 +27396,7 @@ beforeDispose) => {
|
|
27400
27396
|
// Dispose any existing adapter when the component unmounts.
|
27401
27397
|
React.useEffect(() => {
|
27402
27398
|
return () => {
|
27403
|
-
(() => __awaiter$
|
27399
|
+
(() => __awaiter$p(void 0, void 0, void 0, function* () {
|
27404
27400
|
if (adapterRef.current) {
|
27405
27401
|
if (beforeDisposeRef.current) {
|
27406
27402
|
yield beforeDisposeRef.current(adapterRef.current);
|
@@ -27422,7 +27418,7 @@ beforeDispose) => {
|
|
27422
27418
|
* @public
|
27423
27419
|
*/
|
27424
27420
|
function createAzureCommunicationChatAdapterFromClient(chatClient, chatThreadClient) {
|
27425
|
-
return __awaiter$
|
27421
|
+
return __awaiter$p(this, void 0, void 0, function* () {
|
27426
27422
|
return new AzureCommunicationChatAdapter(chatClient, chatThreadClient);
|
27427
27423
|
});
|
27428
27424
|
}
|
@@ -27803,7 +27799,7 @@ const sendboxContainerStyles = {
|
|
27803
27799
|
|
27804
27800
|
// Copyright (c) Microsoft Corporation.
|
27805
27801
|
// Licensed under the MIT License.
|
27806
|
-
var __awaiter$
|
27802
|
+
var __awaiter$o = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
27807
27803
|
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
27808
27804
|
return new (P || (P = Promise))(function (resolve, reject) {
|
27809
27805
|
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
@@ -27824,7 +27820,7 @@ const AvatarPersona = (props) => {
|
|
27824
27820
|
const { userId, dataProvider, text, imageUrl, imageInitials, initialsColor, initialsTextColor, showOverflowTooltip } = props;
|
27825
27821
|
const [data, setData] = React.useState();
|
27826
27822
|
React.useEffect(() => {
|
27827
|
-
(() => __awaiter$
|
27823
|
+
(() => __awaiter$o(void 0, void 0, void 0, function* () {
|
27828
27824
|
if (dataProvider && userId) {
|
27829
27825
|
const newData = yield dataProvider(userId);
|
27830
27826
|
if (avatarDeepDifferenceCheck(data, newData)) {
|
@@ -28093,6 +28089,10 @@ const createCompositeHandlers$1 = memoizeOne((adapter) => ({
|
|
28093
28089
|
}
|
28094
28090
|
return adapter.sendMessage(content, options);
|
28095
28091
|
},
|
28092
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
28093
|
+
onUploadImage: adapter.uploadImage,
|
28094
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
28095
|
+
onDeleteImage: adapter.deleteImage,
|
28096
28096
|
onLoadPreviousChatMessages: adapter.loadPreviousChatMessages,
|
28097
28097
|
onMessageSeen: adapter.sendReadReceipt,
|
28098
28098
|
onTyping: adapter.sendTypingIndicator,
|
@@ -28372,7 +28372,7 @@ const AttachmentDownloadErrorBar = (props) => {
|
|
28372
28372
|
/**
|
28373
28373
|
* Wrapper for RichTextSendBox component to allow us to use usePropsFor with richTextSendBox with lazy loading
|
28374
28374
|
*/
|
28375
|
-
const RichTextSendBoxWrapper = React.lazy(() => Promise.resolve().then(function () { return require('./RichTextSendBoxWrapper-
|
28375
|
+
const RichTextSendBoxWrapper = React.lazy(() => Promise.resolve().then(function () { return require('./RichTextSendBoxWrapper-ByJFtf0Z.js'); }).then((module) => ({ default: module.RichTextSendBoxWrapper })));
|
28376
28376
|
/**
|
28377
28377
|
* @private
|
28378
28378
|
* Use this function to load RoosterJS dependencies early in the lifecycle.
|
@@ -28380,14 +28380,13 @@ const RichTextSendBoxWrapper = React.lazy(() => Promise.resolve().then(function
|
|
28380
28380
|
*
|
28381
28381
|
/* @conditional-compile-remove(rich-text-editor-composite-support)
|
28382
28382
|
*/
|
28383
|
-
const loadRichTextSendBox = () => Promise.resolve().then(function () { return require('./RichTextSendBoxWrapper-
|
28383
|
+
const loadRichTextSendBox = () => Promise.resolve().then(function () { return require('./RichTextSendBoxWrapper-ByJFtf0Z.js'); }).then((module) => ({ default: module.RichTextSendBoxWrapper }));
|
28384
28384
|
/**
|
28385
28385
|
* @private
|
28386
28386
|
*/
|
28387
28387
|
const SendBoxPicker = (props) => {
|
28388
|
-
const {
|
28389
28388
|
/* @conditional-compile-remove(rich-text-editor-composite-support) */
|
28390
|
-
richTextEditorOptions } = props;
|
28389
|
+
const { richTextEditorOptions } = props;
|
28391
28390
|
const sendBoxProps = usePropsFor$2(SendBox);
|
28392
28391
|
/* @conditional-compile-remove(rich-text-editor-composite-support) */
|
28393
28392
|
const isRichTextEditorEnabled = React.useMemo(() => {
|
@@ -28403,6 +28402,127 @@ const SendBoxPicker = (props) => {
|
|
28403
28402
|
return sendBox;
|
28404
28403
|
};
|
28405
28404
|
|
28405
|
+
// Copyright (c) Microsoft Corporation.
|
28406
|
+
// Licensed under the MIT License.
|
28407
|
+
var __awaiter$n = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
28408
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
28409
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
28410
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
28411
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
28412
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
28413
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
28414
|
+
});
|
28415
|
+
};
|
28416
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
28417
|
+
const fetchBlobData = (resource, options) => __awaiter$n(void 0, void 0, void 0, function* () {
|
28418
|
+
// default timeout is 30 seconds
|
28419
|
+
const { timeout = 30000, abortController } = options;
|
28420
|
+
const id = setTimeout(() => {
|
28421
|
+
abortController.abort();
|
28422
|
+
}, timeout);
|
28423
|
+
const response = yield fetch(resource, Object.assign(Object.assign({}, options), { signal: abortController.signal }));
|
28424
|
+
clearTimeout(id);
|
28425
|
+
return response;
|
28426
|
+
});
|
28427
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
28428
|
+
const getInlineImageData = (image) => __awaiter$n(void 0, void 0, void 0, function* () {
|
28429
|
+
const blobImage = undefined;
|
28430
|
+
if (image.startsWith('blob') || image.startsWith('http')) {
|
28431
|
+
const res = yield fetchBlobData(image, { abortController: new AbortController() });
|
28432
|
+
const blobImage = yield res.blob();
|
28433
|
+
return blobImage;
|
28434
|
+
}
|
28435
|
+
return blobImage;
|
28436
|
+
});
|
28437
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
28438
|
+
/**
|
28439
|
+
* @private
|
28440
|
+
*/
|
28441
|
+
const useImageUpload = () => {
|
28442
|
+
const MAX_INLINE_IMAGE_UPLOAD_SIZE_MB = 20;
|
28443
|
+
const adapter = useAdapter$1();
|
28444
|
+
const [inlineImageUploads, handleInlineImageUploadAction] = React.useReducer(AttachmentUploadReducer, []);
|
28445
|
+
const inlineImageUploadHandler = React.useCallback((uploadTasks) => __awaiter$n(void 0, void 0, void 0, function* () {
|
28446
|
+
var _a, _b, _c, _d, _e;
|
28447
|
+
for (const task of uploadTasks) {
|
28448
|
+
const uploadTask = task;
|
28449
|
+
const image = uploadTask.image;
|
28450
|
+
if (!image) {
|
28451
|
+
uploadTask.notifyUploadFailed(`Image data for "${(_a = task.metadata) === null || _a === void 0 ? void 0 : _a.name}" is not provided.`);
|
28452
|
+
continue;
|
28453
|
+
}
|
28454
|
+
if (image && image.size > MAX_INLINE_IMAGE_UPLOAD_SIZE_MB * 1024 * 1024) {
|
28455
|
+
uploadTask.notifyUploadFailed(`"${(_b = task.metadata) === null || _b === void 0 ? void 0 : _b.name}" is too big. Select a file under ${MAX_INLINE_IMAGE_UPLOAD_SIZE_MB}MB.`);
|
28456
|
+
continue;
|
28457
|
+
}
|
28458
|
+
const SUPPORTED_FILES = ['jpg', 'jpeg', 'png', 'gif', 'heic', 'webp'];
|
28459
|
+
const imageExtension = (_d = (_c = task.metadata) === null || _c === void 0 ? void 0 : _c.name.split('.').pop()) !== null && _d !== void 0 ? _d : '';
|
28460
|
+
if (!SUPPORTED_FILES.includes(imageExtension)) {
|
28461
|
+
uploadTask.notifyUploadFailed(`Uploading ".${imageExtension}" image is not allowed.`);
|
28462
|
+
continue;
|
28463
|
+
}
|
28464
|
+
try {
|
28465
|
+
const response = yield adapter.uploadImage(image, (_e = task.metadata) === null || _e === void 0 ? void 0 : _e.name);
|
28466
|
+
uploadTask.notifyUploadCompleted(response.id, task.metadata.url || '');
|
28467
|
+
}
|
28468
|
+
catch (error) {
|
28469
|
+
console.error(error);
|
28470
|
+
uploadTask.notifyUploadFailed('Unable to upload inline image. Please try again later.');
|
28471
|
+
}
|
28472
|
+
}
|
28473
|
+
}), [adapter]);
|
28474
|
+
const onUploadInlineImage = React.useCallback((image, fileName) => __awaiter$n(void 0, void 0, void 0, function* () {
|
28475
|
+
if (!image) {
|
28476
|
+
return;
|
28477
|
+
}
|
28478
|
+
const imageData = yield getInlineImageData(image);
|
28479
|
+
if (!imageData) {
|
28480
|
+
return;
|
28481
|
+
}
|
28482
|
+
const taskId = nanoid.nanoid();
|
28483
|
+
const uploadTask = {
|
28484
|
+
image: imageData,
|
28485
|
+
taskId,
|
28486
|
+
metadata: {
|
28487
|
+
id: taskId,
|
28488
|
+
name: fileName,
|
28489
|
+
url: image,
|
28490
|
+
progress: 0
|
28491
|
+
},
|
28492
|
+
notifyUploadProgressChanged: (value) => {
|
28493
|
+
handleInlineImageUploadAction({ type: AttachmentUploadActionType.Progress, taskId, progress: value });
|
28494
|
+
},
|
28495
|
+
notifyUploadCompleted: (id, url) => {
|
28496
|
+
handleInlineImageUploadAction({ type: AttachmentUploadActionType.Completed, taskId, id, url });
|
28497
|
+
},
|
28498
|
+
notifyUploadFailed: (message) => {
|
28499
|
+
handleInlineImageUploadAction({ type: AttachmentUploadActionType.Failed, taskId, message });
|
28500
|
+
// remove the failed upload task when error banner is auto dismissed after 10 seconds
|
28501
|
+
// so the banner won't be shown again on UI re-rendering.
|
28502
|
+
setTimeout(() => {
|
28503
|
+
handleInlineImageUploadAction({ type: AttachmentUploadActionType.Remove, id: taskId });
|
28504
|
+
}, 10 * 1000);
|
28505
|
+
}
|
28506
|
+
};
|
28507
|
+
const newUploads = [uploadTask];
|
28508
|
+
handleInlineImageUploadAction({ type: AttachmentUploadActionType.Set, newUploads });
|
28509
|
+
inlineImageUploadHandler(newUploads);
|
28510
|
+
}), [inlineImageUploadHandler]);
|
28511
|
+
const onCancelInlineImageUploadHandler = React.useCallback((imageId) => {
|
28512
|
+
const imageUpload = inlineImageUploads.find((upload) => upload.metadata.id === imageId);
|
28513
|
+
const uploadId = imageUpload === null || imageUpload === void 0 ? void 0 : imageUpload.metadata.id;
|
28514
|
+
if (!uploadId) {
|
28515
|
+
return;
|
28516
|
+
}
|
28517
|
+
handleInlineImageUploadAction({ type: AttachmentUploadActionType.Remove, id: uploadId });
|
28518
|
+
// TODO: remove local blob
|
28519
|
+
if ((imageUpload === null || imageUpload === void 0 ? void 0 : imageUpload.metadata.progress) === 1) {
|
28520
|
+
adapter.deleteImage(imageId);
|
28521
|
+
}
|
28522
|
+
}, [adapter, inlineImageUploads]);
|
28523
|
+
return [inlineImageUploads, handleInlineImageUploadAction, onUploadInlineImage, onCancelInlineImageUploadHandler];
|
28524
|
+
};
|
28525
|
+
|
28406
28526
|
// Copyright (c) Microsoft Corporation.
|
28407
28527
|
// Licensed under the MIT License.
|
28408
28528
|
var __awaiter$m = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
|
@@ -28431,6 +28551,8 @@ const ChatScreen = (props) => {
|
|
28431
28551
|
const [uploads, handleUploadAction] = React.useReducer(AttachmentUploadReducer, []);
|
28432
28552
|
const adapter = useAdapter$1();
|
28433
28553
|
const theme = useTheme();
|
28554
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
28555
|
+
const [inlineImageUploads, handleInlineImageUploadAction, onUploadInlineImage, onCancelInlineImageUploadHandler] = useImageUpload();
|
28434
28556
|
React.useEffect(() => {
|
28435
28557
|
// Initial data should be always fetched by the composite(or external caller) instead of the adapter
|
28436
28558
|
const fetchData = () => __awaiter$m(void 0, void 0, void 0, function* () {
|
@@ -28664,6 +28786,10 @@ const ChatScreen = (props) => {
|
|
28664
28786
|
const attachments = React.useMemo(() => {
|
28665
28787
|
return uploads === null || uploads === void 0 ? void 0 : uploads.map((v) => v.metadata);
|
28666
28788
|
}, [uploads]);
|
28789
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
28790
|
+
const imageUploadsInProgress = React.useMemo(() => {
|
28791
|
+
return inlineImageUploads === null || inlineImageUploads === void 0 ? void 0 : inlineImageUploads.map((v) => v.metadata);
|
28792
|
+
}, [inlineImageUploads]);
|
28667
28793
|
const onSendMessageHandler = React.useCallback(function (content,
|
28668
28794
|
/* @conditional-compile-remove(file-sharing-acs) */ /* @conditional-compile-remove(rich-text-editor-composite-support) */ options) {
|
28669
28795
|
return __awaiter$m(this, void 0, void 0, function* () {
|
@@ -28672,6 +28798,8 @@ const ChatScreen = (props) => {
|
|
28672
28798
|
const attachments = (_a = options === null || options === void 0 ? void 0 : options.attachments) !== null && _a !== void 0 ? _a : [];
|
28673
28799
|
/* @conditional-compile-remove(file-sharing-acs) */
|
28674
28800
|
handleUploadAction({ type: AttachmentUploadActionType.Clear });
|
28801
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
28802
|
+
handleInlineImageUploadAction({ type: AttachmentUploadActionType.Clear });
|
28675
28803
|
/* @conditional-compile-remove(file-sharing-acs) */
|
28676
28804
|
yield adapter.sendMessage(content, {
|
28677
28805
|
attachments: attachments,
|
@@ -28681,7 +28809,7 @@ const ChatScreen = (props) => {
|
|
28681
28809
|
/* @conditional-compile-remove(file-sharing-acs) */
|
28682
28810
|
return;
|
28683
28811
|
});
|
28684
|
-
}, [adapter]);
|
28812
|
+
}, [adapter, /* @conditional-compile-remove(rich-text-editor-image-upload) */ handleInlineImageUploadAction]);
|
28685
28813
|
/* @conditional-compile-remove(file-sharing-acs) */
|
28686
28814
|
const onCancelUploadHandler = React.useCallback((id) => {
|
28687
28815
|
var _a, _b;
|
@@ -28740,7 +28868,13 @@ const ChatScreen = (props) => {
|
|
28740
28868
|
onCancelAttachmentUpload: onCancelUploadHandler,
|
28741
28869
|
// we need to overwrite onSendMessage for SendBox because we need to clear attachment state
|
28742
28870
|
// when submit button is clicked
|
28743
|
-
onSendMessage: onSendMessageHandler
|
28871
|
+
onSendMessage: onSendMessageHandler,
|
28872
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
28873
|
+
onUploadInlineImage: onUploadInlineImage,
|
28874
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
28875
|
+
imageUploadsInProgress: imageUploadsInProgress,
|
28876
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
28877
|
+
onCancelInlineImageUpload: onCancelInlineImageUploadHandler })),
|
28744
28878
|
formFactor !== 'mobile' && (
|
28745
28879
|
/* @conditional-compile-remove(file-sharing-acs) */
|
28746
28880
|
React.createElement(AttachmentButton, null))))),
|
@@ -28891,44 +29025,46 @@ const adaptCompositeState = (compositeState) => {
|
|
28891
29025
|
// Copyright (c) Microsoft Corporation.
|
28892
29026
|
// Licensed under the MIT License.
|
28893
29027
|
/**
|
28894
|
-
* Take the set of active
|
29028
|
+
* Take the set of active notifications, and filter to only those that are newer than previously dismissed notifications or have never been dismissed.
|
28895
29029
|
*
|
28896
29030
|
* @private
|
28897
29031
|
*/
|
28898
|
-
const
|
28899
|
-
const
|
28900
|
-
const
|
28901
|
-
return (!
|
29032
|
+
const filterLatestNotifications = (activeNotifications, trackedNotifications) => {
|
29033
|
+
const filteredNotifications = activeNotifications.filter((activeNotification) => {
|
29034
|
+
const trackedNotification = trackedNotifications[activeNotification.type];
|
29035
|
+
return (!trackedNotification ||
|
29036
|
+
!trackedNotification.lastDismissedAt ||
|
29037
|
+
trackedNotification.lastDismissedAt < trackedNotification.mostRecentlyActive);
|
28902
29038
|
});
|
28903
|
-
return
|
29039
|
+
return filteredNotifications;
|
28904
29040
|
};
|
28905
29041
|
/**
|
28906
|
-
* Maintain a record of the most recently active
|
29042
|
+
* Maintain a record of the most recently active notification for each notification type.
|
28907
29043
|
*
|
28908
29044
|
* @private
|
28909
29045
|
*/
|
28910
|
-
const
|
29046
|
+
const updateTrackedNotificationsWithActiveNotifications = (existingTrackedNotifications, activeNotifications) => {
|
28911
29047
|
var _a, _b;
|
28912
|
-
const
|
28913
|
-
// Only care about active
|
28914
|
-
for (const
|
28915
|
-
const
|
28916
|
-
|
28917
|
-
mostRecentlyActive: (_b = (_a =
|
28918
|
-
lastDismissedAt:
|
29048
|
+
const trackedNotifications = {};
|
29049
|
+
// Only care about active notifications. If notifications are no longer active we do not track that they have been previously dismissed.
|
29050
|
+
for (const activeNotification of activeNotifications) {
|
29051
|
+
const existingTrackedNotification = existingTrackedNotifications[activeNotification.type];
|
29052
|
+
trackedNotifications[activeNotification.type] = {
|
29053
|
+
mostRecentlyActive: (_b = (_a = activeNotification.timestamp) !== null && _a !== void 0 ? _a : existingTrackedNotification === null || existingTrackedNotification === void 0 ? void 0 : existingTrackedNotification.mostRecentlyActive) !== null && _b !== void 0 ? _b : new Date(Date.now()),
|
29054
|
+
lastDismissedAt: existingTrackedNotification === null || existingTrackedNotification === void 0 ? void 0 : existingTrackedNotification.lastDismissedAt
|
28919
29055
|
};
|
28920
29056
|
}
|
28921
|
-
return
|
29057
|
+
return trackedNotifications;
|
28922
29058
|
};
|
28923
29059
|
/**
|
28924
|
-
* Create a record for when the
|
29060
|
+
* Create a record for when the notification was most recently dismissed for tracking dismissed notifications.
|
28925
29061
|
*
|
28926
29062
|
* @private
|
28927
29063
|
*/
|
28928
|
-
const
|
29064
|
+
const trackNotificationAsDismissed = (notificationType, trackedNotifications) => {
|
28929
29065
|
const now = new Date(Date.now());
|
28930
|
-
const
|
28931
|
-
return Object.assign(Object.assign({},
|
29066
|
+
const existingNotification = trackedNotifications[notificationType];
|
29067
|
+
return Object.assign(Object.assign({}, trackedNotifications), { [notificationType]: Object.assign(Object.assign({}, (existingNotification || {})), { lastDismissedAt: now }) });
|
28932
29068
|
};
|
28933
29069
|
|
28934
29070
|
// Copyright (c) Microsoft Corporation.
|
@@ -29424,6 +29560,110 @@ const getSelectedCameraFromAdapterState = (state) => state.devices.selectedCamer
|
|
29424
29560
|
const getLocatorOrTargetCallees = (locatorOrTargetCallees) => {
|
29425
29561
|
return !!Array.isArray(locatorOrTargetCallees);
|
29426
29562
|
};
|
29563
|
+
/* @conditional-compile-remove(notifications) */
|
29564
|
+
/**
|
29565
|
+
* Return different conditions based on the current and previous state of recording and transcribing
|
29566
|
+
*
|
29567
|
+
* @param callRecordState - The current call record state: on, off, stopped
|
29568
|
+
* @param callTranscribeState - The current call transcribe state: on, off, stopped
|
29569
|
+
*
|
29570
|
+
* @remarks - The stopped state means: previously on but currently off
|
29571
|
+
*
|
29572
|
+
* @private
|
29573
|
+
*/
|
29574
|
+
const computeVariant = (callRecordState, callTranscribeState) => {
|
29575
|
+
if (callRecordState === 'on' && callTranscribeState === 'on') {
|
29576
|
+
return 'recordingAndTranscriptionStarted';
|
29577
|
+
}
|
29578
|
+
else if (callRecordState === 'on' && callTranscribeState === 'off') {
|
29579
|
+
return 'recordingStarted';
|
29580
|
+
}
|
29581
|
+
else if (callRecordState === 'off' && callTranscribeState === 'on') {
|
29582
|
+
return 'transcriptionStarted';
|
29583
|
+
}
|
29584
|
+
else if (callRecordState === 'on' && callTranscribeState === 'stopped') {
|
29585
|
+
return 'transcriptionStoppedStillRecording';
|
29586
|
+
}
|
29587
|
+
else if (callRecordState === 'stopped' && callTranscribeState === 'on') {
|
29588
|
+
return 'recordingStoppedStillTranscribing';
|
29589
|
+
}
|
29590
|
+
else if (callRecordState === 'off' && callTranscribeState === 'stopped') {
|
29591
|
+
return 'transcriptionStopped';
|
29592
|
+
}
|
29593
|
+
else if (callRecordState === 'stopped' && callTranscribeState === 'off') {
|
29594
|
+
return 'recordingStopped';
|
29595
|
+
}
|
29596
|
+
else if (callRecordState === 'stopped' && callTranscribeState === 'stopped') {
|
29597
|
+
return 'recordingAndTranscriptionStopped';
|
29598
|
+
}
|
29599
|
+
else {
|
29600
|
+
return 'noState';
|
29601
|
+
}
|
29602
|
+
};
|
29603
|
+
/* @conditional-compile-remove(notifications) */
|
29604
|
+
/**
|
29605
|
+
* @private
|
29606
|
+
*/
|
29607
|
+
function determineStates(previous, current) {
|
29608
|
+
// if current state is on, then return on
|
29609
|
+
if (current) {
|
29610
|
+
return 'on';
|
29611
|
+
}
|
29612
|
+
// if current state is off
|
29613
|
+
else {
|
29614
|
+
// if previous state is on and current state is off, return stopped (on -> off)
|
29615
|
+
if (previous === 'on') {
|
29616
|
+
return 'stopped';
|
29617
|
+
}
|
29618
|
+
// otherwise remain previous state unchanged
|
29619
|
+
else {
|
29620
|
+
return previous;
|
29621
|
+
}
|
29622
|
+
}
|
29623
|
+
}
|
29624
|
+
/* @conditional-compile-remove(notifications) */
|
29625
|
+
/**
|
29626
|
+
* Compute compliance notification based on latest compliance state and cached props.
|
29627
|
+
* @private
|
29628
|
+
*/
|
29629
|
+
function computeComplianceNotification(complianceProps, cachedProps) {
|
29630
|
+
// Only update cached props and variant if there is _some_ change in the latest props.
|
29631
|
+
// This ensures that state machine is only updated if there is an actual change in the props.
|
29632
|
+
const shouldUpdateCached = complianceProps.callRecordState !== cachedProps.current.latestBooleanState.callRecordState ||
|
29633
|
+
complianceProps.callTranscribeState !== cachedProps.current.latestBooleanState.callTranscribeState;
|
29634
|
+
// The following three operations must be performed in this exact order:
|
29635
|
+
// [1]: Update cached state to transition the state machine.
|
29636
|
+
if (shouldUpdateCached) {
|
29637
|
+
cachedProps.current = {
|
29638
|
+
latestBooleanState: complianceProps,
|
29639
|
+
latestStringState: {
|
29640
|
+
callRecordState: determineStates(cachedProps.current.latestStringState.callRecordState, complianceProps.callRecordState),
|
29641
|
+
callTranscribeState: determineStates(cachedProps.current.latestStringState.callTranscribeState, complianceProps.callTranscribeState)
|
29642
|
+
},
|
29643
|
+
lastUpdated: Date.now()
|
29644
|
+
};
|
29645
|
+
}
|
29646
|
+
// [2]: Compute the variant, using the transitioned state machine.
|
29647
|
+
const variant = computeVariant(cachedProps.current.latestStringState.callRecordState, cachedProps.current.latestStringState.callTranscribeState);
|
29648
|
+
// [3]: Transition the state machine again to deal with some end-states.
|
29649
|
+
if (!shouldUpdateCached &&
|
29650
|
+
cachedProps.current.latestStringState.callRecordState === 'stopped' &&
|
29651
|
+
cachedProps.current.latestStringState.callTranscribeState === 'stopped') {
|
29652
|
+
// When both states are stopped, after displaying message "RECORDING_AND_TRANSCRIPTION_STOPPED", change both states to off (going back to the default state).
|
29653
|
+
cachedProps.current.latestStringState.callRecordState = 'off';
|
29654
|
+
cachedProps.current.latestStringState.callTranscribeState = 'off';
|
29655
|
+
}
|
29656
|
+
// If the variant is not 'noState', then show the notification.
|
29657
|
+
if (variant !== 'noState') {
|
29658
|
+
return {
|
29659
|
+
type: variant,
|
29660
|
+
timestamp: new Date(Date.now())
|
29661
|
+
};
|
29662
|
+
}
|
29663
|
+
else {
|
29664
|
+
return undefined;
|
29665
|
+
}
|
29666
|
+
}
|
29427
29667
|
|
29428
29668
|
// Copyright (c) Microsoft Corporation.
|
29429
29669
|
// Licensed under the MIT License.
|
@@ -34570,6 +34810,10 @@ const CallArrangement = (props) => {
|
|
34570
34810
|
/* @conditional-compile-remove(notifications) */
|
34571
34811
|
return React.createElement(React.Fragment, null);
|
34572
34812
|
};
|
34813
|
+
const complianceBannerTrampoline = () => {
|
34814
|
+
/* @conditional-compile-remove(notifications) */
|
34815
|
+
return React.createElement(React.Fragment, null);
|
34816
|
+
};
|
34573
34817
|
return (React.createElement("div", { ref: containerRef, className: react.mergeStyles(containerDivStyles), id: props.id },
|
34574
34818
|
React.createElement(react.Stack, { verticalFill: true, horizontalAlign: "stretch", className: containerClassName, "data-ui-id": props.dataUiId },
|
34575
34819
|
React.createElement(react.Stack, { reversed: true, horizontal: verticalControlBar, grow: true, styles: callArrangementContainerStyles(verticalControlBar) },
|
@@ -34600,11 +34844,10 @@ const CallArrangement = (props) => {
|
|
34600
34844
|
React.createElement(react.Stack.Item, { styles: callGalleryStyles, grow: true },
|
34601
34845
|
React.createElement(react.Stack, { verticalFill: true, styles: mediaGalleryContainerStyles$1 },
|
34602
34846
|
React.createElement(react.Stack.Item, { styles: notificationsContainerStyles },
|
34603
|
-
|
34604
|
-
React.createElement(_ComplianceBanner, Object.assign({}, props.complianceBannerProps))),
|
34847
|
+
complianceBannerTrampoline(),
|
34605
34848
|
errorNotificationTrampoline(),
|
34606
34849
|
/* @conditional-compile-remove(notifications) */ props.latestNotifications && (React.createElement(react.Stack, { styles: notificationStackStyles, horizontalAlign: "center", verticalAlign: "center" },
|
34607
|
-
React.createElement(NotificationStack, { activeNotifications: props.latestNotifications }))),
|
34850
|
+
React.createElement(NotificationStack, { activeNotifications: props.latestNotifications, onDismissNotification: props.onDismissNotification }))),
|
34608
34851
|
props.capabilitiesChangedNotificationBarProps &&
|
34609
34852
|
props.capabilitiesChangedNotificationBarProps.capabilitiesChangedNotifications.length > 0 && (React.createElement(react.Stack, { styles: bannerNotificationStyles },
|
34610
34853
|
React.createElement(CapabilitiesChangedNotificationBar, Object.assign({}, props.capabilitiesChangedNotificationBarProps, { capabilitiesChangedNotifications: filteredCapabilitesChangedNotifications !== null && filteredCapabilitesChangedNotifications !== void 0 ? filteredCapabilitesChangedNotifications : [] })))),
|
@@ -35120,7 +35363,9 @@ const CallPage = (props) => {
|
|
35120
35363
|
var _a, _b;
|
35121
35364
|
const { callInvitationURL, onFetchAvatarPersonaData, onFetchParticipantMenuItems, options, mobileView, galleryLayout = 'floatingLocalVideo', onUserSetGalleryLayoutChange, userSetOverflowGalleryPosition = 'Responsive', onSetUserSetOverflowGalleryPosition, onCloseChatPane, pinnedParticipants, setPinnedParticipants, compositeAudioContext, disableAutoShowDtmfDialer = false,
|
35122
35365
|
/* @conditional-compile-remove(notifications) */
|
35123
|
-
latestNotifications
|
35366
|
+
latestNotifications,
|
35367
|
+
/* @conditional-compile-remove(notifications) */
|
35368
|
+
onDismissNotification } = props;
|
35124
35369
|
// To use useProps to get these states, we need to create another file wrapping Call,
|
35125
35370
|
// It seems unnecessary in this case, so we get the updated states using this approach.
|
35126
35371
|
const { callStatus } = useSelector$1(callStatusSelector);
|
@@ -35160,7 +35405,9 @@ const CallPage = (props) => {
|
|
35160
35405
|
}, onFetchAvatarPersonaData: onFetchAvatarPersonaData, mobileView: mobileView, modalLayerHostId: props.modalLayerHostId, onRenderGalleryContent: () => _isInCall(callStatus) ? (isNetworkHealthy(networkReconnectTileProps.networkReconnectValue) ? (onRenderGalleryContentTrampoline()) : (React.createElement(NetworkReconnectTile, Object.assign({}, networkReconnectTileProps, {
|
35161
35406
|
/* /* @conditional-compile-remove(teams-meeting-conference) */ isMobile: mobileView })))) : (React.createElement(React.Fragment, null)), updateSidePaneRenderer: props.updateSidePaneRenderer, mobileChatTabHeader: props.mobileChatTabHeader, onCloseChatPane: onCloseChatPane, dataUiId: 'call-page', latestErrors: props.latestErrors,
|
35162
35407
|
/* @conditional-compile-remove(notifications) */
|
35163
|
-
latestNotifications: latestNotifications, onDismissError: props.onDismissError,
|
35408
|
+
latestNotifications: latestNotifications, onDismissError: props.onDismissError,
|
35409
|
+
/* @conditional-compile-remove(notifications) */
|
35410
|
+
onDismissNotification: onDismissNotification, onUserSetOverflowGalleryPositionChange: onSetUserSetOverflowGalleryPosition, onUserSetGalleryLayoutChange: onUserSetGalleryLayoutChange, userSetGalleryLayout: galleryLayout, capabilitiesChangedNotificationBarProps: props.capabilitiesChangedNotificationBarProps, onSetDialpadPage: () => setDtmfDialerPresent(!dtmfDialerPresent), dtmfDialerPresent: dtmfDialerPresent, setIsPromptOpen: setIsPromptOpen, setPromptProps: setPromptProps, hideSpotlightButtons: (_b = options === null || options === void 0 ? void 0 : options.spotlight) === null || _b === void 0 ? void 0 : _b.hideSpotlightButtons, pinnedParticipants: pinnedParticipants, setPinnedParticipants: setPinnedParticipants }),
|
35164
35411
|
React.createElement(Prompt, Object.assign({ isOpen: isPromptOpen, onDismiss: () => setIsPromptOpen(false) }, promptProps))));
|
35165
35412
|
};
|
35166
35413
|
/**
|
@@ -36573,7 +36820,9 @@ const LobbyPage = (props) => {
|
|
36573
36820
|
increaseFlyoutItemSize: props.mobileView
|
36574
36821
|
}, mobileView: props.mobileView, modalLayerHostId: props.modalLayerHostId, onRenderGalleryContent: () => (React.createElement(LobbyTile, Object.assign({}, lobbyProps, { showLocalVideoCameraCycleButton: props.mobileView, overlayProps: overlayProps(strings, inLobby, Object.values(participants)) }))), dataUiId: 'lobby-page', updateSidePaneRenderer: props.updateSidePaneRenderer, mobileChatTabHeader: props.mobileChatTabHeader, latestErrors: props.latestErrors, onDismissError: props.onDismissError,
|
36575
36822
|
/* @conditional-compile-remove(notifications) */
|
36576
|
-
latestNotifications: props.latestNotifications
|
36823
|
+
latestNotifications: props.latestNotifications,
|
36824
|
+
/* @conditional-compile-remove(notifications) */
|
36825
|
+
onDismissNotification: props.onDismissNotification }));
|
36577
36826
|
};
|
36578
36827
|
const overlayProps = (strings, inLobby, remoteParticipants) => {
|
36579
36828
|
/**
|
@@ -36723,7 +36972,11 @@ const TransferPage = (props) => {
|
|
36723
36972
|
increaseFlyoutItemSize: props.mobileView
|
36724
36973
|
}, mobileView: props.mobileView, modalLayerHostId: props.modalLayerHostId, onRenderGalleryContent: () => (React.createElement(TransferTile, { userId: transferTileParticipant ? toFlatCommunicationIdentifier(transferTileParticipant === null || transferTileParticipant === void 0 ? void 0 : transferTileParticipant.identifier) : undefined, displayName: transferParticipantDisplayName, initialsName: transferParticipantDisplayName, statusText: pageSubject === 'transferTarget'
|
36725
36974
|
? strings.transferPageTransferTargetText
|
36726
|
-
: strings.transferPageTransferorText, onFetchAvatarPersonaData: props.onFetchAvatarPersonaData })), dataUiId: 'transfer-page', updateSidePaneRenderer: props.updateSidePaneRenderer, mobileChatTabHeader: props.mobileChatTabHeader, latestErrors: props.latestErrors, onDismissError: props.onDismissError
|
36975
|
+
: strings.transferPageTransferorText, onFetchAvatarPersonaData: props.onFetchAvatarPersonaData })), dataUiId: 'transfer-page', updateSidePaneRenderer: props.updateSidePaneRenderer, mobileChatTabHeader: props.mobileChatTabHeader, latestErrors: props.latestErrors, onDismissError: props.onDismissError,
|
36976
|
+
/* @conditional-compile-remove(notifications) */
|
36977
|
+
onDismissNotification: props.onDismissNotification,
|
36978
|
+
/* @conditional-compile-remove(notifications) */
|
36979
|
+
latestNotifications: props.latestNotifications })));
|
36727
36980
|
};
|
36728
36981
|
const TransferTile = (props) => {
|
36729
36982
|
const { displayName, initialsName, userId, onFetchAvatarPersonaData, statusText } = props;
|
@@ -36948,7 +37201,9 @@ const HoldPage = (props) => {
|
|
36948
37201
|
increaseFlyoutItemSize: props.mobileView
|
36949
37202
|
}, mobileView: props.mobileView, modalLayerHostId: props.modalLayerHostId, onRenderGalleryContent: () => React.createElement(HoldPane, null), dataUiId: 'hold-page', updateSidePaneRenderer: props.updateSidePaneRenderer, mobileChatTabHeader: props.mobileChatTabHeader, latestErrors: props.latestErrors,
|
36950
37203
|
/* @conditional-compile-remove(notifications) */
|
36951
|
-
latestNotifications: props.latestNotifications, onDismissError: props.onDismissError
|
37204
|
+
latestNotifications: props.latestNotifications, onDismissError: props.onDismissError,
|
37205
|
+
/* @conditional-compile-remove(notifications) */
|
37206
|
+
onDismissNotification: props.onDismissNotification }));
|
36952
37207
|
};
|
36953
37208
|
|
36954
37209
|
// Copyright (c) Microsoft Corporation.
|
@@ -37444,23 +37699,63 @@ const MainScreen = (props) => {
|
|
37444
37699
|
/* @conditional-compile-remove(notifications) */
|
37445
37700
|
const activeInCallErrors = usePropsFor$1(NotificationStack).activeErrorMessages;
|
37446
37701
|
/* @conditional-compile-remove(notifications) */
|
37447
|
-
const
|
37702
|
+
const activeNotificationsFromSelector = usePropsFor$1(NotificationStack).activeNotifications;
|
37703
|
+
/* @conditional-compile-remove(notifications) */
|
37704
|
+
const complianceProps = useSelector$1(complianceBannerSelector);
|
37705
|
+
/* @conditional-compile-remove(notifications) */
|
37706
|
+
const cachedProps = React.useRef({
|
37707
|
+
latestBooleanState: {
|
37708
|
+
callTranscribeState: false,
|
37709
|
+
callRecordState: false
|
37710
|
+
},
|
37711
|
+
latestStringState: {
|
37712
|
+
callTranscribeState: 'off',
|
37713
|
+
callRecordState: 'off'
|
37714
|
+
},
|
37715
|
+
lastUpdated: Date.now()
|
37716
|
+
});
|
37717
|
+
/* @conditional-compile-remove(notifications) */
|
37718
|
+
const complianceNotification = React.useMemo(() => {
|
37719
|
+
return computeComplianceNotification(complianceProps, cachedProps);
|
37720
|
+
}, [complianceProps, cachedProps]);
|
37448
37721
|
const [trackedErrors, setTrackedErrors] = React.useState({});
|
37449
37722
|
/* @conditional-compile-remove(notifications) */
|
37450
37723
|
const [trackedInCallErrors, setTrackedInCallErrors] = React.useState({});
|
37724
|
+
/* @conditional-compile-remove(notifications) */
|
37725
|
+
const [trackedNotifications, setTrackedNotifications] = React.useState({});
|
37726
|
+
/* @conditional-compile-remove(notifications) */
|
37727
|
+
const [activeNotifications, setActiveNotifications] = React.useState(activeNotificationsFromSelector);
|
37728
|
+
/* @conditional-compile-remove(notifications) */
|
37451
37729
|
React.useEffect(() => {
|
37452
|
-
|
37730
|
+
if (complianceNotification) {
|
37731
|
+
setActiveNotifications([...activeNotificationsFromSelector, complianceNotification]);
|
37732
|
+
}
|
37733
|
+
}, [complianceNotification, activeNotificationsFromSelector]);
|
37734
|
+
React.useEffect(() => {
|
37735
|
+
setTrackedErrors((prev) => updateTrackedNotificationsWithActiveNotifications(prev, activeErrors));
|
37453
37736
|
/* @conditional-compile-remove(notifications) */
|
37454
|
-
setTrackedInCallErrors((prev) =>
|
37455
|
-
|
37737
|
+
setTrackedInCallErrors((prev) => updateTrackedNotificationsWithActiveNotifications(prev, activeInCallErrors));
|
37738
|
+
/* @conditional-compile-remove(notifications) */
|
37739
|
+
setTrackedNotifications((prev) => updateTrackedNotificationsWithActiveNotifications(prev, activeNotifications));
|
37740
|
+
}, [
|
37741
|
+
activeErrors,
|
37742
|
+
/* @conditional-compile-remove(notifications) */ activeInCallErrors,
|
37743
|
+
/* @conditional-compile-remove(notifications) */ activeNotifications
|
37744
|
+
]);
|
37456
37745
|
const onDismissError = React.useCallback((error) => {
|
37457
|
-
setTrackedErrors((prev) =>
|
37746
|
+
setTrackedErrors((prev) => trackNotificationAsDismissed(error.type, prev));
|
37458
37747
|
/* @conditional-compile-remove(notifications) */
|
37459
|
-
setTrackedInCallErrors((prev) =>
|
37748
|
+
setTrackedInCallErrors((prev) => trackNotificationAsDismissed(error.type, prev));
|
37749
|
+
}, []);
|
37750
|
+
/* @conditional-compile-remove(notifications) */
|
37751
|
+
const onDismissNotification = React.useCallback((notification) => {
|
37752
|
+
setTrackedNotifications((prev) => trackNotificationAsDismissed(notification.type, prev));
|
37460
37753
|
}, []);
|
37461
|
-
const latestErrors = React.useMemo(() =>
|
37754
|
+
const latestErrors = React.useMemo(() => filterLatestNotifications(activeErrors, trackedErrors), [activeErrors, trackedErrors]);
|
37755
|
+
/* @conditional-compile-remove(notifications) */
|
37756
|
+
const latestInCallErrors = React.useMemo(() => filterLatestNotifications(activeInCallErrors, trackedInCallErrors), [activeInCallErrors, trackedInCallErrors]);
|
37462
37757
|
/* @conditional-compile-remove(notifications) */
|
37463
|
-
const
|
37758
|
+
const latestNotifications = React.useMemo(() => filterLatestNotifications(activeNotifications, trackedNotifications), [activeNotifications, trackedNotifications]);
|
37464
37759
|
const callees = useSelector$1(getTargetCallees);
|
37465
37760
|
const locale = useLocale();
|
37466
37761
|
const palette = useTheme().palette;
|
@@ -37525,23 +37820,31 @@ const MainScreen = (props) => {
|
|
37525
37820
|
case 'lobby':
|
37526
37821
|
pageElement = (React.createElement(LobbyPage, { mobileView: props.mobileView, modalLayerHostId: props.modalLayerHostId, options: props.options, updateSidePaneRenderer: setSidePaneRenderer, mobileChatTabHeader: props.mobileChatTabHeader, latestErrors: getLatestErrorsTrampoline(),
|
37527
37822
|
/* @conditional-compile-remove(notifications) */
|
37528
|
-
latestNotifications:
|
37823
|
+
latestNotifications: latestNotifications, onDismissError: onDismissError,
|
37824
|
+
/* @conditional-compile-remove(notifications) */
|
37825
|
+
onDismissNotification: onDismissNotification, capabilitiesChangedNotificationBarProps: capabilitiesChangedNotificationBarProps }));
|
37529
37826
|
break;
|
37530
37827
|
case 'transferring':
|
37531
37828
|
pageElement = (React.createElement(TransferPage, { mobileView: props.mobileView, modalLayerHostId: props.modalLayerHostId, options: props.options, updateSidePaneRenderer: setSidePaneRenderer, mobileChatTabHeader: props.mobileChatTabHeader, onFetchAvatarPersonaData: onFetchAvatarPersonaData, latestErrors: getLatestErrorsTrampoline(),
|
37532
37829
|
/* @conditional-compile-remove(notifications) */
|
37533
|
-
latestNotifications:
|
37830
|
+
latestNotifications: latestNotifications, onDismissError: onDismissError,
|
37831
|
+
/* @conditional-compile-remove(notifications) */
|
37832
|
+
onDismissNotification: onDismissNotification, capabilitiesChangedNotificationBarProps: capabilitiesChangedNotificationBarProps }));
|
37534
37833
|
break;
|
37535
37834
|
case 'call':
|
37536
37835
|
pageElement = (React.createElement(CallPage, { callInvitationURL: callInvitationUrl, onFetchAvatarPersonaData: onFetchAvatarPersonaData, onFetchParticipantMenuItems: onFetchParticipantMenuItems, mobileView: props.mobileView, modalLayerHostId: props.modalLayerHostId, options: props.options, updateSidePaneRenderer: setSidePaneRenderer, mobileChatTabHeader: props.mobileChatTabHeader, onCloseChatPane: props.onCloseChatPane, latestErrors: getLatestErrorsTrampoline(),
|
37537
37836
|
/* @conditional-compile-remove(notifications) */
|
37538
|
-
latestNotifications:
|
37837
|
+
latestNotifications: latestNotifications, onDismissError: onDismissError,
|
37838
|
+
/* @conditional-compile-remove(notifications) */
|
37839
|
+
onDismissNotification: onDismissNotification, galleryLayout: userSetGalleryLayout, onUserSetGalleryLayoutChange: setUserSetGalleryLayout, onSetUserSetOverflowGalleryPosition: setUserSetOverflowGalleryPosition, userSetOverflowGalleryPosition: userSetOverflowGalleryPosition, capabilitiesChangedNotificationBarProps: capabilitiesChangedNotificationBarProps, pinnedParticipants: pinnedParticipants, setPinnedParticipants: setPinnedParticipants, compositeAudioContext: compositeAudioContext, disableAutoShowDtmfDialer: (_q = props.options) === null || _q === void 0 ? void 0 : _q.disableAutoShowDtmfDialer }));
|
37539
37840
|
break;
|
37540
37841
|
/* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
|
37541
37842
|
case 'hold':
|
37542
37843
|
pageElement = (React.createElement(React.Fragment, null, React.createElement(HoldPage, { mobileView: props.mobileView, modalLayerHostId: props.modalLayerHostId, options: props.options, updateSidePaneRenderer: setSidePaneRenderer, mobileChatTabHeader: props.mobileChatTabHeader, latestErrors: getLatestErrorsTrampoline(),
|
37543
37844
|
/* @conditional-compile-remove(notifications) */
|
37544
|
-
latestNotifications:
|
37845
|
+
latestNotifications: latestNotifications, onDismissError: onDismissError,
|
37846
|
+
/* @conditional-compile-remove(notifications) */
|
37847
|
+
onDismissNotification: onDismissNotification, capabilitiesChangedNotificationBarProps: capabilitiesChangedNotificationBarProps })));
|
37545
37848
|
break;
|
37546
37849
|
}
|
37547
37850
|
useEndedCallConsoleErrors(endedCall);
|
@@ -39546,7 +39849,23 @@ class CallWithChatBackedChatAdapter {
|
|
39546
39849
|
yield this.callWithChatAdapter.sendMessage(content, /* @conditional-compile-remove(file-sharing-acs) */ options);
|
39547
39850
|
});
|
39548
39851
|
};
|
39852
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
39853
|
+
this.uploadImageHandler = function (image, fileName) {
|
39854
|
+
return __awaiter$3(this, void 0, void 0, function* () {
|
39855
|
+
return yield this.callWithChatAdapter.uploadImage(image, fileName);
|
39856
|
+
});
|
39857
|
+
};
|
39858
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
39859
|
+
this.deleteImageHandler = function (imageId) {
|
39860
|
+
return __awaiter$3(this, void 0, void 0, function* () {
|
39861
|
+
return yield this.callWithChatAdapter.deleteImage(imageId);
|
39862
|
+
});
|
39863
|
+
};
|
39549
39864
|
this.sendMessage = this.sendMessageHandler.bind(this);
|
39865
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
39866
|
+
this.uploadImage = this.uploadImageHandler.bind(this);
|
39867
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
39868
|
+
this.deleteImage = this.deleteImageHandler.bind(this);
|
39550
39869
|
this.sendReadReceipt = (chatMessageId) => __awaiter$3(this, void 0, void 0, function* () { return yield this.callWithChatAdapter.sendReadReceipt(chatMessageId); });
|
39551
39870
|
this.sendTypingIndicator = () => __awaiter$3(this, void 0, void 0, function* () { return yield this.callWithChatAdapter.sendTypingIndicator(); });
|
39552
39871
|
this.removeParticipant = (userId) => __awaiter$3(this, void 0, void 0, function* () { return yield this.callWithChatAdapter.removeParticipant(userId); });
|
@@ -40183,6 +40502,10 @@ class AzureCommunicationCallWithChatAdapter {
|
|
40183
40502
|
this.disposeScreenShareStreamView.bind(this);
|
40184
40503
|
this.fetchInitialData.bind(this);
|
40185
40504
|
this.sendMessage.bind(this);
|
40505
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
40506
|
+
this.uploadImage.bind(this);
|
40507
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
40508
|
+
this.deleteImage.bind(this);
|
40186
40509
|
this.sendReadReceipt.bind(this);
|
40187
40510
|
this.sendTypingIndicator.bind(this);
|
40188
40511
|
this.loadPreviousChatMessages.bind(this);
|
@@ -40416,6 +40739,24 @@ class AzureCommunicationCallWithChatAdapter {
|
|
40416
40739
|
});
|
40417
40740
|
});
|
40418
40741
|
}
|
40742
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
40743
|
+
/** Upload a chat image. */
|
40744
|
+
uploadImage(image, imageFileName) {
|
40745
|
+
return __awaiter$2(this, void 0, void 0, function* () {
|
40746
|
+
return yield this.executeWithResolvedChatAdapter((adapter) => {
|
40747
|
+
return adapter.uploadImage(image, imageFileName);
|
40748
|
+
});
|
40749
|
+
});
|
40750
|
+
}
|
40751
|
+
/* @conditional-compile-remove(rich-text-editor-image-upload) */
|
40752
|
+
/** Delete a chat image. */
|
40753
|
+
deleteImage(imageId) {
|
40754
|
+
return __awaiter$2(this, void 0, void 0, function* () {
|
40755
|
+
return yield this.executeWithResolvedChatAdapter((adapter) => {
|
40756
|
+
return adapter.deleteImage(imageId);
|
40757
|
+
});
|
40758
|
+
});
|
40759
|
+
}
|
40419
40760
|
/** Send a chat read receipt. */
|
40420
40761
|
sendReadReceipt(chatMessageId) {
|
40421
40762
|
return __awaiter$2(this, void 0, void 0, function* () {
|
@@ -41631,4 +41972,4 @@ exports.useTeamsCall = useTeamsCall;
|
|
41631
41972
|
exports.useTeamsCallAdapter = useTeamsCallAdapter;
|
41632
41973
|
exports.useTeamsCallAgent = useTeamsCallAgent;
|
41633
41974
|
exports.useTheme = useTheme;
|
41634
|
-
//# sourceMappingURL=index-
|
41975
|
+
//# sourceMappingURL=index-BPO9X27C.js.map
|