@azure/communication-react 1.5.1-alpha-202303030153 → 1.5.1-alpha-202303050016

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 (47) hide show
  1. package/dist/communication-react.d.ts +54 -4
  2. package/dist/dist-cjs/communication-react/index.js +260 -183
  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/communication-react/src/index.d.ts +1 -0
  7. package/dist/dist-esm/communication-react/src/index.js.map +1 -1
  8. package/dist/dist-esm/react-components/src/components/Caption.d.ts +23 -0
  9. package/dist/dist-esm/react-components/src/components/Caption.js +46 -0
  10. package/dist/dist-esm/react-components/src/components/Caption.js.map +1 -0
  11. package/dist/dist-esm/react-components/src/components/HorizontalGallery.js +2 -2
  12. package/dist/dist-esm/react-components/src/components/HorizontalGallery.js.map +1 -1
  13. package/dist/dist-esm/react-components/src/components/MessageThread.js +19 -7
  14. package/dist/dist-esm/react-components/src/components/MessageThread.js.map +1 -1
  15. package/dist/dist-esm/react-components/src/components/ParticipantItem.js +1 -1
  16. package/dist/dist-esm/react-components/src/components/ParticipantItem.js.map +1 -1
  17. package/dist/dist-esm/react-components/src/components/ResponsiveVerticalGallery.js +3 -1
  18. package/dist/dist-esm/react-components/src/components/ResponsiveVerticalGallery.js.map +1 -1
  19. package/dist/dist-esm/react-components/src/components/VerticalGallery.d.ts +15 -0
  20. package/dist/dist-esm/react-components/src/components/VerticalGallery.js +12 -2
  21. package/dist/dist-esm/react-components/src/components/VerticalGallery.js.map +1 -1
  22. package/dist/dist-esm/react-components/src/components/VideoGallery/DefaultLayout.js +5 -2
  23. package/dist/dist-esm/react-components/src/components/VideoGallery/DefaultLayout.js.map +1 -1
  24. package/dist/dist-esm/react-components/src/components/VideoGallery/FloatingLocalVideoLayout.js +19 -10
  25. package/dist/dist-esm/react-components/src/components/VideoGallery/FloatingLocalVideoLayout.js.map +1 -1
  26. package/dist/dist-esm/react-components/src/components/VideoGallery/OverflowGallery.d.ts +3 -1
  27. package/dist/dist-esm/react-components/src/components/VideoGallery/OverflowGallery.js +12 -6
  28. package/dist/dist-esm/react-components/src/components/VideoGallery/OverflowGallery.js.map +1 -1
  29. package/dist/dist-esm/react-components/src/components/VideoGallery/styles/VideoGalleryResponsiveVerticalGallery.styles.d.ts +1 -1
  30. package/dist/dist-esm/react-components/src/components/VideoGallery/styles/VideoGalleryResponsiveVerticalGallery.styles.js +15 -7
  31. package/dist/dist-esm/react-components/src/components/VideoGallery/styles/VideoGalleryResponsiveVerticalGallery.styles.js.map +1 -1
  32. package/dist/dist-esm/react-components/src/components/VideoGallery.d.ts +3 -0
  33. package/dist/dist-esm/react-components/src/components/VideoGallery.js.map +1 -1
  34. package/dist/dist-esm/react-components/src/components/index.d.ts +2 -0
  35. package/dist/dist-esm/react-components/src/components/index.js +1 -0
  36. package/dist/dist-esm/react-components/src/components/index.js.map +1 -1
  37. package/dist/dist-esm/react-components/src/identifiers/IdentifierProvider.d.ts +4 -4
  38. package/dist/dist-esm/react-components/src/identifiers/IdentifierProvider.js +2 -2
  39. package/dist/dist-esm/react-components/src/identifiers/IdentifierProvider.js.map +1 -1
  40. package/dist/dist-esm/react-components/src/localization/LocalizationProvider.d.ts +5 -0
  41. package/dist/dist-esm/react-components/src/localization/LocalizationProvider.js.map +1 -1
  42. package/dist/dist-esm/react-components/src/localization/locales/en-US/strings.json +4 -0
  43. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/MediaGallery.js +21 -3
  44. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/MediaGallery.js.map +1 -1
  45. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.js +16 -1
  46. package/dist/dist-esm/react-composites/src/composites/ChatComposite/ChatScreen.js.map +1 -1
  47. package/package.json +8 -8
