@azure/communication-react 1.4.2-alpha-202212010027.0 → 1.4.3-alpha-202212060013.0

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 (46) hide show
  1. package/CHANGELOG.stable.md +10 -1
  2. package/dist/communication-react.d.ts +39 -2
  3. package/dist/dist-cjs/communication-react/index.js +160 -69
  4. package/dist/dist-cjs/communication-react/index.js.map +1 -1
  5. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js +1 -1
  6. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js.map +1 -1
  7. package/dist/dist-esm/calling-component-bindings/src/utils/videoGalleryUtils.js +4 -2
  8. package/dist/dist-esm/calling-component-bindings/src/utils/videoGalleryUtils.js.map +1 -1
  9. package/dist/dist-esm/calling-stateful-client/src/CallContext.d.ts +2 -1
  10. package/dist/dist-esm/calling-stateful-client/src/CallContext.js +14 -0
  11. package/dist/dist-esm/calling-stateful-client/src/CallContext.js.map +1 -1
  12. package/dist/dist-esm/calling-stateful-client/src/StatefulCallClient.js +11 -4
  13. package/dist/dist-esm/calling-stateful-client/src/StatefulCallClient.js.map +1 -1
  14. package/dist/dist-esm/calling-stateful-client/src/VideoStreamRendererViewDeclarative.d.ts +19 -0
  15. package/dist/dist-esm/calling-stateful-client/src/VideoStreamRendererViewDeclarative.js +44 -0
  16. package/dist/dist-esm/calling-stateful-client/src/VideoStreamRendererViewDeclarative.js.map +1 -0
  17. package/dist/dist-esm/communication-react/src/index.d.ts +2 -0
  18. package/dist/dist-esm/communication-react/src/index.js +2 -0
  19. package/dist/dist-esm/communication-react/src/index.js.map +1 -1
  20. package/dist/dist-esm/react-components/src/components/MessageThread.js +6 -4
  21. package/dist/dist-esm/react-components/src/components/MessageThread.js.map +1 -1
  22. package/dist/dist-esm/react-components/src/components/UnsupportedBrowser.d.ts +1 -1
  23. package/dist/dist-esm/react-components/src/components/UnsupportedBrowser.js.map +1 -1
  24. package/dist/dist-esm/react-components/src/components/UnsupportedBrowserVersion.d.ts +1 -1
  25. package/dist/dist-esm/react-components/src/components/UnsupportedBrowserVersion.js.map +1 -1
  26. package/dist/dist-esm/react-components/src/components/UnsupportedEnvironment.d.ts +2 -2
  27. package/dist/dist-esm/react-components/src/components/UnsupportedEnvironment.js +2 -2
  28. package/dist/dist-esm/react-components/src/components/UnsupportedEnvironment.js.map +1 -1
  29. package/dist/dist-esm/react-components/src/components/UnsupportedOperatingSystem.d.ts +32 -0
  30. package/dist/dist-esm/react-components/src/components/UnsupportedOperatingSystem.js +14 -0
  31. package/dist/dist-esm/react-components/src/components/UnsupportedOperatingSystem.js.map +1 -0
  32. package/dist/dist-esm/react-components/src/components/index.d.ts +2 -0
  33. package/dist/dist-esm/react-components/src/components/index.js +1 -0
  34. package/dist/dist-esm/react-components/src/components/index.js.map +1 -1
  35. package/dist/dist-esm/react-components/src/components/styles/UnsupportedEnvironment.styles.js +3 -2
  36. package/dist/dist-esm/react-components/src/components/styles/UnsupportedEnvironment.styles.js.map +1 -1
  37. package/dist/dist-esm/react-components/src/localization/LocalizationProvider.d.ts +3 -0
  38. package/dist/dist-esm/react-components/src/localization/LocalizationProvider.js.map +1 -1
  39. package/dist/dist-esm/react-components/src/localization/locales/en-US/strings.json +7 -2
  40. package/dist/dist-esm/react-components/src/types/VideoGalleryParticipant.d.ts +2 -0
  41. package/dist/dist-esm/react-components/src/types/VideoGalleryParticipant.js.map +1 -1
  42. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/UnsupportedBrowser.js +10 -2
  43. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/UnsupportedBrowser.js.map +1 -1
  44. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.js +3 -1
  45. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.js.map +1 -1
  46. package/package.json +8 -8
