@azure/communication-react 1.5.1-alpha-202303300013 → 1.5.1-alpha-202303310013

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (26) hide show
  1. package/dist/communication-react.d.ts +24 -7
  2. package/dist/dist-cjs/communication-react/index.js +517 -295
  3. package/dist/dist-cjs/communication-react/index.js.map +1 -1
  4. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js +1 -1
  5. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js.map +1 -1
  6. package/dist/dist-esm/react-composites/src/composites/CallComposite/Strings.d.ts +20 -0
  7. package/dist/dist-esm/react-composites/src/composites/CallComposite/Strings.js.map +1 -1
  8. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js +9 -7
  9. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallArrangement.js.map +1 -1
  10. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/ConfigurationPage.js +19 -1
  11. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/ConfigurationPage.js.map +1 -1
  12. package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/CallConfiguration.styles.d.ts +5 -1
  13. package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/CallConfiguration.styles.js +20 -0
  14. package/dist/dist-esm/react-composites/src/composites/CallComposite/styles/CallConfiguration.styles.js.map +1 -1
  15. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js +1 -1
  16. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js.map +1 -1
  17. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/styles/CallWithChatCompositeStyles.js +2 -1
  18. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/styles/CallWithChatCompositeStyles.js.map +1 -1
  19. package/dist/dist-esm/react-composites/src/composites/common/VideoEffectsPane.d.ts +2 -0
  20. package/dist/dist-esm/react-composites/src/composites/common/VideoEffectsPane.js +61 -3
  21. package/dist/dist-esm/react-composites/src/composites/common/VideoEffectsPane.js.map +1 -1
  22. package/dist/dist-esm/react-composites/src/composites/common/icons.d.ts +4 -7
  23. package/dist/dist-esm/react-composites/src/composites/common/icons.js +7 -1
  24. package/dist/dist-esm/react-composites/src/composites/common/icons.js.map +1 -1
  25. package/dist/dist-esm/react-composites/src/composites/localization/locales/en-US/strings.json +5 -0
  26. package/package.json +8 -8