@@ -161,7 +161,7 @@ const _toCommunicationIdentifier = (id) => {
161
161
  // Copyright (c) Microsoft Corporation.
162
162
  // Licensed under the MIT license.
163
163
  // GENERATED FILE. DO NOT EDIT MANUALLY.
164
- var telemetryVersion = '1.5.1-alpha-202303030153';
164
+ var telemetryVersion = '1.5.1-alpha-202303050016';
165
165
 
166
166
  // Copyright (c) Microsoft Corporation.
167
167
  /**
@@ -377,7 +377,7 @@ const getEnvironmentInfo = (state) => {
377
377
 
378
378
  // Copyright (c) Microsoft Corporation.
379
379
  // Licensed under the MIT license.
380
- var __awaiter$D = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
380
+ var __awaiter$E = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
381
381
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
382
382
  return new (P || (P = Promise))(function (resolve, reject) {
383
383
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -415,7 +415,7 @@ const _isPreviewOn = (deviceManager) => {
415
415
  *
416
416
  * @private
417
417
  */
418
- const disposeAllLocalPreviewViews = (callClient) => __awaiter$D(void 0, void 0, void 0, function* () {
418
+ const disposeAllLocalPreviewViews = (callClient) => __awaiter$E(void 0, void 0, void 0, function* () {
419
419
  const unparentedViews = callClient.getState().deviceManager.unparentedViews;
420
420
  for (const view of unparentedViews) {
421
421
  yield callClient.disposeView(undefined, undefined, view);
@@ -548,7 +548,7 @@ const holdButtonSelector = reselect__namespace.createSelector([getCallState], (c
548
548
 
549
549
  // Copyright (c) Microsoft Corporation.
550
550
  // Licensed under the MIT license.
551
- var __awaiter$C = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
551
+ var __awaiter$D = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
552
552
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
553
553
  return new (P || (P = Promise))(function (resolve, reject) {
554
554
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -569,7 +569,7 @@ const areStreamsEqual = (prevStream, newStream) => {
569
569
  * @private
570
570
  */
571
571
  const createDefaultCommonCallingHandlers = memoizeOne__default['default']((callClient, deviceManager, call) => {
572
- const onStartLocalVideo = () => __awaiter$C(void 0, void 0, void 0, function* () {
572
+ const onStartLocalVideo = () => __awaiter$D(void 0, void 0, void 0, function* () {
573
573
  // Before the call object creates a stream, dispose of any local preview streams.
574
574
  // @TODO: is there any way to parent the unparented view to the call object instead
575
575
  // of disposing and creating a new stream?
@@ -589,7 +589,7 @@ const createDefaultCommonCallingHandlers = memoizeOne__default['default']((callC
589
589
  yield call.startVideo(stream);
590
590
  }
591
591
  });
592
- const onStopLocalVideo = (stream) => __awaiter$C(void 0, void 0, void 0, function* () {
592
+ const onStopLocalVideo = (stream) => __awaiter$D(void 0, void 0, void 0, function* () {
593
593
  const callId = call === null || call === void 0 ? void 0 : call.id;
594
594
  if (!callId) {
595
595
  return;
@@ -598,7 +598,7 @@ const createDefaultCommonCallingHandlers = memoizeOne__default['default']((callC
598
598
  yield call.stopVideo(stream);
599
599
  }
600
600
  });
601
- const onToggleCamera = (options) => __awaiter$C(void 0, void 0, void 0, function* () {
601
+ const onToggleCamera = (options) => __awaiter$D(void 0, void 0, void 0, function* () {
602
602
  const previewOn = _isPreviewOn(callClient.getState().deviceManager);
603
603
  if (previewOn && call && call.state === 'Connecting') {
604
604
  // This is to workaround: https://skype.visualstudio.com/SPOOL/_workitems/edit/3030558.
@@ -646,19 +646,19 @@ const createDefaultCommonCallingHandlers = memoizeOne__default['default']((callC
646
646
  }
647
647
  }
648
648
  });
649
- const onSelectMicrophone = (device) => __awaiter$C(void 0, void 0, void 0, function* () {
649
+ const onSelectMicrophone = (device) => __awaiter$D(void 0, void 0, void 0, function* () {
650
650
  if (!deviceManager) {
651
651
  return;
652
652
  }
653
653
  return deviceManager.selectMicrophone(device);
654
654
  });
655
- const onSelectSpeaker = (device) => __awaiter$C(void 0, void 0, void 0, function* () {
655
+ const onSelectSpeaker = (device) => __awaiter$D(void 0, void 0, void 0, function* () {
656
656
  if (!deviceManager) {
657
657
  return;
658
658
  }
659
659
  return deviceManager.selectSpeaker(device);
660
660
  });
661
- const onSelectCamera = (device, options) => __awaiter$C(void 0, void 0, void 0, function* () {
661
+ const onSelectCamera = (device, options) => __awaiter$D(void 0, void 0, void 0, function* () {
662
662
  if (!deviceManager) {
663
663
  return;
664
664
  }
@@ -681,19 +681,19 @@ const createDefaultCommonCallingHandlers = memoizeOne__default['default']((callC
681
681
  }, options);
682
682
  }
683
683
  });
684
- const onToggleMicrophone = () => __awaiter$C(void 0, void 0, void 0, function* () {
684
+ const onToggleMicrophone = () => __awaiter$D(void 0, void 0, void 0, function* () {
685
685
  if (!call || !_isInCall(call.state)) {
686
686
  throw new Error(`Please invoke onToggleMicrophone after call is started`);
687
687
  }
688
688
  return call.isMuted ? yield call.unmute() : yield call.mute();
689
689
  });
690
- const onStartScreenShare = () => __awaiter$C(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.startScreenSharing()); });
691
- const onStopScreenShare = () => __awaiter$C(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.stopScreenSharing()); });
692
- const onToggleScreenShare = () => __awaiter$C(void 0, void 0, void 0, function* () { return (call === null || call === void 0 ? void 0 : call.isScreenSharingOn) ? yield onStopScreenShare() : yield onStartScreenShare(); });
693
- const onHangUp = (forEveryone) => __awaiter$C(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.hangUp({ forEveryone: forEveryone === true ? true : false })); });
690
+ const onStartScreenShare = () => __awaiter$D(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.startScreenSharing()); });
691
+ const onStopScreenShare = () => __awaiter$D(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.stopScreenSharing()); });
692
+ const onToggleScreenShare = () => __awaiter$D(void 0, void 0, void 0, function* () { return (call === null || call === void 0 ? void 0 : call.isScreenSharingOn) ? yield onStopScreenShare() : yield onStartScreenShare(); });
693
+ const onHangUp = (forEveryone) => __awaiter$D(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.hangUp({ forEveryone: forEveryone === true ? true : false })); });
694
694
  /* @conditional-compile-remove(PSTN-calls) */
695
- const onToggleHold = () => __awaiter$C(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()); });
696
- const onCreateLocalStreamView = (options = { scalingMode: 'Crop', isMirrored: true }) => __awaiter$C(void 0, void 0, void 0, function* () {
695
+ const onToggleHold = () => __awaiter$D(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()); });
696
+ const onCreateLocalStreamView = (options = { scalingMode: 'Crop', isMirrored: true }) => __awaiter$D(void 0, void 0, void 0, function* () {
697
697
  var _a;
698
698
  if (!call || call.localVideoStreams.length === 0) {
699
699
  return;
@@ -709,7 +709,7 @@ const createDefaultCommonCallingHandlers = memoizeOne__default['default']((callC
709
709
  const { view } = (_a = (yield callClient.createView(call.id, undefined, localStream, options))) !== null && _a !== void 0 ? _a : {};
710
710
  return view ? { view } : undefined;
711
711
  });
712
- const onCreateRemoteStreamView = (userId, options = { scalingMode: 'Crop' }) => __awaiter$C(void 0, void 0, void 0, function* () {
712
+ const onCreateRemoteStreamView = (userId, options = { scalingMode: 'Crop' }) => __awaiter$D(void 0, void 0, void 0, function* () {
713
713
  if (!call) {
714
714
  return;
715
715
  }
@@ -740,7 +740,7 @@ const createDefaultCommonCallingHandlers = memoizeOne__default['default']((callC
740
740
  }
741
741
  return (createViewResult === null || createViewResult === void 0 ? void 0 : createViewResult.view) ? { view: createViewResult === null || createViewResult === void 0 ? void 0 : createViewResult.view } : undefined;
742
742
  });
743
- const onDisposeRemoteStreamView = (userId) => __awaiter$C(void 0, void 0, void 0, function* () {
743
+ const onDisposeRemoteStreamView = (userId) => __awaiter$D(void 0, void 0, void 0, function* () {
744
744
  if (!call) {
745
745
  return;
746
746
  }
@@ -761,7 +761,7 @@ const createDefaultCommonCallingHandlers = memoizeOne__default['default']((callC
761
761
  callClient.disposeView(call.id, participant.identifier, screenShareStream);
762
762
  }
763
763
  });
764
- const onDisposeLocalStreamView = () => __awaiter$C(void 0, void 0, void 0, function* () {
764
+ const onDisposeLocalStreamView = () => __awaiter$D(void 0, void 0, void 0, function* () {
765
765
  // If the user is currently in a call, dispose of the local stream view attached to that call.
766
766
  const callState = call && callClient.getState().calls[call.id];
767
767
  const localStream = callState === null || callState === void 0 ? void 0 : callState.localVideoStreams.find((item) => item.mediaStreamType === 'Video');
@@ -774,12 +774,12 @@ const createDefaultCommonCallingHandlers = memoizeOne__default['default']((callC
774
774
  yield disposeAllLocalPreviewViews(callClient);
775
775
  });
776
776
  /* @conditional-compile-remove(dialpad) */ /* @conditional-compile-remove(PSTN-calls) */
777
- const onSendDtmfTone = (dtmfTone) => __awaiter$C(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.sendDtmf(dtmfTone)); });
777
+ const onSendDtmfTone = (dtmfTone) => __awaiter$D(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.sendDtmf(dtmfTone)); });
778
778
  const notImplemented = () => {
779
779
  throw new Error('Not implemented, cannot call a method from an abstract object');
780
780
  };
781
781
  /* @conditional-compile-remove(call-readiness) */
782
- const askDevicePermission = (constrain) => __awaiter$C(void 0, void 0, void 0, function* () {
782
+ const askDevicePermission = (constrain) => __awaiter$D(void 0, void 0, void 0, function* () {
783
783
  if (deviceManager) {
784
784
  yield (deviceManager === null || deviceManager === void 0 ? void 0 : deviceManager.askDevicePermission(constrain));
785
785
  }
@@ -813,7 +813,7 @@ const createDefaultCommonCallingHandlers = memoizeOne__default['default']((callC
813
813
 
814
814
  // Copyright (c) Microsoft Corporation.
815
815
  // Licensed under the MIT license.
816
- var __awaiter$B = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
816
+ var __awaiter$C = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
817
817
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
818
818
  return new (P || (P = Promise))(function (resolve, reject) {
819
819
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -840,7 +840,7 @@ const createDefaultCallingHandlers = memoizeOne__default['default']((callClient,
840
840
  return callAgent ? callAgent.startCall(participants, options) : undefined;
841
841
  },
842
842
  /* @conditional-compile-remove(PSTN-calls) */
843
- onAddParticipant: (userId, options) => __awaiter$B(void 0, void 0, void 0, function* () {
843
+ onAddParticipant: (userId, options) => __awaiter$C(void 0, void 0, void 0, function* () {
844
844
  const participant = _toCommunicationIdentifier(userId);
845
845
  if (communicationCommon.isPhoneNumberIdentifier(participant)) {
846
846
  call === null || call === void 0 ? void 0 : call.addParticipant(participant, options);
@@ -848,7 +848,7 @@ const createDefaultCallingHandlers = memoizeOne__default['default']((callClient,
848
848
  else if (communicationCommon.isCommunicationUserIdentifier(participant) || communicationCommon.isMicrosoftTeamsUserIdentifier(participant)) {
849
849
  call === null || call === void 0 ? void 0 : call.addParticipant(participant);
850
850
  }
851
- }), onRemoveParticipant: (userId) => __awaiter$B(void 0, void 0, void 0, function* () {
851
+ }), onRemoveParticipant: (userId) => __awaiter$C(void 0, void 0, void 0, function* () {
852
852
  const participant = _toCommunicationIdentifier(userId);
853
853
  yield (call === null || call === void 0 ? void 0 : call.removeParticipant(participant));
854
854
  }) });
@@ -856,7 +856,7 @@ const createDefaultCallingHandlers = memoizeOne__default['default']((callClient,
856
856
 
857
857
  // Copyright (c) Microsoft Corporation.
858
858
  // Licensed under the MIT license.
859
- var __awaiter$A = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
859
+ var __awaiter$B = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
860
860
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
861
861
  return new (P || (P = Promise))(function (resolve, reject) {
862
862
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -888,7 +888,7 @@ const createDefaultTeamsCallingHandlers = memoizeOne__default['default']((callCl
888
888
  },
889
889
  /* @conditional-compile-remove(teams-identity-support) */
890
890
  /* @conditional-compile-remove(PSTN-calls) */
891
- onAddParticipant: (userId, options) => __awaiter$A(void 0, void 0, void 0, function* () {
891
+ onAddParticipant: (userId, options) => __awaiter$B(void 0, void 0, void 0, function* () {
892
892
  const participant = _toCommunicationIdentifier(userId);
893
893
  /* @conditional-compile-remove(teams-identity-support) */
894
894
  const threadId = options === null || options === void 0 ? void 0 : options.threadId;
@@ -901,7 +901,7 @@ const createDefaultTeamsCallingHandlers = memoizeOne__default['default']((callCl
901
901
  }
902
902
  /* @conditional-compile-remove(teams-identity-support) */
903
903
  call === null || call === void 0 ? void 0 : call.addParticipant(participant);
904
- }), onRemoveParticipant: (userId) => __awaiter$A(void 0, void 0, void 0, function* () {
904
+ }), onRemoveParticipant: (userId) => __awaiter$B(void 0, void 0, void 0, function* () {
905
905
  const participant = _toCommunicationIdentifier(userId);
906
906
  if (communicationCommon.isCommunicationUserIdentifier(participant)) {
907
907
  throw new Error('CommunicationIdentifier in Teams call is not supported!');
@@ -913,7 +913,7 @@ const createDefaultTeamsCallingHandlers = memoizeOne__default['default']((callCl
913
913
 
914
914
  // Copyright (c) Microsoft Corporation.
915
915
  // Licensed under the MIT license.
916
- var __awaiter$z = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
916
+ var __awaiter$A = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
917
917
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
918
918
  return new (P || (P = Promise))(function (resolve, reject) {
919
919
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -962,13 +962,13 @@ class ProxyDeviceManager {
962
962
  this.selectCamera = (videoDeviceInfo) => {
963
963
  this._context.setDeviceManagerSelectedCamera(videoDeviceInfo);
964
964
  };
965
- this.videoDevicesUpdated = () => __awaiter$z(this, void 0, void 0, function* () {
965
+ this.videoDevicesUpdated = () => __awaiter$A(this, void 0, void 0, function* () {
966
966
  // Device Manager always has a camera with '' name if there are no real camera devices available.
967
967
  // We don't want to show that in the UI.
968
968
  const realCameras = (yield this._deviceManager.getCameras()).filter((c) => !!c.name);
969
969
  this._context.setDeviceManagerCameras(dedupeById(realCameras));
970
970
  });
971
- this.audioDevicesUpdated = () => __awaiter$z(this, void 0, void 0, function* () {
971
+ this.audioDevicesUpdated = () => __awaiter$A(this, void 0, void 0, function* () {
972
972
  this._context.setDeviceManagerMicrophones(dedupeById(yield this._deviceManager.getMicrophones()));
973
973
  this._context.setDeviceManagerSpeakers(dedupeById(yield this._deviceManager.getSpeakers()));
974
974
  });
@@ -1184,7 +1184,7 @@ class CallIdHistory {
1184
1184
 
1185
1185
  // Copyright (c) Microsoft Corporation.
1186
1186
  // Licensed under the MIT license.
1187
- var __awaiter$y = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
1187
+ var __awaiter$z = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
1188
1188
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
1189
1189
  return new (P || (P = Promise))(function (resolve, reject) {
1190
1190
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -1768,7 +1768,7 @@ class CallContext$2 {
1768
1768
  * @throws CallError. Exceptions thrown from `f` are tagged with the failed `target.
1769
1769
  */
1770
1770
  withAsyncErrorTeedToState(action, target) {
1771
- return (...args) => __awaiter$y(this, void 0, void 0, function* () {
1771
+ return (...args) => __awaiter$z(this, void 0, void 0, function* () {
1772
1772
  try {
1773
1773
  return yield action(...args);
1774
1774
  }
@@ -2100,7 +2100,7 @@ class RemoteVideoStreamSubscriber {
2100
2100
 
2101
2101
  // Copyright (c) Microsoft Corporation.
2102
2102
  // Licensed under the MIT license.
2103
- var __awaiter$x = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
2103
+ var __awaiter$y = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
2104
2104
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
2105
2105
  return new (P || (P = Promise))(function (resolve, reject) {
2106
2106
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -2110,7 +2110,7 @@ var __awaiter$x = (window && window.__awaiter) || function (thisArg, _arguments,
2110
2110
  });
2111
2111
  };
2112
2112
  function createViewRemoteVideo(context, internalContext, callId, participantId, stream, options) {
2113
- return __awaiter$x(this, void 0, void 0, function* () {
2113
+ return __awaiter$y(this, void 0, void 0, function* () {
2114
2114
  // Render RemoteVideoStream that is part of a Call
2115
2115
  const streamId = stream.id;
2116
2116
  const streamType = stream.mediaStreamType;
@@ -2237,7 +2237,7 @@ function createViewRemoteVideo(context, internalContext, callId, participantId,
2237
2237
  });
2238
2238
  }
2239
2239
  function createViewLocalVideo(context, internalContext, callId, options) {
2240
- return __awaiter$x(this, void 0, void 0, function* () {
2240
+ return __awaiter$y(this, void 0, void 0, function* () {
2241
2241
  // Render LocalVideoStream that is part of a Call
2242
2242
  const renderInfo = internalContext.getLocalRenderInfo(callId);
2243
2243
  const streamType = renderInfo === null || renderInfo === void 0 ? void 0 : renderInfo.stream.mediaStreamType;
@@ -2358,7 +2358,7 @@ function createViewLocalVideo(context, internalContext, callId, options) {
2358
2358
  });
2359
2359
  }
2360
2360
  function createViewUnparentedVideo(context, internalContext, stream, options) {
2361
- return __awaiter$x(this, void 0, void 0, function* () {
2361
+ return __awaiter$y(this, void 0, void 0, function* () {
2362
2362
  const renderInfo = internalContext.getUnparentedRenderInfo(stream);
2363
2363
  if (renderInfo && renderInfo.status === 'Rendered') {
2364
2364
  console.warn('Unparented LocalVideoStream is already rendered');
@@ -2643,7 +2643,7 @@ function createView(context, internalContext, callId, participantId, stream, opt
2643
2643
  // Render LocalVideoStream that is not part of a Call
2644
2644
  // 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).
2645
2645
  // We do not have a startLocalPreviewVideo function, so as a workaround we ensure any errors are propagated here.
2646
- return context.withAsyncErrorTeedToState(() => __awaiter$x(this, void 0, void 0, function* () { return yield createViewUnparentedVideo(context, internalContext, stream, options); }), 'Call.startVideo')();
2646
+ return context.withAsyncErrorTeedToState(() => __awaiter$y(this, void 0, void 0, function* () { return yield createViewUnparentedVideo(context, internalContext, stream, options); }), 'Call.startVideo')();
2647
2647
  }
2648
2648
  else {
2649
2649
  _logEvent(callingStatefulLogger, {
@@ -3092,7 +3092,7 @@ class CallSubscriber {
3092
3092
 
3093
3093
  // Copyright (c) Microsoft Corporation.
3094
3094
  // Licensed under the MIT license.
3095
- var __awaiter$w = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
3095
+ var __awaiter$x = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
3096
3096
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3097
3097
  return new (P || (P = Promise))(function (resolve, reject) {
3098
3098
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -3112,14 +3112,14 @@ class ProxyIncomingCall {
3112
3112
  switch (prop) {
3113
3113
  case 'accept': {
3114
3114
  return this._context.withAsyncErrorTeedToState(function (...args) {
3115
- return __awaiter$w(this, void 0, void 0, function* () {
3115
+ return __awaiter$x(this, void 0, void 0, function* () {
3116
3116
  return yield target.accept(...args);
3117
3117
  });
3118
3118
  }, 'IncomingCall.accept');
3119
3119
  }
3120
3120
  case 'reject': {
3121
3121
  return this._context.withAsyncErrorTeedToState(function (...args) {
3122
- return __awaiter$w(this, void 0, void 0, function* () {
3122
+ return __awaiter$x(this, void 0, void 0, function* () {
3123
3123
  return yield target.reject(...args);
3124
3124
  });
3125
3125
  }, 'IncomingCall.reject');
@@ -3356,7 +3356,7 @@ const clearCallRelatedState = (context, internalContext) => {
3356
3356
 
3357
3357
  // Copyright (c) Microsoft Corporation.
3358
3358
  // Licensed under the MIT license.
3359
- var __awaiter$v = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
3359
+ var __awaiter$w = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
3360
3360
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3361
3361
  return new (P || (P = Promise))(function (resolve, reject) {
3362
3362
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -3382,56 +3382,56 @@ class ProxyCallCommon {
3382
3382
  switch (prop) {
3383
3383
  case 'mute': {
3384
3384
  return this._context.withAsyncErrorTeedToState(function (...args) {
3385
- return __awaiter$v(this, void 0, void 0, function* () {
3385
+ return __awaiter$w(this, void 0, void 0, function* () {
3386
3386
  return yield target.mute(...args);
3387
3387
  });
3388
3388
  }, 'Call.mute');
3389
3389
  }
3390
3390
  case 'unmute': {
3391
3391
  return this._context.withAsyncErrorTeedToState(function (...args) {
3392
- return __awaiter$v(this, void 0, void 0, function* () {
3392
+ return __awaiter$w(this, void 0, void 0, function* () {
3393
3393
  return yield target.unmute(...args);
3394
3394
  });
3395
3395
  }, 'Call.unmute');
3396
3396
  }
3397
3397
  case 'startVideo': {
3398
3398
  return this._context.withAsyncErrorTeedToState(function (...args) {
3399
- return __awaiter$v(this, void 0, void 0, function* () {
3399
+ return __awaiter$w(this, void 0, void 0, function* () {
3400
3400
  return yield target.startVideo(...args);
3401
3401
  });
3402
3402
  }, 'Call.startVideo');
3403
3403
  }
3404
3404
  case 'stopVideo': {
3405
3405
  return this._context.withAsyncErrorTeedToState(function (...args) {
3406
- return __awaiter$v(this, void 0, void 0, function* () {
3406
+ return __awaiter$w(this, void 0, void 0, function* () {
3407
3407
  return yield target.stopVideo(...args);
3408
3408
  });
3409
3409
  }, 'Call.stopVideo');
3410
3410
  }
3411
3411
  case 'startScreenSharing': {
3412
3412
  return this._context.withAsyncErrorTeedToState(function (...args) {
3413
- return __awaiter$v(this, void 0, void 0, function* () {
3413
+ return __awaiter$w(this, void 0, void 0, function* () {
3414
3414
  return yield target.startScreenSharing(...args);
3415
3415
  });
3416
3416
  }, 'Call.startScreenSharing');
3417
3417
  }
3418
3418
  case 'stopScreenSharing': {
3419
3419
  return this._context.withAsyncErrorTeedToState(function (...args) {
3420
- return __awaiter$v(this, void 0, void 0, function* () {
3420
+ return __awaiter$w(this, void 0, void 0, function* () {
3421
3421
  return yield target.stopScreenSharing(...args);
3422
3422
  });
3423
3423
  }, 'Call.stopScreenSharing');
3424
3424
  }
3425
3425
  case 'hold': {
3426
3426
  return this._context.withAsyncErrorTeedToState(function (...args) {
3427
- return __awaiter$v(this, void 0, void 0, function* () {
3427
+ return __awaiter$w(this, void 0, void 0, function* () {
3428
3428
  return yield target.hold(...args);
3429
3429
  });
3430
3430
  }, 'Call.hold');
3431
3431
  }
3432
3432
  case 'resume': {
3433
3433
  return this._context.withAsyncErrorTeedToState(function (...args) {
3434
- return __awaiter$v(this, void 0, void 0, function* () {
3434
+ return __awaiter$w(this, void 0, void 0, function* () {
3435
3435
  return yield target.resume(...args);
3436
3436
  });
3437
3437
  }, 'Call.resume');
@@ -3444,7 +3444,7 @@ class ProxyCallCommon {
3444
3444
 
3445
3445
  // Copyright (c) Microsoft Corporation.
3446
3446
  // Licensed under the MIT license.
3447
- var __awaiter$u = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
3447
+ var __awaiter$v = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
3448
3448
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3449
3449
  return new (P || (P = Promise))(function (resolve, reject) {
3450
3450
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -3458,7 +3458,7 @@ class ProxyCall extends ProxyCallCommon {
3458
3458
  switch (prop) {
3459
3459
  case 'addParticipant': {
3460
3460
  return this.getContext().withAsyncErrorTeedToState(function (...args) {
3461
- return __awaiter$u(this, void 0, void 0, function* () {
3461
+ return __awaiter$v(this, void 0, void 0, function* () {
3462
3462
  return yield target.addParticipant(...args);
3463
3463
  });
3464
3464
  }, 'Call.addParticipant');
@@ -3679,7 +3679,7 @@ class InternalCallContext {
3679
3679
 
3680
3680
  // Copyright (c) Microsoft Corporation.
3681
3681
  // Licensed under the MIT license.
3682
- var __awaiter$t = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
3682
+ var __awaiter$u = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
3683
3683
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3684
3684
  return new (P || (P = Promise))(function (resolve, reject) {
3685
3685
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -3694,7 +3694,7 @@ class ProxyTeamsCall extends ProxyCallCommon {
3694
3694
  switch (prop) {
3695
3695
  case 'addParticipant': {
3696
3696
  return this.getContext().withAsyncErrorTeedToState(function (...args) {
3697
- return __awaiter$t(this, void 0, void 0, function* () {
3697
+ return __awaiter$u(this, void 0, void 0, function* () {
3698
3698
  return yield target.addParticipant(...args);
3699
3699
  });
3700
3700
  }, 'TeamsCall.addParticipant');
@@ -3809,7 +3809,7 @@ const teamsCallAgentDeclaratify = (callAgent, context, internalContext) => {
3809
3809
 
3810
3810
  // Copyright (c) Microsoft Corporation.
3811
3811
  // Licensed under the MIT license.
3812
- var __awaiter$s = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
3812
+ var __awaiter$t = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
3813
3813
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3814
3814
  return new (P || (P = Promise))(function (resolve, reject) {
3815
3815
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -3831,7 +3831,7 @@ class ProxyVideoStreamRendererView {
3831
3831
  get(target, prop) {
3832
3832
  switch (prop) {
3833
3833
  case 'updateScalingMode': {
3834
- return (...args) => __awaiter$s(this, void 0, void 0, function* () {
3834
+ return (...args) => __awaiter$t(this, void 0, void 0, function* () {
3835
3835
  yield target.updateScalingMode(...args);
3836
3836
  this._context.setRemoteVideoStreamViewScalingMode(this._callId, this._participantId, this._streamId, args[0]);
3837
3837
  });
@@ -3852,7 +3852,7 @@ const videoStreamRendererViewDeclaratify = (view, context, callId, participantId
3852
3852
 
3853
3853
  // Copyright (c) Microsoft Corporation.
3854
3854
  // Licensed under the MIT license.
3855
- var __awaiter$r = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
3855
+ var __awaiter$s = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
3856
3856
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3857
3857
  return new (P || (P = Promise))(function (resolve, reject) {
3858
3858
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -3874,7 +3874,7 @@ class ProxyCallClient {
3874
3874
  get(target, prop) {
3875
3875
  switch (prop) {
3876
3876
  case 'createCallAgent': {
3877
- return this._context.withAsyncErrorTeedToState((...args) => __awaiter$r(this, void 0, void 0, function* () {
3877
+ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$s(this, void 0, void 0, function* () {
3878
3878
  // createCallAgent will throw an exception if the previous callAgent was not disposed. If the previous
3879
3879
  // callAgent was disposed then it would have unsubscribed to events so we can just create a new declarative
3880
3880
  // callAgent if the createCallAgent succeeds.
@@ -3887,7 +3887,7 @@ class ProxyCallClient {
3887
3887
  }), 'CallClient.createCallAgent');
3888
3888
  }
3889
3889
  case 'createTeamsCallAgent': {
3890
- /* @conditional-compile-remove(teams-identity-support) */ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$r(this, void 0, void 0, function* () {
3890
+ /* @conditional-compile-remove(teams-identity-support) */ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$s(this, void 0, void 0, function* () {
3891
3891
  // createCallAgent will throw an exception if the previous callAgent was not disposed. If the previous
3892
3892
  // callAgent was disposed then it would have unsubscribed to events so we can just create a new declarative
3893
3893
  // callAgent if the createCallAgent succeeds.
@@ -3900,7 +3900,7 @@ class ProxyCallClient {
3900
3900
  }), 'CallClient.createTeamsCallAgent');
3901
3901
  }
3902
3902
  case 'getDeviceManager': {
3903
- return this._context.withAsyncErrorTeedToState(() => __awaiter$r(this, void 0, void 0, function* () {
3903
+ return this._context.withAsyncErrorTeedToState(() => __awaiter$s(this, void 0, void 0, function* () {
3904
3904
  // As of writing, the SDK always returns the same instance of DeviceManager so we keep a reference of
3905
3905
  // DeviceManager and if it does not change we return the cached DeclarativeDeviceManager. If it does not we'll
3906
3906
  // throw an error that indicate we need to fix this issue as our implementation has diverged from the SDK.
@@ -3929,7 +3929,7 @@ class ProxyCallClient {
3929
3929
  /**
3930
3930
  * add to this object if we want to proxy anything else off the DebugInfo feature object.
3931
3931
  */
3932
- return Object.assign(Object.assign({}, feature), { getEnvironmentInfo: () => __awaiter$r(this, void 0, void 0, function* () {
3932
+ return Object.assign(Object.assign({}, feature), { getEnvironmentInfo: () => __awaiter$s(this, void 0, void 0, function* () {
3933
3933
  const environmentInfo = yield feature.getEnvironmentInfo();
3934
3934
  this._context.setEnvironmentInfo(environmentInfo);
3935
3935
  return environmentInfo;
@@ -3982,7 +3982,7 @@ const createStatefulCallClientWithDeps = (callClient, context, internalContext)
3982
3982
  });
3983
3983
  Object.defineProperty(callClient, 'createView', {
3984
3984
  configurable: false,
3985
- value: (callId, participantId, stream, options) => __awaiter$r(void 0, void 0, void 0, function* () {
3985
+ value: (callId, participantId, stream, options) => __awaiter$s(void 0, void 0, void 0, function* () {
3986
3986
  const participantIdKind = participantId ? communicationCommon.getIdentifierKind(participantId) : undefined;
3987
3987
  const result = yield createView(context, internalContext, callId, participantIdKind, stream, options);
3988
3988
  // We only need to declaratify the VideoStreamRendererView object for remote participants. Because the updateScalingMode only needs to be called on remote participant stream views.
@@ -4211,7 +4211,7 @@ const typingIndicatorStringStyle = react.mergeStyles({
4211
4211
  wordBreak: 'break-word'
4212
4212
  });
4213
4213
 
4214
- var participantItem$d={isMeText:"(you)",menuTitle:"More Options",removeButtonLabel:"Remove",sharingIconLabel:"Sharing",mutedIconLabel:"Muted",displayNamePlaceholder:"Unnamed participant",participantStateRinging:"Calling...",participantStateHold:"On hold"};var typingIndicator$d={singleUser:"{user} is typing ...",multipleUsers:"{users} are typing ...",multipleUsersAbbreviateOne:"{users} and 1 other are typing ...",multipleUsersAbbreviateMany:"{users} and {numOthers} others are typing ...",delimiter:", "};var sendBox$d={placeholderText:"Enter a message",textTooLong:"Your message length is over the maximum limit.",sendButtonAriaLabel:"Send message",fileUploadsPendingError:"Uploading... Please wait.",removeFile:"Remove file",uploading:"Uploading",uploadCompleted:"Upload completed"};var messageStatusIndicator$d={deliveredAriaLabel:"Message sent",deliveredTooltipText:"Sent",seenAriaLabel:"Message seen by others",seenTooltipText:"Seen",readByTooltipText:"Read by {messageThreadReadCount} of {remoteParticipantsCount}",sendingAriaLabel:"Message sending",sendingTooltipText:"Sending",failedToSendAriaLabel:"Message failed to send",failedToSendTooltipText:"Failed to send"};var endCallButton$d={label:"Leave",tooltipContent:"Leave call"};var cameraButton$d={onLabel:"Turn off",offLabel:"Turn on",tooltipDisabledContent:"Camera is disabled",tooltipOnContent:"Turn off camera",tooltipOffContent:"Turn on camera",tooltipVideoLoadingContent:"Video is loading",cameraMenuTitle:"Camera",cameraMenuTooltip:"Choose camera",cameraButtonSplitRoleDescription:"Split button",onSplitButtonAriaLabel:"Turn off camera and camera options",offSplitButtonAriaLabel:"Turn on camera and camera options",cameraActionTurnedOnAnnouncement:"Your camera has been turned on",cameraActionTurnedOffAnnouncement:"Your camera has been turned off"};var microphoneButton$d={onLabel:"Mute",offLabel:"Unmute",tooltipDisabledContent:"Microphone is disabled",tooltipOnContent:"Mute microphone",tooltipOffContent:"Unmute microphone",microphoneMenuTitle:"Microphone",microphoneMenuTooltip:"Choose microphone",speakerMenuTitle:"Speaker",speakerMenuTooltip:"Choose speaker",microphoneButtonSplitRoleDescription:"Split button",onSplitButtonAriaLabel:"Mute microphone and audio options",offSplitButtonAriaLabel:"Unmute microphone and audio options",microphoneActionTurnedOnAnnouncement:"Your microphone has been turned on",microphoneActionTurnedOffAnnouncement:"Your microphone has been turned off"};var devicesButton$d={label:"Devices",tooltipContent:"Manage devices",cameraMenuTitle:"Camera",cameraMenuTooltip:"Choose camera",audioDeviceMenuTitle:"Audio Device",audioDeviceMenuTooltip:"Choose audio device",microphoneMenuTitle:"Microphone",microphoneMenuTooltip:"Choose microphone",speakerMenuTitle:"Speaker",speakerMenuTooltip:"Choose speaker"};var participantsButton$d={label:"People",tooltipContent:"Show participants",menuHeader:"In this call",participantsListButtonLabel:"{numParticipants} people",muteAllButtonLabel:"Mute all",copyInviteLinkButtonLabel:"Copy invite link",copyInviteLinkActionedAriaLabel:"Invite link copied"};var screenShareButton$d={onLabel:"Stop presenting",offLabel:"Present",tooltipDisabledContent:"Presenting is disabled",tooltipOnContent:"Presenting your screen",tooltipOffContent:"Present your screen"};var messageThread$d={yesterday:"Yesterday",sunday:"Sunday",monday:"Monday",tuesday:"Tuesday",wednesday:"Wednesday",thursday:"Thursday",friday:"Friday",saturday:"Saturday",participantJoined:"joined the chat.",participantLeft:"left the chat.",editMessage:"Edit",removeMessage:"Delete",resendMessage:"Try sending again",failToSendTag:"Failed to send",editedTag:"Edited",liveAuthorIntro:"{author} says",messageContentAriaText:"{author} said {message}",messageContentMineAriaText:"You said {message}",editBoxTextLimit:"Your message is over the limit of {limitNumber} characters",editBoxPlaceholderText:"Edit your message",newMessagesIndicator:"New messages",noDisplayNameSub:"No name",editBoxCancelButton:"Cancel",editBoxSubmitButton:"Submit",messageReadCount:"Read by {messageReadByCount} of {remoteParticipantsCount}",actionMenuMoreOptions:"More Options",downloadFile:"Download file"};var errorBar$d={unableToReachChatService:"You are offline",accessDenied:"Unable to access chat services - please check the user credentials provided",userNotInChatThread:"You are no longer in this chat thread",sendMessageNotInChatThread:"Failed to send message because you are no longer in this chat thread",sendMessageGeneric:"Failed to send message",callingNetworkFailure:"Troubling connecting call - you seem to be offline",startVideoGeneric:"Failed to start video",stopVideoGeneric:"Failed to stop video",muteGeneric:"Failed to mute microphone",unmuteGeneric:"Failed to unmute microphone",speakingWhileMuted:"Your microphone is muted",startScreenShareGeneric:"Failed to start screen sharing",stopScreenShareGeneric:"Failed to stop screen sharing",callNetworkQualityLow:"Network quality is low.",callNoSpeakerFound:"No speakers or headphones found. Connect an audio device to hear the call.",callNoMicrophoneFound:"No microphones found. Connect an audio input device.",callMicrophoneAccessDenied:"Unable to access microphone. Click the lock in the address bar to grant permission to this webpage.",callMicrophoneAccessDeniedSafari:"Unable to access microphone. Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",callMicrophoneMutedBySystem:"You are muted by your system.",callMicrophoneUnmutedBySystem:"Your microphone recovered and you were unmuted by your system.",callMacOsMicrophoneAccessDenied:"Unable to access microphone. Grant microphone permission in your macOS privacy settings.",callLocalVideoFreeze:"Network bandwidth is poor. Your video may appear paused for others on the call.",callCameraAccessDenied:"Unable to access camera. Click the lock in the address bar to grant permission to this webpage.",callCameraAccessDeniedSafari:"Unable to access camera. Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",callCameraAlreadyInUse:"Unable to access camera. It may already be in use by another application.",callVideoStoppedBySystem:"Your video has been stopped by your system.",callVideoRecoveredBySystem:"Your video has resumed.",callMacOsCameraAccessDenied:"MacOS is blocking access to your camera. Update your privacy settings to allow this browser to access your camera.",callMacOsScreenShareAccessDenied:"MacOS is blocking screen sharing. Update your privacy settings to allow this browser to record your screen.",dismissButtonAriaLabel:"Close",failedToJoinCallGeneric:"Failed to join call.",failedToJoinCallInvalidMeetingLink:"Unable to join Meeting. Invalid Link.",startScreenSharingGeneric:"There was an issue starting screen share."};var videoGallery$d={screenIsBeingSharedMessage:"You are sharing your screen",screenShareLoadingMessage:"Loading {participant}'s screen",localVideoLabel:"You",localVideoCameraSwitcherLabel:"Switch camera",localVideoMovementLabel:"Movable Local Video Tile",localVideoSelectedDescription:"{cameraName} selected",displayNamePlaceholder:"Unnamed participant",fitRemoteParticipantToFrame:"Fit to frame",fillRemoteParticipantFrame:"Fill frame",pinParticipantForMe:"Pin for me",pinParticipantForMeLimitReached:"Pin (limit reached)",unpinParticipantForMe:"Unpin",pinParticipantMenuItemAriaLabel:"Pin {participantName}",unpinParticipantMenuItemAriaLabel:"Unpin {participantName}",pinnedParticipantAnnouncementAriaLabel:"Pinned {participantName}",unpinnedParticipantAnnouncementAriaLabel:"Unpinned {participantName}"};var dialpad$d={placeholderText:"Enter phone number",deleteButtonAriaLabel:"Delete"};var holdButton$d={onLabel:"Resume",offLabel:"Hold",tooltipOnContent:"Resume call",tooltipOffContent:"Hold call"};var videoTile$d={participantStateRinging:"Calling...",participantStateHold:"On hold"};var CameraAndMicrophoneSitePermissionsRequest={primaryText:"Allow {appName} to use your camera and microphone",secondaryText:"This is so participants can see and hear you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without camera and microphone",ariaLabel:"Allow camera and microphone access"};var CameraSitePermissionsRequest={primaryText:"Allow {appName} to use your camera",secondaryText:"This is so participants can see you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without camera",ariaLabel:"Allow camera access"};var MicrophoneSitePermissionsRequest={primaryText:"Allow {appName} to use your microphone",secondaryText:"This is so participants can hear you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without microphone",ariaLabel:"Allow microphone access"};var CameraAndMicrophoneSitePermissionsCheck={primaryText:"Checking for camera and microphone access",secondaryText:"Allow access if prompted. This is so participants can see and hear you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without camera and microphone",ariaLabel:"Checking for camera and microphone access. Allow access if prompted."};var CameraSitePermissionsCheck={primaryText:"Checking for camera access",secondaryText:"Allow access if prompted. This is so participants can see you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without camera",ariaLabel:"Checking for camera access. Allow access if prompted."};var MicrophoneSitePermissionsCheck={primaryText:"Checking for microphone access",secondaryText:"Allow access if prompted. This is so participants can hear you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without microphone",ariaLabel:"Checking for microphone access. Allow access if prompted."};var CameraAndMicrophoneSitePermissionsDenied={primaryText:"Unable to access camera and microphone",secondaryText:"Click the lock icon in the address bar to grant microphone permissions to this webpage. A page refresh may be required.",primaryButtonText:"Continue without camera and microphone",linkText:"Need help? Get troubleshooting help"};var CameraAndMicrophoneSitePermissionsDeniedSafari={primaryText:"Unable to access camera and microphone",secondaryText:"Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",primaryButtonText:"Continue without camera and microphone",linkText:"Need help? Get troubleshooting help"};var CameraSitePermissionsDenied={primaryText:"Unable to access camera",secondaryText:"Click the lock icon in the address bar to grant camera permissions to this webpage. A page refresh may be required.",primaryButtonText:"Continue without camera",linkText:"Need help? Get troubleshooting help"};var MicrophoneSitePermissionsDenied={primaryText:"Unable to access microphone",secondaryText:"Click the lock icon in the address bar to grant microphone permissions to this webpage. A page refresh may be required.",primaryButtonText:"Continue without microphone",linkText:"Need help? Get troubleshooting help"};var CameraSitePermissionsDeniedSafari={primaryText:"Unable to access camera",secondaryText:"Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",primaryButtonText:"Continue without camera",linkText:"Need help? Get troubleshooting help"};var MicrophoneSitePermissionsDeniedSafari={primaryText:"Unable to access microphone",secondaryText:"Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",primaryButtonText:"Continue without microphone",linkText:"Need help? Get troubleshooting help"};var UnsupportedBrowser$e={primaryText:"Browser not supported",secondaryText:"Please join this call using a compatible browser.",moreHelpLinkText:"See compatibility requirements"};var UnsupportedBrowserVersion$1={primaryText:"Browser update needed",secondaryText:"To ensure the best call possible, please update your browser and then try joining the call again.",moreHelpLinkText:"See compatibility requirements",continueAnywayButtonText:"Start call without updating"};var UnsupportedOperatingSystem$1={primaryText:"Operating system not supported",secondaryText:"Please join this call using a device with a compatible operating system.",moreHelpLinkText:"See compatibility requirements"};var BrowserPermissionDenied$d={primaryText:"Can't use your camera or microphone",secondaryText:"Your browser might not have access to your camera or microphone. To fix this, open System Preferences.",primaryButtonText:"Try again",linkText:"Need help? Get troubleshooting help"};var BrowserPermissionDeniedIOS$d={primaryText:"Allow microphone access to continue",secondaryText:"So other participants can hear you.",primaryButtonText:"Try again",imageAltText:"Microphone and camera device permission location for iOS",linkText:"Need help? Get troubleshooting help",step1Text:"Go to the Settings app",step2Text:"Scroll down to settings for this browser",step3Text:"Turn on Microphone (Camera optional)",step4Text:"Try joining the call again",step1DigitText:"1",step2DigitText:"2",step3DigitText:"3",step4DigitText:"4"};var en_US$1 = {participantItem:participantItem$d,typingIndicator:typingIndicator$d,sendBox:sendBox$d,messageStatusIndicator:messageStatusIndicator$d,endCallButton:endCallButton$d,cameraButton:cameraButton$d,microphoneButton:microphoneButton$d,devicesButton:devicesButton$d,participantsButton:participantsButton$d,screenShareButton:screenShareButton$d,messageThread:messageThread$d,errorBar:errorBar$d,videoGallery:videoGallery$d,dialpad:dialpad$d,holdButton:holdButton$d,videoTile:videoTile$d,CameraAndMicrophoneSitePermissionsRequest:CameraAndMicrophoneSitePermissionsRequest,CameraSitePermissionsRequest:CameraSitePermissionsRequest,MicrophoneSitePermissionsRequest:MicrophoneSitePermissionsRequest,CameraAndMicrophoneSitePermissionsCheck:CameraAndMicrophoneSitePermissionsCheck,CameraSitePermissionsCheck:CameraSitePermissionsCheck,MicrophoneSitePermissionsCheck:MicrophoneSitePermissionsCheck,CameraAndMicrophoneSitePermissionsDenied:CameraAndMicrophoneSitePermissionsDenied,CameraAndMicrophoneSitePermissionsDeniedSafari:CameraAndMicrophoneSitePermissionsDeniedSafari,CameraSitePermissionsDenied:CameraSitePermissionsDenied,MicrophoneSitePermissionsDenied:MicrophoneSitePermissionsDenied,CameraSitePermissionsDeniedSafari:CameraSitePermissionsDeniedSafari,MicrophoneSitePermissionsDeniedSafari:MicrophoneSitePermissionsDeniedSafari,UnsupportedBrowser:UnsupportedBrowser$e,UnsupportedBrowserVersion:UnsupportedBrowserVersion$1,UnsupportedOperatingSystem:UnsupportedOperatingSystem$1,BrowserPermissionDenied:BrowserPermissionDenied$d,BrowserPermissionDeniedIOS:BrowserPermissionDeniedIOS$d};
4214
+ var participantItem$d={isMeText:"(you)",menuTitle:"More Options",removeButtonLabel:"Remove",sharingIconLabel:"Sharing",mutedIconLabel:"Muted",displayNamePlaceholder:"Unnamed participant",participantStateRinging:"Calling...",participantStateHold:"On hold"};var typingIndicator$d={singleUser:"{user} is typing ...",multipleUsers:"{users} are typing ...",multipleUsersAbbreviateOne:"{users} and 1 other are typing ...",multipleUsersAbbreviateMany:"{users} and {numOthers} others are typing ...",delimiter:", "};var sendBox$d={placeholderText:"Enter a message",textTooLong:"Your message length is over the maximum limit.",sendButtonAriaLabel:"Send message",fileUploadsPendingError:"Uploading... Please wait.",removeFile:"Remove file",uploading:"Uploading",uploadCompleted:"Upload completed"};var messageStatusIndicator$d={deliveredAriaLabel:"Message sent",deliveredTooltipText:"Sent",seenAriaLabel:"Message seen by others",seenTooltipText:"Seen",readByTooltipText:"Read by {messageThreadReadCount} of {remoteParticipantsCount}",sendingAriaLabel:"Message sending",sendingTooltipText:"Sending",failedToSendAriaLabel:"Message failed to send",failedToSendTooltipText:"Failed to send"};var endCallButton$d={label:"Leave",tooltipContent:"Leave call"};var cameraButton$d={onLabel:"Turn off",offLabel:"Turn on",tooltipDisabledContent:"Camera is disabled",tooltipOnContent:"Turn off camera",tooltipOffContent:"Turn on camera",tooltipVideoLoadingContent:"Video is loading",cameraMenuTitle:"Camera",cameraMenuTooltip:"Choose camera",cameraButtonSplitRoleDescription:"Split button",onSplitButtonAriaLabel:"Turn off camera and camera options",offSplitButtonAriaLabel:"Turn on camera and camera options",cameraActionTurnedOnAnnouncement:"Your camera has been turned on",cameraActionTurnedOffAnnouncement:"Your camera has been turned off"};var microphoneButton$d={onLabel:"Mute",offLabel:"Unmute",tooltipDisabledContent:"Microphone is disabled",tooltipOnContent:"Mute microphone",tooltipOffContent:"Unmute microphone",microphoneMenuTitle:"Microphone",microphoneMenuTooltip:"Choose microphone",speakerMenuTitle:"Speaker",speakerMenuTooltip:"Choose speaker",microphoneButtonSplitRoleDescription:"Split button",onSplitButtonAriaLabel:"Mute microphone and audio options",offSplitButtonAriaLabel:"Unmute microphone and audio options",microphoneActionTurnedOnAnnouncement:"Your microphone has been turned on",microphoneActionTurnedOffAnnouncement:"Your microphone has been turned off"};var devicesButton$d={label:"Devices",tooltipContent:"Manage devices",cameraMenuTitle:"Camera",cameraMenuTooltip:"Choose camera",audioDeviceMenuTitle:"Audio Device",audioDeviceMenuTooltip:"Choose audio device",microphoneMenuTitle:"Microphone",microphoneMenuTooltip:"Choose microphone",speakerMenuTitle:"Speaker",speakerMenuTooltip:"Choose speaker"};var participantsButton$d={label:"People",tooltipContent:"Show participants",menuHeader:"In this call",participantsListButtonLabel:"{numParticipants} people",muteAllButtonLabel:"Mute all",copyInviteLinkButtonLabel:"Copy invite link",copyInviteLinkActionedAriaLabel:"Invite link copied"};var screenShareButton$d={onLabel:"Stop presenting",offLabel:"Present",tooltipDisabledContent:"Presenting is disabled",tooltipOnContent:"Presenting your screen",tooltipOffContent:"Present your screen"};var messageThread$d={yesterday:"Yesterday",sunday:"Sunday",monday:"Monday",tuesday:"Tuesday",wednesday:"Wednesday",thursday:"Thursday",friday:"Friday",saturday:"Saturday",participantJoined:"joined the chat.",participantLeft:"left the chat.",editMessage:"Edit",removeMessage:"Delete",resendMessage:"Try sending again",failToSendTag:"Failed to send",editedTag:"Edited",liveAuthorIntro:"{author} says",messageContentAriaText:"{author} said {message}",messageContentMineAriaText:"You said {message}",editBoxTextLimit:"Your message is over the limit of {limitNumber} characters",editBoxPlaceholderText:"Edit your message",newMessagesIndicator:"New messages",noDisplayNameSub:"No name",editBoxCancelButton:"Cancel",editBoxSubmitButton:"Submit",messageReadCount:"Read by {messageReadByCount} of {remoteParticipantsCount}",actionMenuMoreOptions:"More Options",downloadFile:"Download file"};var errorBar$d={unableToReachChatService:"You are offline",accessDenied:"Unable to access chat services - please check the user credentials provided",userNotInChatThread:"You are no longer in this chat thread",sendMessageNotInChatThread:"Failed to send message because you are no longer in this chat thread",sendMessageGeneric:"Failed to send message",callingNetworkFailure:"Troubling connecting call - you seem to be offline",startVideoGeneric:"Failed to start video",stopVideoGeneric:"Failed to stop video",muteGeneric:"Failed to mute microphone",unmuteGeneric:"Failed to unmute microphone",speakingWhileMuted:"Your microphone is muted",startScreenShareGeneric:"Failed to start screen sharing",stopScreenShareGeneric:"Failed to stop screen sharing",callNetworkQualityLow:"Network quality is low.",callNoSpeakerFound:"No speakers or headphones found. Connect an audio device to hear the call.",callNoMicrophoneFound:"No microphones found. Connect an audio input device.",callMicrophoneAccessDenied:"Unable to access microphone. Click the lock in the address bar to grant permission to this webpage.",callMicrophoneAccessDeniedSafari:"Unable to access microphone. Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",callMicrophoneMutedBySystem:"You are muted by your system.",callMicrophoneUnmutedBySystem:"Your microphone recovered and you were unmuted by your system.",callMacOsMicrophoneAccessDenied:"Unable to access microphone. Grant microphone permission in your macOS privacy settings.",callLocalVideoFreeze:"Network bandwidth is poor. Your video may appear paused for others on the call.",callCameraAccessDenied:"Unable to access camera. Click the lock in the address bar to grant permission to this webpage.",callCameraAccessDeniedSafari:"Unable to access camera. Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",callCameraAlreadyInUse:"Unable to access camera. It may already be in use by another application.",callVideoStoppedBySystem:"Your video has been stopped by your system.",callVideoRecoveredBySystem:"Your video has resumed.",callMacOsCameraAccessDenied:"MacOS is blocking access to your camera. Update your privacy settings to allow this browser to access your camera.",callMacOsScreenShareAccessDenied:"MacOS is blocking screen sharing. Update your privacy settings to allow this browser to record your screen.",dismissButtonAriaLabel:"Close",failedToJoinCallGeneric:"Failed to join call.",failedToJoinCallInvalidMeetingLink:"Unable to join Meeting. Invalid Link.",startScreenSharingGeneric:"There was an issue starting screen share."};var videoGallery$d={screenIsBeingSharedMessage:"You are sharing your screen",screenShareLoadingMessage:"Loading {participant}'s screen",localVideoLabel:"You",localVideoCameraSwitcherLabel:"Switch camera",localVideoMovementLabel:"Movable Local Video Tile",localVideoSelectedDescription:"{cameraName} selected",displayNamePlaceholder:"Unnamed participant",fitRemoteParticipantToFrame:"Fit to frame",fillRemoteParticipantFrame:"Fill frame",pinParticipantForMe:"Pin for me",pinParticipantForMeLimitReached:"Pin (limit reached)",unpinParticipantForMe:"Unpin",pinParticipantMenuItemAriaLabel:"Pin {participantName}",unpinParticipantMenuItemAriaLabel:"Unpin {participantName}",pinnedParticipantAnnouncementAriaLabel:"Pinned {participantName}",unpinnedParticipantAnnouncementAriaLabel:"Unpinned {participantName}"};var dialpad$d={placeholderText:"Enter phone number",deleteButtonAriaLabel:"Delete"};var holdButton$d={onLabel:"Resume",offLabel:"Hold",tooltipOnContent:"Resume call",tooltipOffContent:"Hold call"};var videoTile$d={participantStateRinging:"Calling...",participantStateHold:"On hold"};var CameraAndMicrophoneSitePermissionsRequest={primaryText:"Allow {appName} to use your camera and microphone",secondaryText:"This is so participants can see and hear you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without camera and microphone",ariaLabel:"Allow camera and microphone access"};var CameraSitePermissionsRequest={primaryText:"Allow {appName} to use your camera",secondaryText:"This is so participants can see you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without camera",ariaLabel:"Allow camera access"};var MicrophoneSitePermissionsRequest={primaryText:"Allow {appName} to use your microphone",secondaryText:"This is so participants can hear you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without microphone",ariaLabel:"Allow microphone access"};var CameraAndMicrophoneSitePermissionsCheck={primaryText:"Checking for camera and microphone access",secondaryText:"Allow access if prompted. This is so participants can see and hear you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without camera and microphone",ariaLabel:"Checking for camera and microphone access. Allow access if prompted."};var CameraSitePermissionsCheck={primaryText:"Checking for camera access",secondaryText:"Allow access if prompted. This is so participants can see you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without camera",ariaLabel:"Checking for camera access. Allow access if prompted."};var MicrophoneSitePermissionsCheck={primaryText:"Checking for microphone access",secondaryText:"Allow access if prompted. This is so participants can hear you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Continue without microphone",ariaLabel:"Checking for microphone access. Allow access if prompted."};var CameraAndMicrophoneSitePermissionsDenied={primaryText:"Unable to access camera and microphone",secondaryText:"Click the lock icon in the address bar to grant microphone permissions to this webpage. A page refresh may be required.",primaryButtonText:"Continue without camera and microphone",linkText:"Need help? Get troubleshooting help"};var CameraAndMicrophoneSitePermissionsDeniedSafari={primaryText:"Unable to access camera and microphone",secondaryText:"Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",primaryButtonText:"Continue without camera and microphone",linkText:"Need help? Get troubleshooting help"};var CameraSitePermissionsDenied={primaryText:"Unable to access camera",secondaryText:"Click the lock icon in the address bar to grant camera permissions to this webpage. A page refresh may be required.",primaryButtonText:"Continue without camera",linkText:"Need help? Get troubleshooting help"};var MicrophoneSitePermissionsDenied={primaryText:"Unable to access microphone",secondaryText:"Click the lock icon in the address bar to grant microphone permissions to this webpage. A page refresh may be required.",primaryButtonText:"Continue without microphone",linkText:"Need help? Get troubleshooting help"};var CameraSitePermissionsDeniedSafari={primaryText:"Unable to access camera",secondaryText:"Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",primaryButtonText:"Continue without camera",linkText:"Need help? Get troubleshooting help"};var MicrophoneSitePermissionsDeniedSafari={primaryText:"Unable to access microphone",secondaryText:"Refresh the page to allow permissions, or check this browser’s settings and verify permissions are enabled for this website.",primaryButtonText:"Continue without microphone",linkText:"Need help? Get troubleshooting help"};var UnsupportedBrowser$e={primaryText:"Browser not supported",secondaryText:"Please join this call using a compatible browser.",moreHelpLinkText:"See compatibility requirements"};var UnsupportedBrowserVersion$1={primaryText:"Browser update needed",secondaryText:"To ensure the best call possible, please update your browser and then try joining the call again.",moreHelpLinkText:"See compatibility requirements",continueAnywayButtonText:"Start call without updating"};var UnsupportedOperatingSystem$1={primaryText:"Operating system not supported",secondaryText:"Please join this call using a device with a compatible operating system.",moreHelpLinkText:"See compatibility requirements"};var BrowserPermissionDenied$d={primaryText:"Can't use your camera or microphone",secondaryText:"Your browser might not have access to your camera or microphone. To fix this, open System Preferences.",primaryButtonText:"Try again",linkText:"Need help? Get troubleshooting help"};var BrowserPermissionDeniedIOS$d={primaryText:"Allow microphone access to continue",secondaryText:"So other participants can hear you.",primaryButtonText:"Try again",imageAltText:"Microphone and camera device permission location for iOS",linkText:"Need help? Get troubleshooting help",step1Text:"Go to the Settings app",step2Text:"Scroll down to settings for this browser",step3Text:"Turn on Microphone (Camera optional)",step4Text:"Try joining the call again",step1DigitText:"1",step2DigitText:"2",step3DigitText:"3",step4DigitText:"4"};var VerticalGallery$1={leftNavButtonAriaLabel:"previous page",rightNavButtonAriaLabel:"next page"};var en_US$1 = {participantItem:participantItem$d,typingIndicator:typingIndicator$d,sendBox:sendBox$d,messageStatusIndicator:messageStatusIndicator$d,endCallButton:endCallButton$d,cameraButton:cameraButton$d,microphoneButton:microphoneButton$d,devicesButton:devicesButton$d,participantsButton:participantsButton$d,screenShareButton:screenShareButton$d,messageThread:messageThread$d,errorBar:errorBar$d,videoGallery:videoGallery$d,dialpad:dialpad$d,holdButton:holdButton$d,videoTile:videoTile$d,CameraAndMicrophoneSitePermissionsRequest:CameraAndMicrophoneSitePermissionsRequest,CameraSitePermissionsRequest:CameraSitePermissionsRequest,MicrophoneSitePermissionsRequest:MicrophoneSitePermissionsRequest,CameraAndMicrophoneSitePermissionsCheck:CameraAndMicrophoneSitePermissionsCheck,CameraSitePermissionsCheck:CameraSitePermissionsCheck,MicrophoneSitePermissionsCheck:MicrophoneSitePermissionsCheck,CameraAndMicrophoneSitePermissionsDenied:CameraAndMicrophoneSitePermissionsDenied,CameraAndMicrophoneSitePermissionsDeniedSafari:CameraAndMicrophoneSitePermissionsDeniedSafari,CameraSitePermissionsDenied:CameraSitePermissionsDenied,MicrophoneSitePermissionsDenied:MicrophoneSitePermissionsDenied,CameraSitePermissionsDeniedSafari:CameraSitePermissionsDeniedSafari,MicrophoneSitePermissionsDeniedSafari:MicrophoneSitePermissionsDeniedSafari,UnsupportedBrowser:UnsupportedBrowser$e,UnsupportedBrowserVersion:UnsupportedBrowserVersion$1,UnsupportedOperatingSystem:UnsupportedOperatingSystem$1,BrowserPermissionDenied:BrowserPermissionDenied$d,BrowserPermissionDeniedIOS:BrowserPermissionDeniedIOS$d,VerticalGallery:VerticalGallery$1};
4215
4215
 
4216
4216
  var participantItem$c={isMeText:"(you)",menuTitle:"More Options",removeButtonLabel:"Remove",sharingIconLabel:"Sharing",mutedIconLabel:"Muted",displayNamePlaceholder:"Unnamed participant",participantStateConnecting:"Calling...",participantStateRinging:"Calling...",participantStateHold:"On hold"};var typingIndicator$c={singleUser:"{user} is typing ...",multipleUsers:"{users} are typing ...",multipleUsersAbbreviateOne:"{users} and 1 other are typing ...",multipleUsersAbbreviateMany:"{users} and {numOthers} others are typing ...",delimiter:", "};var sendBox$c={placeholderText:"Enter a message",textTooLong:"Your message length is over the maximum limit.",sendButtonAriaLabel:"Send message",fileUploadsPendingError:"Uploading... Please wait.",removeFile:"Remove file",uploading:"Uploading",uploadCompleted:"Upload completed"};var messageStatusIndicator$c={deliveredAriaLabel:"Message sent",deliveredTooltipText:"Sent",seenAriaLabel:"Message seen by others",seenTooltipText:"Seen",readByTooltipText:"Read by {messageThreadReadCount} of {remoteParticipantsCount}",sendingAriaLabel:"Message sending",sendingTooltipText:"Sending",failedToSendAriaLabel:"Message failed to send",failedToSendTooltipText:"Failed to send"};var endCallButton$c={label:"Leave",tooltipContent:"Leave call"};var cameraButton$c={onLabel:"Turn off",offLabel:"Turn on",tooltipDisabledContent:"Camera is disabled",tooltipOnContent:"Turn off camera",tooltipOffContent:"Turn on camera",tooltipVideoLoadingContent:"Video is loading",cameraMenuTitle:"Camera",cameraMenuTooltip:"Choose camera",cameraButtonSplitRoleDescription:"Split button",onSplitButtonAriaLabel:"Turn off camera and camera options",offSplitButtonAriaLabel:"Turn on camera and camera options",cameraActionTurnedOnAnnouncement:"Your camera has been turned on",cameraActionTurnedOffAnnouncement:"Your camera has been turned off"};var microphoneButton$c={onLabel:"Mute",offLabel:"Unmute",tooltipDisabledContent:"Microphone is disabled",tooltipOnContent:"Mute microphone",tooltipOffContent:"Unmute microphone",microphoneMenuTitle:"Microphone",microphoneMenuTooltip:"Choose microphone",speakerMenuTitle:"Speaker",speakerMenuTooltip:"Choose speaker",microphoneButtonSplitRoleDescription:"Split button",onSplitButtonAriaLabel:"Mute microphone and audio options",offSplitButtonAriaLabel:"Unmute microphone and audio options",microphoneActionTurnedOnAnnouncement:"Your microphone has been turned on",microphoneActionTurnedOffAnnouncement:"Your microphone has been turned off"};var devicesButton$c={label:"Devices",tooltipContent:"Manage devices",cameraMenuTitle:"Camera",cameraMenuTooltip:"Choose camera",audioDeviceMenuTitle:"Audio Device",audioDeviceMenuTooltip:"Choose audio device",microphoneMenuTitle:"Microphone",microphoneMenuTooltip:"Choose microphone",speakerMenuTitle:"Speaker",speakerMenuTooltip:"Choose speaker"};var participantsButton$c={label:"People",tooltipContent:"Show participants",menuHeader:"In this call",participantsListButtonLabel:"{numParticipants} people",muteAllButtonLabel:"Mute all",copyInviteLinkButtonLabel:"Copy invite link"};var screenShareButton$c={onLabel:"Stop presenting",offLabel:"Present",tooltipDisabledContent:"Presenting is disabled",tooltipOnContent:"Presenting your screen",tooltipOffContent:"Present your screen"};var messageThread$c={yesterday:"Yesterday",sunday:"Sunday",monday:"Monday",tuesday:"Tuesday",wednesday:"Wednesday",thursday:"Thursday",friday:"Friday",saturday:"Saturday",participantJoined:"joined the chat.",participantLeft:"left the chat.",editMessage:"Edit",removeMessage:"Delete",resendMessage:"Try sending again",failToSendTag:"Failed to send",editedTag:"Edited",liveAuthorIntro:"{author} says",messageContentAriaText:"{author} said {message}",messageContentMineAriaText:"You said {message}",editBoxTextLimit:"Your message is over the limit of {limitNumber} characters",editBoxPlaceholderText:"Edit your message",newMessagesIndicator:"New messages",noDisplayNameSub:"No name",editBoxCancelButton:"Cancel",editBoxSubmitButton:"Submit",messageReadCount:"Read by {messageReadByCount} of {remoteParticipantsCount}",actionMenuMoreOptions:"More Options",downloadFile:"Download file"};var errorBar$c={unableToReachChatService:"You are offline",accessDenied:"Unable to access chat services - please check the user credentials provided",userNotInChatThread:"You are no longer in this chat thread",sendMessageNotInChatThread:"Failed to send message because you are no longer in this chat thread",sendMessageGeneric:"Failed to send message",callingNetworkFailure:"Troubling connecting call - you seem to be offline",startVideoGeneric:"Failed to start video",stopVideoGeneric:"Failed to stop video",muteGeneric:"Failed to mute microphone",unmuteGeneric:"Failed to unmute microphone",speakingWhileMuted:"Your microphone is muted",startScreenShareGeneric:"Failed to start screen sharing",stopScreenShareGeneric:"Failed to stop screen sharing",callNetworkQualityLow:"Network quality is low.",callNoSpeakerFound:"No speakers or headphones found. Connect an audio device to hear the call.",callNoMicrophoneFound:"No microphones found. Connect an audio input device.",callMicrophoneAccessDenied:"Unable to access microphone. Click the lock in the address bar to grant permission to this webpage.",callMicrophoneMutedBySystem:"You are muted by your system.",callMicrophoneUnmutedBySystem:"Your microphone recovered and you were unmuted by your system.",callMacOsMicrophoneAccessDenied:"Unable to access microphone. Grant microphone permission in your macOS privacy settings.",callLocalVideoFreeze:"Network bandwidth is poor. Your video may appear paused for others on the call.",callCameraAccessDenied:"Unable to access camera. Click the lock in the address bar to grant permission to this webpage.",callCameraAlreadyInUse:"Unable to access camera. It may already be in use by another application.",callVideoStoppedBySystem:"Your video has been stopped by your system.",callVideoRecoveredBySystem:"Your video has resumed.",callMacOsCameraAccessDenied:"MacOS is blocking access to your camera. Update your privacy settings to allow this browser to access your camera.",callMacOsScreenShareAccessDenied:"MacOS is blocking screen sharing. Update your privacy settings to allow this browser to record your screen.",dismissButtonAriaLabel:"Close",failedToJoinCallGeneric:"Failed to join call.",failedToJoinCallInvalidMeetingLink:"Unable to join Meeting. Invalid Link."};var videoGallery$c={screenIsBeingSharedMessage:"You are sharing your screen",screenShareLoadingMessage:"Loading {participant}'s screen",localVideoLabel:"You",localVideoCameraSwitcherLabel:"Switch camera",localVideoMovementLabel:"Movable Local Video Tile",localVideoSelectedDescription:"{cameraName} selected",displayNamePlaceholder:"Unnamed participant"};var dialpad$c={placeholderText:"Enter phone number",deleteButtonAriaLabel:"Delete"};var holdButton$c={onLabel:"Resume",offLabel:"Hold",tooltipOnContent:"Resume call",tooltipOffContent:"Hold call"};var videoTile$c={participantStateConnecting:"Calling...",participantStateRinging:"Calling...",participantStateHold:"On hold"};var SitePermissions$c={primaryText:"Allow {appName} to use your camera and microphone",secondaryText:"This is so participants can see and hear you.",linkText:"Need help? Get troubleshooting help",primaryButtonText:"Allow Access"};var UnsupportedBrowser$d={primaryText:"Browser not supported",secondaryText:"Please join this call using a compatible browser.",moreHelpLink:"More help"};var BrowserPermissionDenied$c={primaryText:"Can't use your camera or microphone",secondaryText:"Your browser might not have access to your camera or microphone. To fix this, open System Preferences.",primaryButtonText:"Try again",linkText:"Need help? Get troubleshooting help"};var BrowserPermissionDeniedIOS$c={primaryText:"Allow microphone access to continue",secondaryText:"So other participants can hear you.",primaryButtonText:"Try again",imageAltText:"Microphone and camera device permission location for iOS",linkText:"Need help? Get troubleshooting help",step1Text:"Go to the Settings app",step2Text:"Scroll down to settings for this browser",step3Text:"Turn on Microphone (Camera optional)",step4Text:"Try joining the call again",step1DigitText:"1",step2DigitText:"2",step3DigitText:"3",step4DigitText:"4"};var en_GB$1 = {participantItem:participantItem$c,typingIndicator:typingIndicator$c,sendBox:sendBox$c,messageStatusIndicator:messageStatusIndicator$c,endCallButton:endCallButton$c,cameraButton:cameraButton$c,microphoneButton:microphoneButton$c,devicesButton:devicesButton$c,participantsButton:participantsButton$c,screenShareButton:screenShareButton$c,messageThread:messageThread$c,errorBar:errorBar$c,videoGallery:videoGallery$c,dialpad:dialpad$c,holdButton:holdButton$c,videoTile:videoTile$c,SitePermissions:SitePermissions$c,UnsupportedBrowser:UnsupportedBrowser$d,BrowserPermissionDenied:BrowserPermissionDenied$c,BrowserPermissionDeniedIOS:BrowserPermissionDeniedIOS$c};
4217
4217
 
@@ -4367,8 +4367,8 @@ const defaultIdentifiers = {
4367
4367
  typingIndicator: 'typing-indicator',
4368
4368
  videoGallery: 'video-gallery',
4369
4369
  videoTile: 'video-tile',
4370
- horizontalGalleryLeftNavButton: 'horizontal-gallery-left-nav-button',
4371
- horizontalGalleryRightNavButton: 'horizontal-gallery-right-nav-button'
4370
+ overflowGalleryLeftNavButton: 'overflow-gallery-left-nav-button',
4371
+ overflowGalleryRightNavButton: 'overflow-gallery-right-nav-button'
4372
4372
  };
4373
4373
  /**
4374
4374
  * @private
@@ -6800,7 +6800,7 @@ const chatMessageActionMenuProps = (menuProps) => {
6800
6800
  return actionMenuProps;
6801
6801
  };
6802
6802
 
6803
- var __awaiter$q = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
6803
+ var __awaiter$r = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
6804
6804
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
6805
6805
  return new (P || (P = Promise))(function (resolve, reject) {
6806
6806
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -6825,7 +6825,7 @@ const _FileDownloadCards = (props) => {
6825
6825
  var _a, _b;
6826
6826
  return (_b = (_a = props.strings) === null || _a === void 0 ? void 0 : _a.downloadFile) !== null && _b !== void 0 ? _b : localeStrings.downloadFile;
6827
6827
  }, [(_a = props.strings) === null || _a === void 0 ? void 0 : _a.downloadFile, localeStrings.downloadFile]);
6828
- const fileDownloadHandler = React.useCallback((userId, file) => __awaiter$q(void 0, void 0, void 0, function* () {
6828
+ const fileDownloadHandler = React.useCallback((userId, file) => __awaiter$r(void 0, void 0, void 0, function* () {
6829
6829
  if (!props.downloadHandler) {
6830
6830
  window.open(file.url, '_blank', 'noopener,noreferrer');
6831
6831
  }
@@ -6973,7 +6973,7 @@ const ChatMessageComponentAsMessageBubble = React__default['default'].memo(Messa
6973
6973
 
6974
6974
  // Copyright (c) Microsoft Corporation.
6975
6975
  // Licensed under the MIT license.
6976
- var __awaiter$p = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
6976
+ var __awaiter$q = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
6977
6977
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
6978
6978
  return new (P || (P = Promise))(function (resolve, reject) {
6979
6979
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -7007,7 +7007,7 @@ const ChatMessageComponent = (props) => {
7007
7007
  return React__default['default'].createElement(React__default['default'].Fragment, null);
7008
7008
  }
7009
7009
  else if (isEditing) {
7010
- return (React__default['default'].createElement(ChatMessageComponentAsEditBox, { message: message, inlineEditButtons: props.inlineAcceptRejectEditButtons, strings: props.strings, onSubmit: (text, metadata, options) => __awaiter$p(void 0, void 0, void 0, function* () {
7010
+ return (React__default['default'].createElement(ChatMessageComponentAsEditBox, { message: message, inlineEditButtons: props.inlineAcceptRejectEditButtons, strings: props.strings, onSubmit: (text, metadata, options) => __awaiter$q(void 0, void 0, void 0, function* () {
7011
7011
  props.onUpdateMessage &&
7012
7012
  props.message.messageId &&
7013
7013
  (yield props.onUpdateMessage(props.message.messageId, text, metadata, options));
@@ -7106,7 +7106,7 @@ const getParticipantsWhoHaveReadMessage = (message, readReceiptsBySenderId) => {
7106
7106
 
7107
7107
  // Copyright (c) Microsoft Corporation.
7108
7108
  // Licensed under the MIT license.
7109
- var __awaiter$o = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
7109
+ var __awaiter$p = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
7110
7110
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
7111
7111
  return new (P || (P = Promise))(function (resolve, reject) {
7112
7112
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -7307,6 +7307,13 @@ const MessageThread = (props) => {
7307
7307
  // readCount and participantCount will only need to be updated on-fly when user hover on an indicator
7308
7308
  const [readCountForHoveredIndicator, setReadCountForHoveredIndicator] = React.useState(undefined);
7309
7309
  const isAllChatMessagesLoadedRef = React.useRef(false);
7310
+ // isAllChatMessagesLoadedRef needs to be updated every time when a new adapter is set in order to display correct data
7311
+ // onLoadPreviousChatMessages is updated when a new adapter is set
7312
+ React.useEffect(() => {
7313
+ if (onLoadPreviousChatMessages) {
7314
+ isAllChatMessagesLoadedRef.current = false;
7315
+ }
7316
+ }, [onLoadPreviousChatMessages]);
7310
7317
  const previousTopRef = React.useRef(-1);
7311
7318
  const previousHeightRef = React.useRef(-1);
7312
7319
  const messageIdSeenByMeRef = React.useRef('');
@@ -7334,7 +7341,7 @@ const MessageThread = (props) => {
7334
7341
  setChatMessagesInitialized(chatMessagesInitialized);
7335
7342
  };
7336
7343
  // we try to only send those message status if user is scrolled to the bottom.
7337
- const sendMessageStatusIfAtBottom = React.useCallback(() => __awaiter$o(void 0, void 0, void 0, function* () {
7344
+ const sendMessageStatusIfAtBottom = React.useCallback(() => __awaiter$p(void 0, void 0, void 0, function* () {
7338
7345
  if (!isAtBottomOfScrollRef.current ||
7339
7346
  !document.hasFocus() ||
7340
7347
  !messagesRef.current ||
@@ -7385,18 +7392,23 @@ const MessageThread = (props) => {
7385
7392
  setIsAtBottomOfScrollRef(atBottom);
7386
7393
  }, [scrollToBottom, sendMessageStatusIfAtBottom]);
7387
7394
  // Infinite scrolling + threadInitialize function
7388
- const fetchNewMessageWhenAtTop = React.useCallback(() => __awaiter$o(void 0, void 0, void 0, function* () {
7395
+ const fetchNewMessageWhenAtTop = React.useCallback(() => __awaiter$p(void 0, void 0, void 0, function* () {
7389
7396
  if (!isLoadingChatMessagesRef.current) {
7390
7397
  if (onLoadPreviousChatMessages) {
7391
7398
  isLoadingChatMessagesRef.current = true;
7392
- // Fetch message until scrollTop reach the threshold for fetching new message
7393
- while (!isAllChatMessagesLoadedRef.current &&
7394
- chatScrollDivRef.current &&
7395
- chatScrollDivRef.current.scrollTop <= 500) {
7396
- isAllChatMessagesLoadedRef.current = yield onLoadPreviousChatMessages(numberOfChatMessagesToReload);
7397
- yield delay(200);
7399
+ try {
7400
+ // Fetch message until scrollTop reach the threshold for fetching new message
7401
+ while (!isAllChatMessagesLoadedRef.current &&
7402
+ chatScrollDivRef.current &&
7403
+ chatScrollDivRef.current.scrollTop <= 500) {
7404
+ isAllChatMessagesLoadedRef.current = yield onLoadPreviousChatMessages(numberOfChatMessagesToReload);
7405
+ yield delay(200);
7406
+ }
7407
+ }
7408
+ finally {
7409
+ // Set isLoadingChatMessagesRef to false after messages are fetched
7410
+ isLoadingChatMessagesRef.current = false;
7398
7411
  }
7399
- isLoadingChatMessagesRef.current = false;
7400
7412
  }
7401
7413
  }
7402
7414
  }), [numberOfChatMessagesToReload, onLoadPreviousChatMessages]);
@@ -7822,7 +7834,7 @@ const ParticipantItem = (props) => {
7822
7834
  // Prevents persona text from being vertically truncated if a global line height is less than 1.15.
7823
7835
  lineHeight: '1.15rem'
7824
7836
  }, styles === null || styles === void 0 ? void 0 : styles.avatar) }, avatarOptions)));
7825
- const meTextStyle = React.useMemo(() => react.mergeStyles(meContainerStyle, { color: theme.palette.neutralTertiary }, styles === null || styles === void 0 ? void 0 : styles.me), [theme.palette.neutralTertiary, styles === null || styles === void 0 ? void 0 : styles.me]);
7837
+ const meTextStyle = React.useMemo(() => react.mergeStyles(meContainerStyle, { color: theme.palette.neutralSecondary }, styles === null || styles === void 0 ? void 0 : styles.me), [theme.palette.neutralSecondary, styles === null || styles === void 0 ? void 0 : styles.me]);
7826
7838
  const contextualMenuStyle = React.useMemo(() => react.mergeStyles({ background: theme.palette.neutralLighterAlt }, styles === null || styles === void 0 ? void 0 : styles.menu), [theme.palette.neutralLighterAlt, styles === null || styles === void 0 ? void 0 : styles.menu]);
7827
7839
  const infoContainerStyle = React.useMemo(() => react.mergeStyles(iconContainerStyle$1, { color: theme.palette.neutralTertiary }, styles === null || styles === void 0 ? void 0 : styles.iconContainer), [theme.palette.neutralTertiary, styles === null || styles === void 0 ? void 0 : styles.iconContainer]);
7828
7840
  const menuButton = React.useMemo(() => (React__default['default'].createElement(react.Stack, { horizontal: true, horizontalAlign: "end", className: react.mergeStyles(menuButtonContainerStyle), title: strings.menuTitle, "data-ui-id": ids.participantItemMenuButton },
@@ -9476,9 +9488,9 @@ const HorizontalGallery = (props) => {
9476
9488
  const disablePreviousButton = page === 0;
9477
9489
  const disableNextButton = page === lastPage;
9478
9490
  return (React__default['default'].createElement(react.Stack, { horizontal: true, className: react.mergeStyles(rootStyle$1, (_a = props.styles) === null || _a === void 0 ? void 0 : _a.root) },
9479
- showButtons && (React__default['default'].createElement(HorizontalGalleryNavigationButton, { key: "previous-nav-button", icon: React__default['default'].createElement(react.Icon, { iconName: "HorizontalGalleryLeftButton" }), styles: styles === null || styles === void 0 ? void 0 : styles.previousButton, onClick: () => setPage(Math.max(0, Math.min(lastPage, page - 1))), disabled: disablePreviousButton, identifier: ids.horizontalGalleryLeftNavButton })),
9491
+ showButtons && (React__default['default'].createElement(HorizontalGalleryNavigationButton, { key: "previous-nav-button", icon: React__default['default'].createElement(react.Icon, { iconName: "HorizontalGalleryLeftButton" }), styles: styles === null || styles === void 0 ? void 0 : styles.previousButton, onClick: () => setPage(Math.max(0, Math.min(lastPage, page - 1))), disabled: disablePreviousButton, identifier: ids.overflowGalleryLeftNavButton })),
9480
9492
  React__default['default'].createElement(react.Stack, { horizontal: true, className: react.mergeStyles(childrenContainerStyle$1, { '> *': (_b = props.styles) === null || _b === void 0 ? void 0 : _b.children }) }, childrenOnCurrentPage),
9481
- showButtons && (React__default['default'].createElement(HorizontalGalleryNavigationButton, { key: "next-nav-button", icon: React__default['default'].createElement(react.Icon, { iconName: "HorizontalGalleryRightButton" }), styles: styles === null || styles === void 0 ? void 0 : styles.nextButton, onClick: () => setPage(Math.min(lastPage, page + 1)), disabled: disableNextButton, identifier: ids.horizontalGalleryRightNavButton }))));
9493
+ showButtons && (React__default['default'].createElement(HorizontalGalleryNavigationButton, { key: "next-nav-button", icon: React__default['default'].createElement(react.Icon, { iconName: "HorizontalGalleryRightButton" }), styles: styles === null || styles === void 0 ? void 0 : styles.nextButton, onClick: () => setPage(Math.min(lastPage, page + 1)), disabled: disableNextButton, identifier: ids.overflowGalleryRightNavButton }))));
9482
9494
  };
9483
9495
  const HorizontalGalleryNavigationButton = (props) => {
9484
9496
  const theme = useTheme();
@@ -9670,6 +9682,9 @@ const VerticalGallery = (props) => {
9670
9682
  const VerticalGalleryControlBar = (props) => {
9671
9683
  const { onNextButtonClick, onPreviousButtonClick, buttonsDisabled, currentPage, totalPages, styles } = props;
9672
9684
  const theme = useTheme();
9685
+ const ids = useIdentifiers();
9686
+ /* @conditional-compile-remove(vertical-gallery) */
9687
+ const strings = useLocale$1().strings.VerticalGallery;
9673
9688
  const pageCounterContainerStyles = React.useMemo(() => {
9674
9689
  return react.mergeStyles(pageNavigationControlBarContainerStyle, styles === null || styles === void 0 ? void 0 : styles.root);
9675
9690
  }, [styles === null || styles === void 0 ? void 0 : styles.root]);
@@ -9684,10 +9699,14 @@ const VerticalGalleryControlBar = (props) => {
9684
9699
  }, [styles === null || styles === void 0 ? void 0 : styles.nextButton, theme]);
9685
9700
  const controlBarSpacing = { childrenGap: '0.5rem' };
9686
9701
  return (React__default['default'].createElement(react.Stack, { horizontalAlign: "center", tokens: controlBarSpacing, horizontal: true, className: pageCounterContainerStyles },
9687
- React__default['default'].createElement(react.DefaultButton, { className: previousButtonSyles, onClick: onPreviousButtonClick, disabled: buttonsDisabled === null || buttonsDisabled === void 0 ? void 0 : buttonsDisabled.previous },
9702
+ React__default['default'].createElement(react.DefaultButton, { className: previousButtonSyles, onClick: onPreviousButtonClick, disabled: buttonsDisabled === null || buttonsDisabled === void 0 ? void 0 : buttonsDisabled.previous,
9703
+ /* @conditional-compile-remove(vertical-gallery) */
9704
+ ariaLabel: strings.leftNavButtonAriaLabel, "data-ui-id": ids.overflowGalleryLeftNavButton },
9688
9705
  React__default['default'].createElement(react.Icon, { iconName: "VerticalGalleryLeftButton", styles: navIconStyles })),
9689
9706
  React__default['default'].createElement(react.Text, { className: pageCounterStyles }, `${currentPage} / ${totalPages}`),
9690
- React__default['default'].createElement(react.DefaultButton, { className: nextButtonsStyles, onClick: onNextButtonClick, disabled: buttonsDisabled === null || buttonsDisabled === void 0 ? void 0 : buttonsDisabled.next },
9707
+ React__default['default'].createElement(react.DefaultButton, { className: nextButtonsStyles, onClick: onNextButtonClick, disabled: buttonsDisabled === null || buttonsDisabled === void 0 ? void 0 : buttonsDisabled.next,
9708
+ /* @conditional-compile-remove(vertical-gallery) */
9709
+ ariaLabel: strings.rightNavButtonAriaLabel, "data-ui-id": ids.overflowGalleryRightNavButton },
9691
9710
  React__default['default'].createElement(react.Icon, { iconName: "VerticalGalleryRightButton", styles: navIconStyles }))));
9692
9711
  };
9693
9712
 
@@ -9792,12 +9811,20 @@ const VERTICAL_GALLERY_TILE_SIZE_REM = { minHeight: 5.625, maxHeight: 9, width:
9792
9811
  * @param shouldFloatLocalVideo whether rendered in floating layout or not
9793
9812
  * @returns Style set for VerticalGallery container.
9794
9813
  */
9795
- const verticalGalleryContainerStyle = (shouldFloatLocalVideo) => {
9796
- return {
9797
- width: `${VERTICAL_GALLERY_TILE_SIZE_REM.width}rem`,
9798
- height: shouldFloatLocalVideo ? `calc(100% - ${_pxToRem(VERTICAL_GALLERY_FLOATING_MODAL_SIZE_PX.height)})` : '100%',
9799
- paddingBottom: '0.5rem'
9800
- };
9814
+ const verticalGalleryContainerStyle = (shouldFloatLocalVideo, isNarrow) => {
9815
+ return isNarrow
9816
+ ? {
9817
+ width: `${VERTICAL_GALLERY_TILE_SIZE_REM.width}rem`,
9818
+ height: shouldFloatLocalVideo ? `calc(100% - ${_pxToRem(SMALL_FLOATING_MODAL_SIZE_PX.height)})` : '100%',
9819
+ paddingBottom: '0.5rem'
9820
+ }
9821
+ : {
9822
+ width: `${VERTICAL_GALLERY_TILE_SIZE_REM.width}rem`,
9823
+ height: shouldFloatLocalVideo
9824
+ ? `calc(100% - ${_pxToRem(VERTICAL_GALLERY_FLOATING_MODAL_SIZE_PX.height)})`
9825
+ : '100%',
9826
+ paddingBottom: '0.5rem'
9827
+ };
9801
9828
  };
9802
9829
  /**
9803
9830
  * @private
@@ -9883,8 +9910,10 @@ const calculateChildrenPerPage = (args) => {
9883
9910
  /**
9884
9911
  * Now that we have the childrenSpace height we can figure out how many Children can fir in the childrenSpace.
9885
9912
  * childrenSpace = n * childHeightMin + (n - 1) * gapHeight. isolate n and take the floor.
9913
+ *
9914
+ * We want to always return at least one video tile if there are children present.So we take the max.
9886
9915
  */
9887
- return Math.floor((childSpace + gapHeightPx) / (childMinHeightPx + gapHeightPx));
9916
+ return Math.max(Math.floor((childSpace + gapHeightPx) / (childMinHeightPx + gapHeightPx)), 1);
9888
9917
  };
9889
9918
 
9890
9919
  // Copyright (c) Microsoft Corporation.
@@ -9986,22 +10015,28 @@ const ScrollableHorizontalGallery = (props) => {
9986
10015
  * @private
9987
10016
  */
9988
10017
  const OverflowGallery = (props) => {
9989
- const { shouldFloatLocalVideo = false, isNarrow = false, overflowGalleryElements, styles,
9990
- /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryLayout = 'HorizontalBottom' } = props;
10018
+ const { shouldFloatLocalVideo = false, isNarrow = false, overflowGalleryElements, horizontalGalleryStyles,
10019
+ /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryLayout = 'HorizontalBottom',
10020
+ /* @conditional-compile-remove(vertical-gallery) */ veritcalGalleryStyles } = props;
9991
10021
  const containerStyles = React.useMemo(() => {
9992
10022
  /* @conditional-compile-remove(vertical-gallery) */
9993
10023
  if (overflowGalleryLayout === 'VerticalRight') {
9994
- return verticalGalleryContainerStyle(shouldFloatLocalVideo);
10024
+ return verticalGalleryContainerStyle(shouldFloatLocalVideo, isNarrow);
9995
10025
  }
9996
10026
  return horizontalGalleryContainerStyle(shouldFloatLocalVideo, isNarrow);
9997
10027
  }, [shouldFloatLocalVideo, isNarrow, /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryLayout]);
9998
10028
  const galleryStyles = React.useMemo(() => {
9999
10029
  /* @conditional-compile-remove(vertical-gallery) */
10000
10030
  if (overflowGalleryLayout === 'VerticalRight') {
10001
- return react.concatStyleSets(verticalGalleryStyle, styles);
10031
+ return react.concatStyleSets(verticalGalleryStyle, veritcalGalleryStyles);
10002
10032
  }
10003
- return react.concatStyleSets(horizontalGalleryStyle(isNarrow), styles);
10004
- }, [isNarrow, styles, /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryLayout]);
10033
+ return react.concatStyleSets(horizontalGalleryStyle(isNarrow), horizontalGalleryStyles);
10034
+ }, [
10035
+ isNarrow,
10036
+ horizontalGalleryStyles,
10037
+ /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryLayout,
10038
+ /* @conditional-compile-remove(vertical-gallery) */ veritcalGalleryStyles
10039
+ ]);
10005
10040
  /* @conditional-compile-remove(vertical-gallery) */
10006
10041
  if (overflowGalleryLayout === 'VerticalRight') {
10007
10042
  return (React__default['default'].createElement(ResponsiveVerticalGallery, { key: "responsive-vertical-gallery", containerStyles: containerStyles, verticalGalleryStyles: galleryStyles, controlBarHeightRem: HORIZONTAL_GALLERY_BUTTON_WIDTH, gapHeightRem: HORIZONTAL_GALLERY_GAP }, overflowGalleryElements));
@@ -10052,14 +10087,17 @@ const DefaultLayout = (props) => {
10052
10087
  if (horizontalGalleryTiles.length === 0) {
10053
10088
  return null;
10054
10089
  }
10055
- return (React__default['default'].createElement(OverflowGallery, { isNarrow: isNarrow, shouldFloatLocalVideo: false, overflowGalleryElements: horizontalGalleryTiles, styles: styles === null || styles === void 0 ? void 0 : styles.horizontalGallery,
10090
+ return (React__default['default'].createElement(OverflowGallery, { isNarrow: isNarrow, shouldFloatLocalVideo: false, overflowGalleryElements: horizontalGalleryTiles, horizontalGalleryStyles: styles === null || styles === void 0 ? void 0 : styles.horizontalGallery,
10091
+ /* @conditional-compile-remove(vertical-gallery) */
10092
+ veritcalGalleryStyles: styles === null || styles === void 0 ? void 0 : styles.verticalGallery,
10056
10093
  /* @conditional-compile-remove(pinned-participants) */
10057
10094
  overflowGalleryLayout: overflowGalleryLayout }));
10058
10095
  }, [
10059
10096
  isNarrow,
10060
10097
  horizontalGalleryTiles,
10061
10098
  styles === null || styles === void 0 ? void 0 : styles.horizontalGallery,
10062
- /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryLayout
10099
+ /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryLayout,
10100
+ /* @conditional-compile-remove(vertical-gallery) */ styles === null || styles === void 0 ? void 0 : styles.verticalGallery
10063
10101
  ]);
10064
10102
  return (React__default['default'].createElement(react.Stack
10065
10103
  /* @conditional-compile-remove(vertical-gallery) */
@@ -10841,14 +10879,20 @@ const FloatingLocalVideoLayout = (props) => {
10841
10879
  : (_b = p.videoStream) === null || _b === void 0 ? void 0 : _b.isAvailable);
10842
10880
  });
10843
10881
  const layerHostId = reactHooks.useId('layerhost');
10844
- let localVideoSize = LARGE_FLOATING_MODAL_SIZE_PX;
10845
- if (isNarrow) {
10846
- localVideoSize = SMALL_FLOATING_MODAL_SIZE_PX;
10847
- }
10848
- /* @conditional-compile-remove(vertical-gallery) */
10849
- if (overflowGalleryLayout === 'VerticalRight') {
10850
- localVideoSize = VERTICAL_GALLERY_FLOATING_MODAL_SIZE_PX;
10851
- }
10882
+ const localVideoSize = React.useMemo(() => {
10883
+ if (isNarrow) {
10884
+ return SMALL_FLOATING_MODAL_SIZE_PX;
10885
+ }
10886
+ /* @conditional-compile-remove(vertical-gallery) */
10887
+ if (horizontalGalleryTiles.length > 0 && overflowGalleryLayout === 'VerticalRight') {
10888
+ return isNarrow ? SMALL_FLOATING_MODAL_SIZE_PX : VERTICAL_GALLERY_FLOATING_MODAL_SIZE_PX;
10889
+ }
10890
+ return LARGE_FLOATING_MODAL_SIZE_PX;
10891
+ }, [
10892
+ horizontalGalleryTiles.length,
10893
+ isNarrow,
10894
+ /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryLayout
10895
+ ]);
10852
10896
  const wrappedLocalVideoComponent = localVideoComponent && shouldFloatLocalVideo ? (
10853
10897
  // When we use showCameraSwitcherInLocalPreview it disables dragging to allow keyboard navigation.
10854
10898
  showCameraSwitcherInLocalPreview ? (React__default['default'].createElement(react.Stack, { className: react.mergeStyles(localVideoTileWithControlsContainerStyle(theme, localVideoSize), {
@@ -10859,14 +10903,17 @@ const FloatingLocalVideoLayout = (props) => {
10859
10903
  if (horizontalGalleryTiles.length === 0) {
10860
10904
  return null;
10861
10905
  }
10862
- return (React__default['default'].createElement(OverflowGallery, { isNarrow: isNarrow, shouldFloatLocalVideo: true, overflowGalleryElements: horizontalGalleryTiles, styles: styles === null || styles === void 0 ? void 0 : styles.horizontalGallery,
10906
+ return (React__default['default'].createElement(OverflowGallery, { isNarrow: isNarrow, shouldFloatLocalVideo: true, overflowGalleryElements: horizontalGalleryTiles, horizontalGalleryStyles: styles === null || styles === void 0 ? void 0 : styles.horizontalGallery,
10907
+ /* @conditional-compile-remove(vertical-gallery) */
10908
+ veritcalGalleryStyles: styles === null || styles === void 0 ? void 0 : styles.verticalGallery,
10863
10909
  /* @conditional-compile-remove(vertical-gallery) */
10864
10910
  overflowGalleryLayout: overflowGalleryLayout }));
10865
10911
  }, [
10866
10912
  isNarrow,
10867
10913
  horizontalGalleryTiles,
10868
10914
  styles === null || styles === void 0 ? void 0 : styles.horizontalGallery,
10869
- /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryLayout
10915
+ /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryLayout,
10916
+ /* @conditional-compile-remove(vertical-gallery) */ styles === null || styles === void 0 ? void 0 : styles.verticalGallery
10870
10917
  ]);
10871
10918
  return (React__default['default'].createElement(react.Stack, { styles: rootLayoutStyle },
10872
10919
  wrappedLocalVideoComponent,
@@ -11484,7 +11531,7 @@ const DevicesButton = (props) => {
11484
11531
 
11485
11532
  // Copyright (c) Microsoft Corporation.
11486
11533
  // Licensed under the MIT license.
11487
- var __awaiter$n = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
11534
+ var __awaiter$o = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
11488
11535
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
11489
11536
  return new (P || (P = Promise))(function (resolve, reject) {
11490
11537
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -11522,7 +11569,7 @@ const CameraButton = (props) => {
11522
11569
  const toggleAnnouncerString = React.useCallback((isCameraOn) => {
11523
11570
  setAnnouncerString(!isCameraOn ? strings.cameraActionTurnedOffAnnouncement : strings.cameraActionTurnedOnAnnouncement);
11524
11571
  }, [strings.cameraActionTurnedOffAnnouncement, strings.cameraActionTurnedOnAnnouncement]);
11525
- const onToggleClick = React.useCallback(() => __awaiter$n(void 0, void 0, void 0, function* () {
11572
+ const onToggleClick = React.useCallback(() => __awaiter$o(void 0, void 0, void 0, function* () {
11526
11573
  // Throttle click on camera, need to await onToggleCamera then allow another click
11527
11574
  if (onToggleCamera) {
11528
11575
  setWaitForCamera(true);
@@ -11654,7 +11701,7 @@ const lightThemeCallButtonStyles = {
11654
11701
 
11655
11702
  // Copyright (c) Microsoft Corporation.
11656
11703
  // Licensed under the MIT license.
11657
- var __awaiter$m = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
11704
+ var __awaiter$n = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
11658
11705
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
11659
11706
  return new (P || (P = Promise))(function (resolve, reject) {
11660
11707
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -11695,7 +11742,7 @@ const MicrophoneButton = (props) => {
11695
11742
  const toggleAnnouncerString = React.useCallback((isMicOn) => {
11696
11743
  setAnnouncerString(!isMicOn ? strings.microphoneActionTurnedOffAnnouncement : strings.microphoneActionTurnedOnAnnouncement);
11697
11744
  }, [strings.microphoneActionTurnedOffAnnouncement, strings.microphoneActionTurnedOnAnnouncement]);
11698
- const onToggleClick = React.useCallback(() => __awaiter$m(void 0, void 0, void 0, function* () {
11745
+ const onToggleClick = React.useCallback(() => __awaiter$n(void 0, void 0, void 0, function* () {
11699
11746
  if (onToggleMicrophone) {
11700
11747
  try {
11701
11748
  yield onToggleMicrophone();
@@ -12556,7 +12603,7 @@ const formatPhoneNumber = (phoneNumber) => {
12556
12603
 
12557
12604
  // Copyright (c) Microsoft Corporation.
12558
12605
  // Licensed under the MIT license.
12559
- var __awaiter$l = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
12606
+ var __awaiter$m = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
12560
12607
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
12561
12608
  return new (P || (P = Promise))(function (resolve, reject) {
12562
12609
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -12598,10 +12645,10 @@ const DialpadButton = (props) => {
12598
12645
  const theme = react.useTheme();
12599
12646
  const { digit, index, onClick, onLongPress, isMobile = false } = props;
12600
12647
  const useLongPressProps = React__default['default'].useMemo(() => ({
12601
- onClick: () => __awaiter$l(void 0, void 0, void 0, function* () {
12648
+ onClick: () => __awaiter$m(void 0, void 0, void 0, function* () {
12602
12649
  onClick(digit, index);
12603
12650
  }),
12604
- onLongPress: () => __awaiter$l(void 0, void 0, void 0, function* () {
12651
+ onLongPress: () => __awaiter$m(void 0, void 0, void 0, function* () {
12605
12652
  onLongPress(digit, index);
12606
12653
  }),
12607
12654
  touchEventsOnly: isMobile
@@ -13526,7 +13573,7 @@ const findConditionalCompiledSelector = (component) => {
13526
13573
 
13527
13574
  // Copyright (c) Microsoft Corporation.
13528
13575
  // Licensed under the MIT license.
13529
- var __awaiter$k = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
13576
+ var __awaiter$l = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
13530
13577
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
13531
13578
  return new (P || (P = Promise))(function (resolve, reject) {
13532
13579
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -13549,35 +13596,35 @@ const createDefaultChatHandlers = memoizeOne__default['default']((chatClient, ch
13549
13596
  let messageIterator = undefined;
13550
13597
  let readReceiptIterator = undefined;
13551
13598
  return {
13552
- onSendMessage: (content, options) => __awaiter$k(void 0, void 0, void 0, function* () {
13599
+ onSendMessage: (content, options) => __awaiter$l(void 0, void 0, void 0, function* () {
13553
13600
  const sendMessageRequest = {
13554
13601
  content,
13555
13602
  senderDisplayName: chatClient.getState().displayName
13556
13603
  };
13557
13604
  yield chatThreadClient.sendMessage(sendMessageRequest, options);
13558
13605
  }),
13559
- onUpdateMessage: (messageId, content, metadata, options) => __awaiter$k(void 0, void 0, void 0, function* () {
13606
+ onUpdateMessage: (messageId, content, metadata, options) => __awaiter$l(void 0, void 0, void 0, function* () {
13560
13607
  const updatedMetadata = metadata ? Object.assign({}, metadata) : {};
13561
13608
  updatedMetadata['fileSharingMetadata'] = JSON.stringify((options === null || options === void 0 ? void 0 : options.attachedFilesMetadata) || []);
13562
13609
  yield chatThreadClient.updateMessage(messageId, { content, metadata: updatedMetadata });
13563
13610
  }),
13564
- onDeleteMessage: (messageId) => __awaiter$k(void 0, void 0, void 0, function* () {
13611
+ onDeleteMessage: (messageId) => __awaiter$l(void 0, void 0, void 0, function* () {
13565
13612
  yield chatThreadClient.deleteMessage(messageId);
13566
13613
  }),
13567
13614
  // This handler is designed for chatThread to consume
13568
- onMessageSeen: (chatMessageId) => __awaiter$k(void 0, void 0, void 0, function* () {
13615
+ onMessageSeen: (chatMessageId) => __awaiter$l(void 0, void 0, void 0, function* () {
13569
13616
  yield chatThreadClient.sendReadReceipt({ chatMessageId });
13570
13617
  }),
13571
- onTyping: () => __awaiter$k(void 0, void 0, void 0, function* () {
13618
+ onTyping: () => __awaiter$l(void 0, void 0, void 0, function* () {
13572
13619
  yield chatThreadClient.sendTypingNotification();
13573
13620
  }),
13574
- onRemoveParticipant: (userId) => __awaiter$k(void 0, void 0, void 0, function* () {
13621
+ onRemoveParticipant: (userId) => __awaiter$l(void 0, void 0, void 0, function* () {
13575
13622
  yield chatThreadClient.removeParticipant(fromFlatCommunicationIdentifier(userId));
13576
13623
  }),
13577
- updateThreadTopicName: (topicName) => __awaiter$k(void 0, void 0, void 0, function* () {
13624
+ updateThreadTopicName: (topicName) => __awaiter$l(void 0, void 0, void 0, function* () {
13578
13625
  yield chatThreadClient.updateTopic(topicName);
13579
13626
  }),
13580
- onLoadPreviousChatMessages: (messagesToLoad) => __awaiter$k(void 0, void 0, void 0, function* () {
13627
+ onLoadPreviousChatMessages: (messagesToLoad) => __awaiter$l(void 0, void 0, void 0, function* () {
13581
13628
  var _a, _b, _c;
13582
13629
  if (messageIterator === undefined) {
13583
13630
  // Lazy definition so that errors in the method call are reported correctly.
@@ -14314,7 +14361,7 @@ const chatStatefulLogger = logger.createClientLogger('communication-react:chat-s
14314
14361
 
14315
14362
  // Copyright (c) Microsoft Corporation.
14316
14363
  // Licensed under the MIT license.
14317
- var __awaiter$j = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
14364
+ var __awaiter$k = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
14318
14365
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
14319
14366
  return new (P || (P = Promise))(function (resolve, reject) {
14320
14367
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -14589,7 +14636,7 @@ class ChatContext$1 {
14589
14636
  * @throws ChatError. Exceptions thrown from `f` are tagged with the failed `target.
14590
14637
  */
14591
14638
  withAsyncErrorTeedToState(f, target) {
14592
- return (...args) => __awaiter$j(this, void 0, void 0, function* () {
14639
+ return (...args) => __awaiter$k(this, void 0, void 0, function* () {
14593
14640
  try {
14594
14641
  return yield f(...args);
14595
14642
  }
@@ -14696,7 +14743,7 @@ const convertChatMessage = (message, status = 'delivered', clientMessageId) => {
14696
14743
 
14697
14744
  // Copyright (c) Microsoft Corporation.
14698
14745
  // Licensed under the MIT license.
14699
- var __awaiter$i = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
14746
+ var __awaiter$j = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
14700
14747
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
14701
14748
  return new (P || (P = Promise))(function (resolve, reject) {
14702
14749
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -14781,7 +14828,7 @@ class EventSubscriber {
14781
14828
  };
14782
14829
  // This is a temporary fix that no participant message is received for onChatMessageReceived event, which should be handled by JS SDK.
14783
14830
  // Without the temporary fix, there are missing 'participant joined' and 'participant left' system messages in the chat thread.
14784
- this.fetchLastParticipantMessage = (threadId, actionType) => __awaiter$i(this, void 0, void 0, function* () {
14831
+ this.fetchLastParticipantMessage = (threadId, actionType) => __awaiter$j(this, void 0, void 0, function* () {
14785
14832
  var e_1, _a;
14786
14833
  try {
14787
14834
  for (var _b = __asyncValues$1(this.chatClient
@@ -14873,7 +14920,7 @@ class EventSubscriber {
14873
14920
 
14874
14921
  // Copyright (c) Microsoft Corporation.
14875
14922
  // Licensed under the MIT license.
14876
- var __awaiter$h = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
14923
+ var __awaiter$i = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
14877
14924
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
14878
14925
  return new (P || (P = Promise))(function (resolve, reject) {
14879
14926
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -14895,7 +14942,7 @@ const createDecoratedIterator = (iteratorCreator, context, decorateFn) => {
14895
14942
  const threadsIterator = iteratorCreator(...args);
14896
14943
  return {
14897
14944
  next() {
14898
- return __awaiter$h(this, void 0, void 0, function* () {
14945
+ return __awaiter$i(this, void 0, void 0, function* () {
14899
14946
  const result = yield threadsIterator.next();
14900
14947
  if (!result.done && result.value) {
14901
14948
  decorateFn(result.value, context);
@@ -14910,7 +14957,7 @@ const createDecoratedIterator = (iteratorCreator, context, decorateFn) => {
14910
14957
  const pages = threadsIterator.byPage(settings);
14911
14958
  return {
14912
14959
  next() {
14913
- return __awaiter$h(this, void 0, void 0, function* () {
14960
+ return __awaiter$i(this, void 0, void 0, function* () {
14914
14961
  const result = yield pages.next();
14915
14962
  const page = result.value;
14916
14963
  if (!result.done && result.value) {
@@ -14994,7 +15041,7 @@ const createDecoratedListParticipants = (chatThreadClient, context) => {
14994
15041
 
14995
15042
  // Copyright (c) Microsoft Corporation.
14996
15043
  // Licensed under the MIT license.
14997
- var __awaiter$g = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
15044
+ var __awaiter$h = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
14998
15045
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
14999
15046
  return new (P || (P = Promise))(function (resolve, reject) {
15000
15047
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -15013,14 +15060,14 @@ class ProxyChatThreadClient {
15013
15060
  return createDecoratedListMessages(chatThreadClient, this._context);
15014
15061
  }
15015
15062
  case 'getMessage': {
15016
- return this._context.withAsyncErrorTeedToState((...args) => __awaiter$g(this, void 0, void 0, function* () {
15063
+ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$h(this, void 0, void 0, function* () {
15017
15064
  const message = yield chatThreadClient.getMessage(...args);
15018
15065
  this._context.setChatMessage(chatThreadClient.threadId, convertChatMessage(message));
15019
15066
  return message;
15020
15067
  }), 'ChatThreadClient.getMessage');
15021
15068
  }
15022
15069
  case 'sendMessage': {
15023
- return this._context.withAsyncErrorTeedToState((...args) => __awaiter$g(this, void 0, void 0, function* () {
15070
+ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$h(this, void 0, void 0, function* () {
15024
15071
  // Retry logic?
15025
15072
  const [request, options] = args;
15026
15073
  const { content } = request;
@@ -15060,7 +15107,7 @@ class ProxyChatThreadClient {
15060
15107
  }), 'ChatThreadClient.sendMessage');
15061
15108
  }
15062
15109
  case 'addParticipants': {
15063
- return this._context.withAsyncErrorTeedToState((...args) => __awaiter$g(this, void 0, void 0, function* () {
15110
+ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$h(this, void 0, void 0, function* () {
15064
15111
  const result = yield chatThreadClient.addParticipants(...args);
15065
15112
  const [addRequest] = args;
15066
15113
  const participantsToAdd = addRequest.participants;
@@ -15069,7 +15116,7 @@ class ProxyChatThreadClient {
15069
15116
  }), 'ChatThreadClient.addParticipants');
15070
15117
  }
15071
15118
  case 'deleteMessage': {
15072
- return this._context.withAsyncErrorTeedToState((...args) => __awaiter$g(this, void 0, void 0, function* () {
15119
+ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$h(this, void 0, void 0, function* () {
15073
15120
  // DeleteMessage is able to either delete local one(for failed message) or synced message
15074
15121
  const [messageId] = args;
15075
15122
  if (this._context.deleteLocalMessage(chatThreadClient.threadId, messageId)) {
@@ -15087,12 +15134,12 @@ class ProxyChatThreadClient {
15087
15134
  return createDecoratedListReadReceipts(chatThreadClient, this._context);
15088
15135
  }
15089
15136
  case 'sendTypingNotification': {
15090
- return this._context.withAsyncErrorTeedToState((...args) => __awaiter$g(this, void 0, void 0, function* () {
15137
+ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$h(this, void 0, void 0, function* () {
15091
15138
  return yield chatThreadClient.sendTypingNotification(...args);
15092
15139
  }), 'ChatThreadClient.sendTypingNotification');
15093
15140
  }
15094
15141
  case 'removeParticipant': {
15095
- return this._context.withAsyncErrorTeedToState((...args) => __awaiter$g(this, void 0, void 0, function* () {
15142
+ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$h(this, void 0, void 0, function* () {
15096
15143
  const result = yield chatThreadClient.removeParticipant(...args);
15097
15144
  const [removeIdentifier] = args;
15098
15145
  this._context.deleteParticipant(chatThreadClient.threadId, communicationCommon.getIdentifierKind(removeIdentifier));
@@ -15100,7 +15147,7 @@ class ProxyChatThreadClient {
15100
15147
  }), 'ChatThreadClient.removeParticipant');
15101
15148
  }
15102
15149
  case 'updateMessage': {
15103
- return this._context.withAsyncErrorTeedToState((...args) => __awaiter$g(this, void 0, void 0, function* () {
15150
+ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$h(this, void 0, void 0, function* () {
15104
15151
  const result = yield chatThreadClient.updateMessage(...args);
15105
15152
  const [messageId, updateOption] = args;
15106
15153
  this._context.updateChatMessageContent(chatThreadClient.threadId, messageId, updateOption === null || updateOption === void 0 ? void 0 : updateOption.content);
@@ -15108,7 +15155,7 @@ class ProxyChatThreadClient {
15108
15155
  }), 'ChatThreadClient.updateMessage');
15109
15156
  }
15110
15157
  case 'updateTopic': {
15111
- return this._context.withAsyncErrorTeedToState((...args) => __awaiter$g(this, void 0, void 0, function* () {
15158
+ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$h(this, void 0, void 0, function* () {
15112
15159
  const result = yield chatThreadClient.updateTopic(...args);
15113
15160
  const [topic] = args;
15114
15161
  this._context.updateThreadTopic(chatThreadClient.threadId, topic);
@@ -15116,7 +15163,7 @@ class ProxyChatThreadClient {
15116
15163
  }), 'ChatThreadClient.updateTopic');
15117
15164
  }
15118
15165
  case 'getProperties': {
15119
- return this._context.withAsyncErrorTeedToState((...args) => __awaiter$g(this, void 0, void 0, function* () {
15166
+ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$h(this, void 0, void 0, function* () {
15120
15167
  const result = yield chatThreadClient.getProperties(...args);
15121
15168
  this._context.updateThread(chatThreadClient.threadId, result);
15122
15169
  return result;
@@ -15153,7 +15200,7 @@ const createDecoratedListThreads = (chatClient, context) => {
15153
15200
 
15154
15201
  // Copyright (c) Microsoft Corporation.
15155
15202
  // Licensed under the MIT license.
15156
- var __awaiter$f = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
15203
+ var __awaiter$g = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
15157
15204
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15158
15205
  return new (P || (P = Promise))(function (resolve, reject) {
15159
15206
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -15172,7 +15219,7 @@ const proxyChatClient = {
15172
15219
  switch (prop) {
15173
15220
  case 'createChatThread': {
15174
15221
  return context.withAsyncErrorTeedToState(function (...args) {
15175
- return __awaiter$f(this, void 0, void 0, function* () {
15222
+ return __awaiter$g(this, void 0, void 0, function* () {
15176
15223
  const result = yield chatClient.createChatThread(...args);
15177
15224
  const thread = result.chatThread;
15178
15225
  if (thread) {
@@ -15185,7 +15232,7 @@ const proxyChatClient = {
15185
15232
  }
15186
15233
  case 'deleteChatThread': {
15187
15234
  return context.withAsyncErrorTeedToState(function (...args) {
15188
- return __awaiter$f(this, void 0, void 0, function* () {
15235
+ return __awaiter$g(this, void 0, void 0, function* () {
15189
15236
  const result = yield chatClient.deleteChatThread(...args);
15190
15237
  context.deleteThread(args[0]);
15191
15238
  return result;
@@ -15205,7 +15252,7 @@ const proxyChatClient = {
15205
15252
  }
15206
15253
  case 'startRealtimeNotifications': {
15207
15254
  return context.withAsyncErrorTeedToState(function (...args) {
15208
- return __awaiter$f(this, void 0, void 0, function* () {
15255
+ return __awaiter$g(this, void 0, void 0, function* () {
15209
15256
  const ret = yield chatClient.startRealtimeNotifications(...args);
15210
15257
  if (!receiver.eventSubscriber) {
15211
15258
  receiver.eventSubscriber = new EventSubscriber(chatClient, context);
@@ -15216,7 +15263,7 @@ const proxyChatClient = {
15216
15263
  }
15217
15264
  case 'stopRealtimeNotifications': {
15218
15265
  return context.withAsyncErrorTeedToState(function (...args) {
15219
- return __awaiter$f(this, void 0, void 0, function* () {
15266
+ return __awaiter$g(this, void 0, void 0, function* () {
15220
15267
  const ret = yield chatClient.stopRealtimeNotifications(...args);
15221
15268
  if (receiver.eventSubscriber) {
15222
15269
  receiver.eventSubscriber.unsubscribe();
@@ -15823,7 +15870,7 @@ const END_CALL_PAGES = [
15823
15870
 
15824
15871
  // Copyright (c) Microsoft Corporation.
15825
15872
  // Licensed under the MIT license.
15826
- var __awaiter$e = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
15873
+ var __awaiter$f = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
15827
15874
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
15828
15875
  return new (P || (P = Promise))(function (resolve, reject) {
15829
15876
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -16046,7 +16093,7 @@ const isDisabled$2 = (option) => {
16046
16093
  /**
16047
16094
  * @returns Permissions state for the camera.
16048
16095
  */
16049
- const queryCameraPermissionFromPermissionsAPI = () => __awaiter$e(void 0, void 0, void 0, function* () {
16096
+ const queryCameraPermissionFromPermissionsAPI = () => __awaiter$f(void 0, void 0, void 0, function* () {
16050
16097
  try {
16051
16098
  return (yield navigator.permissions.query({ name: 'camera' })).state;
16052
16099
  }
@@ -16059,7 +16106,7 @@ const queryCameraPermissionFromPermissionsAPI = () => __awaiter$e(void 0, void 0
16059
16106
  /**
16060
16107
  * @returns Permissions state for the microphone.
16061
16108
  */
16062
- const queryMicrophonePermissionFromPermissionsAPI = () => __awaiter$e(void 0, void 0, void 0, function* () {
16109
+ const queryMicrophonePermissionFromPermissionsAPI = () => __awaiter$f(void 0, void 0, void 0, function* () {
16063
16110
  try {
16064
16111
  return (yield navigator.permissions.query({ name: 'microphone' })).state;
16065
16112
  }
@@ -16076,7 +16123,7 @@ const queryMicrophonePermissionFromPermissionsAPI = () => __awaiter$e(void 0, vo
16076
16123
  * If permission API is not supported on this browser, permission state is set to unsupported.
16077
16124
  * @private
16078
16125
  */
16079
- const getDevicePermissionState = (setVideoState, setAudioState) => __awaiter$e(void 0, void 0, void 0, function* () {
16126
+ const getDevicePermissionState = (setVideoState, setAudioState) => __awaiter$f(void 0, void 0, void 0, function* () {
16080
16127
  const [cameraResult, microphoneResult] = yield Promise.all([
16081
16128
  queryCameraPermissionFromPermissionsAPI(),
16082
16129
  queryMicrophonePermissionFromPermissionsAPI()
@@ -16153,7 +16200,7 @@ const createParticipantModifier = (createModifiedParticipant) => {
16153
16200
 
16154
16201
  // Copyright (c) Microsoft Corporation.
16155
16202
  // Licensed under the MIT license.
16156
- var __awaiter$d = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
16203
+ var __awaiter$e = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
16157
16204
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
16158
16205
  return new (P || (P = Promise))(function (resolve, reject) {
16159
16206
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -16279,9 +16326,9 @@ class AzureCommunicationChatAdapter {
16279
16326
  this.unsubscribeAllEvents();
16280
16327
  }
16281
16328
  fetchInitialData() {
16282
- return __awaiter$d(this, void 0, void 0, function* () {
16329
+ return __awaiter$e(this, void 0, void 0, function* () {
16283
16330
  // If get properties fails we dont want to try to get the participants after.
16284
- yield this.asyncTeeErrorToEventEmitter(() => __awaiter$d(this, void 0, void 0, function* () {
16331
+ yield this.asyncTeeErrorToEventEmitter(() => __awaiter$e(this, void 0, void 0, function* () {
16285
16332
  var e_1, _a;
16286
16333
  yield this.chatThreadClient.getProperties();
16287
16334
  try {
@@ -16315,8 +16362,8 @@ class AzureCommunicationChatAdapter {
16315
16362
  this.context.offStateChange(handler);
16316
16363
  }
16317
16364
  sendMessage(content, options = {}) {
16318
- return __awaiter$d(this, void 0, void 0, function* () {
16319
- yield this.asyncTeeErrorToEventEmitter(() => __awaiter$d(this, void 0, void 0, function* () {
16365
+ return __awaiter$e(this, void 0, void 0, function* () {
16366
+ yield this.asyncTeeErrorToEventEmitter(() => __awaiter$e(this, void 0, void 0, function* () {
16320
16367
  /* @conditional-compile-remove(file-sharing) */
16321
16368
  options.metadata = Object.assign(Object.assign({}, options.metadata), convertFileUploadsUiStateToMessageMetadata(this.context.getState().fileUploads));
16322
16369
  /* @conditional-compile-remove(file-sharing) */
@@ -16333,51 +16380,51 @@ class AzureCommunicationChatAdapter {
16333
16380
  });
16334
16381
  }
16335
16382
  sendReadReceipt(chatMessageId) {
16336
- return __awaiter$d(this, void 0, void 0, function* () {
16337
- yield this.asyncTeeErrorToEventEmitter(() => __awaiter$d(this, void 0, void 0, function* () {
16383
+ return __awaiter$e(this, void 0, void 0, function* () {
16384
+ yield this.asyncTeeErrorToEventEmitter(() => __awaiter$e(this, void 0, void 0, function* () {
16338
16385
  yield this.handlers.onMessageSeen(chatMessageId);
16339
16386
  }));
16340
16387
  });
16341
16388
  }
16342
16389
  sendTypingIndicator() {
16343
- return __awaiter$d(this, void 0, void 0, function* () {
16344
- yield this.asyncTeeErrorToEventEmitter(() => __awaiter$d(this, void 0, void 0, function* () {
16390
+ return __awaiter$e(this, void 0, void 0, function* () {
16391
+ yield this.asyncTeeErrorToEventEmitter(() => __awaiter$e(this, void 0, void 0, function* () {
16345
16392
  yield this.handlers.onTyping();
16346
16393
  }));
16347
16394
  });
16348
16395
  }
16349
16396
  removeParticipant(userId) {
16350
- return __awaiter$d(this, void 0, void 0, function* () {
16351
- yield this.asyncTeeErrorToEventEmitter(() => __awaiter$d(this, void 0, void 0, function* () {
16397
+ return __awaiter$e(this, void 0, void 0, function* () {
16398
+ yield this.asyncTeeErrorToEventEmitter(() => __awaiter$e(this, void 0, void 0, function* () {
16352
16399
  yield this.handlers.onRemoveParticipant(userId);
16353
16400
  }));
16354
16401
  });
16355
16402
  }
16356
16403
  setTopic(topicName) {
16357
- return __awaiter$d(this, void 0, void 0, function* () {
16358
- yield this.asyncTeeErrorToEventEmitter(() => __awaiter$d(this, void 0, void 0, function* () {
16404
+ return __awaiter$e(this, void 0, void 0, function* () {
16405
+ yield this.asyncTeeErrorToEventEmitter(() => __awaiter$e(this, void 0, void 0, function* () {
16359
16406
  yield this.handlers.updateThreadTopicName(topicName);
16360
16407
  }));
16361
16408
  });
16362
16409
  }
16363
16410
  loadPreviousChatMessages(messagesToLoad) {
16364
- return __awaiter$d(this, void 0, void 0, function* () {
16365
- return yield this.asyncTeeErrorToEventEmitter(() => __awaiter$d(this, void 0, void 0, function* () {
16411
+ return __awaiter$e(this, void 0, void 0, function* () {
16412
+ return yield this.asyncTeeErrorToEventEmitter(() => __awaiter$e(this, void 0, void 0, function* () {
16366
16413
  return yield this.handlers.onLoadPreviousChatMessages(messagesToLoad);
16367
16414
  }));
16368
16415
  });
16369
16416
  }
16370
16417
  updateMessage(messageId, content, metadata, options) {
16371
- return __awaiter$d(this, void 0, void 0, function* () {
16372
- return yield this.asyncTeeErrorToEventEmitter(() => __awaiter$d(this, void 0, void 0, function* () {
16418
+ return __awaiter$e(this, void 0, void 0, function* () {
16419
+ return yield this.asyncTeeErrorToEventEmitter(() => __awaiter$e(this, void 0, void 0, function* () {
16373
16420
  /* @conditional-compile-remove(file-sharing) */
16374
16421
  return yield this.handlers.onUpdateMessage(messageId, content, metadata, options);
16375
16422
  }));
16376
16423
  });
16377
16424
  }
16378
16425
  deleteMessage(messageId) {
16379
- return __awaiter$d(this, void 0, void 0, function* () {
16380
- return yield this.asyncTeeErrorToEventEmitter(() => __awaiter$d(this, void 0, void 0, function* () {
16426
+ return __awaiter$e(this, void 0, void 0, function* () {
16427
+ return yield this.asyncTeeErrorToEventEmitter(() => __awaiter$e(this, void 0, void 0, function* () {
16381
16428
  return yield this.handlers.onDeleteMessage(messageId);
16382
16429
  }));
16383
16430
  });
@@ -16458,7 +16505,7 @@ class AzureCommunicationChatAdapter {
16458
16505
  this.emitter.off(event, listener);
16459
16506
  }
16460
16507
  asyncTeeErrorToEventEmitter(f) {
16461
- return __awaiter$d(this, void 0, void 0, function* () {
16508
+ return __awaiter$e(this, void 0, void 0, function* () {
16462
16509
  try {
16463
16510
  return yield f();
16464
16511
  }
@@ -16500,7 +16547,7 @@ const convertEventType = (type) => {
16500
16547
  *
16501
16548
  * @public
16502
16549
  */
16503
- const createAzureCommunicationChatAdapter = ({ endpoint: endpointUrl, userId, displayName, credential, threadId }) => __awaiter$d(void 0, void 0, void 0, function* () {
16550
+ const createAzureCommunicationChatAdapter = ({ endpoint: endpointUrl, userId, displayName, credential, threadId }) => __awaiter$e(void 0, void 0, void 0, function* () {
16504
16551
  if (!isValidIdentifier(userId)) {
16505
16552
  throw new Error('Provided userId is invalid. Please provide valid identifier object.');
16506
16553
  }
@@ -16566,7 +16613,7 @@ beforeDispose) => {
16566
16613
  if (!credential || !displayName || !endpoint || !threadId || !userId) {
16567
16614
  return;
16568
16615
  }
16569
- (() => __awaiter$d(void 0, void 0, void 0, function* () {
16616
+ (() => __awaiter$e(void 0, void 0, void 0, function* () {
16570
16617
  if (adapterRef.current) {
16571
16618
  // Dispose the old adapter when a new one is created.
16572
16619
  //
@@ -16598,7 +16645,7 @@ beforeDispose) => {
16598
16645
  // Dispose any existing adapter when the component unmounts.
16599
16646
  React.useEffect(() => {
16600
16647
  return () => {
16601
- (() => __awaiter$d(void 0, void 0, void 0, function* () {
16648
+ (() => __awaiter$e(void 0, void 0, void 0, function* () {
16602
16649
  if (adapterRef.current) {
16603
16650
  if (beforeDisposeRef.current) {
16604
16651
  yield beforeDisposeRef.current(adapterRef.current);
@@ -16619,7 +16666,7 @@ beforeDispose) => {
16619
16666
  *
16620
16667
  * @public
16621
16668
  */
16622
- const createAzureCommunicationChatAdapterFromClient = (chatClient, chatThreadClient) => __awaiter$d(void 0, void 0, void 0, function* () {
16669
+ const createAzureCommunicationChatAdapterFromClient = (chatClient, chatThreadClient) => __awaiter$e(void 0, void 0, void 0, function* () {
16623
16670
  return new AzureCommunicationChatAdapter(chatClient, chatThreadClient);
16624
16671
  });
16625
16672
  const isChatError = (e) => {
@@ -16830,7 +16877,7 @@ const sendboxContainerStyles = {
16830
16877
 
16831
16878
  // Copyright (c) Microsoft Corporation.
16832
16879
  // Licensed under the MIT license.
16833
- var __awaiter$c = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
16880
+ var __awaiter$d = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
16834
16881
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
16835
16882
  return new (P || (P = Promise))(function (resolve, reject) {
16836
16883
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -16851,7 +16898,7 @@ const AvatarPersona = (props) => {
16851
16898
  const { userId, dataProvider, text, imageUrl, imageInitials, initialsColor, initialsTextColor, showOverflowTooltip } = props;
16852
16899
  const [data, setData] = React.useState();
16853
16900
  React.useEffect(() => {
16854
- (() => __awaiter$c(void 0, void 0, void 0, function* () {
16901
+ (() => __awaiter$d(void 0, void 0, void 0, function* () {
16855
16902
  if (dataProvider && userId) {
16856
16903
  const newData = yield dataProvider(userId);
16857
16904
  if (avatarDeepDifferenceCheck(data, newData)) {
@@ -17214,6 +17261,16 @@ const FileDownloadErrorBar = (props) => {
17214
17261
  };
17215
17262
 
17216
17263
  // Copyright (c) Microsoft Corporation.
17264
+ // Licensed under the MIT license.
17265
+ var __awaiter$c = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
17266
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
17267
+ return new (P || (P = Promise))(function (resolve, reject) {
17268
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17269
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
17270
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
17271
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
17272
+ });
17273
+ };
17217
17274
  /**
17218
17275
  * @private
17219
17276
  */
@@ -17226,7 +17283,13 @@ const ChatScreen = (props) => {
17226
17283
  const theme = useTheme();
17227
17284
  React.useEffect(() => {
17228
17285
  // Initial data should be always fetched by the composite(or external caller) instead of the adapter
17229
- adapter.fetchInitialData();
17286
+ const fetchData = () => __awaiter$c(void 0, void 0, void 0, function* () {
17287
+ // Fetch initial data for adapter
17288
+ yield adapter.fetchInitialData();
17289
+ // Fetch initial set of messages. Without fetching messages here, if the Composite's adapter is changed the message thread does not load new messages.
17290
+ yield adapter.loadPreviousChatMessages(defaultNumberOfChatMessagesToReload);
17291
+ });
17292
+ fetchData();
17230
17293
  }, [adapter]);
17231
17294
  const messageThreadProps = usePropsFor$2(MessageThread);
17232
17295
  const sendBoxProps = usePropsFor$2(SendBox);
@@ -18219,7 +18282,7 @@ const galleryParentContainerStyles = (backgroundColor) => ({
18219
18282
  /**
18220
18283
  * @private
18221
18284
  */
18222
- const mediaGalleryContainerStyles = {
18285
+ const mediaGalleryContainerStyles$1 = {
18223
18286
  root: {
18224
18287
  height: '100%'
18225
18288
  }
@@ -19274,7 +19337,7 @@ const CallArrangement = (props) => {
19274
19337
  onPeopleButtonClicked: togglePeoplePane })))),
19275
19338
  React__default['default'].createElement(react.Stack, { horizontal: true, grow: true },
19276
19339
  React__default['default'].createElement(react.Stack.Item, { grow: true, style: callCompositeContainerFlex() },
19277
- React__default['default'].createElement(react.Stack.Item, { styles: callGalleryStyles, grow: true }, props.onRenderGalleryContent && (React__default['default'].createElement(react.Stack, { verticalFill: true, styles: mediaGalleryContainerStyles }, props.onRenderGalleryContent())))),
19340
+ 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())))),
19278
19341
  /* @conditional-compile-remove(one-to-n-calling) @conditional-compile-remove(PSTN-calls) */
19279
19342
  callPaneContent())))));
19280
19343
  };
@@ -19457,6 +19520,12 @@ const MediaGallery = (props) => {
19457
19520
  const cameraSwitcherCameras = useSelector$1(localVideoCameraCycleButtonSelector);
19458
19521
  const cameraSwitcherCallback = useHandlers();
19459
19522
  const announcerString = useParticipantChangedAnnouncement();
19523
+ /* @conditional-compile-remove(vertical-gallery) */
19524
+ const containerRef = React.useRef(null);
19525
+ /* @conditional-compile-remove(vertical-gallery) */
19526
+ const containerWidth = _useContainerWidth(containerRef);
19527
+ /* @conditional-compile-remove(vertical-gallery) */
19528
+ const containerHeight = _useContainerHeight(containerRef);
19460
19529
  const cameraSwitcherProps = React.useMemo(() => {
19461
19530
  return Object.assign(Object.assign({}, cameraSwitcherCallback), cameraSwitcherCameras);
19462
19531
  }, [cameraSwitcherCallback, cameraSwitcherCameras]);
@@ -19475,18 +19544,25 @@ const MediaGallery = (props) => {
19475
19544
  ? { kind: 'drawer', hostId: props.drawerMenuHostId }
19476
19545
  : { kind: 'contextual' };
19477
19546
  }, [(_a = props.remoteVideoTileMenuOptions) === null || _a === void 0 ? void 0 : _a.isHidden, props.isMobile, props.drawerMenuHostId]);
19547
+ /* @conditional-compile-remove(vertical-gallery) */
19548
+ const overflowGalleryLayout = React.useMemo(() => containerWidth && containerHeight && containerWidth / containerHeight >= 16 / 9
19549
+ ? 'VerticalRight'
19550
+ : 'HorizontalBottom', [containerWidth, containerHeight]);
19478
19551
  const VideoGalleryMemoized = React.useMemo(() => {
19479
19552
  return (React__default['default'].createElement(VideoGallery, Object.assign({}, videoGalleryProps, { localVideoViewOptions: localVideoViewOptions$2, remoteVideoViewOptions: remoteVideoViewOptions, styles: VideoGalleryStyles, layout: "floatingLocalVideo", showCameraSwitcherInLocalPreview: props.isMobile, localVideoCameraCycleButtonProps: cameraSwitcherProps, onRenderAvatar: onRenderAvatar,
19480
19553
  /* @conditional-compile-remove(pinned-participants) */
19481
- remoteVideoTileMenuOptions: remoteVideoTileMenuOptions })));
19554
+ remoteVideoTileMenuOptions: remoteVideoTileMenuOptions,
19555
+ /* @conditional-compile-remove(vertical-gallery) */
19556
+ overflowGalleryLayout: overflowGalleryLayout })));
19482
19557
  }, [
19483
19558
  videoGalleryProps,
19484
19559
  props.isMobile,
19485
19560
  onRenderAvatar,
19486
19561
  cameraSwitcherProps,
19487
- /* @conditional-compile-remove(pinned-participants) */ remoteVideoTileMenuOptions
19562
+ /* @conditional-compile-remove(pinned-participants) */ remoteVideoTileMenuOptions,
19563
+ /* @conditional-compile-remove(vertical-gallery) */ overflowGalleryLayout
19488
19564
  ]);
19489
- return (React__default['default'].createElement(React__default['default'].Fragment, null,
19565
+ return (React__default['default'].createElement("div", { ref: containerRef, style: mediaGalleryContainerStyles },
19490
19566
  React__default['default'].createElement(Announcer, { announcementString: announcerString, ariaLive: 'polite' }),
19491
19567
  VideoGalleryMemoized));
19492
19568
  };
@@ -19516,6 +19592,7 @@ const useLocalVideoStartTrigger = (isLocalVideoAvailable, shouldTransition) => {
19516
19592
  }
19517
19593
  }, [shouldTransition, isButtonStatusSynced, isPreviewCameraOn, isLocalVideoAvailable, mediaGalleryHandlers]);
19518
19594
  };
19595
+ const mediaGalleryContainerStyles = { width: '100%', height: '100%' };
19519
19596
 
19520
19597
  // Copyright (c) Microsoft Corporation.
19521
19598
  // Licensed under the MIT license.