@@ -202,7 +202,7 @@ const _toCommunicationIdentifier = (id) => {
202
202
  // Copyright (c) Microsoft Corporation.
203
203
  // Licensed under the MIT license.
204
204
  // GENERATED FILE. DO NOT EDIT MANUALLY.
205
- var telemetryVersion = '1.4.2-alpha-202212010027.0';
205
+ var telemetryVersion = '1.4.3-alpha-202212060013.0';
206
206
 
207
207
  // Copyright (c) Microsoft Corporation.
208
208
  /**
@@ -411,7 +411,7 @@ const getCallState = (state, props) => { var _a; return (_a = state.calls[props.
411
411
 
412
412
  // Copyright (c) Microsoft Corporation.
413
413
  // Licensed under the MIT license.
414
- var __awaiter$A = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
414
+ var __awaiter$B = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
415
415
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
416
416
  return new (P || (P = Promise))(function (resolve, reject) {
417
417
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -449,7 +449,7 @@ const _isPreviewOn = (deviceManager) => {
449
449
  *
450
450
  * @private
451
451
  */
452
- const disposeAllLocalPreviewViews = (callClient) => __awaiter$A(void 0, void 0, void 0, function* () {
452
+ const disposeAllLocalPreviewViews = (callClient) => __awaiter$B(void 0, void 0, void 0, function* () {
453
453
  const unparentedViews = callClient.getState().deviceManager.unparentedViews;
454
454
  for (const view of unparentedViews) {
455
455
  yield callClient.disposeView(undefined, undefined, view);
@@ -573,7 +573,7 @@ const holdButtonSelector = reselect__namespace.createSelector([getCallState], (c
573
573
 
574
574
  // Copyright (c) Microsoft Corporation.
575
575
  // Licensed under the MIT license.
576
- var __awaiter$z = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
576
+ var __awaiter$A = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
577
577
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
578
578
  return new (P || (P = Promise))(function (resolve, reject) {
579
579
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -594,7 +594,7 @@ const areStreamsEqual = (prevStream, newStream) => {
594
594
  * @private
595
595
  */
596
596
  const createDefaultCommonCallingHandlers = memoizeOne__default['default']((callClient, deviceManager, call) => {
597
- const onStartLocalVideo = () => __awaiter$z(void 0, void 0, void 0, function* () {
597
+ const onStartLocalVideo = () => __awaiter$A(void 0, void 0, void 0, function* () {
598
598
  // Before the call object creates a stream, dispose of any local preview streams.
599
599
  // @TODO: is there any way to parent the unparented view to the call object instead
600
600
  // of disposing and creating a new stream?
@@ -614,7 +614,7 @@ const createDefaultCommonCallingHandlers = memoizeOne__default['default']((callC
614
614
  yield call.startVideo(stream);
615
615
  }
616
616
  });
617
- const onStopLocalVideo = (stream) => __awaiter$z(void 0, void 0, void 0, function* () {
617
+ const onStopLocalVideo = (stream) => __awaiter$A(void 0, void 0, void 0, function* () {
618
618
  const callId = call === null || call === void 0 ? void 0 : call.id;
619
619
  if (!callId) {
620
620
  return;
@@ -627,7 +627,7 @@ const createDefaultCommonCallingHandlers = memoizeOne__default['default']((callC
627
627
  });
628
628
  }
629
629
  });
630
- const onToggleCamera = (options) => __awaiter$z(void 0, void 0, void 0, function* () {
630
+ const onToggleCamera = (options) => __awaiter$A(void 0, void 0, void 0, function* () {
631
631
  const previewOn = _isPreviewOn(callClient.getState().deviceManager);
632
632
  if (previewOn && call && call.state === 'Connecting') {
633
633
  // This is to workaround: https://skype.visualstudio.com/SPOOL/_workitems/edit/3030558.
@@ -675,19 +675,19 @@ const createDefaultCommonCallingHandlers = memoizeOne__default['default']((callC
675
675
  }
676
676
  }
677
677
  });
678
- const onSelectMicrophone = (device) => __awaiter$z(void 0, void 0, void 0, function* () {
678
+ const onSelectMicrophone = (device) => __awaiter$A(void 0, void 0, void 0, function* () {
679
679
  if (!deviceManager) {
680
680
  return;
681
681
  }
682
682
  return deviceManager.selectMicrophone(device);
683
683
  });
684
- const onSelectSpeaker = (device) => __awaiter$z(void 0, void 0, void 0, function* () {
684
+ const onSelectSpeaker = (device) => __awaiter$A(void 0, void 0, void 0, function* () {
685
685
  if (!deviceManager) {
686
686
  return;
687
687
  }
688
688
  return deviceManager.selectSpeaker(device);
689
689
  });
690
- const onSelectCamera = (device, options) => __awaiter$z(void 0, void 0, void 0, function* () {
690
+ const onSelectCamera = (device, options) => __awaiter$A(void 0, void 0, void 0, function* () {
691
691
  if (!deviceManager) {
692
692
  return;
693
693
  }
@@ -710,19 +710,19 @@ const createDefaultCommonCallingHandlers = memoizeOne__default['default']((callC
710
710
  }, options);
711
711
  }
712
712
  });
713
- const onToggleMicrophone = () => __awaiter$z(void 0, void 0, void 0, function* () {
713
+ const onToggleMicrophone = () => __awaiter$A(void 0, void 0, void 0, function* () {
714
714
  if (!call || !_isInCall(call.state)) {
715
715
  throw new Error(`Please invoke onToggleMicrophone after call is started`);
716
716
  }
717
717
  return call.isMuted ? yield call.unmute() : yield call.mute();
718
718
  });
719
- const onStartScreenShare = () => __awaiter$z(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.startScreenSharing()); });
720
- const onStopScreenShare = () => __awaiter$z(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.stopScreenSharing()); });
721
- const onToggleScreenShare = () => __awaiter$z(void 0, void 0, void 0, function* () { return (call === null || call === void 0 ? void 0 : call.isScreenSharingOn) ? yield onStopScreenShare() : yield onStartScreenShare(); });
722
- const onHangUp = (forEveryone) => __awaiter$z(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.hangUp({ forEveryone: forEveryone === true ? true : false })); });
719
+ const onStartScreenShare = () => __awaiter$A(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.startScreenSharing()); });
720
+ const onStopScreenShare = () => __awaiter$A(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.stopScreenSharing()); });
721
+ const onToggleScreenShare = () => __awaiter$A(void 0, void 0, void 0, function* () { return (call === null || call === void 0 ? void 0 : call.isScreenSharingOn) ? yield onStopScreenShare() : yield onStartScreenShare(); });
722
+ const onHangUp = (forEveryone) => __awaiter$A(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.hangUp({ forEveryone: forEveryone === true ? true : false })); });
723
723
  /* @conditional-compile-remove(PSTN-calls) */
724
- const onToggleHold = () => __awaiter$z(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()); });
725
- const onCreateLocalStreamView = (options = { scalingMode: 'Crop', isMirrored: true }) => __awaiter$z(void 0, void 0, void 0, function* () {
724
+ const onToggleHold = () => __awaiter$A(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()); });
725
+ const onCreateLocalStreamView = (options = { scalingMode: 'Crop', isMirrored: true }) => __awaiter$A(void 0, void 0, void 0, function* () {
726
726
  var _a;
727
727
  if (!call || call.localVideoStreams.length === 0) {
728
728
  return;
@@ -738,7 +738,7 @@ const createDefaultCommonCallingHandlers = memoizeOne__default['default']((callC
738
738
  const { view } = (_a = (yield callClient.createView(call.id, undefined, localStream, options))) !== null && _a !== void 0 ? _a : {};
739
739
  return view ? { view } : undefined;
740
740
  });
741
- const onCreateRemoteStreamView = (userId, options = { scalingMode: 'Crop' }) => __awaiter$z(void 0, void 0, void 0, function* () {
741
+ const onCreateRemoteStreamView = (userId, options = { scalingMode: 'Crop' }) => __awaiter$A(void 0, void 0, void 0, function* () {
742
742
  if (!call) {
743
743
  return;
744
744
  }
@@ -766,7 +766,7 @@ const createDefaultCommonCallingHandlers = memoizeOne__default['default']((callC
766
766
  }
767
767
  return (createViewResult === null || createViewResult === void 0 ? void 0 : createViewResult.view) ? { view: createViewResult === null || createViewResult === void 0 ? void 0 : createViewResult.view } : undefined;
768
768
  });
769
- const onDisposeRemoteStreamView = (userId) => __awaiter$z(void 0, void 0, void 0, function* () {
769
+ const onDisposeRemoteStreamView = (userId) => __awaiter$A(void 0, void 0, void 0, function* () {
770
770
  if (!call) {
771
771
  return;
772
772
  }
@@ -787,7 +787,7 @@ const createDefaultCommonCallingHandlers = memoizeOne__default['default']((callC
787
787
  callClient.disposeView(call.id, participant.identifier, screenShareStream);
788
788
  }
789
789
  });
790
- const onDisposeLocalStreamView = () => __awaiter$z(void 0, void 0, void 0, function* () {
790
+ const onDisposeLocalStreamView = () => __awaiter$A(void 0, void 0, void 0, function* () {
791
791
  // If the user is currently in a call, dispose of the local stream view attached to that call.
792
792
  const callState = call && callClient.getState().calls[call.id];
793
793
  const localStream = callState === null || callState === void 0 ? void 0 : callState.localVideoStreams.find((item) => item.mediaStreamType === 'Video');
@@ -800,12 +800,12 @@ const createDefaultCommonCallingHandlers = memoizeOne__default['default']((callC
800
800
  yield disposeAllLocalPreviewViews(callClient);
801
801
  });
802
802
  /* @conditional-compile-remove(dialpad) */ /* @conditional-compile-remove(PSTN-calls) */
803
- const onSendDtmfTone = (dtmfTone) => __awaiter$z(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.sendDtmf(dtmfTone)); });
803
+ const onSendDtmfTone = (dtmfTone) => __awaiter$A(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.sendDtmf(dtmfTone)); });
804
804
  const notImplemented = () => {
805
805
  throw new Error('Not implemented, cannot call a method from an abstract object');
806
806
  };
807
807
  /* @conditional-compile-remove(call-readiness) */
808
- const askDevicePermission = (constrain) => __awaiter$z(void 0, void 0, void 0, function* () {
808
+ const askDevicePermission = (constrain) => __awaiter$A(void 0, void 0, void 0, function* () {
809
809
  if (deviceManager) {
810
810
  yield (deviceManager === null || deviceManager === void 0 ? void 0 : deviceManager.askDevicePermission(constrain));
811
811
  }
@@ -839,7 +839,7 @@ const createDefaultCommonCallingHandlers = memoizeOne__default['default']((callC
839
839
 
840
840
  // Copyright (c) Microsoft Corporation.
841
841
  // Licensed under the MIT license.
842
- var __awaiter$y = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
842
+ var __awaiter$z = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
843
843
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
844
844
  return new (P || (P = Promise))(function (resolve, reject) {
845
845
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -866,7 +866,7 @@ const createDefaultCallingHandlers = memoizeOne__default['default']((callClient,
866
866
  return callAgent ? callAgent.startCall(participants, options) : undefined;
867
867
  },
868
868
  /* @conditional-compile-remove(PSTN-calls) */
869
- onAddParticipant: (userId, options) => __awaiter$y(void 0, void 0, void 0, function* () {
869
+ onAddParticipant: (userId, options) => __awaiter$z(void 0, void 0, void 0, function* () {
870
870
  const participant = _toCommunicationIdentifier(userId);
871
871
  if (communicationCommon.isPhoneNumberIdentifier(participant)) {
872
872
  call === null || call === void 0 ? void 0 : call.addParticipant(participant, options);
@@ -874,7 +874,7 @@ const createDefaultCallingHandlers = memoizeOne__default['default']((callClient,
874
874
  else if (communicationCommon.isCommunicationUserIdentifier(participant) || communicationCommon.isMicrosoftTeamsUserIdentifier(participant)) {
875
875
  call === null || call === void 0 ? void 0 : call.addParticipant(participant);
876
876
  }
877
- }), onRemoveParticipant: (userId) => __awaiter$y(void 0, void 0, void 0, function* () {
877
+ }), onRemoveParticipant: (userId) => __awaiter$z(void 0, void 0, void 0, function* () {
878
878
  const participant = _toCommunicationIdentifier(userId);
879
879
  yield (call === null || call === void 0 ? void 0 : call.removeParticipant(participant));
880
880
  }) });
@@ -882,7 +882,7 @@ const createDefaultCallingHandlers = memoizeOne__default['default']((callClient,
882
882
 
883
883
  // Copyright (c) Microsoft Corporation.
884
884
  // Licensed under the MIT license.
885
- var __awaiter$x = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
885
+ var __awaiter$y = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
886
886
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
887
887
  return new (P || (P = Promise))(function (resolve, reject) {
888
888
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -914,7 +914,7 @@ const createDefaultTeamsCallingHandlers = memoizeOne__default['default']((callCl
914
914
  },
915
915
  /* @conditional-compile-remove(teams-identity-support) */
916
916
  /* @conditional-compile-remove(PSTN-calls) */
917
- onAddParticipant: (userId, options) => __awaiter$x(void 0, void 0, void 0, function* () {
917
+ onAddParticipant: (userId, options) => __awaiter$y(void 0, void 0, void 0, function* () {
918
918
  const participant = _toCommunicationIdentifier(userId);
919
919
  /* @conditional-compile-remove(teams-identity-support) */
920
920
  const threadId = options === null || options === void 0 ? void 0 : options.threadId;
@@ -927,7 +927,7 @@ const createDefaultTeamsCallingHandlers = memoizeOne__default['default']((callCl
927
927
  }
928
928
  /* @conditional-compile-remove(teams-identity-support) */
929
929
  call === null || call === void 0 ? void 0 : call.addParticipant(participant);
930
- }), onRemoveParticipant: (userId) => __awaiter$x(void 0, void 0, void 0, function* () {
930
+ }), onRemoveParticipant: (userId) => __awaiter$y(void 0, void 0, void 0, function* () {
931
931
  const participant = _toCommunicationIdentifier(userId);
932
932
  if (communicationCommon.isCommunicationUserIdentifier(participant)) {
933
933
  throw new Error('CommunicationIdentifier in Teams call is not supported!');
@@ -939,7 +939,7 @@ const createDefaultTeamsCallingHandlers = memoizeOne__default['default']((callCl
939
939
 
940
940
  // Copyright (c) Microsoft Corporation.
941
941
  // Licensed under the MIT license.
942
- var __awaiter$w = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
942
+ var __awaiter$x = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
943
943
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
944
944
  return new (P || (P = Promise))(function (resolve, reject) {
945
945
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -988,13 +988,13 @@ class ProxyDeviceManager {
988
988
  this.selectCamera = (videoDeviceInfo) => {
989
989
  this._context.setDeviceManagerSelectedCamera(videoDeviceInfo);
990
990
  };
991
- this.videoDevicesUpdated = () => __awaiter$w(this, void 0, void 0, function* () {
991
+ this.videoDevicesUpdated = () => __awaiter$x(this, void 0, void 0, function* () {
992
992
  // Device Manager always has a camera with '' name if there are no real camera devices available.
993
993
  // We don't want to show that in the UI.
994
994
  const realCameras = (yield this._deviceManager.getCameras()).filter((c) => !!c.name);
995
995
  this._context.setDeviceManagerCameras(dedupeById(realCameras));
996
996
  });
997
- this.audioDevicesUpdated = () => __awaiter$w(this, void 0, void 0, function* () {
997
+ this.audioDevicesUpdated = () => __awaiter$x(this, void 0, void 0, function* () {
998
998
  this._context.setDeviceManagerMicrophones(dedupeById(yield this._deviceManager.getMicrophones()));
999
999
  this._context.setDeviceManagerSpeakers(dedupeById(yield this._deviceManager.getSpeakers()));
1000
1000
  });
@@ -1201,7 +1201,7 @@ class CallIdHistory {
1201
1201
 
1202
1202
  // Copyright (c) Microsoft Corporation.
1203
1203
  // Licensed under the MIT license.
1204
- var __awaiter$v = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
1204
+ var __awaiter$w = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
1205
1205
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
1206
1206
  return new (P || (P = Promise))(function (resolve, reject) {
1207
1207
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -1605,6 +1605,20 @@ class CallContext$2 {
1605
1605
  }
1606
1606
  });
1607
1607
  }
1608
+ setRemoteVideoStreamViewScalingMode(callId, participantKey, streamId, scalingMode) {
1609
+ this.modifyState((draft) => {
1610
+ const call = draft.calls[this._callIdHistory.latestCallId(callId)];
1611
+ if (call) {
1612
+ const participant = call.remoteParticipants[participantKey];
1613
+ if (participant) {
1614
+ const stream = participant.videoStreams[streamId];
1615
+ if (stream && stream.view) {
1616
+ stream.view.scalingMode = scalingMode;
1617
+ }
1618
+ }
1619
+ }
1620
+ });
1621
+ }
1608
1622
  setIncomingCall(call) {
1609
1623
  this.modifyState((draft) => {
1610
1624
  const existingCall = draft.incomingCalls[call.id];
@@ -1716,7 +1730,7 @@ class CallContext$2 {
1716
1730
  * @throws CallError. Exceptions thrown from `f` are tagged with the failed `target.
1717
1731
  */
1718
1732
  withAsyncErrorTeedToState(action, target) {
1719
- return (...args) => __awaiter$v(this, void 0, void 0, function* () {
1733
+ return (...args) => __awaiter$w(this, void 0, void 0, function* () {
1720
1734
  try {
1721
1735
  return yield action(...args);
1722
1736
  }
@@ -1993,7 +2007,7 @@ class RemoteVideoStreamSubscriber {
1993
2007
 
1994
2008
  // Copyright (c) Microsoft Corporation.
1995
2009
  // Licensed under the MIT license.
1996
- var __awaiter$u = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
2010
+ var __awaiter$v = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
1997
2011
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
1998
2012
  return new (P || (P = Promise))(function (resolve, reject) {
1999
2013
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -2003,7 +2017,7 @@ var __awaiter$u = (window && window.__awaiter) || function (thisArg, _arguments,
2003
2017
  });
2004
2018
  };
2005
2019
  function createViewRemoteVideo(context, internalContext, callId, participantId, stream, options) {
2006
- return __awaiter$u(this, void 0, void 0, function* () {
2020
+ return __awaiter$v(this, void 0, void 0, function* () {
2007
2021
  // Render RemoteVideoStream that is part of a Call
2008
2022
  const streamId = stream.id;
2009
2023
  let participantKey;
@@ -2111,7 +2125,7 @@ function createViewRemoteVideo(context, internalContext, callId, participantId,
2111
2125
  });
2112
2126
  }
2113
2127
  function createViewLocalVideo(context, internalContext, callId, options) {
2114
- return __awaiter$u(this, void 0, void 0, function* () {
2128
+ return __awaiter$v(this, void 0, void 0, function* () {
2115
2129
  _logEvent(callingStatefulLogger, {
2116
2130
  name: EventNames.START_LOCAL_STREAM_RENDERING,
2117
2131
  level: 'info',
@@ -2229,7 +2243,7 @@ function createViewLocalVideo(context, internalContext, callId, options) {
2229
2243
  });
2230
2244
  }
2231
2245
  function createViewUnparentedVideo(context, internalContext, stream, options) {
2232
- return __awaiter$u(this, void 0, void 0, function* () {
2246
+ return __awaiter$v(this, void 0, void 0, function* () {
2233
2247
  const renderInfo = internalContext.getUnparentedRenderInfo(stream);
2234
2248
  if (renderInfo && renderInfo.status === 'Rendered') {
2235
2249
  console.warn('Unparented LocalVideoStream is already rendered');
@@ -2894,7 +2908,7 @@ class CallSubscriber {
2894
2908
 
2895
2909
  // Copyright (c) Microsoft Corporation.
2896
2910
  // Licensed under the MIT license.
2897
- var __awaiter$t = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
2911
+ var __awaiter$u = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
2898
2912
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
2899
2913
  return new (P || (P = Promise))(function (resolve, reject) {
2900
2914
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -2914,14 +2928,14 @@ class ProxyIncomingCall {
2914
2928
  switch (prop) {
2915
2929
  case 'accept': {
2916
2930
  return this._context.withAsyncErrorTeedToState(function (...args) {
2917
- return __awaiter$t(this, void 0, void 0, function* () {
2931
+ return __awaiter$u(this, void 0, void 0, function* () {
2918
2932
  return yield target.accept(...args);
2919
2933
  });
2920
2934
  }, 'IncomingCall.accept');
2921
2935
  }
2922
2936
  case 'reject': {
2923
2937
  return this._context.withAsyncErrorTeedToState(function (...args) {
2924
- return __awaiter$t(this, void 0, void 0, function* () {
2938
+ return __awaiter$u(this, void 0, void 0, function* () {
2925
2939
  return yield target.reject(...args);
2926
2940
  });
2927
2941
  }, 'IncomingCall.reject');
@@ -3158,7 +3172,7 @@ const clearCallRelatedState = (context, internalContext) => {
3158
3172
 
3159
3173
  // Copyright (c) Microsoft Corporation.
3160
3174
  // Licensed under the MIT license.
3161
- var __awaiter$s = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
3175
+ var __awaiter$t = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
3162
3176
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3163
3177
  return new (P || (P = Promise))(function (resolve, reject) {
3164
3178
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -3184,56 +3198,56 @@ class ProxyCallCommon {
3184
3198
  switch (prop) {
3185
3199
  case 'mute': {
3186
3200
  return this._context.withAsyncErrorTeedToState(function (...args) {
3187
- return __awaiter$s(this, void 0, void 0, function* () {
3201
+ return __awaiter$t(this, void 0, void 0, function* () {
3188
3202
  return yield target.mute(...args);
3189
3203
  });
3190
3204
  }, 'Call.mute');
3191
3205
  }
3192
3206
  case 'unmute': {
3193
3207
  return this._context.withAsyncErrorTeedToState(function (...args) {
3194
- return __awaiter$s(this, void 0, void 0, function* () {
3208
+ return __awaiter$t(this, void 0, void 0, function* () {
3195
3209
  return yield target.unmute(...args);
3196
3210
  });
3197
3211
  }, 'Call.unmute');
3198
3212
  }
3199
3213
  case 'startVideo': {
3200
3214
  return this._context.withAsyncErrorTeedToState(function (...args) {
3201
- return __awaiter$s(this, void 0, void 0, function* () {
3215
+ return __awaiter$t(this, void 0, void 0, function* () {
3202
3216
  return yield target.startVideo(...args);
3203
3217
  });
3204
3218
  }, 'Call.startVideo');
3205
3219
  }
3206
3220
  case 'stopVideo': {
3207
3221
  return this._context.withAsyncErrorTeedToState(function (...args) {
3208
- return __awaiter$s(this, void 0, void 0, function* () {
3222
+ return __awaiter$t(this, void 0, void 0, function* () {
3209
3223
  return yield target.stopVideo(...args);
3210
3224
  });
3211
3225
  }, 'Call.stopVideo');
3212
3226
  }
3213
3227
  case 'startScreenSharing': {
3214
3228
  return this._context.withAsyncErrorTeedToState(function (...args) {
3215
- return __awaiter$s(this, void 0, void 0, function* () {
3229
+ return __awaiter$t(this, void 0, void 0, function* () {
3216
3230
  return yield target.startScreenSharing(...args);
3217
3231
  });
3218
3232
  }, 'Call.startScreenSharing');
3219
3233
  }
3220
3234
  case 'stopScreenSharing': {
3221
3235
  return this._context.withAsyncErrorTeedToState(function (...args) {
3222
- return __awaiter$s(this, void 0, void 0, function* () {
3236
+ return __awaiter$t(this, void 0, void 0, function* () {
3223
3237
  return yield target.stopScreenSharing(...args);
3224
3238
  });
3225
3239
  }, 'Call.stopScreenSharing');
3226
3240
  }
3227
3241
  case 'hold': {
3228
3242
  return this._context.withAsyncErrorTeedToState(function (...args) {
3229
- return __awaiter$s(this, void 0, void 0, function* () {
3243
+ return __awaiter$t(this, void 0, void 0, function* () {
3230
3244
  return yield target.hold(...args);
3231
3245
  });
3232
3246
  }, 'Call.hold');
3233
3247
  }
3234
3248
  case 'resume': {
3235
3249
  return this._context.withAsyncErrorTeedToState(function (...args) {
3236
- return __awaiter$s(this, void 0, void 0, function* () {
3250
+ return __awaiter$t(this, void 0, void 0, function* () {
3237
3251
  return yield target.resume(...args);
3238
3252
  });
3239
3253
  }, 'Call.resume');
@@ -3246,7 +3260,7 @@ class ProxyCallCommon {
3246
3260
 
3247
3261
  // Copyright (c) Microsoft Corporation.
3248
3262
  // Licensed under the MIT license.
3249
- var __awaiter$r = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
3263
+ var __awaiter$s = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
3250
3264
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3251
3265
  return new (P || (P = Promise))(function (resolve, reject) {
3252
3266
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -3260,7 +3274,7 @@ class ProxyCall extends ProxyCallCommon {
3260
3274
  switch (prop) {
3261
3275
  case 'addParticipant': {
3262
3276
  return this.getContext().withAsyncErrorTeedToState(function (...args) {
3263
- return __awaiter$r(this, void 0, void 0, function* () {
3277
+ return __awaiter$s(this, void 0, void 0, function* () {
3264
3278
  return yield target.addParticipant(...args);
3265
3279
  });
3266
3280
  }, 'Call.addParticipant');
@@ -3457,7 +3471,7 @@ class InternalCallContext {
3457
3471
 
3458
3472
  // Copyright (c) Microsoft Corporation.
3459
3473
  // Licensed under the MIT license.
3460
- var __awaiter$q = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
3474
+ var __awaiter$r = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
3461
3475
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3462
3476
  return new (P || (P = Promise))(function (resolve, reject) {
3463
3477
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -3472,7 +3486,7 @@ class ProxyTeamsCall extends ProxyCallCommon {
3472
3486
  switch (prop) {
3473
3487
  case 'addParticipant': {
3474
3488
  return this.getContext().withAsyncErrorTeedToState(function (...args) {
3475
- return __awaiter$q(this, void 0, void 0, function* () {
3489
+ return __awaiter$r(this, void 0, void 0, function* () {
3476
3490
  return yield target.addParticipant(...args);
3477
3491
  });
3478
3492
  }, 'TeamsCall.addParticipant');
@@ -3585,6 +3599,50 @@ const teamsCallAgentDeclaratify = (callAgent, context, internalContext) => {
3585
3599
  return new Proxy(callAgent, new ProxyTeamsCallAgent(callAgent, context, internalContext));
3586
3600
  };
3587
3601
 
3602
+ // Copyright (c) Microsoft Corporation.
3603
+ // Licensed under the MIT license.
3604
+ var __awaiter$q = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
3605
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3606
+ return new (P || (P = Promise))(function (resolve, reject) {
3607
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
3608
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
3609
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
3610
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
3611
+ });
3612
+ };
3613
+ /**
3614
+ * @private
3615
+ */
3616
+ class ProxyVideoStreamRendererView {
3617
+ constructor(context, callId, participantId, _streamId) {
3618
+ this._context = context;
3619
+ this._callId = callId;
3620
+ this._participantId = participantId;
3621
+ this._streamId = _streamId;
3622
+ }
3623
+ get(target, prop) {
3624
+ switch (prop) {
3625
+ case 'updateScalingMode': {
3626
+ return (args) => __awaiter$q(this, void 0, void 0, function* () {
3627
+ const result = yield target.updateScalingMode(...args);
3628
+ this._context.setRemoteVideoStreamViewScalingMode(this._callId, this._participantId, this._streamId, args[0]);
3629
+ return result;
3630
+ });
3631
+ }
3632
+ default:
3633
+ return Reflect.get(target, prop);
3634
+ }
3635
+ }
3636
+ }
3637
+ /**
3638
+ * Creates a declarative VideoStreamRendererView that is backed by a VideoStreamRendererView from the SDK.
3639
+ * Calling methods on this declarative object triggers state updates in the stateful client.
3640
+ */
3641
+ const videoStreamRendererViewDeclaratify = (view, context, callId, participantId, streamId) => {
3642
+ const proxyVideoStreamRendererView = new ProxyVideoStreamRendererView(context, callId, participantId, streamId);
3643
+ return new Proxy(view, proxyVideoStreamRendererView);
3644
+ };
3645
+
3588
3646
  // Copyright (c) Microsoft Corporation.
3589
3647
  // Licensed under the MIT license.
3590
3648
  var __awaiter$p = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
@@ -3717,10 +3775,16 @@ const createStatefulCallClientWithDeps = (callClient, context, internalContext)
3717
3775
  });
3718
3776
  Object.defineProperty(callClient, 'createView', {
3719
3777
  configurable: false,
3720
- value: (callId, participantId, stream, options) => {
3778
+ value: (callId, participantId, stream, options) => __awaiter$p(void 0, void 0, void 0, function* () {
3721
3779
  const participantIdKind = participantId ? communicationCommon.getIdentifierKind(participantId) : undefined;
3722
- return createView(context, internalContext, callId, participantIdKind, stream, options);
3723
- }
3780
+ const result = yield createView(context, internalContext, callId, participantIdKind, stream, options);
3781
+ // We only need to declaratify the VideoStreamRendererView object for remote participants. Because the updateScalingMode only needs to be called on remote participant stream views.
3782
+ if ('id' in stream && callId && participantId && result) {
3783
+ const participantKey = toFlatCommunicationIdentifier(participantId);
3784
+ result.view = videoStreamRendererViewDeclaratify(result.view, context, callId, participantKey, stream.id);
3785
+ }
3786
+ return result;
3787
+ })
3724
3788
  });
3725
3789
  Object.defineProperty(callClient, 'disposeView', {
3726
3790
  configurable: false,
@@ -3940,7 +4004,7 @@ const typingIndicatorStringStyle = react.mergeStyles({
3940
4004
  wordBreak: 'break-word'
3941
4005
  });
3942
4006
 
3943
- var participantItem$d={isMeText:"(you)",menuTitle:"More Options",removeButtonLabel:"Remove",sharingIconLabel:"Sharing",mutedIconLabel:"Muted",displayNamePlaceholder:"Unnamed participant",participantStateConnecting:"Calling...",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"};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.",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$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"};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={participantStateConnecting:"Calling...",participantStateRinging:"Calling...",participantStateHold:"On hold"};var CameraAndMicrophoneDomainPermissionsRequest={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 CameraDomainPermissionsRequest={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 MicrophoneDomainPermissionsRequest={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 CameraAndMicrophoneDomainPermissionsCheck={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 CameraDomainPermissionsCheck={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 MicrophoneDomainPermissionsCheck={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 CameraAndMicrophoneDomainPermissionsDenied={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 CameraDomainPermissionsDenied={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 MicrophoneDomainPermissionsDenied={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 UnsupportedBrowser$e={primaryText:"Browser not supported",secondaryText:"Please join this call using a compatible browser.",moreHelpText:"More help"};var UnsupportedBrowserVersion$1={primaryText:"Browser version not supported",secondaryText:"Please update your browser and then try joining the call again.",moreHelpText:"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,CameraAndMicrophoneDomainPermissionsRequest:CameraAndMicrophoneDomainPermissionsRequest,CameraDomainPermissionsRequest:CameraDomainPermissionsRequest,MicrophoneDomainPermissionsRequest:MicrophoneDomainPermissionsRequest,CameraAndMicrophoneDomainPermissionsCheck:CameraAndMicrophoneDomainPermissionsCheck,CameraDomainPermissionsCheck:CameraDomainPermissionsCheck,MicrophoneDomainPermissionsCheck:MicrophoneDomainPermissionsCheck,CameraAndMicrophoneDomainPermissionsDenied:CameraAndMicrophoneDomainPermissionsDenied,CameraDomainPermissionsDenied:CameraDomainPermissionsDenied,MicrophoneDomainPermissionsDenied:MicrophoneDomainPermissionsDenied,UnsupportedBrowser:UnsupportedBrowser$e,UnsupportedBrowserVersion:UnsupportedBrowserVersion$1,BrowserPermissionDenied:BrowserPermissionDenied$d,BrowserPermissionDeniedIOS:BrowserPermissionDeniedIOS$d};
4007
+ var participantItem$d={isMeText:"(you)",menuTitle:"More Options",removeButtonLabel:"Remove",sharingIconLabel:"Sharing",mutedIconLabel:"Muted",displayNamePlaceholder:"Unnamed participant",participantStateConnecting:"Calling...",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"};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.",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$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"};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={participantStateConnecting:"Calling...",participantStateRinging:"Calling...",participantStateHold:"On hold"};var CameraAndMicrophoneDomainPermissionsRequest={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 CameraDomainPermissionsRequest={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 MicrophoneDomainPermissionsRequest={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 CameraAndMicrophoneDomainPermissionsCheck={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 CameraDomainPermissionsCheck={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 MicrophoneDomainPermissionsCheck={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 CameraAndMicrophoneDomainPermissionsDenied={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 CameraDomainPermissionsDenied={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 MicrophoneDomainPermissionsDenied={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 UnsupportedBrowser$e={primaryText:"Browser not supported",secondaryText:"Please join this call using a compatible browser.",moreHelpLinkText:"See compatibility requirements"};var UnsupportedBrowserVersion$1={primaryText:"Browser version not supported",secondaryText:"Please update your browser and then try joining the call again.",moreHelpLinkText:"See compatibility requirements"};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,CameraAndMicrophoneDomainPermissionsRequest:CameraAndMicrophoneDomainPermissionsRequest,CameraDomainPermissionsRequest:CameraDomainPermissionsRequest,MicrophoneDomainPermissionsRequest:MicrophoneDomainPermissionsRequest,CameraAndMicrophoneDomainPermissionsCheck:CameraAndMicrophoneDomainPermissionsCheck,CameraDomainPermissionsCheck:CameraDomainPermissionsCheck,MicrophoneDomainPermissionsCheck:MicrophoneDomainPermissionsCheck,CameraAndMicrophoneDomainPermissionsDenied:CameraAndMicrophoneDomainPermissionsDenied,CameraDomainPermissionsDenied:CameraDomainPermissionsDenied,MicrophoneDomainPermissionsDenied:MicrophoneDomainPermissionsDenied,UnsupportedBrowser:UnsupportedBrowser$e,UnsupportedBrowserVersion:UnsupportedBrowserVersion$1,UnsupportedOperatingSystem:UnsupportedOperatingSystem$1,BrowserPermissionDenied:BrowserPermissionDenied$d,BrowserPermissionDeniedIOS:BrowserPermissionDeniedIOS$d};
3944
4008
 
3945
4009
  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 DomainPermissions$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,DomainPermissions:DomainPermissions$c,UnsupportedBrowser:UnsupportedBrowser$d,BrowserPermissionDenied:BrowserPermissionDenied$c,BrowserPermissionDeniedIOS:BrowserPermissionDeniedIOS$c};
3946
4010
 
@@ -6914,7 +6978,7 @@ const DefaultSystemMessage = (props) => {
6914
6978
  }
6915
6979
  return React__default['default'].createElement(React__default['default'].Fragment, null);
6916
6980
  };
6917
- const memoizeAllMessages = memoizeFnAll((_messageKey, message, showMessageDate, showMessageStatus, onRenderAvatar, shouldOverlapAvatarAndMessage, styles, onRenderMessageStatus, defaultStatusRenderer, defaultChatMessageRenderer, strings, _attached, statusToRender, participantCount, readCount, onRenderMessage, onUpdateMessage, onDeleteMessage, onSendMessage) => {
6981
+ const memoizeAllMessages = memoizeFnAll((_messageKey, message, showMessageDate, showMessageStatus, onRenderAvatar, shouldOverlapAvatarAndMessage, styles, onRenderMessageStatus, defaultStatusRenderer, defaultChatMessageRenderer, strings, _attached, statusToRender, participantCount, readCount, onRenderMessage, onUpdateMessage, onDeleteMessage, onSendMessage, disableEditing) => {
6918
6982
  var _a, _b, _c, _d, _e, _f, _g;
6919
6983
  const messageProps = {
6920
6984
  message,
@@ -6922,7 +6986,8 @@ const memoizeAllMessages = memoizeFnAll((_messageKey, message, showMessageDate,
6922
6986
  showDate: showMessageDate,
6923
6987
  onUpdateMessage,
6924
6988
  onDeleteMessage,
6925
- onSendMessage
6989
+ onSendMessage,
6990
+ disableEditing
6926
6991
  };
6927
6992
  switch (message.messageType) {
6928
6993
  case 'chat': {
@@ -7275,7 +7340,7 @@ const MessageThread = (props) => {
7275
7340
  return memoizedMessageFn(key !== null && key !== void 0 ? key : 'id_' + index, message, showMessageDate, showMessageStatus, onRenderAvatar, isNarrow, styles, onRenderMessageStatus, defaultStatusRenderer, defaultChatMessageRenderer, strings,
7276
7341
  // Temporary solution to make sure we re-render if attach attribute is changed.
7277
7342
  // The proper fix should be in selector.
7278
- message.messageType === 'chat' ? message.attached : undefined, statusToRender, participantCount, readCountForHoveredIndicator, onRenderMessage, onUpdateMessage, onDeleteMessage, onSendMessage);
7343
+ message.messageType === 'chat' ? message.attached : undefined, statusToRender, participantCount, readCountForHoveredIndicator, onRenderMessage, onUpdateMessage, onDeleteMessage, onSendMessage, props.disableEditing);
7279
7344
  });
7280
7345
  }), [
7281
7346
  messages,
@@ -7296,7 +7361,8 @@ const MessageThread = (props) => {
7296
7361
  onSendMessage,
7297
7362
  lastSeenChatMessage,
7298
7363
  lastSendingChatMessage,
7299
- lastDeliveredChatMessage
7364
+ lastDeliveredChatMessage,
7365
+ props.disableEditing
7300
7366
  ]);
7301
7367
  const theme = useTheme();
7302
7368
  const chatBody = React.useMemo(() => {
@@ -11458,7 +11524,8 @@ const mainTextStyles = {
11458
11524
  fontSize: _pxToRem(20),
11459
11525
  lineHeight: _pxToRem(28),
11460
11526
  paddingBottom: '1rem',
11461
- margin: 'auto'
11527
+ margin: 'auto',
11528
+ textAlign: 'center'
11462
11529
  }
11463
11530
  };
11464
11531
  /**
@@ -11479,7 +11546,7 @@ const linkTextStyles = {
11479
11546
  root: {
11480
11547
  margin: 'auto',
11481
11548
  fontWeight: 600,
11482
- textAlign: 'inherit'
11549
+ textAlign: 'center'
11483
11550
  }
11484
11551
  };
11485
11552
  /**
@@ -11509,10 +11576,10 @@ const UnsupportedEnvironmentContainer = (props) => {
11509
11576
  React__default['default'].createElement(react.Text, { styles: secondaryTextStyles }, strings.secondaryText),
11510
11577
  onTroubleshootingClick && (React__default['default'].createElement(react.Link, { styles: linkTextStyles, onClick: () => {
11511
11578
  onTroubleshootingClick();
11512
- }, "data-ui-id": "unsupported-environment-link" }, strings.moreHelpText))));
11579
+ }, "data-ui-id": "unsupported-environment-link" }, strings.moreHelpLinkText))));
11513
11580
  };
11514
11581
  /**
11515
- * UI to display to the user that the browser they are using is not supported by calling application.
11582
+ * UI to display to the user that the environment they are using is not supported by calling application.
11516
11583
  *
11517
11584
  * @private
11518
11585
  */
@@ -11544,6 +11611,17 @@ const UnsupportedBrowserVersion = (props) => {
11544
11611
  return React__default['default'].createElement(UnsupportedEnvironment, { onTroubleshootingClick: onTroubleshootingClick, strings: strings });
11545
11612
  };
11546
11613
 
11614
+ // Copyright (c) Microsoft Corporation.
11615
+ /**
11616
+ * UI to display to the user that the operating system they are using is not supported by Azure Communications Calling service.
11617
+ *
11618
+ * @beta
11619
+ */
11620
+ const UnsupportedOperatingSystem = (props) => {
11621
+ const { onTroubleshootingClick, strings } = props;
11622
+ return React__default['default'].createElement(UnsupportedEnvironment, { onTroubleshootingClick: onTroubleshootingClick, strings: strings });
11623
+ };
11624
+
11547
11625
  // Copyright (c) Microsoft Corporation.
11548
11626
  /**
11549
11627
  * @private
@@ -11719,14 +11797,16 @@ const convertRemoteParticipantToVideoGalleryRemoteParticipant = (userId, isMuted
11719
11797
  };
11720
11798
  };
11721
11799
  const convertRemoteVideoStreamToVideoGalleryStream = (stream) => {
11722
- var _a, _b;
11800
+ var _a, _b, _c;
11723
11801
  return {
11724
11802
  id: stream.id,
11725
11803
  isAvailable: stream.isAvailable,
11726
11804
  /* @conditional-compile-remove(video-stream-is-receiving-flag) */
11727
11805
  isReceiving: stream.isReceiving,
11728
11806
  isMirrored: (_a = stream.view) === null || _a === void 0 ? void 0 : _a.isMirrored,
11729
- renderElement: (_b = stream.view) === null || _b === void 0 ? void 0 : _b.target
11807
+ renderElement: (_b = stream.view) === null || _b === void 0 ? void 0 : _b.target,
11808
+ /* @conditional-compile-remove(pinned-participants) */
11809
+ scalingMode: (_c = stream.view) === null || _c === void 0 ? void 0 : _c.scalingMode
11730
11810
  };
11731
11811
  };
11732
11812
 
@@ -15938,7 +16018,9 @@ const getDevicePermissionState = (setVideoState, setAudioState) => {
15938
16018
  /* @conditional-compile-remove(unsupported-browser) */
15939
16019
  const isUnsupportedEnvironment = (features, environmentInfo) => {
15940
16020
  return !!((features === null || features === void 0 ? void 0 : features.unsupportedEnvironment) &&
15941
- ((environmentInfo === null || environmentInfo === void 0 ? void 0 : environmentInfo.isSupportedBrowser) === false || (environmentInfo === null || environmentInfo === void 0 ? void 0 : environmentInfo.isSupportedBrowserVersion) === false));
16021
+ ((environmentInfo === null || environmentInfo === void 0 ? void 0 : environmentInfo.isSupportedBrowser) === false ||
16022
+ (environmentInfo === null || environmentInfo === void 0 ? void 0 : environmentInfo.isSupportedBrowserVersion) === false ||
16023
+ (environmentInfo === null || environmentInfo === void 0 ? void 0 : environmentInfo.isSupportedPlatform) === false));
15942
16024
  };
15943
16025
 
15944
16026
  // Copyright (c) Microsoft Corporation.
@@ -19379,14 +19461,22 @@ const UnsupportedBrowserPage = (props) => {
19379
19461
  const unsupportedBrowserStrings = locale.component.strings.UnsupportedBrowser;
19380
19462
  /* @conditional-compile-remove(unsupported-browser) */
19381
19463
  const unsupportedBrowserVersionStrings = locale.component.strings.UnsupportedBrowserVersion;
19464
+ /* @conditional-compile-remove(unsupported-browser) */
19465
+ const unsupportedOperatingSystemStrings = locale.component.strings.UnsupportedOperatingSystem;
19382
19466
  let pageElement = React__default['default'].createElement(React__default['default'].Fragment, null);
19383
19467
  /* @conditional-compile-remove(unsupported-browser) */
19384
- if (!(environmentInfo === null || environmentInfo === void 0 ? void 0 : environmentInfo.isSupportedBrowser)) {
19468
+ if (!(environmentInfo === null || environmentInfo === void 0 ? void 0 : environmentInfo.isSupportedPlatform)) {
19469
+ pageElement = (React__default['default'].createElement(UnsupportedOperatingSystem, { onTroubleshootingClick: onTroubleshootingClick, strings: unsupportedOperatingSystemStrings }));
19470
+ }
19471
+ else if (!(environmentInfo === null || environmentInfo === void 0 ? void 0 : environmentInfo.isSupportedBrowser)) {
19385
19472
  pageElement = (React__default['default'].createElement(UnsupportedBrowser, { onTroubleshootingClick: onTroubleshootingClick, strings: unsupportedBrowserStrings }));
19386
19473
  }
19387
19474
  else if (!(environmentInfo === null || environmentInfo === void 0 ? void 0 : environmentInfo.isSupportedBrowserVersion)) {
19388
19475
  pageElement = (React__default['default'].createElement(UnsupportedBrowserVersion, { onTroubleshootingClick: onTroubleshootingClick, strings: unsupportedBrowserVersionStrings }));
19389
19476
  }
19477
+ else {
19478
+ throw new Error('There was a problem with your environment info');
19479
+ }
19390
19480
  return React__default['default'].createElement(react.Stack, { styles: containerStyles }, pageElement);
19391
19481
  };
19392
19482
  const containerStyles = {
@@ -22428,6 +22518,7 @@ exports.StreamMedia = StreamMedia;
22428
22518
  exports.TypingIndicator = TypingIndicator;
22429
22519
  exports.UnsupportedBrowser = UnsupportedBrowser;
22430
22520
  exports.UnsupportedBrowserVersion = UnsupportedBrowserVersion;
22521
+ exports.UnsupportedOperatingSystem = UnsupportedOperatingSystem;
22431
22522
  exports.VideoGallery = VideoGallery;
22432
22523
  exports.VideoTile = VideoTile;
22433
22524
  exports._DevicePermissionDropdown = _DevicePermissionDropdown;