@@ -162,7 +162,7 @@ const _toCommunicationIdentifier = (id) => {
162
162
  // Copyright (c) Microsoft Corporation.
163
163
  // Licensed under the MIT license.
164
164
  // GENERATED FILE. DO NOT EDIT MANUALLY.
165
- var telemetryVersion = '1.5.1-alpha-202303300013';
165
+ var telemetryVersion = '1.5.1-alpha-202303310013';
166
166
 
167
167
  // Copyright (c) Microsoft Corporation.
168
168
  /**
@@ -378,7 +378,7 @@ const getEnvironmentInfo = (state) => {
378
378
 
379
379
  // Copyright (c) Microsoft Corporation.
380
380
  // Licensed under the MIT license.
381
- var __awaiter$F = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
381
+ var __awaiter$G = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
382
382
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
383
383
  return new (P || (P = Promise))(function (resolve, reject) {
384
384
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -416,7 +416,7 @@ const _isPreviewOn = (deviceManager) => {
416
416
  *
417
417
  * @private
418
418
  */
419
- const disposeAllLocalPreviewViews = (callClient) => __awaiter$F(void 0, void 0, void 0, function* () {
419
+ const disposeAllLocalPreviewViews = (callClient) => __awaiter$G(void 0, void 0, void 0, function* () {
420
420
  const unparentedViews = callClient.getState().deviceManager.unparentedViews;
421
421
  for (const view of unparentedViews) {
422
422
  yield callClient.disposeView(undefined, undefined, view);
@@ -549,7 +549,7 @@ const holdButtonSelector = reselect__namespace.createSelector([getCallState], (c
549
549
 
550
550
  // Copyright (c) Microsoft Corporation.
551
551
  // Licensed under the MIT license.
552
- var __awaiter$E = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
552
+ var __awaiter$F = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
553
553
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
554
554
  return new (P || (P = Promise))(function (resolve, reject) {
555
555
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -570,7 +570,7 @@ const areStreamsEqual = (prevStream, newStream) => {
570
570
  * @private
571
571
  */
572
572
  const createDefaultCommonCallingHandlers = memoizeOne__default['default']((callClient, deviceManager, call) => {
573
- const onStartLocalVideo = () => __awaiter$E(void 0, void 0, void 0, function* () {
573
+ const onStartLocalVideo = () => __awaiter$F(void 0, void 0, void 0, function* () {
574
574
  // Before the call object creates a stream, dispose of any local preview streams.
575
575
  // @TODO: is there any way to parent the unparented view to the call object instead
576
576
  // of disposing and creating a new stream?
@@ -590,7 +590,7 @@ const createDefaultCommonCallingHandlers = memoizeOne__default['default']((callC
590
590
  yield call.startVideo(stream);
591
591
  }
592
592
  });
593
- const onStopLocalVideo = (stream) => __awaiter$E(void 0, void 0, void 0, function* () {
593
+ const onStopLocalVideo = (stream) => __awaiter$F(void 0, void 0, void 0, function* () {
594
594
  const callId = call === null || call === void 0 ? void 0 : call.id;
595
595
  if (!callId) {
596
596
  return;
@@ -599,7 +599,7 @@ const createDefaultCommonCallingHandlers = memoizeOne__default['default']((callC
599
599
  yield call.stopVideo(stream);
600
600
  }
601
601
  });
602
- const onToggleCamera = (options) => __awaiter$E(void 0, void 0, void 0, function* () {
602
+ const onToggleCamera = (options) => __awaiter$F(void 0, void 0, void 0, function* () {
603
603
  const previewOn = _isPreviewOn(callClient.getState().deviceManager);
604
604
  if (previewOn && call && call.state === 'Connecting') {
605
605
  // This is to workaround: https://skype.visualstudio.com/SPOOL/_workitems/edit/3030558.
@@ -647,19 +647,19 @@ const createDefaultCommonCallingHandlers = memoizeOne__default['default']((callC
647
647
  }
648
648
  }
649
649
  });
650
- const onSelectMicrophone = (device) => __awaiter$E(void 0, void 0, void 0, function* () {
650
+ const onSelectMicrophone = (device) => __awaiter$F(void 0, void 0, void 0, function* () {
651
651
  if (!deviceManager) {
652
652
  return;
653
653
  }
654
654
  return deviceManager.selectMicrophone(device);
655
655
  });
656
- const onSelectSpeaker = (device) => __awaiter$E(void 0, void 0, void 0, function* () {
656
+ const onSelectSpeaker = (device) => __awaiter$F(void 0, void 0, void 0, function* () {
657
657
  if (!deviceManager) {
658
658
  return;
659
659
  }
660
660
  return deviceManager.selectSpeaker(device);
661
661
  });
662
- const onSelectCamera = (device, options) => __awaiter$E(void 0, void 0, void 0, function* () {
662
+ const onSelectCamera = (device, options) => __awaiter$F(void 0, void 0, void 0, function* () {
663
663
  if (!deviceManager) {
664
664
  return;
665
665
  }
@@ -682,19 +682,19 @@ const createDefaultCommonCallingHandlers = memoizeOne__default['default']((callC
682
682
  }, options);
683
683
  }
684
684
  });
685
- const onToggleMicrophone = () => __awaiter$E(void 0, void 0, void 0, function* () {
685
+ const onToggleMicrophone = () => __awaiter$F(void 0, void 0, void 0, function* () {
686
686
  if (!call || !_isInCall(call.state)) {
687
687
  throw new Error(`Please invoke onToggleMicrophone after call is started`);
688
688
  }
689
689
  return call.isMuted ? yield call.unmute() : yield call.mute();
690
690
  });
691
- const onStartScreenShare = () => __awaiter$E(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.startScreenSharing()); });
692
- const onStopScreenShare = () => __awaiter$E(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.stopScreenSharing()); });
693
- const onToggleScreenShare = () => __awaiter$E(void 0, void 0, void 0, function* () { return (call === null || call === void 0 ? void 0 : call.isScreenSharingOn) ? yield onStopScreenShare() : yield onStartScreenShare(); });
694
- const onHangUp = (forEveryone) => __awaiter$E(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.hangUp({ forEveryone: forEveryone === true ? true : false })); });
691
+ const onStartScreenShare = () => __awaiter$F(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.startScreenSharing()); });
692
+ const onStopScreenShare = () => __awaiter$F(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.stopScreenSharing()); });
693
+ const onToggleScreenShare = () => __awaiter$F(void 0, void 0, void 0, function* () { return (call === null || call === void 0 ? void 0 : call.isScreenSharingOn) ? yield onStopScreenShare() : yield onStartScreenShare(); });
694
+ const onHangUp = (forEveryone) => __awaiter$F(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.hangUp({ forEveryone: forEveryone === true ? true : false })); });
695
695
  /* @conditional-compile-remove(PSTN-calls) */
696
- const onToggleHold = () => __awaiter$E(void 0, void 0, void 0, function* () { return (call === null || call === void 0 ? void 0 : call.state) === 'LocalHold' ? yield (call === null || call === void 0 ? void 0 : call.resume()) : yield (call === null || call === void 0 ? void 0 : call.hold()); });
697
- const onCreateLocalStreamView = (options = { scalingMode: 'Crop', isMirrored: true }) => __awaiter$E(void 0, void 0, void 0, function* () {
696
+ const onToggleHold = () => __awaiter$F(void 0, void 0, void 0, function* () { return (call === null || call === void 0 ? void 0 : call.state) === 'LocalHold' ? yield (call === null || call === void 0 ? void 0 : call.resume()) : yield (call === null || call === void 0 ? void 0 : call.hold()); });
697
+ const onCreateLocalStreamView = (options = { scalingMode: 'Crop', isMirrored: true }) => __awaiter$F(void 0, void 0, void 0, function* () {
698
698
  var _a;
699
699
  if (!call || call.localVideoStreams.length === 0) {
700
700
  return;
@@ -710,7 +710,7 @@ const createDefaultCommonCallingHandlers = memoizeOne__default['default']((callC
710
710
  const { view } = (_a = (yield callClient.createView(call.id, undefined, localStream, options))) !== null && _a !== void 0 ? _a : {};
711
711
  return view ? { view } : undefined;
712
712
  });
713
- const onCreateRemoteStreamView = (userId, options = { scalingMode: 'Crop' }) => __awaiter$E(void 0, void 0, void 0, function* () {
713
+ const onCreateRemoteStreamView = (userId, options = { scalingMode: 'Crop' }) => __awaiter$F(void 0, void 0, void 0, function* () {
714
714
  if (!call) {
715
715
  return;
716
716
  }
@@ -741,7 +741,7 @@ const createDefaultCommonCallingHandlers = memoizeOne__default['default']((callC
741
741
  }
742
742
  return (createViewResult === null || createViewResult === void 0 ? void 0 : createViewResult.view) ? { view: createViewResult === null || createViewResult === void 0 ? void 0 : createViewResult.view } : undefined;
743
743
  });
744
- const onDisposeRemoteStreamView = (userId) => __awaiter$E(void 0, void 0, void 0, function* () {
744
+ const onDisposeRemoteStreamView = (userId) => __awaiter$F(void 0, void 0, void 0, function* () {
745
745
  if (!call) {
746
746
  return;
747
747
  }
@@ -762,7 +762,7 @@ const createDefaultCommonCallingHandlers = memoizeOne__default['default']((callC
762
762
  callClient.disposeView(call.id, participant.identifier, screenShareStream);
763
763
  }
764
764
  });
765
- const onDisposeLocalStreamView = () => __awaiter$E(void 0, void 0, void 0, function* () {
765
+ const onDisposeLocalStreamView = () => __awaiter$F(void 0, void 0, void 0, function* () {
766
766
  // If the user is currently in a call, dispose of the local stream view attached to that call.
767
767
  const callState = call && callClient.getState().calls[call.id];
768
768
  const localStream = callState === null || callState === void 0 ? void 0 : callState.localVideoStreams.find((item) => item.mediaStreamType === 'Video');
@@ -775,18 +775,18 @@ const createDefaultCommonCallingHandlers = memoizeOne__default['default']((callC
775
775
  yield disposeAllLocalPreviewViews(callClient);
776
776
  });
777
777
  /* @conditional-compile-remove(dialpad) */ /* @conditional-compile-remove(PSTN-calls) */
778
- const onSendDtmfTone = (dtmfTone) => __awaiter$E(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.sendDtmf(dtmfTone)); });
778
+ const onSendDtmfTone = (dtmfTone) => __awaiter$F(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.sendDtmf(dtmfTone)); });
779
779
  const notImplemented = () => {
780
780
  throw new Error('Not implemented, cannot call a method from an abstract object');
781
781
  };
782
782
  /* @conditional-compile-remove(call-readiness) */
783
- const askDevicePermission = (constrain) => __awaiter$E(void 0, void 0, void 0, function* () {
783
+ const askDevicePermission = (constrain) => __awaiter$F(void 0, void 0, void 0, function* () {
784
784
  if (deviceManager) {
785
785
  yield (deviceManager === null || deviceManager === void 0 ? void 0 : deviceManager.askDevicePermission(constrain));
786
786
  }
787
787
  });
788
788
  /* @conditional-compile-remove(video-background-effects) */
789
- const onRemoveVideoBackgroundEffects = () => __awaiter$E(void 0, void 0, void 0, function* () {
789
+ const onRemoveVideoBackgroundEffects = () => __awaiter$F(void 0, void 0, void 0, function* () {
790
790
  const stream = (call === null || call === void 0 ? void 0 : call.localVideoStreams.find((stream) => stream.mediaStreamType === 'Video')) ||
791
791
  (deviceManager === null || deviceManager === void 0 ? void 0 : deviceManager.getUnparentedVideoStreams().find((stream) => stream.mediaStreamType === 'Video'));
792
792
  if (stream) {
@@ -794,7 +794,7 @@ const createDefaultCommonCallingHandlers = memoizeOne__default['default']((callC
794
794
  }
795
795
  });
796
796
  /* @conditional-compile-remove(video-background-effects) */
797
- const onBlurVideoBackground = (bgBlurConfig) => __awaiter$E(void 0, void 0, void 0, function* () {
797
+ const onBlurVideoBackground = (bgBlurConfig) => __awaiter$F(void 0, void 0, void 0, function* () {
798
798
  const stream = (call === null || call === void 0 ? void 0 : call.localVideoStreams.find((stream) => stream.mediaStreamType === 'Video')) ||
799
799
  (deviceManager === null || deviceManager === void 0 ? void 0 : deviceManager.getUnparentedVideoStreams().find((stream) => stream.mediaStreamType === 'Video'));
800
800
  if (stream) {
@@ -802,7 +802,7 @@ const createDefaultCommonCallingHandlers = memoizeOne__default['default']((callC
802
802
  }
803
803
  });
804
804
  /* @conditional-compile-remove(video-background-effects) */
805
- const onReplaceVideoBackground = (bgReplacementConfig) => __awaiter$E(void 0, void 0, void 0, function* () {
805
+ const onReplaceVideoBackground = (bgReplacementConfig) => __awaiter$F(void 0, void 0, void 0, function* () {
806
806
  const stream = (call === null || call === void 0 ? void 0 : call.localVideoStreams.find((stream) => stream.mediaStreamType === 'Video')) ||
807
807
  (deviceManager === null || deviceManager === void 0 ? void 0 : deviceManager.getUnparentedVideoStreams().find((stream) => stream.mediaStreamType === 'Video'));
808
808
  if (stream) {
@@ -844,7 +844,7 @@ const createDefaultCommonCallingHandlers = memoizeOne__default['default']((callC
844
844
 
845
845
  // Copyright (c) Microsoft Corporation.
846
846
  // Licensed under the MIT license.
847
- var __awaiter$D = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
847
+ var __awaiter$E = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
848
848
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
849
849
  return new (P || (P = Promise))(function (resolve, reject) {
850
850
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -871,7 +871,7 @@ const createDefaultCallingHandlers = memoizeOne__default['default']((callClient,
871
871
  return callAgent ? callAgent.startCall(participants, options) : undefined;
872
872
  },
873
873
  /* @conditional-compile-remove(PSTN-calls) */
874
- onAddParticipant: (userId, options) => __awaiter$D(void 0, void 0, void 0, function* () {
874
+ onAddParticipant: (userId, options) => __awaiter$E(void 0, void 0, void 0, function* () {
875
875
  const participant = _toCommunicationIdentifier(userId);
876
876
  if (communicationCommon.isPhoneNumberIdentifier(participant)) {
877
877
  call === null || call === void 0 ? void 0 : call.addParticipant(participant, options);
@@ -879,7 +879,7 @@ const createDefaultCallingHandlers = memoizeOne__default['default']((callClient,
879
879
  else if (communicationCommon.isCommunicationUserIdentifier(participant) || communicationCommon.isMicrosoftTeamsUserIdentifier(participant)) {
880
880
  call === null || call === void 0 ? void 0 : call.addParticipant(participant);
881
881
  }
882
- }), onRemoveParticipant: (userId) => __awaiter$D(void 0, void 0, void 0, function* () {
882
+ }), onRemoveParticipant: (userId) => __awaiter$E(void 0, void 0, void 0, function* () {
883
883
  const participant = _toCommunicationIdentifier(userId);
884
884
  yield (call === null || call === void 0 ? void 0 : call.removeParticipant(participant));
885
885
  }) });
@@ -887,7 +887,7 @@ const createDefaultCallingHandlers = memoizeOne__default['default']((callClient,
887
887
 
888
888
  // Copyright (c) Microsoft Corporation.
889
889
  // Licensed under the MIT license.
890
- var __awaiter$C = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
890
+ var __awaiter$D = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
891
891
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
892
892
  return new (P || (P = Promise))(function (resolve, reject) {
893
893
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -919,7 +919,7 @@ const createDefaultTeamsCallingHandlers = memoizeOne__default['default']((callCl
919
919
  },
920
920
  /* @conditional-compile-remove(teams-identity-support) */
921
921
  /* @conditional-compile-remove(PSTN-calls) */
922
- onAddParticipant: (userId, options) => __awaiter$C(void 0, void 0, void 0, function* () {
922
+ onAddParticipant: (userId, options) => __awaiter$D(void 0, void 0, void 0, function* () {
923
923
  const participant = _toCommunicationIdentifier(userId);
924
924
  /* @conditional-compile-remove(teams-identity-support) */
925
925
  const threadId = options === null || options === void 0 ? void 0 : options.threadId;
@@ -932,7 +932,7 @@ const createDefaultTeamsCallingHandlers = memoizeOne__default['default']((callCl
932
932
  }
933
933
  /* @conditional-compile-remove(teams-identity-support) */
934
934
  call === null || call === void 0 ? void 0 : call.addParticipant(participant);
935
- }), onRemoveParticipant: (userId) => __awaiter$C(void 0, void 0, void 0, function* () {
935
+ }), onRemoveParticipant: (userId) => __awaiter$D(void 0, void 0, void 0, function* () {
936
936
  const participant = _toCommunicationIdentifier(userId);
937
937
  if (communicationCommon.isCommunicationUserIdentifier(participant)) {
938
938
  throw new Error('CommunicationIdentifier in Teams call is not supported!');
@@ -944,7 +944,7 @@ const createDefaultTeamsCallingHandlers = memoizeOne__default['default']((callCl
944
944
 
945
945
  // Copyright (c) Microsoft Corporation.
946
946
  // Licensed under the MIT license.
947
- var __awaiter$B = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
947
+ var __awaiter$C = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
948
948
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
949
949
  return new (P || (P = Promise))(function (resolve, reject) {
950
950
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -993,13 +993,13 @@ class ProxyDeviceManager {
993
993
  this.selectCamera = (videoDeviceInfo) => {
994
994
  this._context.setDeviceManagerSelectedCamera(videoDeviceInfo);
995
995
  };
996
- this.videoDevicesUpdated = () => __awaiter$B(this, void 0, void 0, function* () {
996
+ this.videoDevicesUpdated = () => __awaiter$C(this, void 0, void 0, function* () {
997
997
  // Device Manager always has a camera with '' name if there are no real camera devices available.
998
998
  // We don't want to show that in the UI.
999
999
  const realCameras = (yield this._deviceManager.getCameras()).filter((c) => !!c.name);
1000
1000
  this._context.setDeviceManagerCameras(dedupeById(realCameras));
1001
1001
  });
1002
- this.audioDevicesUpdated = () => __awaiter$B(this, void 0, void 0, function* () {
1002
+ this.audioDevicesUpdated = () => __awaiter$C(this, void 0, void 0, function* () {
1003
1003
  this._context.setDeviceManagerMicrophones(dedupeById(yield this._deviceManager.getMicrophones()));
1004
1004
  this._context.setDeviceManagerSpeakers(dedupeById(yield this._deviceManager.getSpeakers()));
1005
1005
  });
@@ -1202,7 +1202,7 @@ class CallIdHistory {
1202
1202
 
1203
1203
  // Copyright (c) Microsoft Corporation.
1204
1204
  // Licensed under the MIT license.
1205
- var __awaiter$A = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
1205
+ var __awaiter$B = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
1206
1206
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
1207
1207
  return new (P || (P = Promise))(function (resolve, reject) {
1208
1208
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -1786,7 +1786,7 @@ class CallContext$2 {
1786
1786
  * @throws CallError. Exceptions thrown from `f` are tagged with the failed `target.
1787
1787
  */
1788
1788
  withAsyncErrorTeedToState(action, target) {
1789
- return (...args) => __awaiter$A(this, void 0, void 0, function* () {
1789
+ return (...args) => __awaiter$B(this, void 0, void 0, function* () {
1790
1790
  try {
1791
1791
  return yield action(...args);
1792
1792
  }
@@ -2313,7 +2313,7 @@ function _logStreamEvent(eventName, streamLogInfo, error) {
2313
2313
 
2314
2314
  // Copyright (c) Microsoft Corporation.
2315
2315
  // Licensed under the MIT license.
2316
- var __awaiter$z = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
2316
+ var __awaiter$A = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
2317
2317
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
2318
2318
  return new (P || (P = Promise))(function (resolve, reject) {
2319
2319
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -2323,7 +2323,7 @@ var __awaiter$z = (window && window.__awaiter) || function (thisArg, _arguments,
2323
2323
  });
2324
2324
  };
2325
2325
  function createViewVideo(context, internalContext, callId, stream, participantId, options) {
2326
- return __awaiter$z(this, void 0, void 0, function* () {
2326
+ return __awaiter$A(this, void 0, void 0, function* () {
2327
2327
  // we can only have 3 types of createView
2328
2328
  let streamEventType;
2329
2329
  // we will reuse these for local as well but we need to make sure the remote stream is passed in like before.
@@ -2445,7 +2445,7 @@ function createViewVideo(context, internalContext, callId, stream, participantId
2445
2445
  });
2446
2446
  }
2447
2447
  function createViewUnparentedVideo(context, internalContext, stream, options) {
2448
- return __awaiter$z(this, void 0, void 0, function* () {
2448
+ return __awaiter$A(this, void 0, void 0, function* () {
2449
2449
  const renderInfo = internalContext.getUnparentedRenderInfo(stream);
2450
2450
  if (renderInfo && renderInfo.status === 'Rendered') {
2451
2451
  console.warn('Unparented LocalVideoStream is already rendered');
@@ -2613,7 +2613,7 @@ function createView(context, internalContext, callId, participantId, stream, opt
2613
2613
  // Render LocalVideoStream that is not part of a Call
2614
2614
  // Because it is not part of the call we don't tee errors to state naturally (e.g. via a Call Client function such as startVideo).
2615
2615
  // We do not have a startLocalPreviewVideo function, so as a workaround we ensure any errors are propagated here.
2616
- return context.withAsyncErrorTeedToState(() => __awaiter$z(this, void 0, void 0, function* () { return yield createViewUnparentedVideo(context, internalContext, stream, options); }), 'Call.startVideo')();
2616
+ return context.withAsyncErrorTeedToState(() => __awaiter$A(this, void 0, void 0, function* () { return yield createViewUnparentedVideo(context, internalContext, stream, options); }), 'Call.startVideo')();
2617
2617
  }
2618
2618
  else {
2619
2619
  _logStreamEvent(EventNames.CREATE_STREAM_INVALID_PARAMS, { streamType });
@@ -3047,7 +3047,7 @@ class CallSubscriber {
3047
3047
 
3048
3048
  // Copyright (c) Microsoft Corporation.
3049
3049
  // Licensed under the MIT license.
3050
- var __awaiter$y = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
3050
+ var __awaiter$z = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
3051
3051
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3052
3052
  return new (P || (P = Promise))(function (resolve, reject) {
3053
3053
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -3067,14 +3067,14 @@ class ProxyIncomingCall {
3067
3067
  switch (prop) {
3068
3068
  case 'accept': {
3069
3069
  return this._context.withAsyncErrorTeedToState(function (...args) {
3070
- return __awaiter$y(this, void 0, void 0, function* () {
3070
+ return __awaiter$z(this, void 0, void 0, function* () {
3071
3071
  return yield target.accept(...args);
3072
3072
  });
3073
3073
  }, 'IncomingCall.accept');
3074
3074
  }
3075
3075
  case 'reject': {
3076
3076
  return this._context.withAsyncErrorTeedToState(function (...args) {
3077
- return __awaiter$y(this, void 0, void 0, function* () {
3077
+ return __awaiter$z(this, void 0, void 0, function* () {
3078
3078
  return yield target.reject(...args);
3079
3079
  });
3080
3080
  }, 'IncomingCall.reject');
@@ -3311,7 +3311,7 @@ const clearCallRelatedState = (context, internalContext) => {
3311
3311
 
3312
3312
  // Copyright (c) Microsoft Corporation.
3313
3313
  // Licensed under the MIT license.
3314
- var __awaiter$x = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
3314
+ var __awaiter$y = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
3315
3315
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3316
3316
  return new (P || (P = Promise))(function (resolve, reject) {
3317
3317
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -3337,56 +3337,56 @@ class ProxyCallCommon {
3337
3337
  switch (prop) {
3338
3338
  case 'mute': {
3339
3339
  return this._context.withAsyncErrorTeedToState(function (...args) {
3340
- return __awaiter$x(this, void 0, void 0, function* () {
3340
+ return __awaiter$y(this, void 0, void 0, function* () {
3341
3341
  return yield target.mute(...args);
3342
3342
  });
3343
3343
  }, 'Call.mute');
3344
3344
  }
3345
3345
  case 'unmute': {
3346
3346
  return this._context.withAsyncErrorTeedToState(function (...args) {
3347
- return __awaiter$x(this, void 0, void 0, function* () {
3347
+ return __awaiter$y(this, void 0, void 0, function* () {
3348
3348
  return yield target.unmute(...args);
3349
3349
  });
3350
3350
  }, 'Call.unmute');
3351
3351
  }
3352
3352
  case 'startVideo': {
3353
3353
  return this._context.withAsyncErrorTeedToState(function (...args) {
3354
- return __awaiter$x(this, void 0, void 0, function* () {
3354
+ return __awaiter$y(this, void 0, void 0, function* () {
3355
3355
  return yield target.startVideo(...args);
3356
3356
  });
3357
3357
  }, 'Call.startVideo');
3358
3358
  }
3359
3359
  case 'stopVideo': {
3360
3360
  return this._context.withAsyncErrorTeedToState(function (...args) {
3361
- return __awaiter$x(this, void 0, void 0, function* () {
3361
+ return __awaiter$y(this, void 0, void 0, function* () {
3362
3362
  return yield target.stopVideo(...args);
3363
3363
  });
3364
3364
  }, 'Call.stopVideo');
3365
3365
  }
3366
3366
  case 'startScreenSharing': {
3367
3367
  return this._context.withAsyncErrorTeedToState(function (...args) {
3368
- return __awaiter$x(this, void 0, void 0, function* () {
3368
+ return __awaiter$y(this, void 0, void 0, function* () {
3369
3369
  return yield target.startScreenSharing(...args);
3370
3370
  });
3371
3371
  }, 'Call.startScreenSharing');
3372
3372
  }
3373
3373
  case 'stopScreenSharing': {
3374
3374
  return this._context.withAsyncErrorTeedToState(function (...args) {
3375
- return __awaiter$x(this, void 0, void 0, function* () {
3375
+ return __awaiter$y(this, void 0, void 0, function* () {
3376
3376
  return yield target.stopScreenSharing(...args);
3377
3377
  });
3378
3378
  }, 'Call.stopScreenSharing');
3379
3379
  }
3380
3380
  case 'hold': {
3381
3381
  return this._context.withAsyncErrorTeedToState(function (...args) {
3382
- return __awaiter$x(this, void 0, void 0, function* () {
3382
+ return __awaiter$y(this, void 0, void 0, function* () {
3383
3383
  return yield target.hold(...args);
3384
3384
  });
3385
3385
  }, 'Call.hold');
3386
3386
  }
3387
3387
  case 'resume': {
3388
3388
  return this._context.withAsyncErrorTeedToState(function (...args) {
3389
- return __awaiter$x(this, void 0, void 0, function* () {
3389
+ return __awaiter$y(this, void 0, void 0, function* () {
3390
3390
  return yield target.resume(...args);
3391
3391
  });
3392
3392
  }, 'Call.resume');
@@ -3399,7 +3399,7 @@ class ProxyCallCommon {
3399
3399
 
3400
3400
  // Copyright (c) Microsoft Corporation.
3401
3401
  // Licensed under the MIT license.
3402
- var __awaiter$w = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
3402
+ var __awaiter$x = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
3403
3403
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3404
3404
  return new (P || (P = Promise))(function (resolve, reject) {
3405
3405
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -3413,7 +3413,7 @@ class ProxyCall extends ProxyCallCommon {
3413
3413
  switch (prop) {
3414
3414
  case 'addParticipant': {
3415
3415
  return this.getContext().withAsyncErrorTeedToState(function (...args) {
3416
- return __awaiter$w(this, void 0, void 0, function* () {
3416
+ return __awaiter$x(this, void 0, void 0, function* () {
3417
3417
  return yield target.addParticipant(...args);
3418
3418
  });
3419
3419
  }, 'Call.addParticipant');
@@ -3634,7 +3634,7 @@ class InternalCallContext {
3634
3634
 
3635
3635
  // Copyright (c) Microsoft Corporation.
3636
3636
  // Licensed under the MIT license.
3637
- var __awaiter$v = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
3637
+ var __awaiter$w = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
3638
3638
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3639
3639
  return new (P || (P = Promise))(function (resolve, reject) {
3640
3640
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -3649,7 +3649,7 @@ class ProxyTeamsCall extends ProxyCallCommon {
3649
3649
  switch (prop) {
3650
3650
  case 'addParticipant': {
3651
3651
  return this.getContext().withAsyncErrorTeedToState(function (...args) {
3652
- return __awaiter$v(this, void 0, void 0, function* () {
3652
+ return __awaiter$w(this, void 0, void 0, function* () {
3653
3653
  return yield target.addParticipant(...args);
3654
3654
  });
3655
3655
  }, 'TeamsCall.addParticipant');
@@ -3764,7 +3764,7 @@ const teamsCallAgentDeclaratify = (callAgent, context, internalContext) => {
3764
3764
 
3765
3765
  // Copyright (c) Microsoft Corporation.
3766
3766
  // Licensed under the MIT license.
3767
- var __awaiter$u = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
3767
+ var __awaiter$v = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
3768
3768
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3769
3769
  return new (P || (P = Promise))(function (resolve, reject) {
3770
3770
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -3786,7 +3786,7 @@ class ProxyVideoStreamRendererView {
3786
3786
  get(target, prop) {
3787
3787
  switch (prop) {
3788
3788
  case 'updateScalingMode': {
3789
- return (...args) => __awaiter$u(this, void 0, void 0, function* () {
3789
+ return (...args) => __awaiter$v(this, void 0, void 0, function* () {
3790
3790
  yield target.updateScalingMode(...args);
3791
3791
  this._context.setRemoteVideoStreamViewScalingMode(this._callId, this._participantId, this._streamId, args[0]);
3792
3792
  });
@@ -3807,7 +3807,7 @@ const videoStreamRendererViewDeclaratify = (view, context, callId, participantId
3807
3807
 
3808
3808
  // Copyright (c) Microsoft Corporation.
3809
3809
  // Licensed under the MIT license.
3810
- var __awaiter$t = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
3810
+ var __awaiter$u = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
3811
3811
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3812
3812
  return new (P || (P = Promise))(function (resolve, reject) {
3813
3813
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -3829,7 +3829,7 @@ class ProxyCallClient {
3829
3829
  get(target, prop) {
3830
3830
  switch (prop) {
3831
3831
  case 'createCallAgent': {
3832
- return this._context.withAsyncErrorTeedToState((...args) => __awaiter$t(this, void 0, void 0, function* () {
3832
+ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$u(this, void 0, void 0, function* () {
3833
3833
  // createCallAgent will throw an exception if the previous callAgent was not disposed. If the previous
3834
3834
  // callAgent was disposed then it would have unsubscribed to events so we can just create a new declarative
3835
3835
  // callAgent if the createCallAgent succeeds.
@@ -3842,7 +3842,7 @@ class ProxyCallClient {
3842
3842
  }), 'CallClient.createCallAgent');
3843
3843
  }
3844
3844
  case 'createTeamsCallAgent': {
3845
- /* @conditional-compile-remove(teams-identity-support) */ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$t(this, void 0, void 0, function* () {
3845
+ /* @conditional-compile-remove(teams-identity-support) */ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$u(this, void 0, void 0, function* () {
3846
3846
  // createCallAgent will throw an exception if the previous callAgent was not disposed. If the previous
3847
3847
  // callAgent was disposed then it would have unsubscribed to events so we can just create a new declarative
3848
3848
  // callAgent if the createCallAgent succeeds.
@@ -3855,7 +3855,7 @@ class ProxyCallClient {
3855
3855
  }), 'CallClient.createTeamsCallAgent');
3856
3856
  }
3857
3857
  case 'getDeviceManager': {
3858
- return this._context.withAsyncErrorTeedToState(() => __awaiter$t(this, void 0, void 0, function* () {
3858
+ return this._context.withAsyncErrorTeedToState(() => __awaiter$u(this, void 0, void 0, function* () {
3859
3859
  // As of writing, the SDK always returns the same instance of DeviceManager so we keep a reference of
3860
3860
  // DeviceManager and if it does not change we return the cached DeclarativeDeviceManager. If it does not we'll
3861
3861
  // throw an error that indicate we need to fix this issue as our implementation has diverged from the SDK.
@@ -3884,7 +3884,7 @@ class ProxyCallClient {
3884
3884
  /**
3885
3885
  * add to this object if we want to proxy anything else off the DebugInfo feature object.
3886
3886
  */
3887
- return Object.assign(Object.assign({}, feature), { getEnvironmentInfo: () => __awaiter$t(this, void 0, void 0, function* () {
3887
+ return Object.assign(Object.assign({}, feature), { getEnvironmentInfo: () => __awaiter$u(this, void 0, void 0, function* () {
3888
3888
  const environmentInfo = yield feature.getEnvironmentInfo();
3889
3889
  this._context.setEnvironmentInfo(environmentInfo);
3890
3890
  return environmentInfo;
@@ -3937,7 +3937,7 @@ const createStatefulCallClientWithDeps = (callClient, context, internalContext)
3937
3937
  });
3938
3938
  Object.defineProperty(callClient, 'createView', {
3939
3939
  configurable: false,
3940
- value: (callId, participantId, stream, options) => __awaiter$t(void 0, void 0, void 0, function* () {
3940
+ value: (callId, participantId, stream, options) => __awaiter$u(void 0, void 0, void 0, function* () {
3941
3941
  const participantIdKind = participantId ? communicationCommon.getIdentifierKind(participantId) : undefined;
3942
3942
  const result = yield createView(context, internalContext, callId, participantIdKind, stream, options);
3943
3943
  // We only need to declaratify the VideoStreamRendererView object for remote participants. Because the updateScalingMode only needs to be called on remote participant stream views.
@@ -4676,6 +4676,25 @@ const customIconName = {
4676
4676
  const isValidString = (string) => {
4677
4677
  return !!string && string.length > 0;
4678
4678
  };
4679
+ /**
4680
+ * Chunk an array into rows of a given size.
4681
+ * @private
4682
+ */
4683
+ function chunk(options, itemsPerRow) {
4684
+ const rows = [];
4685
+ let currentRow = [];
4686
+ for (const option of options) {
4687
+ currentRow.push(option);
4688
+ if (currentRow.length === itemsPerRow) {
4689
+ rows.push(currentRow);
4690
+ currentRow = [];
4691
+ }
4692
+ }
4693
+ if (currentRow.length > 0) {
4694
+ rows.push(currentRow);
4695
+ }
4696
+ return rows;
4697
+ }
4679
4698
 
4680
4699
  // Copyright (c) Microsoft Corporation.
4681
4700
  /**
@@ -6868,7 +6887,7 @@ const chatMessageActionMenuProps = (menuProps) => {
6868
6887
  return actionMenuProps;
6869
6888
  };
6870
6889
 
6871
- var __awaiter$s = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
6890
+ var __awaiter$t = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
6872
6891
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
6873
6892
  return new (P || (P = Promise))(function (resolve, reject) {
6874
6893
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -6893,7 +6912,7 @@ const _FileDownloadCards = (props) => {
6893
6912
  var _a, _b;
6894
6913
  return (_b = (_a = props.strings) === null || _a === void 0 ? void 0 : _a.downloadFile) !== null && _b !== void 0 ? _b : localeStrings.downloadFile;
6895
6914
  }, [(_a = props.strings) === null || _a === void 0 ? void 0 : _a.downloadFile, localeStrings.downloadFile]);
6896
- const fileDownloadHandler = React.useCallback((userId, file) => __awaiter$s(void 0, void 0, void 0, function* () {
6915
+ const fileDownloadHandler = React.useCallback((userId, file) => __awaiter$t(void 0, void 0, void 0, function* () {
6897
6916
  if (!props.downloadHandler) {
6898
6917
  window.open(file.url, '_blank', 'noopener,noreferrer');
6899
6918
  }
@@ -7054,7 +7073,7 @@ const ChatMessageComponentAsMessageBubble = React__default['default'].memo(Messa
7054
7073
 
7055
7074
  // Copyright (c) Microsoft Corporation.
7056
7075
  // Licensed under the MIT license.
7057
- var __awaiter$r = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
7076
+ var __awaiter$s = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
7058
7077
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
7059
7078
  return new (P || (P = Promise))(function (resolve, reject) {
7060
7079
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -7086,7 +7105,7 @@ const ChatMessageComponent = (props) => {
7086
7105
  onSendMessage && onSendMessage(content !== undefined ? content : '');
7087
7106
  }, [clientMessageId, content, onSendMessage, onDeleteMessage]);
7088
7107
  if (isEditing && message.messageType === 'chat') {
7089
- return (React__default['default'].createElement(ChatMessageComponentAsEditBox, { message: message, inlineEditButtons: props.inlineAcceptRejectEditButtons, strings: props.strings, onSubmit: (text, metadata, options) => __awaiter$r(void 0, void 0, void 0, function* () {
7108
+ return (React__default['default'].createElement(ChatMessageComponentAsEditBox, { message: message, inlineEditButtons: props.inlineAcceptRejectEditButtons, strings: props.strings, onSubmit: (text, metadata, options) => __awaiter$s(void 0, void 0, void 0, function* () {
7090
7109
  props.onUpdateMessage &&
7091
7110
  message.messageId &&
7092
7111
  (yield props.onUpdateMessage(message.messageId, text, metadata, options));
@@ -7192,7 +7211,7 @@ var getParticipantsWhoHaveReadMessage = (message, readReceiptsBySenderId) => {
7192
7211
 
7193
7212
  // Copyright (c) Microsoft Corporation.
7194
7213
  // Licensed under the MIT license.
7195
- var __awaiter$q = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
7214
+ var __awaiter$r = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
7196
7215
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
7197
7216
  return new (P || (P = Promise))(function (resolve, reject) {
7198
7217
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -7441,7 +7460,7 @@ const MessageThread = (props) => {
7441
7460
  setChatMessagesInitialized(chatMessagesInitialized);
7442
7461
  };
7443
7462
  // we try to only send those message status if user is scrolled to the bottom.
7444
- const sendMessageStatusIfAtBottom = React.useCallback(() => __awaiter$q(void 0, void 0, void 0, function* () {
7463
+ const sendMessageStatusIfAtBottom = React.useCallback(() => __awaiter$r(void 0, void 0, void 0, function* () {
7445
7464
  if (!isAtBottomOfScrollRef.current ||
7446
7465
  !document.hasFocus() ||
7447
7466
  !messagesRef.current ||
@@ -7492,7 +7511,7 @@ const MessageThread = (props) => {
7492
7511
  setIsAtBottomOfScrollRef(atBottom);
7493
7512
  }, [scrollToBottom, sendMessageStatusIfAtBottom]);
7494
7513
  // Infinite scrolling + threadInitialize function
7495
- const fetchNewMessageWhenAtTop = React.useCallback(() => __awaiter$q(void 0, void 0, void 0, function* () {
7514
+ const fetchNewMessageWhenAtTop = React.useCallback(() => __awaiter$r(void 0, void 0, void 0, function* () {
7496
7515
  if (!isLoadingChatMessagesRef.current) {
7497
7516
  if (onLoadPreviousChatMessages) {
7498
7517
  isLoadingChatMessagesRef.current = true;
@@ -11818,7 +11837,7 @@ const DevicesButton = (props) => {
11818
11837
 
11819
11838
  // Copyright (c) Microsoft Corporation.
11820
11839
  // Licensed under the MIT license.
11821
- var __awaiter$p = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
11840
+ var __awaiter$q = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
11822
11841
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
11823
11842
  return new (P || (P = Promise))(function (resolve, reject) {
11824
11843
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -11856,7 +11875,7 @@ const CameraButton = (props) => {
11856
11875
  const toggleAnnouncerString = React.useCallback((isCameraOn) => {
11857
11876
  setAnnouncerString(!isCameraOn ? strings.cameraActionTurnedOffAnnouncement : strings.cameraActionTurnedOnAnnouncement);
11858
11877
  }, [strings.cameraActionTurnedOffAnnouncement, strings.cameraActionTurnedOnAnnouncement]);
11859
- const onToggleClick = React.useCallback(() => __awaiter$p(void 0, void 0, void 0, function* () {
11878
+ const onToggleClick = React.useCallback(() => __awaiter$q(void 0, void 0, void 0, function* () {
11860
11879
  // Throttle click on camera, need to await onToggleCamera then allow another click
11861
11880
  if (onToggleCamera) {
11862
11881
  setWaitForCamera(true);
@@ -12021,7 +12040,7 @@ const lightThemeCallButtonStyles = {
12021
12040
 
12022
12041
  // Copyright (c) Microsoft Corporation.
12023
12042
  // Licensed under the MIT license.
12024
- var __awaiter$o = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
12043
+ var __awaiter$p = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
12025
12044
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
12026
12045
  return new (P || (P = Promise))(function (resolve, reject) {
12027
12046
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -12062,7 +12081,7 @@ const MicrophoneButton = (props) => {
12062
12081
  const toggleAnnouncerString = React.useCallback((isMicOn) => {
12063
12082
  setAnnouncerString(!isMicOn ? strings.microphoneActionTurnedOffAnnouncement : strings.microphoneActionTurnedOnAnnouncement);
12064
12083
  }, [strings.microphoneActionTurnedOffAnnouncement, strings.microphoneActionTurnedOnAnnouncement]);
12065
- const onToggleClick = React.useCallback(() => __awaiter$o(void 0, void 0, void 0, function* () {
12084
+ const onToggleClick = React.useCallback(() => __awaiter$p(void 0, void 0, void 0, function* () {
12066
12085
  if (onToggleMicrophone) {
12067
12086
  try {
12068
12087
  yield onToggleMicrophone();
@@ -12950,7 +12969,7 @@ const formatPhoneNumber = (phoneNumber) => {
12950
12969
 
12951
12970
  // Copyright (c) Microsoft Corporation.
12952
12971
  // Licensed under the MIT license.
12953
- var __awaiter$n = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
12972
+ var __awaiter$o = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
12954
12973
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
12955
12974
  return new (P || (P = Promise))(function (resolve, reject) {
12956
12975
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -12992,10 +13011,10 @@ const DialpadButton = (props) => {
12992
13011
  const theme = react.useTheme();
12993
13012
  const { digit, index, onClick, onLongPress, isMobile = false } = props;
12994
13013
  const useLongPressProps = React__default['default'].useMemo(() => ({
12995
- onClick: () => __awaiter$n(void 0, void 0, void 0, function* () {
13014
+ onClick: () => __awaiter$o(void 0, void 0, void 0, function* () {
12996
13015
  onClick(digit, index);
12997
13016
  }),
12998
- onLongPress: () => __awaiter$n(void 0, void 0, void 0, function* () {
13017
+ onLongPress: () => __awaiter$o(void 0, void 0, void 0, function* () {
12999
13018
  onLongPress(digit, index);
13000
13019
  }),
13001
13020
  touchEventsOnly: isMobile
@@ -13380,6 +13399,121 @@ const _DevicePermissionDropdown = (props) => {
13380
13399
  }, options: options !== null && options !== void 0 ? options : [], styles: styles }));
13381
13400
  };
13382
13401
 
13402
+ // Copyright (c) Microsoft Corporation.
13403
+ /**
13404
+ * A component for displaying a Video Background Effect Option.
13405
+ *
13406
+ * @internal
13407
+ */
13408
+ const _VideoEffectsItem = (props) => {
13409
+ var _a, _b, _c, _d, _e, _f;
13410
+ const theme = react.useTheme();
13411
+ const isSelected = (_a = props.isSelected) !== null && _a !== void 0 ? _a : false;
13412
+ const disabled = (_b = props.disabled) !== null && _b !== void 0 ? _b : false;
13413
+ const backgroundImage = (_c = props.backgroundProps) === null || _c === void 0 ? void 0 : _c.url;
13414
+ const containerStyles = React.useCallback(() => videoEffectsItemContainerStyles({
13415
+ theme,
13416
+ isSelected,
13417
+ disabled,
13418
+ backgroundImage,
13419
+ backgroundPosition,
13420
+ backgroundSize
13421
+ }), [backgroundImage, disabled, isSelected, theme]);
13422
+ return (React__default['default'].createElement(react.TooltipHost, Object.assign({}, props.tooltipProps),
13423
+ React__default['default'].createElement(react.Stack, { key: props.key, className: react.mergeStyles((_d = props.styles) === null || _d === void 0 ? void 0 : _d.root), verticalAlign: "center", horizontalAlign: "center", styles: containerStyles, onClick: disabled ? undefined : () => { var _a; return (_a = props.onSelect) === null || _a === void 0 ? void 0 : _a.call(props, props.key); }, onKeyDown: disabled
13424
+ ? undefined
13425
+ : (e) => {
13426
+ var _a;
13427
+ if (e.key === 'Enter' || e.key === ' ') {
13428
+ (_a = props.onSelect) === null || _a === void 0 ? void 0 : _a.call(props, props.key);
13429
+ }
13430
+ }, tabIndex: props.disabled ? -1 : 0, "aria-label": props.ariaLabel, "aria-disabled": props.disabled, role: "button" },
13431
+ props.iconProps && (React__default['default'].createElement(react.Stack.Item, { styles: { root: (_e = props.styles) === null || _e === void 0 ? void 0 : _e.iconContainer } },
13432
+ React__default['default'].createElement(react.Icon, Object.assign({}, props.iconProps)))),
13433
+ props.title && (React__default['default'].createElement(react.Stack.Item, { styles: { root: (_f = props.styles) === null || _f === void 0 ? void 0 : _f.textContainer } },
13434
+ React__default['default'].createElement(react.Text, { variant: "small" }, props.title))))));
13435
+ };
13436
+ const backgroundPosition = 'center';
13437
+ const backgroundSize = 'cover';
13438
+ const videoEffectsItemContainerStyles = (args) => {
13439
+ const borderDefaultThickness = '1px';
13440
+ const borderActiveThickness = '2px';
13441
+ return {
13442
+ root: {
13443
+ background: args.disabled ? args.theme.palette.neutralQuaternaryAlt : undefined,
13444
+ backgroundImage: args.backgroundImage ? `url(${args.backgroundImage})` : undefined,
13445
+ backgroundPosition: args.backgroundPosition,
13446
+ backgroundSize: args.backgroundSize,
13447
+ borderRadius: '0.25rem',
13448
+ color: args.theme.palette.neutralPrimary,
13449
+ cursor: args.disabled ? 'default' : 'pointer',
13450
+ height: '3.375rem',
13451
+ position: 'relative',
13452
+ width: '4.83rem',
13453
+ // Use :after to display a border element. This is used to prevent the background image
13454
+ // resizing when the border thichkness is changed. We also want the border to be inside
13455
+ // the frame of the container, i.e. we want it to expand inwards and not outwards when
13456
+ // border thickness changes from hover/selection.
13457
+ ':after': {
13458
+ content: '""',
13459
+ position: 'absolute',
13460
+ boxSizing: 'border-box',
13461
+ border: args.isSelected
13462
+ ? `${borderActiveThickness} solid ${args.theme.palette.themePrimary}`
13463
+ : `${borderDefaultThickness} solid ${args.theme.palette.neutralQuaternaryAlt}`,
13464
+ height: '100%',
13465
+ width: '100%',
13466
+ borderRadius: '0.25rem'
13467
+ },
13468
+ ':hover': {
13469
+ ':after': {
13470
+ border: args.disabled && !args.isSelected
13471
+ ? `${borderDefaultThickness} solid ${args.theme.palette.neutralQuaternaryAlt}`
13472
+ : `${borderActiveThickness} solid ${args.theme.palette.themePrimary}`
13473
+ }
13474
+ }
13475
+ }
13476
+ };
13477
+ };
13478
+
13479
+ // Copyright (c) Microsoft Corporation.
13480
+ /**
13481
+ * Picker for choosing a Video Background Effect.
13482
+ *
13483
+ * @remarks
13484
+ * This functions similar to a radio group of buttons, where the user can select one of the options.
13485
+ *
13486
+ * @internal
13487
+ */
13488
+ const _VideoBackgroundEffectsPicker = (props) => {
13489
+ var _a, _b, _c;
13490
+ const [componentControlledSelectedEffectKey, setComponentControlledSelectedEffectKey] = React__default['default'].useState(props.defaultSelectedEffectKey);
13491
+ // Warn the developer if they use the component in an incorrect controlled way.
13492
+ reactHooks.useWarnings({
13493
+ name: 'VideoBackgroundEffectsPicker',
13494
+ props,
13495
+ controlledUsage: {
13496
+ onChangeProp: 'onChange',
13497
+ valueProp: 'selectedEffectKey',
13498
+ defaultValueProp: 'defaultSelectedEffectKey'
13499
+ }
13500
+ });
13501
+ const selectedEffect = (_a = props.selectedEffectKey) !== null && _a !== void 0 ? _a : componentControlledSelectedEffectKey;
13502
+ const setSelectedEffect = (selectedEffectKey) => {
13503
+ var _a;
13504
+ setComponentControlledSelectedEffectKey(selectedEffectKey);
13505
+ (_a = props.onChange) === null || _a === void 0 ? void 0 : _a.call(props, selectedEffectKey);
13506
+ };
13507
+ const convertedOptions = props.options.map((option) => (Object.assign({ isSelected: option.key === selectedEffect, onSelect: () => setSelectedEffect(option.key) }, option)));
13508
+ const optionsByRow = props.itemsPerRow === 'wrap' ? [convertedOptions] : chunk(convertedOptions, (_b = props.itemsPerRow) !== null && _b !== void 0 ? _b : 3);
13509
+ return (React__default['default'].createElement(react.Stack, { tokens: { childrenGap: '0.5rem' } },
13510
+ React__default['default'].createElement(react.Label, { className: react.mergeStyles((_c = props.styles) === null || _c === void 0 ? void 0 : _c.label) }, props.label),
13511
+ optionsByRow.map((options, rowIndex) => {
13512
+ var _a;
13513
+ return (React__default['default'].createElement(react.Stack, { className: react.mergeStyles((_a = props.styles) === null || _a === void 0 ? void 0 : _a.rowRoot), wrap: props.itemsPerRow === 'wrap', horizontal: true, key: rowIndex, tokens: { childrenGap: '0.5rem' } }, options.map((option) => (React__default['default'].createElement(_VideoEffectsItem, Object.assign({}, option, { key: option.key }))))));
13514
+ })));
13515
+ };
13516
+
13383
13517
  // Copyright (c) Microsoft Corporation.
13384
13518
  /**
13385
13519
  * @private
@@ -13952,7 +14086,7 @@ const findConditionalCompiledSelector = (component) => {
13952
14086
 
13953
14087
  // Copyright (c) Microsoft Corporation.
13954
14088
  // Licensed under the MIT license.
13955
- var __awaiter$m = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
14089
+ var __awaiter$n = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
13956
14090
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
13957
14091
  return new (P || (P = Promise))(function (resolve, reject) {
13958
14092
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -13975,35 +14109,35 @@ const createDefaultChatHandlers = memoizeOne__default['default']((chatClient, ch
13975
14109
  let messageIterator = undefined;
13976
14110
  let readReceiptIterator = undefined;
13977
14111
  return {
13978
- onSendMessage: (content, options) => __awaiter$m(void 0, void 0, void 0, function* () {
14112
+ onSendMessage: (content, options) => __awaiter$n(void 0, void 0, void 0, function* () {
13979
14113
  const sendMessageRequest = {
13980
14114
  content,
13981
14115
  senderDisplayName: chatClient.getState().displayName
13982
14116
  };
13983
14117
  yield chatThreadClient.sendMessage(sendMessageRequest, options);
13984
14118
  }),
13985
- onUpdateMessage: (messageId, content, metadata, options) => __awaiter$m(void 0, void 0, void 0, function* () {
14119
+ onUpdateMessage: (messageId, content, metadata, options) => __awaiter$n(void 0, void 0, void 0, function* () {
13986
14120
  const updatedMetadata = metadata ? Object.assign({}, metadata) : {};
13987
14121
  updatedMetadata['fileSharingMetadata'] = JSON.stringify((options === null || options === void 0 ? void 0 : options.attachedFilesMetadata) || []);
13988
14122
  yield chatThreadClient.updateMessage(messageId, { content, metadata: updatedMetadata });
13989
14123
  }),
13990
- onDeleteMessage: (messageId) => __awaiter$m(void 0, void 0, void 0, function* () {
14124
+ onDeleteMessage: (messageId) => __awaiter$n(void 0, void 0, void 0, function* () {
13991
14125
  yield chatThreadClient.deleteMessage(messageId);
13992
14126
  }),
13993
14127
  // This handler is designed for chatThread to consume
13994
- onMessageSeen: (chatMessageId) => __awaiter$m(void 0, void 0, void 0, function* () {
14128
+ onMessageSeen: (chatMessageId) => __awaiter$n(void 0, void 0, void 0, function* () {
13995
14129
  yield chatThreadClient.sendReadReceipt({ chatMessageId });
13996
14130
  }),
13997
- onTyping: () => __awaiter$m(void 0, void 0, void 0, function* () {
14131
+ onTyping: () => __awaiter$n(void 0, void 0, void 0, function* () {
13998
14132
  yield chatThreadClient.sendTypingNotification();
13999
14133
  }),
14000
- onRemoveParticipant: (userId) => __awaiter$m(void 0, void 0, void 0, function* () {
14134
+ onRemoveParticipant: (userId) => __awaiter$n(void 0, void 0, void 0, function* () {
14001
14135
  yield chatThreadClient.removeParticipant(fromFlatCommunicationIdentifier(userId));
14002
14136
  }),
14003
- updateThreadTopicName: (topicName) => __awaiter$m(void 0, void 0, void 0, function* () {
14137
+ updateThreadTopicName: (topicName) => __awaiter$n(void 0, void 0, void 0, function* () {
14004
14138
  yield chatThreadClient.updateTopic(topicName);
14005
14139
  }),
14006
- onLoadPreviousChatMessages: (messagesToLoad) => __awaiter$m(void 0, void 0, void 0, function* () {
14140
+ onLoadPreviousChatMessages: (messagesToLoad) => __awaiter$n(void 0, void 0, void 0, function* () {
14007
14141
  var _a, _b, _c;
14008
14142
  if (messageIterator === undefined) {
14009
14143
  // Lazy definition so that errors in the method call are reported correctly.
@@ -14775,7 +14909,7 @@ const chatStatefulLogger = logger.createClientLogger('communication-react:chat-s
14775
14909
 
14776
14910
  // Copyright (c) Microsoft Corporation.
14777
14911
  // Licensed under the MIT license.
14778
- var __awaiter$l = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
14912
+ var __awaiter$m = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
14779
14913
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
14780
14914
  return new (P || (P = Promise))(function (resolve, reject) {
14781
14915
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -15050,7 +15184,7 @@ class ChatContext$1 {
15050
15184
  * @throws ChatError. Exceptions thrown from `f` are tagged with the failed `target.
15051
15185
  */
15052
15186
  withAsyncErrorTeedToState(f, target) {
15053
- return (...args) => __awaiter$l(this, void 0, void 0, function* () {
15187
+ return (...args) => __awaiter$m(this, void 0, void 0, function* () {
15054
15188
  try {
15055
15189
  return yield f(...args);
15056
15190
  }
@@ -15162,7 +15296,7 @@ const convertChatMessage = (message, status = 'delivered', clientMessageId) => {
15162
15296
 
15163
15297
  // Copyright (c) Microsoft Corporation.
15164
15298
  // Licensed under the MIT license.
15165
- var __awaiter$k = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
15299
+ var __awaiter$l = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
15166
15300
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15167
15301
  return new (P || (P = Promise))(function (resolve, reject) {
15168
15302
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -15247,7 +15381,7 @@ class EventSubscriber {
15247
15381
  };
15248
15382
  // This is a temporary fix that no participant message is received for onChatMessageReceived event, which should be handled by JS SDK.
15249
15383
  // Without the temporary fix, there are missing 'participant joined' and 'participant left' system messages in the chat thread.
15250
- this.fetchLastParticipantMessage = (threadId, actionType) => __awaiter$k(this, void 0, void 0, function* () {
15384
+ this.fetchLastParticipantMessage = (threadId, actionType) => __awaiter$l(this, void 0, void 0, function* () {
15251
15385
  var e_1, _a;
15252
15386
  try {
15253
15387
  for (var _b = __asyncValues$1(this.chatClient
@@ -15339,7 +15473,7 @@ class EventSubscriber {
15339
15473
 
15340
15474
  // Copyright (c) Microsoft Corporation.
15341
15475
  // Licensed under the MIT license.
15342
- var __awaiter$j = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
15476
+ var __awaiter$k = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
15343
15477
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15344
15478
  return new (P || (P = Promise))(function (resolve, reject) {
15345
15479
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -15361,7 +15495,7 @@ const createDecoratedIterator = (iteratorCreator, context, decorateFn) => {
15361
15495
  const threadsIterator = iteratorCreator(...args);
15362
15496
  return {
15363
15497
  next() {
15364
- return __awaiter$j(this, void 0, void 0, function* () {
15498
+ return __awaiter$k(this, void 0, void 0, function* () {
15365
15499
  const result = yield threadsIterator.next();
15366
15500
  if (!result.done && result.value) {
15367
15501
  decorateFn(result.value, context);
@@ -15376,7 +15510,7 @@ const createDecoratedIterator = (iteratorCreator, context, decorateFn) => {
15376
15510
  const pages = threadsIterator.byPage(settings);
15377
15511
  return {
15378
15512
  next() {
15379
- return __awaiter$j(this, void 0, void 0, function* () {
15513
+ return __awaiter$k(this, void 0, void 0, function* () {
15380
15514
  const result = yield pages.next();
15381
15515
  const page = result.value;
15382
15516
  if (!result.done && result.value) {
@@ -15460,7 +15594,7 @@ const createDecoratedListParticipants = (chatThreadClient, context) => {
15460
15594
 
15461
15595
  // Copyright (c) Microsoft Corporation.
15462
15596
  // Licensed under the MIT license.
15463
- var __awaiter$i = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
15597
+ var __awaiter$j = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
15464
15598
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15465
15599
  return new (P || (P = Promise))(function (resolve, reject) {
15466
15600
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -15479,14 +15613,14 @@ class ProxyChatThreadClient {
15479
15613
  return createDecoratedListMessages(chatThreadClient, this._context);
15480
15614
  }
15481
15615
  case 'getMessage': {
15482
- return this._context.withAsyncErrorTeedToState((...args) => __awaiter$i(this, void 0, void 0, function* () {
15616
+ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$j(this, void 0, void 0, function* () {
15483
15617
  const message = yield chatThreadClient.getMessage(...args);
15484
15618
  this._context.setChatMessage(chatThreadClient.threadId, convertChatMessage(message));
15485
15619
  return message;
15486
15620
  }), 'ChatThreadClient.getMessage');
15487
15621
  }
15488
15622
  case 'sendMessage': {
15489
- return this._context.withAsyncErrorTeedToState((...args) => __awaiter$i(this, void 0, void 0, function* () {
15623
+ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$j(this, void 0, void 0, function* () {
15490
15624
  // Retry logic?
15491
15625
  const [request, options] = args;
15492
15626
  const { content } = request;
@@ -15526,7 +15660,7 @@ class ProxyChatThreadClient {
15526
15660
  }), 'ChatThreadClient.sendMessage');
15527
15661
  }
15528
15662
  case 'addParticipants': {
15529
- return this._context.withAsyncErrorTeedToState((...args) => __awaiter$i(this, void 0, void 0, function* () {
15663
+ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$j(this, void 0, void 0, function* () {
15530
15664
  const result = yield chatThreadClient.addParticipants(...args);
15531
15665
  const [addRequest] = args;
15532
15666
  const participantsToAdd = addRequest.participants;
@@ -15535,7 +15669,7 @@ class ProxyChatThreadClient {
15535
15669
  }), 'ChatThreadClient.addParticipants');
15536
15670
  }
15537
15671
  case 'deleteMessage': {
15538
- return this._context.withAsyncErrorTeedToState((...args) => __awaiter$i(this, void 0, void 0, function* () {
15672
+ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$j(this, void 0, void 0, function* () {
15539
15673
  // DeleteMessage is able to either delete local one(for failed message) or synced message
15540
15674
  const [messageId] = args;
15541
15675
  if (this._context.deleteLocalMessage(chatThreadClient.threadId, messageId)) {
@@ -15553,12 +15687,12 @@ class ProxyChatThreadClient {
15553
15687
  return createDecoratedListReadReceipts(chatThreadClient, this._context);
15554
15688
  }
15555
15689
  case 'sendTypingNotification': {
15556
- return this._context.withAsyncErrorTeedToState((...args) => __awaiter$i(this, void 0, void 0, function* () {
15690
+ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$j(this, void 0, void 0, function* () {
15557
15691
  return yield chatThreadClient.sendTypingNotification(...args);
15558
15692
  }), 'ChatThreadClient.sendTypingNotification');
15559
15693
  }
15560
15694
  case 'removeParticipant': {
15561
- return this._context.withAsyncErrorTeedToState((...args) => __awaiter$i(this, void 0, void 0, function* () {
15695
+ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$j(this, void 0, void 0, function* () {
15562
15696
  const result = yield chatThreadClient.removeParticipant(...args);
15563
15697
  const [removeIdentifier] = args;
15564
15698
  this._context.deleteParticipant(chatThreadClient.threadId, communicationCommon.getIdentifierKind(removeIdentifier));
@@ -15566,7 +15700,7 @@ class ProxyChatThreadClient {
15566
15700
  }), 'ChatThreadClient.removeParticipant');
15567
15701
  }
15568
15702
  case 'updateMessage': {
15569
- return this._context.withAsyncErrorTeedToState((...args) => __awaiter$i(this, void 0, void 0, function* () {
15703
+ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$j(this, void 0, void 0, function* () {
15570
15704
  const result = yield chatThreadClient.updateMessage(...args);
15571
15705
  const [messageId, updateOption] = args;
15572
15706
  this._context.updateChatMessageContent(chatThreadClient.threadId, messageId, updateOption === null || updateOption === void 0 ? void 0 : updateOption.content);
@@ -15574,7 +15708,7 @@ class ProxyChatThreadClient {
15574
15708
  }), 'ChatThreadClient.updateMessage');
15575
15709
  }
15576
15710
  case 'updateTopic': {
15577
- return this._context.withAsyncErrorTeedToState((...args) => __awaiter$i(this, void 0, void 0, function* () {
15711
+ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$j(this, void 0, void 0, function* () {
15578
15712
  const result = yield chatThreadClient.updateTopic(...args);
15579
15713
  const [topic] = args;
15580
15714
  this._context.updateThreadTopic(chatThreadClient.threadId, topic);
@@ -15582,7 +15716,7 @@ class ProxyChatThreadClient {
15582
15716
  }), 'ChatThreadClient.updateTopic');
15583
15717
  }
15584
15718
  case 'getProperties': {
15585
- return this._context.withAsyncErrorTeedToState((...args) => __awaiter$i(this, void 0, void 0, function* () {
15719
+ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$j(this, void 0, void 0, function* () {
15586
15720
  const result = yield chatThreadClient.getProperties(...args);
15587
15721
  this._context.updateThread(chatThreadClient.threadId, result);
15588
15722
  return result;
@@ -15619,7 +15753,7 @@ const createDecoratedListThreads = (chatClient, context) => {
15619
15753
 
15620
15754
  // Copyright (c) Microsoft Corporation.
15621
15755
  // Licensed under the MIT license.
15622
- var __awaiter$h = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
15756
+ var __awaiter$i = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
15623
15757
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15624
15758
  return new (P || (P = Promise))(function (resolve, reject) {
15625
15759
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -15638,7 +15772,7 @@ const proxyChatClient = {
15638
15772
  switch (prop) {
15639
15773
  case 'createChatThread': {
15640
15774
  return context.withAsyncErrorTeedToState(function (...args) {
15641
- return __awaiter$h(this, void 0, void 0, function* () {
15775
+ return __awaiter$i(this, void 0, void 0, function* () {
15642
15776
  const result = yield chatClient.createChatThread(...args);
15643
15777
  const thread = result.chatThread;
15644
15778
  if (thread) {
@@ -15651,7 +15785,7 @@ const proxyChatClient = {
15651
15785
  }
15652
15786
  case 'deleteChatThread': {
15653
15787
  return context.withAsyncErrorTeedToState(function (...args) {
15654
- return __awaiter$h(this, void 0, void 0, function* () {
15788
+ return __awaiter$i(this, void 0, void 0, function* () {
15655
15789
  const result = yield chatClient.deleteChatThread(...args);
15656
15790
  context.deleteThread(args[0]);
15657
15791
  return result;
@@ -15671,7 +15805,7 @@ const proxyChatClient = {
15671
15805
  }
15672
15806
  case 'startRealtimeNotifications': {
15673
15807
  return context.withAsyncErrorTeedToState(function (...args) {
15674
- return __awaiter$h(this, void 0, void 0, function* () {
15808
+ return __awaiter$i(this, void 0, void 0, function* () {
15675
15809
  const ret = yield chatClient.startRealtimeNotifications(...args);
15676
15810
  if (!receiver.eventSubscriber) {
15677
15811
  receiver.eventSubscriber = new EventSubscriber(chatClient, context);
@@ -15682,7 +15816,7 @@ const proxyChatClient = {
15682
15816
  }
15683
15817
  case 'stopRealtimeNotifications': {
15684
15818
  return context.withAsyncErrorTeedToState(function (...args) {
15685
- return __awaiter$h(this, void 0, void 0, function* () {
15819
+ return __awaiter$i(this, void 0, void 0, function* () {
15686
15820
  const ret = yield chatClient.stopRealtimeNotifications(...args);
15687
15821
  if (receiver.eventSubscriber) {
15688
15822
  receiver.eventSubscriber.unsubscribe();
@@ -15838,7 +15972,11 @@ const COMPOSITE_ONLY_ICONS = {
15838
15972
  /* @conditional-compile-remove(PSTN-calls) */
15839
15973
  DialpadStartCall: React__default['default'].createElement(reactIcons.Call20Regular, null),
15840
15974
  /* @conditional-compile-remove(rooms) */
15841
- NoticePageInvalidRoom: React__default['default'].createElement(reactIcons.Info20Filled, null)
15975
+ NoticePageInvalidRoom: React__default['default'].createElement(reactIcons.Info20Filled, null),
15976
+ /* @conditional-compile-remove(video-background-effects) */
15977
+ BlurVideoBackground: React__default['default'].createElement(reactIcons.VideoBackgroundEffect20Regular, null),
15978
+ /* @conditional-compile-remove(video-background-effects) */
15979
+ RemoveVideoBackgroundEffect: React__default['default'].createElement(reactIcons.VideoPerson20Filled, null)
15842
15980
  };
15843
15981
  /**
15844
15982
  * The default set of icons that are available to used in the Composites.
@@ -15871,7 +16009,7 @@ const CallCompositeIcon = (props) => (React__default['default'].createElement(re
15871
16009
  */
15872
16010
  const CallWithChatCompositeIcon = (props) => (React__default['default'].createElement(react.FontIcon, Object.assign({}, props)));
15873
16011
 
15874
- var call$d={cameraLabel:"Camera",noCamerasLabel:"No cameras found",cameraPermissionDenied:"Your browser is blocking access to your camera",cameraTurnedOff:"Your camera is turned off",chatButtonLabel:"Chat",close:"Close",complianceBannerNowOnlyRecording:"You are now only recording this meeting.",complianceBannerNowOnlyTranscription:"You are now only transcribing this meeting.",complianceBannerRecordingAndTranscriptionSaved:"Recording and transcription are being saved.",complianceBannerRecordingAndTranscriptionStarted:"Recording and transcription have started.",complianceBannerRecordingAndTranscriptionStopped:"Recording and transcription have stopped.",complianceBannerRecordingSaving:"Recording is being saved.",complianceBannerRecordingStarted:"Recording has started.",complianceBannerRecordingStopped:"Recording has stopped.",complianceBannerTranscriptionStarted:"Transcription has started.",complianceBannerTranscriptionConsent:"By joining, you are giving consent for this meeting to be transcribed.",complianceBannerTranscriptionSaving:"Transcription is being saved.",complianceBannerTranscriptionStopped:"Transcription has stopped.",configurationPageTitle:"Start a call",copyInviteLinkButtonLabel:"Copy invite link",copyInviteLinkActionedAriaLabel:"Invite link copied",defaultPlaceHolder:"Select an option",dismissSidePaneButtonLabel:"Close",failedToJoinCallDueToNoNetworkMoreDetails:"Call was disconnected due to a network issue. Check your connection and join again.",failedToJoinCallDueToNoNetworkTitle:"Call disconnected",failedToJoinTeamsMeetingReasonAccessDeniedMoreDetails:"You were not granted entry in the call. If this was a mistake, re-join the call.",failedToJoinTeamsMeetingReasonAccessDeniedTitle:"Dismissed from lobby",learnMore:"Learn more",leftCallMoreDetails:"If this was a mistake, re-join the call.",leftCallTitle:"You left the call",lobbyScreenConnectingToCallTitle:"Joining call",lobbyScreenWaitingToBeAdmittedTitle:"Waiting to be admitted",microphonePermissionDenied:"Your browser is blocking access to your microphone",microphoneToggleInLobbyNotAllowed:"Cannot mute or unmute while in lobby.",mutedMessage:"You're muted",networkReconnectMoreDetails:"Looks like something went wrong. We're trying to get back into the call.",networkReconnectTitle:"Hold on",deniedPermissionToRoomDetails:"You do not have permission to join this room.",deniedPermissionToRoomTitle:"Permission denied to room",peopleButtonLabel:"People",peoplePaneTitle:"People",peopleButtonTooltipOpen:"Show participants",peopleButtonTooltipClose:"Hide participants",peoplePaneSubTitle:"In this call",privacyPolicy:"Privacy policy",rejoinCallButtonLabel:"Re-join call",removedFromCallMoreDetails:"Another participant removed you from the call.",removedFromCallTitle:"You were removed",removeMenuLabel:"Remove",returnToCallButtonAriaDescription:"Return to Call",returnToCallButtonAriaLabel:"Back",roomNotFoundDetails:"Room ID provided is not valid.",roomNotFoundTitle:"Room not found",soundLabel:"Sound",noMicrophonesLabel:"No microphones found",noSpeakersLabel:"No speakers found",startCallButtonLabel:"Start call",openDialpadButtonLabel:"Dial phone number",peoplePaneAddPeopleButtonLabel:"Add People",dialpadStartCallButtonLabel:"Call",dialpadModalTitle:"Dial Phone Number",dialpadModalAriaLabel:"Dialpad",dialpadCloseModalButtonAriaLabel:"Close dialpad",moreButtonCallingLabel:"More",resumeCallButtonLabel:"Resume",resumingCallButtonLabel:"Resuming...",resumeCallButtonAriaLabel:"Resume call",resumingCallButtonAriaLabel:"Resume call",holdScreenLabel:"You're on hold",openDtmfDialpadLabel:"Show dialpad",dtmfDialpadPlaceholderText:"Enter number",outboundCallingNoticeString:"Calling...",participantJoinedNoticeString:"{displayName} joined",twoParticipantJoinedNoticeString:"{displayName1} and {displayName2} have joined",threeParticipantJoinedNoticeString:"{displayName1}, {displayName2} and {displayName3} have joined",participantLeftNoticeString:"{displayName} left",twoParticipantLeftNoticeString:"{displayName1} and {displayName2} have left",threeParticipantLeftNoticeString:"{displayName1}, {displayName2} and {displayName3} have left",unnamedParticipantString:"unnamed participant",manyUnnamedParticipantsJoined:"unnamed participant and {numOfParticipants} other participants joined",manyUnnamedParticipantsLeft:"unnamed participant and {numOfParticipants} other participants left",manyParticipantsJoined:"{displayName1}, {displayName2}, {displayName3} and {numOfParticipants} other participants joined",manyParticipantsLeft:"{displayName1}, {displayName2}, {displayName3} and {numOfParticipants} other participants left"};var chat$d={chatListHeader:"In this chat",uploadFile:"Upload File"};var callWithChat$d={chatButtonLabel:"Chat",chatButtonNewMessageNotificationLabel:"New Message",chatButtonTooltipClosedWithMessageCount:"Show chat ({unreadMessagesCount} unread)",chatButtonTooltipClose:"Hide chat",chatButtonTooltipOpen:"Show chat",chatPaneTitle:"Chat",copyInviteLinkButtonLabel:"Copy invite link",copyInviteLinkActionedAriaLabel:"Invite link copied",dismissSidePaneButtonLabel:"Close",moreDrawerAudioDeviceMenuTitle:"Audio Device",moreDrawerButtonLabel:"More options",moreDrawerButtonTooltip:"More options",moreDrawerMicrophoneMenuTitle:"Microphone",moreDrawerSpeakerMenuTitle:"Speaker",peopleButtonLabel:"People",peopleButtonTooltipOpen:"Show participants",peopleButtonTooltipClose:"Hide participants",peoplePaneSubTitle:"In this call",peoplePaneTitle:"People",pictureInPictureTileAriaLabel:"Video Feeds. Click to return to call screen.",removeMenuLabel:"Remove",openDialpadButtonLabel:"Dial phone number",returnToCallButtonAriaDescription:"Return to Call",returnToCallButtonAriaLabel:"Back",peoplePaneAddPeopleButtonLabel:"Add People",dialpadStartCallButtonLabel:"Call",dialpadModalTitle:"Dial Phone Number",dialpadModalAriaLabel:"Dialpad",dialpadCloseModalButtonAriaLabel:"Close dialpad",openDtmfDialpadLabel:"Show dialpad",dtmfDialpadPlaceholderText:"Enter number"};var en_US = {call:call$d,chat:chat$d,callWithChat:callWithChat$d};
16012
+ var call$d={cameraLabel:"Camera",noCamerasLabel:"No cameras found",cameraPermissionDenied:"Your browser is blocking access to your camera",cameraTurnedOff:"Your camera is turned off",chatButtonLabel:"Chat",close:"Close",complianceBannerNowOnlyRecording:"You are now only recording this meeting.",complianceBannerNowOnlyTranscription:"You are now only transcribing this meeting.",complianceBannerRecordingAndTranscriptionSaved:"Recording and transcription are being saved.",complianceBannerRecordingAndTranscriptionStarted:"Recording and transcription have started.",complianceBannerRecordingAndTranscriptionStopped:"Recording and transcription have stopped.",complianceBannerRecordingSaving:"Recording is being saved.",complianceBannerRecordingStarted:"Recording has started.",complianceBannerRecordingStopped:"Recording has stopped.",complianceBannerTranscriptionStarted:"Transcription has started.",complianceBannerTranscriptionConsent:"By joining, you are giving consent for this meeting to be transcribed.",complianceBannerTranscriptionSaving:"Transcription is being saved.",complianceBannerTranscriptionStopped:"Transcription has stopped.",configurationPageTitle:"Start a call",copyInviteLinkButtonLabel:"Copy invite link",copyInviteLinkActionedAriaLabel:"Invite link copied",defaultPlaceHolder:"Select an option",dismissSidePaneButtonLabel:"Close",effects:"Effects",blurBackgroundEffectButtonLabel:"Blur",blurBackgroundTooltip:"Blur Background",removeBackgroundEffectButtonLabel:"None",removeBackgroundTooltip:"Remove Background",failedToJoinCallDueToNoNetworkMoreDetails:"Call was disconnected due to a network issue. Check your connection and join again.",failedToJoinCallDueToNoNetworkTitle:"Call disconnected",failedToJoinTeamsMeetingReasonAccessDeniedMoreDetails:"You were not granted entry in the call. If this was a mistake, re-join the call.",failedToJoinTeamsMeetingReasonAccessDeniedTitle:"Dismissed from lobby",learnMore:"Learn more",leftCallMoreDetails:"If this was a mistake, re-join the call.",leftCallTitle:"You left the call",lobbyScreenConnectingToCallTitle:"Joining call",lobbyScreenWaitingToBeAdmittedTitle:"Waiting to be admitted",microphonePermissionDenied:"Your browser is blocking access to your microphone",microphoneToggleInLobbyNotAllowed:"Cannot mute or unmute while in lobby.",mutedMessage:"You're muted",networkReconnectMoreDetails:"Looks like something went wrong. We're trying to get back into the call.",networkReconnectTitle:"Hold on",deniedPermissionToRoomDetails:"You do not have permission to join this room.",deniedPermissionToRoomTitle:"Permission denied to room",peopleButtonLabel:"People",peoplePaneTitle:"People",peopleButtonTooltipOpen:"Show participants",peopleButtonTooltipClose:"Hide participants",peoplePaneSubTitle:"In this call",privacyPolicy:"Privacy policy",rejoinCallButtonLabel:"Re-join call",removedFromCallMoreDetails:"Another participant removed you from the call.",removedFromCallTitle:"You were removed",removeMenuLabel:"Remove",returnToCallButtonAriaDescription:"Return to Call",returnToCallButtonAriaLabel:"Back",roomNotFoundDetails:"Room ID provided is not valid.",roomNotFoundTitle:"Room not found",soundLabel:"Sound",noMicrophonesLabel:"No microphones found",noSpeakersLabel:"No speakers found",startCallButtonLabel:"Start call",openDialpadButtonLabel:"Dial phone number",peoplePaneAddPeopleButtonLabel:"Add People",dialpadStartCallButtonLabel:"Call",dialpadModalTitle:"Dial Phone Number",dialpadModalAriaLabel:"Dialpad",dialpadCloseModalButtonAriaLabel:"Close dialpad",moreButtonCallingLabel:"More",resumeCallButtonLabel:"Resume",resumingCallButtonLabel:"Resuming...",resumeCallButtonAriaLabel:"Resume call",resumingCallButtonAriaLabel:"Resume call",holdScreenLabel:"You're on hold",openDtmfDialpadLabel:"Show dialpad",dtmfDialpadPlaceholderText:"Enter number",outboundCallingNoticeString:"Calling...",participantJoinedNoticeString:"{displayName} joined",twoParticipantJoinedNoticeString:"{displayName1} and {displayName2} have joined",threeParticipantJoinedNoticeString:"{displayName1}, {displayName2} and {displayName3} have joined",participantLeftNoticeString:"{displayName} left",twoParticipantLeftNoticeString:"{displayName1} and {displayName2} have left",threeParticipantLeftNoticeString:"{displayName1}, {displayName2} and {displayName3} have left",unnamedParticipantString:"unnamed participant",manyUnnamedParticipantsJoined:"unnamed participant and {numOfParticipants} other participants joined",manyUnnamedParticipantsLeft:"unnamed participant and {numOfParticipants} other participants left",manyParticipantsJoined:"{displayName1}, {displayName2}, {displayName3} and {numOfParticipants} other participants joined",manyParticipantsLeft:"{displayName1}, {displayName2}, {displayName3} and {numOfParticipants} other participants left"};var chat$d={chatListHeader:"In this chat",uploadFile:"Upload File"};var callWithChat$d={chatButtonLabel:"Chat",chatButtonNewMessageNotificationLabel:"New Message",chatButtonTooltipClosedWithMessageCount:"Show chat ({unreadMessagesCount} unread)",chatButtonTooltipClose:"Hide chat",chatButtonTooltipOpen:"Show chat",chatPaneTitle:"Chat",copyInviteLinkButtonLabel:"Copy invite link",copyInviteLinkActionedAriaLabel:"Invite link copied",dismissSidePaneButtonLabel:"Close",moreDrawerAudioDeviceMenuTitle:"Audio Device",moreDrawerButtonLabel:"More options",moreDrawerButtonTooltip:"More options",moreDrawerMicrophoneMenuTitle:"Microphone",moreDrawerSpeakerMenuTitle:"Speaker",peopleButtonLabel:"People",peopleButtonTooltipOpen:"Show participants",peopleButtonTooltipClose:"Hide participants",peoplePaneSubTitle:"In this call",peoplePaneTitle:"People",pictureInPictureTileAriaLabel:"Video Feeds. Click to return to call screen.",removeMenuLabel:"Remove",openDialpadButtonLabel:"Dial phone number",returnToCallButtonAriaDescription:"Return to Call",returnToCallButtonAriaLabel:"Back",peoplePaneAddPeopleButtonLabel:"Add People",dialpadStartCallButtonLabel:"Call",dialpadModalTitle:"Dial Phone Number",dialpadModalAriaLabel:"Dialpad",dialpadCloseModalButtonAriaLabel:"Close dialpad",openDtmfDialpadLabel:"Show dialpad",dtmfDialpadPlaceholderText:"Enter number"};var en_US = {call:call$d,chat:chat$d,callWithChat:callWithChat$d};
15875
16013
 
15876
16014
  var call$c={cameraLabel:"Camera",cameraPermissionDenied:"Your browser is blocking access to your camera",cameraTurnedOff:"Your camera is turned off",chatButtonLabel:"Chat",close:"Close",complianceBannerNowOnlyRecording:"You are now only recording this meeting.",complianceBannerNowOnlyTranscription:"You are now only transcribing this meeting.",complianceBannerRecordingAndTranscriptionSaved:"Recording and transcription are being saved.",complianceBannerRecordingAndTranscriptionStarted:"Recording and transcription have started.",complianceBannerRecordingAndTranscriptionStopped:"Recording and transcription have stopped.",complianceBannerRecordingSaving:"Recording is being saved.",complianceBannerRecordingStarted:"Recording has started.",complianceBannerRecordingStopped:"Recording has stopped.",complianceBannerTranscriptionStarted:"Transcription has started.",complianceBannerTranscriptionConsent:"By joining, you are giving consent for this meeting to be transcribed.",complianceBannerTranscriptionSaving:"Transcription is being saved.",complianceBannerTranscriptionStopped:"Transcription has stopped.",configurationPageTitle:"Start a call",copyInviteLinkButtonLabel:"Copy invite link",copyInviteLinkActionedAriaLabel:"Invite link copied",defaultPlaceHolder:"Select an option",dismissSidePaneButtonLabel:"Close",failedToJoinCallDueToNoNetworkMoreDetails:"Call was disconnected due to a network issue. Check your connection and join again.",failedToJoinCallDueToNoNetworkTitle:"Call disconnected",failedToJoinTeamsMeetingReasonAccessDeniedMoreDetails:"You were not granted entry in the call. If this was a mistake, re-join the call.",failedToJoinTeamsMeetingReasonAccessDeniedTitle:"Dismissed from lobby",learnMore:"Learn more",leftCallMoreDetails:"If this was a mistake, re-join the call.",leftCallTitle:"You left the call",lobbyScreenConnectingToCallTitle:"Joining call",lobbyScreenWaitingToBeAdmittedTitle:"Waiting to be admitted",microphonePermissionDenied:"Your browser is blocking access to your microphone",microphoneToggleInLobbyNotAllowed:"Cannot mute or unmute while in lobby.",mutedMessage:"You're muted",networkReconnectMoreDetails:"Looks like something went wrong. We're trying to get back into the call.",networkReconnectTitle:"Hold on",deniedPermissionToRoomDetails:"You do not have permission to join this room.",deniedPermissionToRoomTitle:"Permission denied to room",peopleButtonLabel:"People",peoplePaneTitle:"People",peopleButtonTooltipOpen:"Show participants",peopleButtonTooltipClose:"Hide participants",peoplePaneSubTitle:"In this call",privacyPolicy:"Privacy policy",rejoinCallButtonLabel:"Re-join call",removedFromCallMoreDetails:"Another participant removed you from the call.",removedFromCallTitle:"You were removed",removeMenuLabel:"Remove",returnToCallButtonAriaDescription:"Return to Call",returnToCallButtonAriaLabel:"Back",roomNotFoundDetails:"Room ID provided is not valid.",roomNotFoundTitle:"Room not found",soundLabel:"Sound",startCallButtonLabel:"Start call",openDialpadButtonLabel:"Dial phone number",peoplePaneAddPeopleButtonLabel:"Add People",dialpadStartCallButtonLabel:"Call",dialpadModalTitle:"Dial Phone Number",dialpadModalAriaLabel:"Dialpad",dialpadCloseModalButtonAriaLabel:"Close dialpad",moreButtonCallingLabel:"More",resumeCallButtonLabel:"Resume",resumingCallButtonLabel:"Resuming...",resumeCallButtonAriaLabel:"Resume call",resumingCallButtonAriaLabel:"Resume call",holdScreenLabel:"You're on hold",openDtmfDialpadLabel:"Show dialpad",dtmfDialpadPlaceHolderText:"Enter number",outboundCallingNoticeString:"Calling..."};var chat$c={chatListHeader:"In this chat",uploadFile:"Upload File"};var callWithChat$c={chatButtonLabel:"Chat",chatButtonNewMessageNotificationLabel:"New Message",chatButtonTooltipClosedWithMessageCount:"Show chat ({unreadMessagesCount} unread)",chatButtonTooltipClose:"Hide chat",chatButtonTooltipOpen:"Show chat",chatPaneTitle:"Chat",copyInviteLinkButtonLabel:"Copy invite link",copyInviteLinkActionedAriaLabel:"Invite link copied",dismissSidePaneButtonLabel:"Close",moreDrawerAudioDeviceMenuTitle:"Audio Device",moreDrawerButtonLabel:"More options",moreDrawerButtonTooltip:"More options",moreDrawerMicrophoneMenuTitle:"Microphone",moreDrawerSpeakerMenuTitle:"Speaker",peopleButtonLabel:"People",peopleButtonTooltipOpen:"Show participants",peopleButtonTooltipClose:"Hide participants",peoplePaneSubTitle:"In this call",peoplePaneTitle:"People",pictureInPictureTileAriaLabel:"Video Feeds. Click to return to call screen.",removeMenuLabel:"Remove",openDialpadButtonLabel:"Dial phone number",returnToCallButtonAriaDescription:"Return to Call",returnToCallButtonAriaLabel:"Back",peoplePaneAddPeopleButtonLabel:"Add People",dialpadStartCallButtonLabel:"Call",dialpadModalTitle:"Dial Phone Number",dialpadModalAriaLabel:"Dialpad",dialpadCloseModalButtonAriaLabel:"Close dialpad",openDtmfDialpadLabel:"Show dialpad",dtmfDialpadPlaceHolderText:"Enter number"};var en_GB = {call:call$c,chat:chat$c,callWithChat:callWithChat$c};
15877
16015
 
@@ -16121,7 +16259,7 @@ const uploadFileButtonStringTrampoline = () => {
16121
16259
 
16122
16260
  // Copyright (c) Microsoft Corporation.
16123
16261
  // Licensed under the MIT license.
16124
- var __awaiter$g = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
16262
+ var __awaiter$h = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
16125
16263
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
16126
16264
  return new (P || (P = Promise))(function (resolve, reject) {
16127
16265
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -16240,7 +16378,7 @@ class AzureCommunicationFileUploadAdapter {
16240
16378
  }
16241
16379
  /* @conditional-compile-remove(teams-inline-images) */
16242
16380
  downloadAuthenticatedAttachment(attachmentUrl) {
16243
- return __awaiter$g(this, void 0, void 0, function* () {
16381
+ return __awaiter$h(this, void 0, void 0, function* () {
16244
16382
  function fetchWithAuthentication(url, token) {
16245
16383
  const headers = new Headers();
16246
16384
  headers.append('Authorization', `Bearer ${token}`);
@@ -16318,7 +16456,7 @@ const END_CALL_PAGES = [
16318
16456
 
16319
16457
  // Copyright (c) Microsoft Corporation.
16320
16458
  // Licensed under the MIT license.
16321
- var __awaiter$f = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
16459
+ var __awaiter$g = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
16322
16460
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
16323
16461
  return new (P || (P = Promise))(function (resolve, reject) {
16324
16462
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -16541,7 +16679,7 @@ const isDisabled$2 = (option) => {
16541
16679
  /**
16542
16680
  * @returns Permissions state for the camera.
16543
16681
  */
16544
- const queryCameraPermissionFromPermissionsAPI = () => __awaiter$f(void 0, void 0, void 0, function* () {
16682
+ const queryCameraPermissionFromPermissionsAPI = () => __awaiter$g(void 0, void 0, void 0, function* () {
16545
16683
  try {
16546
16684
  return (yield navigator.permissions.query({ name: 'camera' })).state;
16547
16685
  }
@@ -16554,7 +16692,7 @@ const queryCameraPermissionFromPermissionsAPI = () => __awaiter$f(void 0, void 0
16554
16692
  /**
16555
16693
  * @returns Permissions state for the microphone.
16556
16694
  */
16557
- const queryMicrophonePermissionFromPermissionsAPI = () => __awaiter$f(void 0, void 0, void 0, function* () {
16695
+ const queryMicrophonePermissionFromPermissionsAPI = () => __awaiter$g(void 0, void 0, void 0, function* () {
16558
16696
  try {
16559
16697
  return (yield navigator.permissions.query({ name: 'microphone' })).state;
16560
16698
  }
@@ -16571,7 +16709,7 @@ const queryMicrophonePermissionFromPermissionsAPI = () => __awaiter$f(void 0, vo
16571
16709
  * If permission API is not supported on this browser, permission state is set to unsupported.
16572
16710
  * @private
16573
16711
  */
16574
- const getDevicePermissionState = (setVideoState, setAudioState) => __awaiter$f(void 0, void 0, void 0, function* () {
16712
+ const getDevicePermissionState = (setVideoState, setAudioState) => __awaiter$g(void 0, void 0, void 0, function* () {
16575
16713
  const [cameraResult, microphoneResult] = yield Promise.all([
16576
16714
  queryCameraPermissionFromPermissionsAPI(),
16577
16715
  queryMicrophonePermissionFromPermissionsAPI()
@@ -16648,7 +16786,7 @@ const createParticipantModifier = (createModifiedParticipant) => {
16648
16786
 
16649
16787
  // Copyright (c) Microsoft Corporation.
16650
16788
  // Licensed under the MIT license.
16651
- var __awaiter$e = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
16789
+ var __awaiter$f = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
16652
16790
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
16653
16791
  return new (P || (P = Promise))(function (resolve, reject) {
16654
16792
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -16776,9 +16914,9 @@ class AzureCommunicationChatAdapter {
16776
16914
  this.unsubscribeAllEvents();
16777
16915
  }
16778
16916
  fetchInitialData() {
16779
- return __awaiter$e(this, void 0, void 0, function* () {
16917
+ return __awaiter$f(this, void 0, void 0, function* () {
16780
16918
  // If get properties fails we dont want to try to get the participants after.
16781
- yield this.asyncTeeErrorToEventEmitter(() => __awaiter$e(this, void 0, void 0, function* () {
16919
+ yield this.asyncTeeErrorToEventEmitter(() => __awaiter$f(this, void 0, void 0, function* () {
16782
16920
  var e_1, _a;
16783
16921
  yield this.chatThreadClient.getProperties();
16784
16922
  try {
@@ -16812,8 +16950,8 @@ class AzureCommunicationChatAdapter {
16812
16950
  this.context.offStateChange(handler);
16813
16951
  }
16814
16952
  sendMessage(content, options = {}) {
16815
- return __awaiter$e(this, void 0, void 0, function* () {
16816
- yield this.asyncTeeErrorToEventEmitter(() => __awaiter$e(this, void 0, void 0, function* () {
16953
+ return __awaiter$f(this, void 0, void 0, function* () {
16954
+ yield this.asyncTeeErrorToEventEmitter(() => __awaiter$f(this, void 0, void 0, function* () {
16817
16955
  /* @conditional-compile-remove(file-sharing) */
16818
16956
  options.metadata = Object.assign(Object.assign({}, options.metadata), convertFileUploadsUiStateToMessageMetadata(this.context.getState().fileUploads));
16819
16957
  /* @conditional-compile-remove(file-sharing) */
@@ -16830,51 +16968,51 @@ class AzureCommunicationChatAdapter {
16830
16968
  });
16831
16969
  }
16832
16970
  sendReadReceipt(chatMessageId) {
16833
- return __awaiter$e(this, void 0, void 0, function* () {
16834
- yield this.asyncTeeErrorToEventEmitter(() => __awaiter$e(this, void 0, void 0, function* () {
16971
+ return __awaiter$f(this, void 0, void 0, function* () {
16972
+ yield this.asyncTeeErrorToEventEmitter(() => __awaiter$f(this, void 0, void 0, function* () {
16835
16973
  yield this.handlers.onMessageSeen(chatMessageId);
16836
16974
  }));
16837
16975
  });
16838
16976
  }
16839
16977
  sendTypingIndicator() {
16840
- return __awaiter$e(this, void 0, void 0, function* () {
16841
- yield this.asyncTeeErrorToEventEmitter(() => __awaiter$e(this, void 0, void 0, function* () {
16978
+ return __awaiter$f(this, void 0, void 0, function* () {
16979
+ yield this.asyncTeeErrorToEventEmitter(() => __awaiter$f(this, void 0, void 0, function* () {
16842
16980
  yield this.handlers.onTyping();
16843
16981
  }));
16844
16982
  });
16845
16983
  }
16846
16984
  removeParticipant(userId) {
16847
- return __awaiter$e(this, void 0, void 0, function* () {
16848
- yield this.asyncTeeErrorToEventEmitter(() => __awaiter$e(this, void 0, void 0, function* () {
16985
+ return __awaiter$f(this, void 0, void 0, function* () {
16986
+ yield this.asyncTeeErrorToEventEmitter(() => __awaiter$f(this, void 0, void 0, function* () {
16849
16987
  yield this.handlers.onRemoveParticipant(userId);
16850
16988
  }));
16851
16989
  });
16852
16990
  }
16853
16991
  setTopic(topicName) {
16854
- return __awaiter$e(this, void 0, void 0, function* () {
16855
- yield this.asyncTeeErrorToEventEmitter(() => __awaiter$e(this, void 0, void 0, function* () {
16992
+ return __awaiter$f(this, void 0, void 0, function* () {
16993
+ yield this.asyncTeeErrorToEventEmitter(() => __awaiter$f(this, void 0, void 0, function* () {
16856
16994
  yield this.handlers.updateThreadTopicName(topicName);
16857
16995
  }));
16858
16996
  });
16859
16997
  }
16860
16998
  loadPreviousChatMessages(messagesToLoad) {
16861
- return __awaiter$e(this, void 0, void 0, function* () {
16862
- return yield this.asyncTeeErrorToEventEmitter(() => __awaiter$e(this, void 0, void 0, function* () {
16999
+ return __awaiter$f(this, void 0, void 0, function* () {
17000
+ return yield this.asyncTeeErrorToEventEmitter(() => __awaiter$f(this, void 0, void 0, function* () {
16863
17001
  return yield this.handlers.onLoadPreviousChatMessages(messagesToLoad);
16864
17002
  }));
16865
17003
  });
16866
17004
  }
16867
17005
  updateMessage(messageId, content, metadata, options) {
16868
- return __awaiter$e(this, void 0, void 0, function* () {
16869
- return yield this.asyncTeeErrorToEventEmitter(() => __awaiter$e(this, void 0, void 0, function* () {
17006
+ return __awaiter$f(this, void 0, void 0, function* () {
17007
+ return yield this.asyncTeeErrorToEventEmitter(() => __awaiter$f(this, void 0, void 0, function* () {
16870
17008
  /* @conditional-compile-remove(file-sharing) */
16871
17009
  return yield this.handlers.onUpdateMessage(messageId, content, metadata, options);
16872
17010
  }));
16873
17011
  });
16874
17012
  }
16875
17013
  deleteMessage(messageId) {
16876
- return __awaiter$e(this, void 0, void 0, function* () {
16877
- return yield this.asyncTeeErrorToEventEmitter(() => __awaiter$e(this, void 0, void 0, function* () {
17014
+ return __awaiter$f(this, void 0, void 0, function* () {
17015
+ return yield this.asyncTeeErrorToEventEmitter(() => __awaiter$f(this, void 0, void 0, function* () {
16878
17016
  return yield this.handlers.onDeleteMessage(messageId);
16879
17017
  }));
16880
17018
  });
@@ -16909,7 +17047,7 @@ class AzureCommunicationChatAdapter {
16909
17047
  }
16910
17048
  /* @conditional-compile-remove(teams-inline-images) */
16911
17049
  downloadAuthenticatedAttachment(attachmentUrl) {
16912
- return __awaiter$e(this, void 0, void 0, function* () {
17050
+ return __awaiter$f(this, void 0, void 0, function* () {
16913
17051
  if (!this.fileUploadAdapter.downloadAuthenticatedAttachment) {
16914
17052
  return '';
16915
17053
  }
@@ -16964,7 +17102,7 @@ class AzureCommunicationChatAdapter {
16964
17102
  this.emitter.off(event, listener);
16965
17103
  }
16966
17104
  asyncTeeErrorToEventEmitter(f) {
16967
- return __awaiter$e(this, void 0, void 0, function* () {
17105
+ return __awaiter$f(this, void 0, void 0, function* () {
16968
17106
  try {
16969
17107
  return yield f();
16970
17108
  }
@@ -17006,7 +17144,7 @@ const convertEventType = (type) => {
17006
17144
  *
17007
17145
  * @public
17008
17146
  */
17009
- const createAzureCommunicationChatAdapter = ({ endpoint: endpointUrl, userId, displayName, credential, threadId }) => __awaiter$e(void 0, void 0, void 0, function* () {
17147
+ const createAzureCommunicationChatAdapter = ({ endpoint: endpointUrl, userId, displayName, credential, threadId }) => __awaiter$f(void 0, void 0, void 0, function* () {
17010
17148
  if (!isValidIdentifier(userId)) {
17011
17149
  throw new Error('Provided userId is invalid. Please provide valid identifier object.');
17012
17150
  }
@@ -17072,7 +17210,7 @@ beforeDispose) => {
17072
17210
  if (!credential || !displayName || !endpoint || !threadId || !userId) {
17073
17211
  return;
17074
17212
  }
17075
- (() => __awaiter$e(void 0, void 0, void 0, function* () {
17213
+ (() => __awaiter$f(void 0, void 0, void 0, function* () {
17076
17214
  if (adapterRef.current) {
17077
17215
  // Dispose the old adapter when a new one is created.
17078
17216
  //
@@ -17104,7 +17242,7 @@ beforeDispose) => {
17104
17242
  // Dispose any existing adapter when the component unmounts.
17105
17243
  React.useEffect(() => {
17106
17244
  return () => {
17107
- (() => __awaiter$e(void 0, void 0, void 0, function* () {
17245
+ (() => __awaiter$f(void 0, void 0, void 0, function* () {
17108
17246
  if (adapterRef.current) {
17109
17247
  if (beforeDisposeRef.current) {
17110
17248
  yield beforeDisposeRef.current(adapterRef.current);
@@ -17125,7 +17263,7 @@ beforeDispose) => {
17125
17263
  *
17126
17264
  * @public
17127
17265
  */
17128
- const createAzureCommunicationChatAdapterFromClient = (chatClient, chatThreadClient) => __awaiter$e(void 0, void 0, void 0, function* () {
17266
+ const createAzureCommunicationChatAdapterFromClient = (chatClient, chatThreadClient) => __awaiter$f(void 0, void 0, void 0, function* () {
17129
17267
  return new AzureCommunicationChatAdapter(chatClient, chatThreadClient);
17130
17268
  });
17131
17269
  const isChatError = (e) => {
@@ -17336,7 +17474,7 @@ const sendboxContainerStyles = {
17336
17474
 
17337
17475
  // Copyright (c) Microsoft Corporation.
17338
17476
  // Licensed under the MIT license.
17339
- var __awaiter$d = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
17477
+ var __awaiter$e = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
17340
17478
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
17341
17479
  return new (P || (P = Promise))(function (resolve, reject) {
17342
17480
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -17357,7 +17495,7 @@ const AvatarPersona = (props) => {
17357
17495
  const { userId, dataProvider, text, imageUrl, imageInitials, initialsColor, initialsTextColor, showOverflowTooltip } = props;
17358
17496
  const [data, setData] = React.useState();
17359
17497
  React.useEffect(() => {
17360
- (() => __awaiter$d(void 0, void 0, void 0, function* () {
17498
+ (() => __awaiter$e(void 0, void 0, void 0, function* () {
17361
17499
  if (dataProvider && userId) {
17362
17500
  const newData = yield dataProvider(userId);
17363
17501
  if (avatarDeepDifferenceCheck(data, newData)) {
@@ -17721,7 +17859,7 @@ const FileDownloadErrorBar = (props) => {
17721
17859
 
17722
17860
  // Copyright (c) Microsoft Corporation.
17723
17861
  // Licensed under the MIT license.
17724
- var __awaiter$c = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
17862
+ var __awaiter$d = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
17725
17863
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
17726
17864
  return new (P || (P = Promise))(function (resolve, reject) {
17727
17865
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -17742,7 +17880,7 @@ const ChatScreen = (props) => {
17742
17880
  const theme = useTheme();
17743
17881
  React.useEffect(() => {
17744
17882
  // Initial data should be always fetched by the composite(or external caller) instead of the adapter
17745
- const fetchData = () => __awaiter$c(void 0, void 0, void 0, function* () {
17883
+ const fetchData = () => __awaiter$d(void 0, void 0, void 0, function* () {
17746
17884
  // Fetch initial data for adapter
17747
17885
  yield adapter.fetchInitialData();
17748
17886
  // Fetch initial set of messages. Without fetching messages here, if the Composite's adapter is changed the message thread does not load new messages.
@@ -17947,7 +18085,7 @@ const adaptCompositeState = (compositeState) => {
17947
18085
 
17948
18086
  // Copyright (c) Microsoft Corporation.
17949
18087
  // Licensed under the MIT license.
17950
- var __awaiter$b = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
18088
+ var __awaiter$c = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
17951
18089
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
17952
18090
  return new (P || (P = Promise))(function (resolve, reject) {
17953
18091
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -17966,88 +18104,88 @@ _component) => {
17966
18104
  return createCompositeHandlers(useAdapter());
17967
18105
  };
17968
18106
  const createCompositeHandlers = memoizeOne__default['default']((adapter) => ({
17969
- onCreateLocalStreamView: (options) => __awaiter$b(void 0, void 0, void 0, function* () {
18107
+ onCreateLocalStreamView: (options) => __awaiter$c(void 0, void 0, void 0, function* () {
17970
18108
  return yield adapter.createStreamView(undefined, options);
17971
18109
  }),
17972
- onCreateRemoteStreamView: (userId, options) => __awaiter$b(void 0, void 0, void 0, function* () {
18110
+ onCreateRemoteStreamView: (userId, options) => __awaiter$c(void 0, void 0, void 0, function* () {
17973
18111
  return yield adapter.createStreamView(userId, options);
17974
18112
  }),
17975
- onHangUp: (forEveryone) => __awaiter$b(void 0, void 0, void 0, function* () {
18113
+ onHangUp: (forEveryone) => __awaiter$c(void 0, void 0, void 0, function* () {
17976
18114
  yield adapter.leaveCall(forEveryone);
17977
18115
  }),
17978
18116
  /* @conditional-compile-remove(PSTN-calls) */
17979
- onToggleHold: () => __awaiter$b(void 0, void 0, void 0, function* () {
18117
+ onToggleHold: () => __awaiter$c(void 0, void 0, void 0, function* () {
17980
18118
  var _a;
17981
18119
  return ((_a = adapter.getState().call) === null || _a === void 0 ? void 0 : _a.state) === 'LocalHold' ? yield adapter.resumeCall() : yield adapter.holdCall();
17982
18120
  }),
17983
18121
  /* @conditional-compile-remove(PSTN-calls) */
17984
- onAddParticipant: (participant, options) => __awaiter$b(void 0, void 0, void 0, function* () {
18122
+ onAddParticipant: (participant, options) => __awaiter$c(void 0, void 0, void 0, function* () {
17985
18123
  return yield adapter.addParticipant(participant, options);
17986
18124
  }),
17987
18125
  /* @conditional-compile-remove(PSTN-calls) */
17988
- onSendDtmfTone: (dtmfTone) => __awaiter$b(void 0, void 0, void 0, function* () {
18126
+ onSendDtmfTone: (dtmfTone) => __awaiter$c(void 0, void 0, void 0, function* () {
17989
18127
  yield adapter.sendDtmfTone(dtmfTone);
17990
18128
  }),
17991
- onRemoveParticipant: (userId) => __awaiter$b(void 0, void 0, void 0, function* () {
18129
+ onRemoveParticipant: (userId) => __awaiter$c(void 0, void 0, void 0, function* () {
17992
18130
  yield adapter.removeParticipant(userId);
17993
18131
  }),
17994
- onSelectCamera: (deviceInfo, options) => __awaiter$b(void 0, void 0, void 0, function* () {
18132
+ onSelectCamera: (deviceInfo, options) => __awaiter$c(void 0, void 0, void 0, function* () {
17995
18133
  yield adapter.setCamera(deviceInfo, options);
17996
18134
  }),
17997
- onSelectMicrophone: (deviceInfo) => __awaiter$b(void 0, void 0, void 0, function* () {
18135
+ onSelectMicrophone: (deviceInfo) => __awaiter$c(void 0, void 0, void 0, function* () {
17998
18136
  yield adapter.setMicrophone(deviceInfo);
17999
18137
  }),
18000
- onSelectSpeaker: (deviceInfo) => __awaiter$b(void 0, void 0, void 0, function* () {
18138
+ onSelectSpeaker: (deviceInfo) => __awaiter$c(void 0, void 0, void 0, function* () {
18001
18139
  yield adapter.setSpeaker(deviceInfo);
18002
18140
  }),
18003
18141
  onStartCall: (participants, options) => {
18004
18142
  const rawIds = participants.map((participant) => toFlatCommunicationIdentifier(participant));
18005
18143
  return adapter.startCall(rawIds, options);
18006
18144
  },
18007
- onStartScreenShare: () => __awaiter$b(void 0, void 0, void 0, function* () {
18145
+ onStartScreenShare: () => __awaiter$c(void 0, void 0, void 0, function* () {
18008
18146
  yield adapter.startScreenShare();
18009
18147
  }),
18010
- onStopScreenShare: () => __awaiter$b(void 0, void 0, void 0, function* () {
18148
+ onStopScreenShare: () => __awaiter$c(void 0, void 0, void 0, function* () {
18011
18149
  yield adapter.stopScreenShare();
18012
18150
  }),
18013
- onToggleCamera: (options) => __awaiter$b(void 0, void 0, void 0, function* () {
18151
+ onToggleCamera: (options) => __awaiter$c(void 0, void 0, void 0, function* () {
18014
18152
  isCameraOn(adapter.getState()) ? yield adapter.stopCamera() : yield adapter.startCamera(options);
18015
18153
  }),
18016
- onToggleMicrophone: () => __awaiter$b(void 0, void 0, void 0, function* () {
18154
+ onToggleMicrophone: () => __awaiter$c(void 0, void 0, void 0, function* () {
18017
18155
  var _b;
18018
18156
  return ((_b = adapter.getState().call) === null || _b === void 0 ? void 0 : _b.isMuted) ? yield adapter.unmute() : yield adapter.mute();
18019
18157
  }),
18020
- onToggleScreenShare: () => __awaiter$b(void 0, void 0, void 0, function* () {
18158
+ onToggleScreenShare: () => __awaiter$c(void 0, void 0, void 0, function* () {
18021
18159
  var _c;
18022
18160
  return ((_c = adapter.getState().call) === null || _c === void 0 ? void 0 : _c.isScreenSharingOn)
18023
18161
  ? yield adapter.stopScreenShare()
18024
18162
  : yield adapter.startScreenShare();
18025
18163
  }),
18026
- onStartLocalVideo: () => __awaiter$b(void 0, void 0, void 0, function* () {
18164
+ onStartLocalVideo: () => __awaiter$c(void 0, void 0, void 0, function* () {
18027
18165
  if (adapter.getState().call) {
18028
18166
  return adapter.startCamera();
18029
18167
  }
18030
18168
  }),
18031
- onDisposeLocalStreamView: () => __awaiter$b(void 0, void 0, void 0, function* () {
18169
+ onDisposeLocalStreamView: () => __awaiter$c(void 0, void 0, void 0, function* () {
18032
18170
  return adapter.disposeStreamView();
18033
18171
  }),
18034
- onDisposeRemoteStreamView: (userId) => __awaiter$b(void 0, void 0, void 0, function* () {
18172
+ onDisposeRemoteStreamView: (userId) => __awaiter$c(void 0, void 0, void 0, function* () {
18035
18173
  return adapter.disposeStreamView(userId);
18036
18174
  }),
18037
18175
  /* @conditional-compile-remove(call-readiness) */
18038
- askDevicePermission: (constrain) => __awaiter$b(void 0, void 0, void 0, function* () {
18176
+ askDevicePermission: (constrain) => __awaiter$c(void 0, void 0, void 0, function* () {
18039
18177
  return adapter.askDevicePermission(constrain);
18040
18178
  }),
18041
18179
  /* @conditional-compile-remove(video-background-effects) */
18042
- onRemoveVideoBackgroundEffects: () => __awaiter$b(void 0, void 0, void 0, function* () {
18180
+ onRemoveVideoBackgroundEffects: () => __awaiter$c(void 0, void 0, void 0, function* () {
18043
18181
  return yield adapter.stopVideoBackgroundEffect();
18044
18182
  }),
18045
18183
  /* @conditional-compile-remove(video-background-effects) */
18046
- onBlurVideoBackground: (bgBlurConfig) => __awaiter$b(void 0, void 0, void 0, function* () {
18184
+ onBlurVideoBackground: (bgBlurConfig) => __awaiter$c(void 0, void 0, void 0, function* () {
18047
18185
  return yield adapter.blurVideoBackground(bgBlurConfig);
18048
18186
  }),
18049
18187
  /* @conditional-compile-remove(video-background-effects) */
18050
- onReplaceVideoBackground: (bgReplacementConfig) => __awaiter$b(void 0, void 0, void 0, function* () {
18188
+ onReplaceVideoBackground: (bgReplacementConfig) => __awaiter$c(void 0, void 0, void 0, function* () {
18051
18189
  return yield adapter.replaceVideoBackground(bgReplacementConfig);
18052
18190
  })
18053
18191
  }));
@@ -19399,7 +19537,7 @@ const AddPeopleButton = (props) => {
19399
19537
 
19400
19538
  // Copyright (c) Microsoft Corporation.
19401
19539
  // Licensed under the MIT license.
19402
- var __awaiter$a = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
19540
+ var __awaiter$b = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
19403
19541
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
19404
19542
  return new (P || (P = Promise))(function (resolve, reject) {
19405
19543
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -19435,7 +19573,7 @@ const PeoplePaneContent = (props) => {
19435
19573
  setDrawerMenuItems
19436
19574
  ]);
19437
19575
  const participantListProps = React.useMemo(() => {
19438
- const onRemoveAParticipant = (participantId) => __awaiter$a(void 0, void 0, void 0, function* () { return onRemoveParticipant(participantId); });
19576
+ const onRemoveAParticipant = (participantId) => __awaiter$b(void 0, void 0, void 0, function* () { return onRemoveParticipant(participantId); });
19439
19577
  return Object.assign(Object.assign({}, participantListDefaultProps), {
19440
19578
  // Passing undefined callback for mobile to avoid context menus for participants in ParticipantList are clicked
19441
19579
  onRemoveParticipant: props.mobileView ? undefined : onRemoveAParticipant,
@@ -19634,7 +19772,7 @@ const useMinMaxDragPosition = (modalLayerHostId, rtl) => {
19634
19772
  return { minDragPosition: minDragPosition, maxDragPosition: maxDragPosition };
19635
19773
  };
19636
19774
 
19637
- var __awaiter$9 = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
19775
+ var __awaiter$a = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
19638
19776
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
19639
19777
  return new (P || (P = Promise))(function (resolve, reject) {
19640
19778
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -19664,11 +19802,11 @@ const CallPane = (props) => {
19664
19802
  /**
19665
19803
  * In a Call Composite when a participant is removed, we must remove them from the call.
19666
19804
  */
19667
- const removeParticipantFromCall = (participantId) => __awaiter$9(void 0, void 0, void 0, function* () {
19805
+ const removeParticipantFromCall = (participantId) => __awaiter$a(void 0, void 0, void 0, function* () {
19668
19806
  yield props.callAdapter.removeParticipant(participantId);
19669
19807
  });
19670
19808
  /* @conditional-compile-remove(PSTN-calls) */
19671
- const addParticipantToCall = (participant, options) => __awaiter$9(void 0, void 0, void 0, function* () {
19809
+ const addParticipantToCall = (participant, options) => __awaiter$a(void 0, void 0, void 0, function* () {
19672
19810
  yield props.callAdapter.addParticipant(participant, options);
19673
19811
  });
19674
19812
  const minMaxDragPosition = useMinMaxDragPosition(props.modalLayerHostId, props.rtl);
@@ -19794,12 +19932,6 @@ const CallArrangement = (props) => {
19794
19932
  return (React__default['default'].createElement("div", { ref: containerRef, className: react.mergeStyles(containerDivStyles), id: props.id },
19795
19933
  React__default['default'].createElement(react.Stack, { verticalFill: true, horizontalAlign: "stretch", className: containerClassName, "data-ui-id": props.dataUiId },
19796
19934
  React__default['default'].createElement(react.Stack, { grow: true, styles: callArrangementContainerStyles },
19797
- React__default['default'].createElement(react.Stack.Item, { styles: notificationsContainerStyles },
19798
- React__default['default'].createElement(react.Stack, { styles: bannerNotificationStyles },
19799
- React__default['default'].createElement(_ComplianceBanner, Object.assign({}, props.complianceBannerProps))),
19800
- errorBarProps !== false && (React__default['default'].createElement(react.Stack, { styles: bannerNotificationStyles },
19801
- React__default['default'].createElement(ErrorBar, Object.assign({}, errorBarProps)))),
19802
- canUnmute && !!props.mutedNotificationProps && React__default['default'].createElement(MutedNotification, Object.assign({}, props.mutedNotificationProps))),
19803
19935
  ((_b = props.callControlProps) === null || _b === void 0 ? void 0 : _b.options) !== false &&
19804
19936
  /* @conditional-compile-remove(one-to-n-calling) @conditional-compile-remove(PSTN-calls) */
19805
19937
  !isMobileWithActivePane && (React__default['default'].createElement(react.Stack.Item, { className: callControlsContainerStyles },
@@ -19810,7 +19942,15 @@ const CallArrangement = (props) => {
19810
19942
  onPeopleButtonClicked: togglePeoplePane })))),
19811
19943
  React__default['default'].createElement(react.Stack, { horizontal: true, grow: true },
19812
19944
  React__default['default'].createElement(react.Stack.Item, { grow: true, style: callCompositeContainerFlex() },
19813
- React__default['default'].createElement(react.Stack.Item, { styles: callGalleryStyles, grow: true }, props.onRenderGalleryContent && (React__default['default'].createElement(react.Stack, { verticalFill: true, styles: mediaGalleryContainerStyles$1 }, props.onRenderGalleryContent())))),
19945
+ React__default['default'].createElement(react.Stack.Item, { styles: callGalleryStyles, grow: true },
19946
+ React__default['default'].createElement(react.Stack, { verticalFill: true, styles: mediaGalleryContainerStyles$1 },
19947
+ React__default['default'].createElement(react.Stack.Item, { styles: notificationsContainerStyles },
19948
+ React__default['default'].createElement(react.Stack, { styles: bannerNotificationStyles },
19949
+ React__default['default'].createElement(_ComplianceBanner, Object.assign({}, props.complianceBannerProps))),
19950
+ errorBarProps !== false && (React__default['default'].createElement(react.Stack, { styles: bannerNotificationStyles },
19951
+ React__default['default'].createElement(ErrorBar, Object.assign({}, errorBarProps)))),
19952
+ canUnmute && !!props.mutedNotificationProps && (React__default['default'].createElement(MutedNotification, Object.assign({}, props.mutedNotificationProps)))),
19953
+ props.onRenderGalleryContent && props.onRenderGalleryContent()))),
19814
19954
  /* @conditional-compile-remove(one-to-n-calling) @conditional-compile-remove(PSTN-calls) */
19815
19955
  callPaneContent())))));
19816
19956
  };
@@ -20556,103 +20696,6 @@ const devicePermissionSelector = reselect__namespace.createSelector([getDeviceMa
20556
20696
  };
20557
20697
  });
20558
20698
 
20559
- // Copyright (c) Microsoft Corporation.
20560
- /**
20561
- * @private
20562
- */
20563
- const localPreviewSelector = reselect__namespace.createSelector([getDeviceManager], (deviceManager) => {
20564
- // TODO: we should take in a LocalVideoStream that developer wants to use as their 'Preview' view. We should also
20565
- // handle cases where 'Preview' view is in progress and not necessary completed.
20566
- const view = deviceManager.cameras.length > 0 && // This ensures that the video stream is reset if camera devices are removed.
20567
- deviceManager.unparentedViews.length > 0 &&
20568
- deviceManager.unparentedViews[0].view;
20569
- return {
20570
- videoStreamElement: view ? view.target : null
20571
- };
20572
- });
20573
-
20574
- // Copyright (c) Microsoft Corporation.
20575
- const localPreviewContainerStyle = {
20576
- borderRadius: '.25rem'
20577
- };
20578
- /**
20579
- * @private
20580
- */
20581
- const localPreviewContainerStyleDesktop = react.mergeStyles(Object.assign(Object.assign({}, localPreviewContainerStyle), { width: '50%', minWidth: '11rem', maxWidth: '25rem', height: '18.75rem', padding: '0.5rem' }));
20582
- /**
20583
- * @private
20584
- */
20585
- const localPreviewContainerStyleMobile = react.mergeStyles(Object.assign(Object.assign({}, localPreviewContainerStyle), { width: '100%', height: '100%' }));
20586
- /**
20587
- * @private
20588
- */
20589
- const cameraOffLabelStyle = react.mergeStyles({
20590
- fontSize: '0.75rem' // 12px
20591
- });
20592
- /**
20593
- * @private
20594
- */
20595
- const localPreviewTileStyle = {
20596
- root: {
20597
- borderRadius: '.25rem'
20598
- }
20599
- };
20600
-
20601
- // Copyright (c) Microsoft Corporation.
20602
- // Licensed under the MIT license.
20603
- var __awaiter$8 = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
20604
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
20605
- return new (P || (P = Promise))(function (resolve, reject) {
20606
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
20607
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
20608
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
20609
- step((generator = generator.apply(thisArg, _arguments || [])).next());
20610
- });
20611
- };
20612
- /**
20613
- * @private
20614
- */
20615
- const LocalPreview = (props) => {
20616
- const locale = useLocale();
20617
- const cameraButtonProps = usePropsFor$1(CameraButton);
20618
- const localPreviewProps = useSelector$1(localPreviewSelector);
20619
- const devicesButtonProps = usePropsFor$1(DevicesButton);
20620
- const { audio: microphonePermissionGranted, video: cameraPermissionGranted } = useSelector$1(devicePermissionSelector);
20621
- const isLocalMicrophoneEnabled = useSelector$1(getLocalMicrophoneEnabled);
20622
- const adapter = useAdapter();
20623
- const onToggleMic = React.useCallback(() => __awaiter$8(void 0, void 0, void 0, function* () {
20624
- isLocalMicrophoneEnabled ? adapter.mute() : adapter.unmute();
20625
- }), [adapter, isLocalMicrophoneEnabled]);
20626
- const hasNoDevices = devicesButtonProps.cameras.length === 0 &&
20627
- devicesButtonProps.microphones.length === 0 &&
20628
- devicesButtonProps.speakers.length === 0;
20629
- const hasCameras = devicesButtonProps.cameras.length > 0;
20630
- const hasMicrophones = devicesButtonProps.microphones.length > 0;
20631
- const theme = useTheme();
20632
- const onRenderPlaceholder = React.useCallback(() => {
20633
- return (React__default['default'].createElement(react.Stack, { className: react.mergeStyles({ width: '100%', height: '100%' }), verticalAlign: "center", tokens: { childrenGap: '0.25rem' } },
20634
- React__default['default'].createElement(react.Stack.Item, { align: "center" },
20635
- React__default['default'].createElement(CallCompositeIcon, { iconName: "LocalPreviewPlaceholder", className: react.mergeStyles(cameraOffLabelStyle, { color: theme.palette.neutralTertiary }) })),
20636
- React__default['default'].createElement(react.Stack.Item, { align: "center" },
20637
- React__default['default'].createElement(react.Text, { className: react.mergeStyles(cameraOffLabelStyle, { color: theme.palette.neutralSecondary }) }, locale.strings.call.cameraTurnedOff))));
20638
- }, [theme, locale.strings.call.cameraTurnedOff]);
20639
- const devicesButtonStyles = props.mobileView
20640
- ? {
20641
- menuStyles: {
20642
- menuItemStyles: buttonFlyoutIncreasedSizeStyles
20643
- }
20644
- }
20645
- : undefined;
20646
- return (React__default['default'].createElement(react.Stack, { "data-ui-id": "call-composite-local-preview", className: props.mobileView ? localPreviewContainerStyleMobile : localPreviewContainerStyleDesktop },
20647
- React__default['default'].createElement(VideoTile, { styles: localPreviewTileStyle, renderElement: (localPreviewProps === null || localPreviewProps === void 0 ? void 0 : localPreviewProps.videoStreamElement) ? (React__default['default'].createElement(StreamMedia, { videoStreamElement: localPreviewProps.videoStreamElement })) : undefined, onRenderPlaceholder: onRenderPlaceholder },
20648
- React__default['default'].createElement(ControlBar, { layout: "floatingBottom" },
20649
- React__default['default'].createElement(MicrophoneButton, { "data-ui-id": "call-composite-local-device-settings-microphone-button", checked: isLocalMicrophoneEnabled, onToggleMicrophone: onToggleMic, disabled: !microphonePermissionGranted || !hasMicrophones, showLabel: true }),
20650
- React__default['default'].createElement(CameraButton, Object.assign({ "data-ui-id": "call-composite-local-device-settings-camera-button" }, cameraButtonProps, { showLabel: true, disabled: !cameraPermissionGranted || !hasCameras })),
20651
- props.showDevicesButton && (React__default['default'].createElement(DevicesButton, Object.assign({ "data-ui-id": "call-composite-local-device-settings-options-button" }, devicesButtonProps, {
20652
- // disable button whilst all other buttons are disabled
20653
- disabled: !microphonePermissionGranted || !cameraPermissionGranted || hasNoDevices, showLabel: true, styles: devicesButtonStyles })))))));
20654
- };
20655
-
20656
20699
  // Copyright (c) Microsoft Corporation.
20657
20700
  /**
20658
20701
  * @private
@@ -20750,6 +20793,123 @@ const startCallButtonStyleMobile = react.mergeStyles({
20750
20793
  width: '100%',
20751
20794
  maxWidth: 'unset'
20752
20795
  });
20796
+ /**
20797
+ * @private
20798
+ */
20799
+ const effectsButtonStyles = (theme) => {
20800
+ return {
20801
+ root: {
20802
+ background: 'transparent',
20803
+ border: 'none',
20804
+ color: theme.palette.blue,
20805
+ width: '40%',
20806
+ alignSelf: 'end',
20807
+ ':hover, :focus': {
20808
+ color: theme.palette.blue
20809
+ }
20810
+ },
20811
+ rootChecked: {
20812
+ color: theme.palette.blue
20813
+ }
20814
+ };
20815
+ };
20816
+
20817
+ // Copyright (c) Microsoft Corporation.
20818
+ /**
20819
+ * @private
20820
+ */
20821
+ const localPreviewSelector = reselect__namespace.createSelector([getDeviceManager], (deviceManager) => {
20822
+ // TODO: we should take in a LocalVideoStream that developer wants to use as their 'Preview' view. We should also
20823
+ // handle cases where 'Preview' view is in progress and not necessary completed.
20824
+ const view = deviceManager.cameras.length > 0 && // This ensures that the video stream is reset if camera devices are removed.
20825
+ deviceManager.unparentedViews.length > 0 &&
20826
+ deviceManager.unparentedViews[0].view;
20827
+ return {
20828
+ videoStreamElement: view ? view.target : null
20829
+ };
20830
+ });
20831
+
20832
+ // Copyright (c) Microsoft Corporation.
20833
+ const localPreviewContainerStyle = {
20834
+ borderRadius: '.25rem'
20835
+ };
20836
+ /**
20837
+ * @private
20838
+ */
20839
+ const localPreviewContainerStyleDesktop = react.mergeStyles(Object.assign(Object.assign({}, localPreviewContainerStyle), { width: '50%', minWidth: '11rem', maxWidth: '25rem', height: '18.75rem', padding: '0.5rem' }));
20840
+ /**
20841
+ * @private
20842
+ */
20843
+ const localPreviewContainerStyleMobile = react.mergeStyles(Object.assign(Object.assign({}, localPreviewContainerStyle), { width: '100%', height: '100%' }));
20844
+ /**
20845
+ * @private
20846
+ */
20847
+ const cameraOffLabelStyle = react.mergeStyles({
20848
+ fontSize: '0.75rem' // 12px
20849
+ });
20850
+ /**
20851
+ * @private
20852
+ */
20853
+ const localPreviewTileStyle = {
20854
+ root: {
20855
+ borderRadius: '.25rem'
20856
+ }
20857
+ };
20858
+
20859
+ // Copyright (c) Microsoft Corporation.
20860
+ // Licensed under the MIT license.
20861
+ var __awaiter$9 = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
20862
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
20863
+ return new (P || (P = Promise))(function (resolve, reject) {
20864
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
20865
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
20866
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
20867
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
20868
+ });
20869
+ };
20870
+ /**
20871
+ * @private
20872
+ */
20873
+ const LocalPreview = (props) => {
20874
+ const locale = useLocale();
20875
+ const cameraButtonProps = usePropsFor$1(CameraButton);
20876
+ const localPreviewProps = useSelector$1(localPreviewSelector);
20877
+ const devicesButtonProps = usePropsFor$1(DevicesButton);
20878
+ const { audio: microphonePermissionGranted, video: cameraPermissionGranted } = useSelector$1(devicePermissionSelector);
20879
+ const isLocalMicrophoneEnabled = useSelector$1(getLocalMicrophoneEnabled);
20880
+ const adapter = useAdapter();
20881
+ const onToggleMic = React.useCallback(() => __awaiter$9(void 0, void 0, void 0, function* () {
20882
+ isLocalMicrophoneEnabled ? adapter.mute() : adapter.unmute();
20883
+ }), [adapter, isLocalMicrophoneEnabled]);
20884
+ const hasNoDevices = devicesButtonProps.cameras.length === 0 &&
20885
+ devicesButtonProps.microphones.length === 0 &&
20886
+ devicesButtonProps.speakers.length === 0;
20887
+ const hasCameras = devicesButtonProps.cameras.length > 0;
20888
+ const hasMicrophones = devicesButtonProps.microphones.length > 0;
20889
+ const theme = useTheme();
20890
+ const onRenderPlaceholder = React.useCallback(() => {
20891
+ return (React__default['default'].createElement(react.Stack, { className: react.mergeStyles({ width: '100%', height: '100%' }), verticalAlign: "center", tokens: { childrenGap: '0.25rem' } },
20892
+ React__default['default'].createElement(react.Stack.Item, { align: "center" },
20893
+ React__default['default'].createElement(CallCompositeIcon, { iconName: "LocalPreviewPlaceholder", className: react.mergeStyles(cameraOffLabelStyle, { color: theme.palette.neutralTertiary }) })),
20894
+ React__default['default'].createElement(react.Stack.Item, { align: "center" },
20895
+ React__default['default'].createElement(react.Text, { className: react.mergeStyles(cameraOffLabelStyle, { color: theme.palette.neutralSecondary }) }, locale.strings.call.cameraTurnedOff))));
20896
+ }, [theme, locale.strings.call.cameraTurnedOff]);
20897
+ const devicesButtonStyles = props.mobileView
20898
+ ? {
20899
+ menuStyles: {
20900
+ menuItemStyles: buttonFlyoutIncreasedSizeStyles
20901
+ }
20902
+ }
20903
+ : undefined;
20904
+ return (React__default['default'].createElement(react.Stack, { "data-ui-id": "call-composite-local-preview", className: props.mobileView ? localPreviewContainerStyleMobile : localPreviewContainerStyleDesktop },
20905
+ React__default['default'].createElement(VideoTile, { styles: localPreviewTileStyle, renderElement: (localPreviewProps === null || localPreviewProps === void 0 ? void 0 : localPreviewProps.videoStreamElement) ? (React__default['default'].createElement(StreamMedia, { videoStreamElement: localPreviewProps.videoStreamElement })) : undefined, onRenderPlaceholder: onRenderPlaceholder },
20906
+ React__default['default'].createElement(ControlBar, { layout: "floatingBottom" },
20907
+ React__default['default'].createElement(MicrophoneButton, { "data-ui-id": "call-composite-local-device-settings-microphone-button", checked: isLocalMicrophoneEnabled, onToggleMicrophone: onToggleMic, disabled: !microphonePermissionGranted || !hasMicrophones, showLabel: true }),
20908
+ React__default['default'].createElement(CameraButton, Object.assign({ "data-ui-id": "call-composite-local-device-settings-camera-button" }, cameraButtonProps, { showLabel: true, disabled: !cameraPermissionGranted || !hasCameras })),
20909
+ props.showDevicesButton && (React__default['default'].createElement(DevicesButton, Object.assign({ "data-ui-id": "call-composite-local-device-settings-options-button" }, devicesButtonProps, {
20910
+ // disable button whilst all other buttons are disabled
20911
+ disabled: !microphonePermissionGranted || !cameraPermissionGranted || hasNoDevices, showLabel: true, styles: devicesButtonStyles })))))));
20912
+ };
20753
20913
 
20754
20914
  // Copyright (c) Microsoft Corporation.
20755
20915
  /**
@@ -20971,6 +21131,71 @@ const CallReadinessModalFallBack = (props) => {
20971
21131
  }
20972
21132
  };
20973
21133
 
21134
+ var __awaiter$8 = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
21135
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
21136
+ return new (P || (P = Promise))(function (resolve, reject) {
21137
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
21138
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
21139
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
21140
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
21141
+ });
21142
+ };
21143
+ /**
21144
+ * Pane that is used to show video effects button
21145
+ * @private
21146
+ */
21147
+ /** @beta */
21148
+ const VideoEffectsPane = (props) => {
21149
+ const { showVideoEffectsOptions, setshowVideoEffectsOptions } = props;
21150
+ /* @conditional-compile-remove(video-background-effects) */
21151
+ const locale = useLocale();
21152
+ /* @conditional-compile-remove(video-background-effects) */
21153
+ const strings = locale.strings.call;
21154
+ /* @conditional-compile-remove(video-background-effects) */
21155
+ const selectableVideoEffects = [
21156
+ {
21157
+ key: 'none',
21158
+ iconProps: {
21159
+ iconName: 'RemoveVideoBackgroundEffect'
21160
+ },
21161
+ title: strings.removeBackgroundEffectButtonLabel,
21162
+ tooltipProps: {
21163
+ content: strings.removeBackgroundTooltip
21164
+ }
21165
+ },
21166
+ {
21167
+ key: 'blur',
21168
+ iconProps: {
21169
+ iconName: 'BlurVideoBackground'
21170
+ },
21171
+ title: strings.blurBackgroundEffectButtonLabel,
21172
+ tooltipProps: {
21173
+ content: strings.blurBackgroundTooltip
21174
+ }
21175
+ }
21176
+ ];
21177
+ /* @conditional-compile-remove(video-background-effects) */
21178
+ const onEffectChange = React.useCallback((effectKey) => __awaiter$8(void 0, void 0, void 0, function* () {
21179
+ if (effectKey === 'blur') {
21180
+ props.adapter.blurVideoBackground();
21181
+ }
21182
+ else if (effectKey === 'none') {
21183
+ props.adapter.stopVideoBackgroundEffect();
21184
+ }
21185
+ }), [props.adapter]);
21186
+ return VideoEffectsPaneTrampoline(showVideoEffectsOptions, setshowVideoEffectsOptions,
21187
+ /* @conditional-compile-remove(video-background-effects) */
21188
+ selectableVideoEffects,
21189
+ /* @conditional-compile-remove(video-background-effects) */
21190
+ onEffectChange);
21191
+ };
21192
+ const VideoEffectsPaneTrampoline = (showVideoEffectsOptions, setshowVideoEffectsOptions, selectableVideoEffects, onEffectChange) => {
21193
+ /* @conditional-compile-remove(video-background-effects) */
21194
+ const locale = useLocale();
21195
+ /* @conditional-compile-remove(video-background-effects) */
21196
+ return (React__default['default'].createElement(react.Panel, { headerText: locale.strings.call.effects, isOpen: showVideoEffectsOptions, onDismiss: () => setshowVideoEffectsOptions(false), hasCloseButton: true, closeButtonAriaLabel: "Close", isLightDismiss: true }, selectableVideoEffects && (React__default['default'].createElement(_VideoBackgroundEffectsPicker, { options: selectableVideoEffects, onChange: onEffectChange }))));
21197
+ };
21198
+
20974
21199
  // Copyright (c) Microsoft Corporation.
20975
21200
  /**
20976
21201
  * @private
@@ -20982,6 +21207,8 @@ const ConfigurationPage = (props) => {
20982
21207
  /* @conditional-compile-remove(call-readiness) */ deviceChecks,
20983
21208
  /* @conditional-compile-remove(call-readiness) */ onPermissionsTroubleshootingClick,
20984
21209
  /* @conditional-compile-remove(call-readiness) */ onNetworkingTroubleShootingClick } = props;
21210
+ /* @conditional-compile-remove(video-background-effects) */
21211
+ const [showVideoEffectsPane, setVideoEffectsPane] = React.useState(false);
20985
21212
  const options = useAdaptedSelector(getSelector$1(DevicesButton));
20986
21213
  const localDeviceSettingsHandlers = useHandlers();
20987
21214
  const { video: cameraPermissionGranted, audio: microphonePermissionGranted } = useSelector$1(devicePermissionSelector);
@@ -20994,6 +21221,8 @@ const ConfigurationPage = (props) => {
20994
21221
  getDevicePermissionState(setVideoState, setAudioState);
20995
21222
  let errorBarProps = usePropsFor$1(ErrorBar);
20996
21223
  const adapter = useAdapter();
21224
+ /* @conditional-compile-remove(video-background-effects) */
21225
+ const theme = react.useTheme();
20997
21226
  const deviceState = adapter.getState().devices;
20998
21227
  /* @conditional-compile-remove(unsupported-browser) */
20999
21228
  const environmentInfo = adapter.getState().environmentInfo;
@@ -21108,6 +21337,10 @@ const ConfigurationPage = (props) => {
21108
21337
  React__default['default'].createElement(react.Stack.Item, { styles: callDetailsContainerStylesDesktop },
21109
21338
  title,
21110
21339
  callDescription),
21340
+ /* @conditional-compile-remove(video-background-effects) */
21341
+ React__default['default'].createElement(react.DefaultButton, { iconProps: { iconName: 'OptionsVideoBackgroundEffect' }, styles: effectsButtonStyles(theme), onClick: () => {
21342
+ setVideoEffectsPane(!showVideoEffectsPane);
21343
+ } }, locale.strings.call.effects),
21111
21344
  React__default['default'].createElement(LocalDeviceSettings, Object.assign({}, options, localDeviceSettingsHandlers, { cameraPermissionGranted: cameraPermissionGrantedTrampoline(cameraPermissionGranted,
21112
21345
  /* @conditional-compile-remove(call-readiness) */ videoState), microphonePermissionGranted: micPermissionGrantedTrampoline(microphonePermissionGranted,
21113
21346
  /* @conditional-compile-remove(call-readiness) */ audioState),
@@ -21116,7 +21349,9 @@ const ConfigurationPage = (props) => {
21116
21349
  setIsPermissionsModalDismissed(true);
21117
21350
  } })))),
21118
21351
  React__default['default'].createElement(react.Stack, { styles: mobileWithPreview ? startCallButtonContainerStyleMobile : startCallButtonContainerStyleDesktop },
21119
- React__default['default'].createElement(StartCallButton, { className: mobileWithPreview ? startCallButtonStyleMobile : undefined, onClick: startCallHandler, disabled: disableStartCallButton }))))));
21352
+ React__default['default'].createElement(StartCallButton, { className: mobileWithPreview ? startCallButtonStyleMobile : undefined, onClick: startCallHandler, disabled: disableStartCallButton })))),
21353
+ /* @conditional-compile-remove(video-background-effects) */
21354
+ React__default['default'].createElement(VideoEffectsPane, { showVideoEffectsOptions: showVideoEffectsPane, setshowVideoEffectsOptions: setVideoEffectsPane, adapter: adapter })));
21120
21355
  };
21121
21356
  const localPreviewTrampoline = (mobileView, doNotShow) => {
21122
21357
  /* @conditional-compile-remove(rooms) */
@@ -23242,7 +23477,8 @@ const callCompositeContainerStyles = {
23242
23477
  // Start a new stacking context so that any `position:absolute` elements
23243
23478
  // inside the call composite do not compete with its siblings.
23244
23479
  position: 'relative',
23245
- width: '100%'
23480
+ width: '100%',
23481
+ minWidth: 0
23246
23482
  }
23247
23483
  };
23248
23484
  /** @private */
@@ -23766,20 +24002,6 @@ const CallWithChatPane = (props) => {
23766
24002
  React__default['default'].createElement(_DrawerMenu, { onLightDismiss: () => setDrawerMenuItems([]), items: drawerMenuItems })))));
23767
24003
  };
23768
24004
 
23769
- // Copyright (c) Microsoft Corporation.
23770
- /**
23771
- * Pane that is used to show video effects button
23772
- * @private
23773
- */
23774
- /** @beta */
23775
- const VideoEffectsPane = (props) => {
23776
- return VideoEffectsPaneTrampoline(props.showVideoEffectsOptions, props.setshowVideoEffectsOptions);
23777
- };
23778
- const VideoEffectsPaneTrampoline = (showVideoEffectsOptions, setshowVideoEffectsOptions) => {
23779
- /* @conditional-compile-remove(video-background-effects) */
23780
- return (React__default['default'].createElement(react.Panel, { headerText: "Effects", isOpen: showVideoEffectsOptions, onDismiss: () => setshowVideoEffectsOptions(false), hasCloseButton: true, closeButtonAriaLabel: "Close", isLightDismiss: true }));
23781
- };
23782
-
23783
24005
  // Copyright (c) Microsoft Corporation.
23784
24006
  const CallWithChatScreen = (props) => {
23785
24007
  const { callWithChatAdapter, fluentTheme, formFactor = 'desktop' } = props;
@@ -23935,7 +24157,7 @@ const CallWithChatScreen = (props) => {
23935
24157
  style: callCompositeContainerCSS },
23936
24158
  React__default['default'].createElement(CallComposite, Object.assign({}, props, { formFactor: formFactor, options: callCompositeOptions, adapter: callAdapter, fluentTheme: fluentTheme }))),
23937
24159
  /* @conditional-compile-remove(video-background-effects) */
23938
- React__default['default'].createElement(VideoEffectsPane, { showVideoEffectsOptions: showVideoEffectsPane, setshowVideoEffectsOptions: setShowVideoEffectsPane }),
24160
+ React__default['default'].createElement(VideoEffectsPane, { showVideoEffectsOptions: showVideoEffectsPane, setshowVideoEffectsOptions: setShowVideoEffectsPane, adapter: callAdapter }),
23939
24161
  chatProps.adapter && callAdapter && hasJoinedCall && (React__default['default'].createElement(CallWithChatPane, { chatCompositeProps: chatProps, inviteLink: props.joinInvitationURL, onClose: closePane, chatAdapter: chatProps.adapter, callAdapter: callAdapter, onFetchAvatarPersonaData: props.onFetchAvatarPersonaData, onFetchParticipantMenuItems: props.onFetchParticipantMenuItems, onChatButtonClicked: showShowChatTabHeaderButton(props.callControls) ? selectChat : undefined, onPeopleButtonClicked: showShowPeopleTabHeaderButton(props.callControls) ? selectPeople : undefined, modalLayerHostId: modalLayerHostId, mobileView: mobileView, activePane: activePane,
23940
24162
  /* @conditional-compile-remove(file-sharing) */
23941
24163
  fileSharing: props.fileSharing, rtl: props.rtl, callControls: typeof props.callControls !== 'boolean' ? props.callControls : undefined }))),