@azure/communication-react 1.3.3-alpha-202209210019.0 → 1.3.3-alpha-202210060021.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 (113) hide show
  1. package/dist/communication-react.d.ts +131 -13
  2. package/dist/dist-cjs/communication-react/index.js +528 -272
  3. package/dist/dist-cjs/communication-react/index.js.map +1 -1
  4. package/dist/dist-esm/acs-ui-common/src/identifier.d.ts +5 -0
  5. package/dist/dist-esm/acs-ui-common/src/identifier.js +10 -0
  6. package/dist/dist-esm/acs-ui-common/src/identifier.js.map +1 -1
  7. package/dist/dist-esm/acs-ui-common/src/index.d.ts +1 -1
  8. package/dist/dist-esm/acs-ui-common/src/index.js +1 -1
  9. package/dist/dist-esm/acs-ui-common/src/index.js.map +1 -1
  10. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js +1 -1
  11. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js.map +1 -1
  12. package/dist/dist-esm/calling-component-bindings/src/handlers/createHandlers.d.ts +5 -8
  13. package/dist/dist-esm/calling-component-bindings/src/handlers/createHandlers.js +3 -3
  14. package/dist/dist-esm/calling-component-bindings/src/handlers/createHandlers.js.map +1 -1
  15. package/dist/dist-esm/calling-component-bindings/src/index.d.ts +0 -1
  16. package/dist/dist-esm/calling-component-bindings/src/index.js.map +1 -1
  17. package/dist/dist-esm/calling-stateful-client/src/CallAgentDeclarative.js +21 -1
  18. package/dist/dist-esm/calling-stateful-client/src/CallAgentDeclarative.js.map +1 -1
  19. package/dist/dist-esm/calling-stateful-client/src/CallClientState.d.ts +1 -1
  20. package/dist/dist-esm/calling-stateful-client/src/CallClientState.js.map +1 -1
  21. package/dist/dist-esm/communication-react/src/index.d.ts +2 -1
  22. package/dist/dist-esm/communication-react/src/index.js +2 -0
  23. package/dist/dist-esm/communication-react/src/index.js.map +1 -1
  24. package/dist/dist-esm/react-components/src/components/CameraButton.js +3 -3
  25. package/dist/dist-esm/react-components/src/components/CameraButton.js.map +1 -1
  26. package/dist/dist-esm/react-components/src/components/DevicePermissionDropdown.d.ts +53 -0
  27. package/dist/dist-esm/react-components/src/components/DevicePermissionDropdown.js +22 -0
  28. package/dist/dist-esm/react-components/src/components/DevicePermissionDropdown.js.map +1 -0
  29. package/dist/dist-esm/react-components/src/components/DevicesButton.js +4 -2
  30. package/dist/dist-esm/react-components/src/components/DevicesButton.js.map +1 -1
  31. package/dist/dist-esm/react-components/src/components/DomainPermissions.js +9 -9
  32. package/dist/dist-esm/react-components/src/components/DomainPermissions.js.map +1 -1
  33. package/dist/dist-esm/react-components/src/components/HighContrastAwareIcon.d.ts +4 -4
  34. package/dist/dist-esm/react-components/src/components/HighContrastAwareIcon.js +2 -2
  35. package/dist/dist-esm/react-components/src/components/HighContrastAwareIcon.js.map +1 -1
  36. package/dist/dist-esm/react-components/src/components/HoldButton.js +3 -3
  37. package/dist/dist-esm/react-components/src/components/HoldButton.js.map +1 -1
  38. package/dist/dist-esm/react-components/src/components/MessageThread.js +2 -6
  39. package/dist/dist-esm/react-components/src/components/MessageThread.js.map +1 -1
  40. package/dist/dist-esm/react-components/src/components/MicrophoneButton.js +3 -3
  41. package/dist/dist-esm/react-components/src/components/MicrophoneButton.js.map +1 -1
  42. package/dist/dist-esm/react-components/src/components/ParticipantsButton.js +2 -2
  43. package/dist/dist-esm/react-components/src/components/ParticipantsButton.js.map +1 -1
  44. package/dist/dist-esm/react-components/src/components/ScreenShareButton.js +3 -3
  45. package/dist/dist-esm/react-components/src/components/ScreenShareButton.js.map +1 -1
  46. package/dist/dist-esm/react-components/src/components/VideoGallery.js +13 -4
  47. package/dist/dist-esm/react-components/src/components/VideoGallery.js.map +1 -1
  48. package/dist/dist-esm/react-components/src/components/index.d.ts +4 -0
  49. package/dist/dist-esm/react-components/src/components/index.js +2 -0
  50. package/dist/dist-esm/react-components/src/components/index.js.map +1 -1
  51. package/dist/dist-esm/react-components/src/components/styles/Dialpad.styles.js +5 -1
  52. package/dist/dist-esm/react-components/src/components/styles/Dialpad.styles.js.map +1 -1
  53. package/dist/dist-esm/react-components/src/components/styles/DomainPermissions.styles.d.ts +2 -2
  54. package/dist/dist-esm/react-components/src/components/styles/DomainPermissions.styles.js +6 -8
  55. package/dist/dist-esm/react-components/src/components/styles/DomainPermissions.styles.js.map +1 -1
  56. package/dist/dist-esm/react-components/src/localization/locales/en-US/strings.json +9 -9
  57. package/dist/dist-esm/react-components/src/permissions/PermissionsProvider.d.ts +5 -0
  58. package/dist/dist-esm/react-components/src/permissions/PermissionsProvider.js +15 -2
  59. package/dist/dist-esm/react-components/src/permissions/PermissionsProvider.js.map +1 -1
  60. package/dist/dist-esm/react-components/src/theming/icons.d.ts +3 -1
  61. package/dist/dist-esm/react-components/src/theming/icons.js +24 -2
  62. package/dist/dist-esm/react-components/src/theming/icons.js.map +1 -1
  63. package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.d.ts +27 -0
  64. package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.js +29 -3
  65. package/dist/dist-esm/react-composites/src/composites/CallComposite/CallComposite.js.map +1 -1
  66. package/dist/dist-esm/react-composites/src/composites/CallComposite/Strings.d.ts +8 -0
  67. package/dist/dist-esm/react-composites/src/composites/CallComposite/Strings.js.map +1 -1
  68. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.d.ts +3 -3
  69. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js +10 -9
  70. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js.map +1 -1
  71. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/CallAdapter.d.ts +15 -4
  72. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/CallAdapter.js.map +1 -1
  73. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallControls.d.ts +2 -0
  74. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallControls.js +27 -17
  75. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallControls.js.map +1 -1
  76. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallPane.js +2 -1
  77. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallPane.js.map +1 -1
  78. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationpageCameraDropdown.d.ts +13 -0
  79. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationpageCameraDropdown.js +46 -0
  80. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationpageCameraDropdown.js.map +1 -0
  81. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationpageMicDropdown.d.ts +13 -0
  82. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationpageMicDropdown.js +49 -0
  83. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/ConfigurationpageMicDropdown.js.map +1 -0
  84. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LocalDeviceSettings.js +50 -28
  85. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LocalDeviceSettings.js.map +1 -1
  86. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Devices.js +10 -1
  87. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Devices.js.map +1 -1
  88. package/dist/dist-esm/react-composites/src/composites/CallComposite/index.d.ts +1 -0
  89. package/dist/dist-esm/react-composites/src/composites/CallComposite/index.js.map +1 -1
  90. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/ConfigurationPage.d.ts +2 -0
  91. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/ConfigurationPage.js +13 -2
  92. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/ConfigurationPage.js.map +1 -1
  93. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.d.ts +6 -0
  94. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js +8 -2
  95. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatComposite.js.map +1 -1
  96. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatPane.js +2 -1
  97. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatPane.js.map +1 -1
  98. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.d.ts +3 -3
  99. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js +9 -3
  100. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js.map +1 -1
  101. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatAdapter.d.ts +13 -0
  102. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatAdapter.js.map +1 -1
  103. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.d.ts +3 -3
  104. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.js +11 -2
  105. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.js.map +1 -1
  106. package/dist/dist-esm/react-composites/src/composites/common/AddPeopleDropdown.js +4 -4
  107. package/dist/dist-esm/react-composites/src/composites/common/AddPeopleDropdown.js.map +1 -1
  108. package/dist/dist-esm/react-composites/src/composites/common/ModalLocalAndRemotePIP.d.ts +2 -5
  109. package/dist/dist-esm/react-composites/src/composites/common/ModalLocalAndRemotePIP.js +26 -12
  110. package/dist/dist-esm/react-composites/src/composites/common/ModalLocalAndRemotePIP.js.map +1 -1
  111. package/dist/dist-esm/react-composites/src/composites/common/icons.d.ts +3 -1
  112. package/dist/dist-esm/react-composites/src/composites/localization/locales/en-US/strings.json +2 -0
  113. package/package.json +11 -11
@@ -188,11 +188,21 @@ const fromFlatCommunicationIdentifier = (id) => {
188
188
  }
189
189
  return { id };
190
190
  };
191
+ /**
192
+ * Returns a CommunicationIdentifier.
193
+ * @internal
194
+ */
195
+ const _toCommunicationIdentifier = (id) => {
196
+ if (typeof id === 'string') {
197
+ return fromFlatCommunicationIdentifier(id);
198
+ }
199
+ return id;
200
+ };
191
201
 
192
202
  // Copyright (c) Microsoft Corporation.
193
203
  // Licensed under the MIT license.
194
204
  // GENERATED FILE. DO NOT EDIT MANUALLY.
195
- var telemetryVersion = '1.3.3-alpha-202209210019.0';
205
+ var telemetryVersion = '1.3.3-alpha-202210060021.0';
196
206
 
197
207
  // Copyright (c) Microsoft Corporation.
198
208
  /**
@@ -391,7 +401,7 @@ const getCallState = (state, props) => { var _a; return (_a = state.calls[props.
391
401
 
392
402
  // Copyright (c) Microsoft Corporation.
393
403
  // Licensed under the MIT license.
394
- var __awaiter$w = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
404
+ var __awaiter$y = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
395
405
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
396
406
  return new (P || (P = Promise))(function (resolve, reject) {
397
407
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -429,7 +439,7 @@ const _isPreviewOn = (deviceManager) => {
429
439
  *
430
440
  * @private
431
441
  */
432
- const disposeAllLocalPreviewViews = (callClient) => __awaiter$w(void 0, void 0, void 0, function* () {
442
+ const disposeAllLocalPreviewViews = (callClient) => __awaiter$y(void 0, void 0, void 0, function* () {
433
443
  const unparentedViews = callClient.getState().deviceManager.unparentedViews;
434
444
  for (const view of unparentedViews) {
435
445
  yield callClient.disposeView(undefined, undefined, view);
@@ -536,7 +546,7 @@ const holdButtonSelector = reselect__namespace.createSelector([getCallState], (c
536
546
 
537
547
  // Copyright (c) Microsoft Corporation.
538
548
  // Licensed under the MIT license.
539
- var __awaiter$v = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
549
+ var __awaiter$x = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
540
550
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
541
551
  return new (P || (P = Promise))(function (resolve, reject) {
542
552
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -560,7 +570,7 @@ const areStreamsEqual = (prevStream, newStream) => {
560
570
  * @public
561
571
  */
562
572
  const createDefaultCallingHandlers = memoizeOne__default['default']((callClient, callAgent, deviceManager, call) => {
563
- const onStartLocalVideo = () => __awaiter$v(void 0, void 0, void 0, function* () {
573
+ const onStartLocalVideo = () => __awaiter$x(void 0, void 0, void 0, function* () {
564
574
  // Before the call object creates a stream, dispose of any local preview streams.
565
575
  // @TODO: is there any way to parent the unparented view to the call object instead
566
576
  // of disposing and creating a new stream?
@@ -580,7 +590,7 @@ const createDefaultCallingHandlers = memoizeOne__default['default']((callClient,
580
590
  yield call.startVideo(stream);
581
591
  }
582
592
  });
583
- const onStopLocalVideo = (stream) => __awaiter$v(void 0, void 0, void 0, function* () {
593
+ const onStopLocalVideo = (stream) => __awaiter$x(void 0, void 0, void 0, function* () {
584
594
  const callId = call === null || call === void 0 ? void 0 : call.id;
585
595
  if (!callId) {
586
596
  return;
@@ -593,7 +603,7 @@ const createDefaultCallingHandlers = memoizeOne__default['default']((callClient,
593
603
  });
594
604
  }
595
605
  });
596
- const onToggleCamera = (options) => __awaiter$v(void 0, void 0, void 0, function* () {
606
+ const onToggleCamera = (options) => __awaiter$x(void 0, void 0, void 0, function* () {
597
607
  if (call && _isInCall(call.state)) {
598
608
  const stream = call.localVideoStreams.find((stream) => stream.mediaStreamType === 'Video');
599
609
  if (stream) {
@@ -619,23 +629,22 @@ const createDefaultCallingHandlers = memoizeOne__default['default']((callClient,
619
629
  }
620
630
  }
621
631
  });
622
- // FIXME: onStartCall API should use string, not the underlying SDK types.
623
632
  const onStartCall = (participants, options) => {
624
633
  return callAgent ? callAgent.startCall(participants, options) : undefined;
625
634
  };
626
- const onSelectMicrophone = (device) => __awaiter$v(void 0, void 0, void 0, function* () {
635
+ const onSelectMicrophone = (device) => __awaiter$x(void 0, void 0, void 0, function* () {
627
636
  if (!deviceManager) {
628
637
  return;
629
638
  }
630
639
  return deviceManager.selectMicrophone(device);
631
640
  });
632
- const onSelectSpeaker = (device) => __awaiter$v(void 0, void 0, void 0, function* () {
641
+ const onSelectSpeaker = (device) => __awaiter$x(void 0, void 0, void 0, function* () {
633
642
  if (!deviceManager) {
634
643
  return;
635
644
  }
636
645
  return deviceManager.selectSpeaker(device);
637
646
  });
638
- const onSelectCamera = (device, options) => __awaiter$v(void 0, void 0, void 0, function* () {
647
+ const onSelectCamera = (device, options) => __awaiter$x(void 0, void 0, void 0, function* () {
639
648
  if (!deviceManager) {
640
649
  return;
641
650
  }
@@ -658,19 +667,19 @@ const createDefaultCallingHandlers = memoizeOne__default['default']((callClient,
658
667
  }, options);
659
668
  }
660
669
  });
661
- const onToggleMicrophone = () => __awaiter$v(void 0, void 0, void 0, function* () {
670
+ const onToggleMicrophone = () => __awaiter$x(void 0, void 0, void 0, function* () {
662
671
  if (!call || !_isInCall(call.state)) {
663
672
  throw new Error(`Please invoke onToggleMicrophone after call is started`);
664
673
  }
665
674
  return call.isMuted ? yield call.unmute() : yield call.mute();
666
675
  });
667
- const onStartScreenShare = () => __awaiter$v(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.startScreenSharing()); });
668
- const onStopScreenShare = () => __awaiter$v(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.stopScreenSharing()); });
669
- const onToggleScreenShare = () => __awaiter$v(void 0, void 0, void 0, function* () { return (call === null || call === void 0 ? void 0 : call.isScreenSharingOn) ? yield onStopScreenShare() : yield onStartScreenShare(); });
670
- const onHangUp = () => __awaiter$v(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.hangUp()); });
676
+ const onStartScreenShare = () => __awaiter$x(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.startScreenSharing()); });
677
+ const onStopScreenShare = () => __awaiter$x(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.stopScreenSharing()); });
678
+ const onToggleScreenShare = () => __awaiter$x(void 0, void 0, void 0, function* () { return (call === null || call === void 0 ? void 0 : call.isScreenSharingOn) ? yield onStopScreenShare() : yield onStartScreenShare(); });
679
+ const onHangUp = () => __awaiter$x(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.hangUp()); });
671
680
  /* @conditional-compile-remove(PSTN-calls) */
672
- const onToggleHold = () => __awaiter$v(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()); });
673
- const onCreateLocalStreamView = (options = { scalingMode: 'Crop', isMirrored: true }) => __awaiter$v(void 0, void 0, void 0, function* () {
681
+ const onToggleHold = () => __awaiter$x(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()); });
682
+ const onCreateLocalStreamView = (options = { scalingMode: 'Crop', isMirrored: true }) => __awaiter$x(void 0, void 0, void 0, function* () {
674
683
  var _a;
675
684
  if (!call || call.localVideoStreams.length === 0) {
676
685
  return;
@@ -686,7 +695,7 @@ const createDefaultCallingHandlers = memoizeOne__default['default']((callClient,
686
695
  const { view } = (_a = (yield callClient.createView(call.id, undefined, localStream, options))) !== null && _a !== void 0 ? _a : {};
687
696
  return view ? { view } : undefined;
688
697
  });
689
- const onCreateRemoteStreamView = (userId, options = { scalingMode: 'Crop' }) => __awaiter$v(void 0, void 0, void 0, function* () {
698
+ const onCreateRemoteStreamView = (userId, options = { scalingMode: 'Crop' }) => __awaiter$x(void 0, void 0, void 0, function* () {
690
699
  if (!call) {
691
700
  return;
692
701
  }
@@ -714,7 +723,7 @@ const createDefaultCallingHandlers = memoizeOne__default['default']((callClient,
714
723
  }
715
724
  return (createViewResult === null || createViewResult === void 0 ? void 0 : createViewResult.view) ? { view: createViewResult === null || createViewResult === void 0 ? void 0 : createViewResult.view } : undefined;
716
725
  });
717
- const onDisposeRemoteStreamView = (userId) => __awaiter$v(void 0, void 0, void 0, function* () {
726
+ const onDisposeRemoteStreamView = (userId) => __awaiter$x(void 0, void 0, void 0, function* () {
718
727
  if (!call) {
719
728
  return;
720
729
  }
@@ -735,7 +744,7 @@ const createDefaultCallingHandlers = memoizeOne__default['default']((callClient,
735
744
  callClient.disposeView(call.id, participant.identifier, screenShareStream);
736
745
  }
737
746
  });
738
- const onDisposeLocalStreamView = () => __awaiter$v(void 0, void 0, void 0, function* () {
747
+ const onDisposeLocalStreamView = () => __awaiter$x(void 0, void 0, void 0, function* () {
739
748
  // If the user is currently in a call, dispose of the local stream view attached to that call.
740
749
  const callState = call && callClient.getState().calls[call.id];
741
750
  const localStream = callState === null || callState === void 0 ? void 0 : callState.localVideoStreams.find((item) => item.mediaStreamType === 'Video');
@@ -747,11 +756,12 @@ const createDefaultCallingHandlers = memoizeOne__default['default']((callClient,
747
756
  // TODO: we need to remember which LocalVideoStream was used for LocalPreview and dispose that one.
748
757
  yield disposeAllLocalPreviewViews(callClient);
749
758
  });
750
- const onRemoveParticipant = (userId) => __awaiter$v(void 0, void 0, void 0, function* () {
751
- yield (call === null || call === void 0 ? void 0 : call.removeParticipant(fromFlatCommunicationIdentifier(userId)));
759
+ const onRemoveParticipant = (userId) => __awaiter$x(void 0, void 0, void 0, function* () {
760
+ const participant = _toCommunicationIdentifier(userId);
761
+ yield (call === null || call === void 0 ? void 0 : call.removeParticipant(participant));
752
762
  });
753
763
  /* @conditional-compile-remove(PSTN-calls) */
754
- const onAddParticipant = (participant, options) => __awaiter$v(void 0, void 0, void 0, function* () {
764
+ const onAddParticipant = (participant, options) => __awaiter$x(void 0, void 0, void 0, function* () {
755
765
  const participantType = participantTypeHelper(participant);
756
766
  switch (participantType) {
757
767
  case 'PSTN':
@@ -763,7 +773,7 @@ const createDefaultCallingHandlers = memoizeOne__default['default']((callClient,
763
773
  }
764
774
  });
765
775
  /* @conditional-compile-remove(dialpad) */ /* @conditional-compile-remove(PSTN-calls) */
766
- const onSendDtmfTone = (dtmfTone) => __awaiter$v(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.sendDtmf(dtmfTone)); });
776
+ const onSendDtmfTone = (dtmfTone) => __awaiter$x(void 0, void 0, void 0, function* () { return yield (call === null || call === void 0 ? void 0 : call.sendDtmf(dtmfTone)); });
767
777
  return {
768
778
  onHangUp,
769
779
  /* @conditional-compile-remove(PSTN-calls) */
@@ -978,7 +988,7 @@ const typingIndicatorStringStyle = react.mergeStyles({
978
988
  wordBreak: 'break-word'
979
989
  });
980
990
 
981
- 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={onLabel:"Resume",offLabel:"Hold",tooltipOnContent:"Resume call",tooltipOffContent:"Hold call"};var videoTile={participantStateConnecting:"Calling...",participantStateRinging:"Calling...",participantStateHold:"On hold"};var DomainPermissions$1={primaryText:"Allow {appName} to use your camera and microphone",secondaryText:"This is so participants can see and hear you.",linkText:"More help"};var UnsupportedBrowser$1={primaryText:"Browser not supported",secondaryText:"Please join this call using a compatible browser.",moreHelpLink:"More help"};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,videoTile:videoTile,DomainPermissions:DomainPermissions$1,UnsupportedBrowser:UnsupportedBrowser$1};
991
+ 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={onLabel:"Resume",offLabel:"Hold",tooltipOnContent:"Resume call",tooltipOffContent:"Hold call"};var videoTile={participantStateConnecting:"Calling...",participantStateRinging:"Calling...",participantStateHold:"On hold"};var DomainPermissions$1={primaryText:"Allow {appName} to use your camera and microphone",secondaryText:"This is so participants can see and hear you.",linkText:"More help"};var UnsupportedBrowser$1={primaryText:"Browser not supported",secondaryText:"Please join this call using a compatible browser.",moreHelpLink:"More help"};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,videoTile:videoTile,DomainPermissions:DomainPermissions$1,UnsupportedBrowser:UnsupportedBrowser$1};
982
992
 
983
993
  var participantItem$c={isMeText:"(you)",menuTitle:"More Options",removeButtonLabel:"Remove",sharingIconLabel:"Sharing",mutedIconLabel:"Muted",displayNamePlaceholder:"Unnamed Participant"};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."};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",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"};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.",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.",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 a number"};var HoldButton$d={onLabel:"Resume",offLabel:"Hold",toolTipOnContent:"Resume call",toolTipOffContent:"Hold call"};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$d};
984
994
 
@@ -1944,6 +1954,23 @@ const MoreHorizontal18Regular = () => (
1944
1954
  // MoreHorizontal icons are 16px x 16px or 20px x 20px so scaling to get desired size
1945
1955
  React__default['default'].createElement("div", { className: react.mergeStyles({ transform: 'scale(0.9)' }) },
1946
1956
  React__default['default'].createElement(reactIcons.MoreHorizontal20Regular, null)));
1957
+ /* @conditional-compile-remove(call-readiness) */
1958
+ const DomainPermissionMic20Filled = () => {
1959
+ const theme = useTheme();
1960
+ return (React__default['default'].createElement(react.Stack, { horizontalAlign: 'center', styles: { root: { borderRadius: '100%', background: theme.palette.themeLighterAlt, padding: '2rem' } } },
1961
+ React__default['default'].createElement("div", { className: react.mergeStyles(scaledIconStyles(theme)) },
1962
+ React__default['default'].createElement(reactIcons.MicOn20Filled, null))));
1963
+ };
1964
+ /* @conditional-compile-remove(call-readiness) */
1965
+ const DomainPermissionCamera20Filled = () => {
1966
+ const theme = useTheme();
1967
+ return (React__default['default'].createElement(react.Stack, { horizontalAlign: 'center', styles: { root: { borderRadius: '100%', background: theme.palette.themeLighterAlt, padding: '2rem' } } },
1968
+ React__default['default'].createElement("div", { className: react.mergeStyles(scaledIconStyles(theme)) },
1969
+ React__default['default'].createElement(reactIcons.Video20Filled, null))));
1970
+ };
1971
+ /* @conditional-compile-remove(call-readiness) */
1972
+ const DomainPermissionSparkle20Filled = () => (React__default['default'].createElement("div", { className: react.mergeStyles({ transform: 'scale(2)' }) },
1973
+ React__default['default'].createElement(reactIcons.Sparkle20Filled, null)));
1947
1974
  /* @conditional-compile-remove(unsupported-browser) */
1948
1975
  const UnsupportedBrowserWarning = () => {
1949
1976
  const theme = useTheme();
@@ -2027,7 +2054,11 @@ const DEFAULT_COMPONENT_ICONS = {
2027
2054
  /* @conditional-compile-remove(dialpad) */ /* @conditional-compile-remove(PSTN-calls) */
2028
2055
  BackSpace: React__default['default'].createElement(reactIcons.Backspace20Regular, null),
2029
2056
  /* @conditional-compile-remove(call-readiness) */
2030
- iconBackdrop: React__default['default'].createElement(reactIcons.Circle24Filled, null),
2057
+ DomainPermissionsSparkle: React__default['default'].createElement(DomainPermissionSparkle20Filled, null),
2058
+ /* @conditional-compile-remove(call-readiness) */
2059
+ DomainPermissionCamera: React__default['default'].createElement(DomainPermissionCamera20Filled, null),
2060
+ /* @conditional-compile-remove(call-readiness) */
2061
+ DomainPermissionMic: React__default['default'].createElement(DomainPermissionMic20Filled, null),
2031
2062
  /* @conditional-compile-remove(unsupported-browser) */
2032
2063
  UnsupportedBrowserWarning: React__default['default'].createElement(UnsupportedBrowserWarning, null)
2033
2064
  };
@@ -2038,6 +2069,7 @@ const scaledIconStyles = (theme) => {
2038
2069
  display: 'flex',
2039
2070
  justifyContent: 'center',
2040
2071
  alignItems: 'center',
2072
+ lineHeight: '0.2rem',
2041
2073
  color: theme.palette.themePrimary,
2042
2074
  zIndex: 1
2043
2075
  };
@@ -3472,7 +3504,7 @@ const chatMessageActionMenuProps = (menuProps) => {
3472
3504
  return actionMenuProps;
3473
3505
  };
3474
3506
 
3475
- var __awaiter$u = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
3507
+ var __awaiter$w = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
3476
3508
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3477
3509
  return new (P || (P = Promise))(function (resolve, reject) {
3478
3510
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -3497,7 +3529,7 @@ const _FileDownloadCards = (props) => {
3497
3529
  var _a, _b;
3498
3530
  return (_b = (_a = props.strings) === null || _a === void 0 ? void 0 : _a.downloadFile) !== null && _b !== void 0 ? _b : localeStrings.downloadFile;
3499
3531
  }, [(_a = props.strings) === null || _a === void 0 ? void 0 : _a.downloadFile, localeStrings.downloadFile]);
3500
- const fileDownloadHandler = React.useCallback((userId, file) => __awaiter$u(void 0, void 0, void 0, function* () {
3532
+ const fileDownloadHandler = React.useCallback((userId, file) => __awaiter$w(void 0, void 0, void 0, function* () {
3501
3533
  if (!props.downloadHandler) {
3502
3534
  window.open(file.url, '_blank', 'noopener,noreferrer');
3503
3535
  }
@@ -3645,7 +3677,7 @@ const ChatMessageComponentAsMessageBubble = React__default['default'].memo(Messa
3645
3677
 
3646
3678
  // Copyright (c) Microsoft Corporation.
3647
3679
  // Licensed under the MIT license.
3648
- var __awaiter$t = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
3680
+ var __awaiter$v = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
3649
3681
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3650
3682
  return new (P || (P = Promise))(function (resolve, reject) {
3651
3683
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -3679,7 +3711,7 @@ const ChatMessageComponent = (props) => {
3679
3711
  return React__default['default'].createElement(React__default['default'].Fragment, null);
3680
3712
  }
3681
3713
  else if (isEditing) {
3682
- return (React__default['default'].createElement(ChatMessageComponentAsEditBox, { message: message, inlineEditButtons: props.inlineAcceptRejectEditButtons, strings: props.strings, onSubmit: (text, metadata, options) => __awaiter$t(void 0, void 0, void 0, function* () {
3714
+ return (React__default['default'].createElement(ChatMessageComponentAsEditBox, { message: message, inlineEditButtons: props.inlineAcceptRejectEditButtons, strings: props.strings, onSubmit: (text, metadata, options) => __awaiter$v(void 0, void 0, void 0, function* () {
3683
3715
  props.onUpdateMessage &&
3684
3716
  props.message.messageId &&
3685
3717
  (yield props.onUpdateMessage(props.message.messageId, text, metadata, options));
@@ -3778,7 +3810,7 @@ const getParticipantsWhoHaveReadMessage = (message, readReceiptsBySenderId) => {
3778
3810
 
3779
3811
  // Copyright (c) Microsoft Corporation.
3780
3812
  // Licensed under the MIT license.
3781
- var __awaiter$s = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
3813
+ var __awaiter$u = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
3782
3814
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
3783
3815
  return new (P || (P = Promise))(function (resolve, reject) {
3784
3816
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -4005,7 +4037,7 @@ const MessageThread = (props) => {
4005
4037
  setChatMessagesInitialized(chatMessagesInitialized);
4006
4038
  };
4007
4039
  // we try to only send those message status if user is scrolled to the bottom.
4008
- const sendMessageStatusIfAtBottom = React.useCallback(() => __awaiter$s(void 0, void 0, void 0, function* () {
4040
+ const sendMessageStatusIfAtBottom = React.useCallback(() => __awaiter$u(void 0, void 0, void 0, function* () {
4009
4041
  if (!isAtBottomOfScrollRef.current ||
4010
4042
  !document.hasFocus() ||
4011
4043
  !messagesRef.current ||
@@ -4056,14 +4088,13 @@ const MessageThread = (props) => {
4056
4088
  setIsAtBottomOfScrollRef(atBottom);
4057
4089
  }, [scrollToBottom, sendMessageStatusIfAtBottom]);
4058
4090
  // Infinite scrolling + threadInitialize function
4059
- const fetchNewMessageWhenAtTop = React.useCallback(() => __awaiter$s(void 0, void 0, void 0, function* () {
4091
+ const fetchNewMessageWhenAtTop = React.useCallback(() => __awaiter$u(void 0, void 0, void 0, function* () {
4060
4092
  if (chatScrollDivRef.current && !isLoadingChatMessagesRef.current) {
4061
4093
  if (onLoadPreviousChatMessages) {
4062
4094
  isLoadingChatMessagesRef.current = true;
4063
4095
  // Fetch message until scrollTop reach the threshold for fetching new message
4064
4096
  while (!isAllChatMessagesLoadedRef.current && chatScrollDivRef.current.scrollTop <= 500) {
4065
4097
  isAllChatMessagesLoadedRef.current = yield onLoadPreviousChatMessages(numberOfChatMessagesToReload);
4066
- // Release CPU resources for 200 milliseconds between each loop.
4067
4098
  yield delay(200);
4068
4099
  }
4069
4100
  isLoadingChatMessagesRef.current = false;
@@ -4091,11 +4122,8 @@ const MessageThread = (props) => {
4091
4122
  if (!chatScrollDivRef.current) {
4092
4123
  return;
4093
4124
  }
4094
- if (previousTopRef.current === 0) {
4095
- const currentHeight = chatScrollDivRef.current.scrollHeight;
4096
- chatScrollDivRef.current.scrollTop =
4097
- chatScrollDivRef.current.scrollTop + currentHeight - previousHeightRef.current;
4098
- }
4125
+ chatScrollDivRef.current.scrollTop =
4126
+ chatScrollDivRef.current.scrollHeight - (previousHeightRef.current - previousTopRef.current);
4099
4127
  }, [messages]);
4100
4128
  // Fetch more messages to make the scroll bar appear, infinity scroll is then handled in the handleScroll function.
4101
4129
  React.useEffect(() => {
@@ -4546,10 +4574,20 @@ const participantStateStringTrampoline$1 = (props, strings) => {
4546
4574
  };
4547
4575
 
4548
4576
  // Copyright (c) Microsoft Corporation.
4577
+ /**
4578
+ * @internal
4579
+ */
4580
+ const defaultPermissions = {
4581
+ cameraButton: true,
4582
+ microphoneButton: true,
4583
+ screenShare: true,
4584
+ removeParticipantButton: true
4585
+ };
4549
4586
  /**
4550
4587
  * @internal
4551
4588
  */
4552
4589
  const presenterPermissions = {
4590
+ role: 'Presenter',
4553
4591
  cameraButton: true,
4554
4592
  microphoneButton: true,
4555
4593
  screenShare: true,
@@ -4559,6 +4597,7 @@ const presenterPermissions = {
4559
4597
  * @internal
4560
4598
  */
4561
4599
  const consumerPermissions = {
4600
+ role: 'Consumer',
4562
4601
  cameraButton: false,
4563
4602
  microphoneButton: false,
4564
4603
  screenShare: false,
@@ -4568,6 +4607,7 @@ const consumerPermissions = {
4568
4607
  * @internal
4569
4608
  */
4570
4609
  const attendeePermissions = {
4610
+ role: 'Attendee',
4571
4611
  cameraButton: true,
4572
4612
  microphoneButton: true,
4573
4613
  screenShare: false,
@@ -4576,7 +4616,7 @@ const attendeePermissions = {
4576
4616
  /**
4577
4617
  * @internal
4578
4618
  */
4579
- const PermissionsContext = React.createContext(presenterPermissions);
4619
+ const PermissionsContext = React.createContext(defaultPermissions);
4580
4620
  /**
4581
4621
  * @internal
4582
4622
  */
@@ -4599,9 +4639,10 @@ const _getPermissions = (role) => {
4599
4639
  else if (role === 'Attendee') {
4600
4640
  return attendeePermissions;
4601
4641
  }
4602
- else {
4642
+ else if (role === 'Presenter') {
4603
4643
  return presenterPermissions;
4604
4644
  }
4645
+ return defaultPermissions;
4605
4646
  };
4606
4647
 
4607
4648
  // Copyright (c) Microsoft Corporation.
@@ -6362,11 +6403,17 @@ const VideoGallery = (props) => {
6362
6403
  lastVisibleParticipants: visibleAudioParticipants.current,
6363
6404
  maxDominantSpeakers: MAX_AUDIO_DOMINANT_SPEAKERS
6364
6405
  });
6406
+ /* @conditional-compile-remove(rooms) */
6407
+ const permissions = _usePermissions();
6365
6408
  /**
6366
6409
  * Utility function for memoized rendering of LocalParticipant.
6367
6410
  */
6368
6411
  const localVideoTile = React.useMemo(() => {
6369
6412
  var _a, _b;
6413
+ /* @conditional-compile-remove(rooms) */
6414
+ if (!permissions.cameraButton) {
6415
+ return undefined;
6416
+ }
6370
6417
  if (onRenderLocalVideoTile) {
6371
6418
  return onRenderLocalVideoTile(localParticipant);
6372
6419
  }
@@ -6394,7 +6441,8 @@ const VideoGallery = (props) => {
6394
6441
  strings.localVideoSelectedDescription,
6395
6442
  strings.displayNamePlaceholder,
6396
6443
  styles === null || styles === void 0 ? void 0 : styles.localVideo,
6397
- theme.effects.roundedCorner4
6444
+ theme.effects.roundedCorner4,
6445
+ /* @conditional-compile-remove(rooms) */ permissions.cameraButton
6398
6446
  ]);
6399
6447
  const defaultOnRenderVideoTile = React.useCallback((participant, isVideoParticipant) => {
6400
6448
  const remoteVideoStream = participant.videoStream;
@@ -6439,7 +6487,7 @@ const VideoGallery = (props) => {
6439
6487
  }
6440
6488
  };
6441
6489
  const horizontalGalleryTiles = createHorizontalGalleryTiles();
6442
- if (!shouldFloatLocalVideo && localParticipant) {
6490
+ if (!shouldFloatLocalVideo && localVideoTile) {
6443
6491
  gridTiles.push(localVideoTile);
6444
6492
  }
6445
6493
  const localScreenShareStreamComponent = React__default['default'].createElement(LocalScreenShare, { localParticipant: localParticipant });
@@ -6449,10 +6497,10 @@ const VideoGallery = (props) => {
6449
6497
  return (React__default['default'].createElement("div", { "data-ui-id": ids.videoGallery, ref: containerRef, className: react.mergeStyles(videoGalleryOuterDivStyle, styles === null || styles === void 0 ? void 0 : styles.root) },
6450
6498
  shouldFloatLocalVideo &&
6451
6499
  !shouldFloatNonDraggableLocalVideo &&
6452
- localParticipant &&
6500
+ localVideoTile &&
6453
6501
  (horizontalGalleryPresent ? (React__default['default'].createElement(react.Stack, { className: react.mergeStyles(localVideoTileContainerStyle(theme, isNarrow)) }, localVideoTile)) : (React__default['default'].createElement(_ModalClone, { isOpen: true, isModeless: true, dragOptions: DRAG_OPTIONS$1, styles: floatingLocalVideoModalStyle(theme, isNarrow), layerProps: { hostId: layerHostId }, maxDragPosition: modalMaxDragPosition, minDragPosition: modalMinDragPosition }, localVideoTile))),
6454
6502
  // When we use showCameraSwitcherInLocalPreview it disables dragging to allow keyboard navigation.
6455
- shouldFloatNonDraggableLocalVideo && localParticipant && remoteParticipants.length > 0 && (React__default['default'].createElement(react.Stack, { className: react.mergeStyles(localVideoTileWithControlsContainerStyle(theme, isNarrow), {
6503
+ shouldFloatNonDraggableLocalVideo && localVideoTile && remoteParticipants.length > 0 && (React__default['default'].createElement(react.Stack, { className: react.mergeStyles(localVideoTileWithControlsContainerStyle(theme, isNarrow), {
6456
6504
  boxShadow: theme.effects.elevation8,
6457
6505
  zIndex: LOCAL_VIDEO_TILE_ZINDEX
6458
6506
  }) }, localVideoTile)),
@@ -6675,9 +6723,9 @@ const ControlBarButton = (props) => {
6675
6723
  /**
6676
6724
  * This is a helper component to define and unify icon colors
6677
6725
  *
6678
- * @private
6726
+ * @internal
6679
6727
  */
6680
- const HighContrastAwareIcon = (props) => {
6728
+ const _HighContrastAwareIcon = (props) => {
6681
6729
  const { iconName, disabled } = props;
6682
6730
  const theme = useTheme();
6683
6731
  // setting colors for the icons using color from theme, so in dark mode or other accessibility modes, they have pre-defined contrast colors
@@ -6821,13 +6869,15 @@ const DevicesButton = (props) => {
6821
6869
  const localeStrings = useLocale$1().strings.devicesButton;
6822
6870
  const strings = Object.assign(Object.assign({}, localeStrings), props.strings);
6823
6871
  const devicesButtonMenu = (_a = props.menuProps) !== null && _a !== void 0 ? _a : generateDefaultDeviceMenuProps(Object.assign(Object.assign({}, props), { styles: (_b = props.styles) === null || _b === void 0 ? void 0 : _b.menuStyles }), strings);
6824
- const onRenderOptionsIcon = () => (React__default['default'].createElement(HighContrastAwareIcon, { disabled: props.disabled, iconName: "ControlButtonOptions" }));
6872
+ const onRenderOptionsIcon = () => {
6873
+ return React__default['default'].createElement(_HighContrastAwareIcon, { disabled: props.disabled, iconName: "ControlButtonOptions" });
6874
+ };
6825
6875
  return (React__default['default'].createElement(ControlBarButton, Object.assign({}, props, { menuProps: devicesButtonMenu, menuIconProps: { hidden: true }, onRenderIcon: onRenderIcon !== null && onRenderIcon !== void 0 ? onRenderIcon : onRenderOptionsIcon, strings: strings, labelKey: (_c = props.labelKey) !== null && _c !== void 0 ? _c : 'devicesButtonLabel' })));
6826
6876
  };
6827
6877
 
6828
6878
  // Copyright (c) Microsoft Corporation.
6829
6879
  // Licensed under the MIT license.
6830
- var __awaiter$r = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
6880
+ var __awaiter$t = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
6831
6881
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
6832
6882
  return new (P || (P = Promise))(function (resolve, reject) {
6833
6883
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -6855,8 +6905,8 @@ const CameraButton = (props) => {
6855
6905
  const strings = Object.assign(Object.assign({}, localeStrings), props.strings);
6856
6906
  const [announcerString, setAnnouncerString] = React.useState(undefined);
6857
6907
  const disabled = props.disabled || waitForCamera;
6858
- const onRenderCameraOnIcon = () => (React__default['default'].createElement(HighContrastAwareIcon, { disabled: disabled, iconName: "ControlButtonCameraOn" }));
6859
- const onRenderCameraOffIcon = () => (React__default['default'].createElement(HighContrastAwareIcon, { disabled: disabled, iconName: "ControlButtonCameraOff" }));
6908
+ const onRenderCameraOnIcon = () => (React__default['default'].createElement(_HighContrastAwareIcon, { disabled: disabled, iconName: "ControlButtonCameraOn" }));
6909
+ const onRenderCameraOffIcon = () => (React__default['default'].createElement(_HighContrastAwareIcon, { disabled: disabled, iconName: "ControlButtonCameraOff" }));
6860
6910
  if (waitForCamera && strings.tooltipVideoLoadingContent) {
6861
6911
  strings.tooltipDisabledContent = strings.tooltipVideoLoadingContent;
6862
6912
  }
@@ -6865,7 +6915,7 @@ const CameraButton = (props) => {
6865
6915
  const toggleAnnouncerString = React.useCallback((isCameraOn) => {
6866
6916
  setAnnouncerString(!isCameraOn ? strings.cameraActionTurnedOffAnnouncement : strings.cameraActionTurnedOnAnnouncement);
6867
6917
  }, [strings.cameraActionTurnedOffAnnouncement, strings.cameraActionTurnedOnAnnouncement]);
6868
- const onToggleClick = React.useCallback(() => __awaiter$r(void 0, void 0, void 0, function* () {
6918
+ const onToggleClick = React.useCallback(() => __awaiter$t(void 0, void 0, void 0, function* () {
6869
6919
  // Throttle click on camera, need to await onToggleCamera then allow another click
6870
6920
  if (onToggleCamera) {
6871
6921
  setWaitForCamera(true);
@@ -6997,7 +7047,7 @@ const lightThemeCallButtonStyles = {
6997
7047
 
6998
7048
  // Copyright (c) Microsoft Corporation.
6999
7049
  // Licensed under the MIT license.
7000
- var __awaiter$q = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
7050
+ var __awaiter$s = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
7001
7051
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
7002
7052
  return new (P || (P = Promise))(function (resolve, reject) {
7003
7053
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -7028,17 +7078,17 @@ const MicrophoneButton = (props) => {
7028
7078
  (isSplit && !((_c = props.microphones) === null || _c === void 0 ? void 0 : _c.length) && !((_d = props.speakers) === null || _d === void 0 ? void 0 : _d.length)) ||
7029
7079
  (!isSplit && props.microphones && ((_e = props.microphones) === null || _e === void 0 ? void 0 : _e.length) === 0);
7030
7080
  const onRenderMicOnIcon = () => {
7031
- return React__default['default'].createElement(HighContrastAwareIcon, { disabled: disabled, iconName: "ControlButtonMicOn" });
7081
+ return React__default['default'].createElement(_HighContrastAwareIcon, { disabled: disabled, iconName: "ControlButtonMicOn" });
7032
7082
  };
7033
7083
  const onRenderMicOffIcon = () => {
7034
- return React__default['default'].createElement(HighContrastAwareIcon, { disabled: disabled, iconName: "ControlButtonMicOff" });
7084
+ return React__default['default'].createElement(_HighContrastAwareIcon, { disabled: disabled, iconName: "ControlButtonMicOff" });
7035
7085
  };
7036
7086
  const isMicOn = props.checked;
7037
7087
  const splitButtonAriaString = isMicOn ? strings.onSplitButtonAriaLabel : strings.offSplitButtonAriaLabel;
7038
7088
  const toggleAnnouncerString = React.useCallback((isMicOn) => {
7039
7089
  setAnnouncerString(!isMicOn ? strings.microphoneActionTurnedOffAnnouncement : strings.microphoneActionTurnedOnAnnouncement);
7040
7090
  }, [strings.microphoneActionTurnedOffAnnouncement, strings.microphoneActionTurnedOnAnnouncement]);
7041
- const onToggleClick = React.useCallback(() => __awaiter$q(void 0, void 0, void 0, function* () {
7091
+ const onToggleClick = React.useCallback(() => __awaiter$s(void 0, void 0, void 0, function* () {
7042
7092
  if (onToggleMicrophone) {
7043
7093
  try {
7044
7094
  yield onToggleMicrophone();
@@ -7081,9 +7131,6 @@ const textContainerStyles = {
7081
7131
  */
7082
7132
  const iconPrimaryStyles = {
7083
7133
  root: {
7084
- position: 'absolute',
7085
- color: '#2B88D8',
7086
- transform: 'scale(2)',
7087
7134
  zIndex: 1,
7088
7135
  margin: 'auto'
7089
7136
  }
@@ -7091,11 +7138,12 @@ const iconPrimaryStyles = {
7091
7138
  /**
7092
7139
  * @internal
7093
7140
  */
7094
- const iconBackDropStyles = {
7095
- root: {
7096
- color: '#EFF6FC',
7097
- transform: 'scale(4)'
7098
- }
7141
+ const sparkleIconBackdropStyles = (theme) => {
7142
+ return {
7143
+ root: {
7144
+ color: theme.palette.themeLighterAlt
7145
+ }
7146
+ };
7099
7147
  };
7100
7148
  /**
7101
7149
  * @internal
@@ -7133,15 +7181,15 @@ const linkTextStyles$1 = {
7133
7181
  /* @conditional-compile-remove(call-readiness) */
7134
7182
  const DomainPermissionsContainer = (props) => {
7135
7183
  const { appName, onTroubleshootingClick, strings } = props;
7184
+ const theme = react.useTheme();
7136
7185
  return (React__default['default'].createElement(react.Stack, { style: { padding: '2rem', maxWidth: '25.375rem' } },
7137
- React__default['default'].createElement(react.Stack, { horizontal: true, style: { padding: '2rem 0' }, horizontalAlign: 'space-between' },
7186
+ React__default['default'].createElement(react.Stack, { horizontal: true, style: { paddingBottom: '1rem' }, horizontalAlign: 'space-between' },
7138
7187
  React__default['default'].createElement(react.Stack, { styles: iconContainerStyles, horizontalAlign: 'center' },
7139
- React__default['default'].createElement(react.Icon, { styles: iconPrimaryStyles, iconName: 'ControlButtonCameraOn' }),
7140
- React__default['default'].createElement(react.Icon, { styles: iconBackDropStyles, iconName: 'iconBackdrop' })),
7141
- React__default['default'].createElement(react.Icon, { styles: iconPrimaryStyles, iconName: 'Sparkle' }),
7188
+ React__default['default'].createElement(react.Icon, { styles: iconPrimaryStyles, iconName: 'DomainPermissionCamera' })),
7142
7189
  React__default['default'].createElement(react.Stack, { styles: iconContainerStyles, horizontalAlign: 'center' },
7143
- React__default['default'].createElement(react.Icon, { styles: iconPrimaryStyles, iconName: 'ControlButtonMicOn' }),
7144
- React__default['default'].createElement(react.Icon, { styles: iconBackDropStyles, iconName: 'iconBackdrop' }))),
7190
+ React__default['default'].createElement(react.Icon, { styles: sparkleIconBackdropStyles(theme), iconName: 'DomainPermissionsSparkle' })),
7191
+ React__default['default'].createElement(react.Stack, { styles: iconContainerStyles, horizontalAlign: 'center' },
7192
+ React__default['default'].createElement(react.Icon, { styles: iconPrimaryStyles, iconName: 'DomainPermissionMic' }))),
7145
7193
  React__default['default'].createElement(react.Stack, { styles: textContainerStyles },
7146
7194
  React__default['default'].createElement(react.Text, { styles: primaryTextStyles }, _formatString(strings.primaryText, { appName: appName })),
7147
7195
  React__default['default'].createElement(react.Text, { styles: secondaryTextStyles$2 }, strings.secondaryText),
@@ -7157,7 +7205,7 @@ const DomainPermissions = (props) => {
7157
7205
  /* @conditional-compile-remove(call-readiness) */
7158
7206
  const locale = useLocale$1().strings.DomainPermissions;
7159
7207
  /* @conditional-compile-remove(call-readiness) */
7160
- return React__default['default'].createElement(DomainPermissionsContainer, Object.assign({}, props, { strings: locale }));
7208
+ return React__default['default'].createElement(DomainPermissionsContainer, Object.assign({}, props, { strings: props.strings ? props.strings : locale }));
7161
7209
  };
7162
7210
 
7163
7211
  // Copyright (c) Microsoft Corporation.
@@ -7176,7 +7224,7 @@ const ParticipantsButton = (props) => {
7176
7224
  var _a, _b, _c, _d;
7177
7225
  const { callInvitationURL, styles, onMuteAll, onRenderIcon, onRenderParticipantList, participants, myUserId, excludeMe, onRenderParticipant, onRenderAvatar, onRemoveParticipant, onFetchParticipantMenuItems, showParticipantOverflowTooltip } = props;
7178
7226
  const disabled = props.disabled;
7179
- const onRenderPeopleIcon = () => (React__default['default'].createElement(HighContrastAwareIcon, { disabled: disabled, iconName: "ControlButtonParticipants" }));
7227
+ const onRenderPeopleIcon = () => (React__default['default'].createElement(_HighContrastAwareIcon, { disabled: disabled, iconName: "ControlButtonParticipants" }));
7180
7228
  const ids = useIdentifiers();
7181
7229
  const onMuteAllCallback = React.useCallback(() => {
7182
7230
  if (onMuteAll) {
@@ -7319,8 +7367,8 @@ const ScreenShareButton = (props) => {
7319
7367
  const strings = Object.assign(Object.assign({}, localeStrings), props.strings);
7320
7368
  const theme = react.useTheme();
7321
7369
  const styles = screenshareButtonStyles(theme);
7322
- const onRenderScreenShareOnIcon = () => (React__default['default'].createElement(HighContrastAwareIcon, { disabled: props.disabled, iconName: "ControlButtonScreenShareStop" }));
7323
- const onRenderScreenShareOffIcon = () => (React__default['default'].createElement(HighContrastAwareIcon, { disabled: props.disabled, iconName: "ControlButtonScreenShareStart" }));
7370
+ const onRenderScreenShareOnIcon = () => (React__default['default'].createElement(_HighContrastAwareIcon, { disabled: props.disabled, iconName: "ControlButtonScreenShareStop" }));
7371
+ const onRenderScreenShareOffIcon = () => (React__default['default'].createElement(_HighContrastAwareIcon, { disabled: props.disabled, iconName: "ControlButtonScreenShareStart" }));
7324
7372
  return (React__default['default'].createElement(ControlBarButton, Object.assign({}, props, { className: react.mergeStyles(styles, props.styles), onClick: (_a = props.onToggleScreenShare) !== null && _a !== void 0 ? _a : props.onClick, onRenderOnIcon: (_b = props.onRenderOnIcon) !== null && _b !== void 0 ? _b : onRenderScreenShareOnIcon, onRenderOffIcon: (_c = props.onRenderOffIcon) !== null && _c !== void 0 ? _c : onRenderScreenShareOffIcon, strings: strings, labelKey: (_d = props.labelKey) !== null && _d !== void 0 ? _d : 'screenShareButtonLabel', disabled: props.disabled })));
7325
7373
  };
7326
7374
  const screenshareButtonStyles = (theme) => ({
@@ -7904,7 +7952,11 @@ const iconButtonStyles = (theme) => {
7904
7952
  color: `${theme.palette.black}`
7905
7953
  },
7906
7954
  icon: {
7907
- height: 'auto'
7955
+ height: 'auto',
7956
+ // Needed to keep the icon vertically centered.
7957
+ '> span': {
7958
+ display: 'flex'
7959
+ }
7908
7960
  }
7909
7961
  };
7910
7962
  };
@@ -8016,7 +8068,7 @@ function useLongPress(onClick, onLongPress, isMobile) {
8016
8068
 
8017
8069
  // Copyright (c) Microsoft Corporation.
8018
8070
  // Licensed under the MIT license.
8019
- var __awaiter$p = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
8071
+ var __awaiter$r = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
8020
8072
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
8021
8073
  return new (P || (P = Promise))(function (resolve, reject) {
8022
8074
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -8057,10 +8109,10 @@ const DialpadButton = (props) => {
8057
8109
  var _a, _b, _c, _d;
8058
8110
  const theme = react.useTheme();
8059
8111
  const { digit, index, onClick, onLongPress, isMobile = false } = props;
8060
- const clickFunction = React.useCallback(() => __awaiter$p(void 0, void 0, void 0, function* () {
8112
+ const clickFunction = React.useCallback(() => __awaiter$r(void 0, void 0, void 0, function* () {
8061
8113
  onClick(digit, index);
8062
8114
  }), [digit, index, onClick]);
8063
- const longPressFunction = React.useCallback(() => __awaiter$p(void 0, void 0, void 0, function* () {
8115
+ const longPressFunction = React.useCallback(() => __awaiter$r(void 0, void 0, void 0, function* () {
8064
8116
  onLongPress(digit, index);
8065
8117
  }), [digit, index, onLongPress]);
8066
8118
  const { handlers } = useLongPress(clickFunction, longPressFunction, isMobile);
@@ -8180,10 +8232,10 @@ const sanitizeInput = (input) => {
8180
8232
  const HoldButton = (props) => {
8181
8233
  const { onToggleHold, strings } = props;
8182
8234
  const onRenderHoldIcon = () => {
8183
- return React__default['default'].createElement(HighContrastAwareIcon, { disabled: props.disabled, iconName: "HoldCallButton" });
8235
+ return React__default['default'].createElement(_HighContrastAwareIcon, { disabled: props.disabled, iconName: "HoldCallButton" });
8184
8236
  };
8185
8237
  const onRenderResumeIcon = () => {
8186
- return React__default['default'].createElement(HighContrastAwareIcon, { disabled: props.disabled, iconName: "ResumeCall" });
8238
+ return React__default['default'].createElement(_HighContrastAwareIcon, { disabled: props.disabled, iconName: "ResumeCall" });
8187
8239
  };
8188
8240
  return (React__default['default'].createElement(ControlBarButton, Object.assign({}, props, { strings: strings, onClick: onToggleHold !== null && onToggleHold !== void 0 ? onToggleHold : props.onClick, onRenderOnIcon: onRenderResumeIcon, onRenderOffIcon: onRenderHoldIcon })));
8189
8241
  };
@@ -8263,6 +8315,25 @@ const UnsupportedBrowser = (props) => {
8263
8315
  return React__default['default'].createElement(UnsupportedBrowserContainer, Object.assign({}, props, { strings: strings }));
8264
8316
  };
8265
8317
 
8318
+ // Copyright (c) Microsoft Corporation.
8319
+ /**
8320
+ * A dropdown to trigger device permission prompt
8321
+ *
8322
+ * @internal
8323
+ */
8324
+ const _DevicePermissionDropdown = (props) => {
8325
+ const { icon, onClickActionButton, strings, options, styles } = props;
8326
+ const onRenderPlaceholder = () => {
8327
+ return (React__default['default'].createElement(react.Stack, { horizontal: true, verticalAlign: "center" },
8328
+ icon,
8329
+ React__default['default'].createElement(react.Text, null, strings === null || strings === void 0 ? void 0 : strings.placeHolderText)));
8330
+ };
8331
+ const onRenderCaretDown = () => {
8332
+ return React__default['default'].createElement(react.Text, null, strings === null || strings === void 0 ? void 0 : strings.actionButtonContent);
8333
+ };
8334
+ return (React__default['default'].createElement(react.Dropdown, { placeholder: strings === null || strings === void 0 ? void 0 : strings.placeHolderText, label: strings === null || strings === void 0 ? void 0 : strings.label, onRenderPlaceholder: onRenderPlaceholder, onRenderCaretDown: onRenderCaretDown, onClick: onClickActionButton, options: options !== null && options !== void 0 ? options : [], styles: styles }));
8335
+ };
8336
+
8266
8337
  // Copyright (c) Microsoft Corporation.
8267
8338
  // Licensed under the MIT license.
8268
8339
  /**
@@ -8705,7 +8776,7 @@ const findConditionalCompiledSelector = (component) => {
8705
8776
 
8706
8777
  // Copyright (c) Microsoft Corporation.
8707
8778
  // Licensed under the MIT license.
8708
- var __awaiter$o = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
8779
+ var __awaiter$q = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
8709
8780
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
8710
8781
  return new (P || (P = Promise))(function (resolve, reject) {
8711
8782
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -8728,35 +8799,35 @@ const createDefaultChatHandlers = memoizeOne__default['default']((chatClient, ch
8728
8799
  let messageIterator = undefined;
8729
8800
  let readReceiptIterator = undefined;
8730
8801
  return {
8731
- onSendMessage: (content, options) => __awaiter$o(void 0, void 0, void 0, function* () {
8802
+ onSendMessage: (content, options) => __awaiter$q(void 0, void 0, void 0, function* () {
8732
8803
  const sendMessageRequest = {
8733
8804
  content,
8734
8805
  senderDisplayName: chatClient.getState().displayName
8735
8806
  };
8736
8807
  yield chatThreadClient.sendMessage(sendMessageRequest, options);
8737
8808
  }),
8738
- onUpdateMessage: (messageId, content, metadata, options) => __awaiter$o(void 0, void 0, void 0, function* () {
8809
+ onUpdateMessage: (messageId, content, metadata, options) => __awaiter$q(void 0, void 0, void 0, function* () {
8739
8810
  const updatedMetadata = metadata ? Object.assign({}, metadata) : {};
8740
8811
  updatedMetadata['fileSharingMetadata'] = JSON.stringify((options === null || options === void 0 ? void 0 : options.attachedFilesMetadata) || []);
8741
8812
  yield chatThreadClient.updateMessage(messageId, { content, metadata: updatedMetadata });
8742
8813
  }),
8743
- onDeleteMessage: (messageId) => __awaiter$o(void 0, void 0, void 0, function* () {
8814
+ onDeleteMessage: (messageId) => __awaiter$q(void 0, void 0, void 0, function* () {
8744
8815
  yield chatThreadClient.deleteMessage(messageId);
8745
8816
  }),
8746
8817
  // This handler is designed for chatThread to consume
8747
- onMessageSeen: (chatMessageId) => __awaiter$o(void 0, void 0, void 0, function* () {
8818
+ onMessageSeen: (chatMessageId) => __awaiter$q(void 0, void 0, void 0, function* () {
8748
8819
  yield chatThreadClient.sendReadReceipt({ chatMessageId });
8749
8820
  }),
8750
- onTyping: () => __awaiter$o(void 0, void 0, void 0, function* () {
8821
+ onTyping: () => __awaiter$q(void 0, void 0, void 0, function* () {
8751
8822
  yield chatThreadClient.sendTypingNotification();
8752
8823
  }),
8753
- onRemoveParticipant: (userId) => __awaiter$o(void 0, void 0, void 0, function* () {
8824
+ onRemoveParticipant: (userId) => __awaiter$q(void 0, void 0, void 0, function* () {
8754
8825
  yield chatThreadClient.removeParticipant(fromFlatCommunicationIdentifier(userId));
8755
8826
  }),
8756
- updateThreadTopicName: (topicName) => __awaiter$o(void 0, void 0, void 0, function* () {
8827
+ updateThreadTopicName: (topicName) => __awaiter$q(void 0, void 0, void 0, function* () {
8757
8828
  yield chatThreadClient.updateTopic(topicName);
8758
8829
  }),
8759
- onLoadPreviousChatMessages: (messagesToLoad) => __awaiter$o(void 0, void 0, void 0, function* () {
8830
+ onLoadPreviousChatMessages: (messagesToLoad) => __awaiter$q(void 0, void 0, void 0, function* () {
8760
8831
  var _a, _b, _c;
8761
8832
  if (messageIterator === undefined) {
8762
8833
  // Lazy definition so that errors in the method call are reported correctly.
@@ -9458,7 +9529,7 @@ const findSelector = (component) => {
9458
9529
 
9459
9530
  // Copyright (c) Microsoft Corporation.
9460
9531
  // Licensed under the MIT license.
9461
- var __awaiter$n = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
9532
+ var __awaiter$p = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
9462
9533
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
9463
9534
  return new (P || (P = Promise))(function (resolve, reject) {
9464
9535
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -9507,10 +9578,10 @@ class ProxyDeviceManager {
9507
9578
  this.selectCamera = (videoDeviceInfo) => {
9508
9579
  this._context.setDeviceManagerSelectedCamera(videoDeviceInfo);
9509
9580
  };
9510
- this.videoDevicesUpdated = () => __awaiter$n(this, void 0, void 0, function* () {
9581
+ this.videoDevicesUpdated = () => __awaiter$p(this, void 0, void 0, function* () {
9511
9582
  this._context.setDeviceManagerCameras(dedupeById(yield this._deviceManager.getCameras()));
9512
9583
  });
9513
- this.audioDevicesUpdated = () => __awaiter$n(this, void 0, void 0, function* () {
9584
+ this.audioDevicesUpdated = () => __awaiter$p(this, void 0, void 0, function* () {
9514
9585
  this._context.setDeviceManagerMicrophones(dedupeById(yield this._deviceManager.getMicrophones()));
9515
9586
  this._context.setDeviceManagerSpeakers(dedupeById(yield this._deviceManager.getSpeakers()));
9516
9587
  });
@@ -9713,7 +9784,7 @@ class CallIdHistory {
9713
9784
 
9714
9785
  // Copyright (c) Microsoft Corporation.
9715
9786
  // Licensed under the MIT license.
9716
- var __awaiter$m = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
9787
+ var __awaiter$o = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
9717
9788
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
9718
9789
  return new (P || (P = Promise))(function (resolve, reject) {
9719
9790
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -10198,7 +10269,7 @@ class CallContext$1 {
10198
10269
  * @throws CallError. Exceptions thrown from `f` are tagged with the failed `target.
10199
10270
  */
10200
10271
  withAsyncErrorTeedToState(action, target) {
10201
- return (...args) => __awaiter$m(this, void 0, void 0, function* () {
10272
+ return (...args) => __awaiter$o(this, void 0, void 0, function* () {
10202
10273
  try {
10203
10274
  return yield action(...args);
10204
10275
  }
@@ -10262,7 +10333,7 @@ const findOldestCallEnded = (calls) => {
10262
10333
 
10263
10334
  // Copyright (c) Microsoft Corporation.
10264
10335
  // Licensed under the MIT license.
10265
- var __awaiter$l = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
10336
+ var __awaiter$n = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
10266
10337
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
10267
10338
  return new (P || (P = Promise))(function (resolve, reject) {
10268
10339
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -10282,63 +10353,63 @@ class ProxyCall {
10282
10353
  switch (prop) {
10283
10354
  case 'mute': {
10284
10355
  return this._context.withAsyncErrorTeedToState(function (...args) {
10285
- return __awaiter$l(this, void 0, void 0, function* () {
10356
+ return __awaiter$n(this, void 0, void 0, function* () {
10286
10357
  return yield target.mute(...args);
10287
10358
  });
10288
10359
  }, 'Call.mute');
10289
10360
  }
10290
10361
  case 'unmute': {
10291
10362
  return this._context.withAsyncErrorTeedToState(function (...args) {
10292
- return __awaiter$l(this, void 0, void 0, function* () {
10363
+ return __awaiter$n(this, void 0, void 0, function* () {
10293
10364
  return yield target.unmute(...args);
10294
10365
  });
10295
10366
  }, 'Call.unmute');
10296
10367
  }
10297
10368
  case 'startVideo': {
10298
10369
  return this._context.withAsyncErrorTeedToState(function (...args) {
10299
- return __awaiter$l(this, void 0, void 0, function* () {
10370
+ return __awaiter$n(this, void 0, void 0, function* () {
10300
10371
  return yield target.startVideo(...args);
10301
10372
  });
10302
10373
  }, 'Call.startVideo');
10303
10374
  }
10304
10375
  case 'stopVideo': {
10305
10376
  return this._context.withAsyncErrorTeedToState(function (...args) {
10306
- return __awaiter$l(this, void 0, void 0, function* () {
10377
+ return __awaiter$n(this, void 0, void 0, function* () {
10307
10378
  return yield target.stopVideo(...args);
10308
10379
  });
10309
10380
  }, 'Call.stopVideo');
10310
10381
  }
10311
10382
  case 'startScreenSharing': {
10312
10383
  return this._context.withAsyncErrorTeedToState(function (...args) {
10313
- return __awaiter$l(this, void 0, void 0, function* () {
10384
+ return __awaiter$n(this, void 0, void 0, function* () {
10314
10385
  return yield target.startScreenSharing(...args);
10315
10386
  });
10316
10387
  }, 'Call.startScreenSharing');
10317
10388
  }
10318
10389
  case 'stopScreenSharing': {
10319
10390
  return this._context.withAsyncErrorTeedToState(function (...args) {
10320
- return __awaiter$l(this, void 0, void 0, function* () {
10391
+ return __awaiter$n(this, void 0, void 0, function* () {
10321
10392
  return yield target.stopScreenSharing(...args);
10322
10393
  });
10323
10394
  }, 'Call.stopScreenSharing');
10324
10395
  }
10325
10396
  case 'hold': {
10326
10397
  return this._context.withAsyncErrorTeedToState(function (...args) {
10327
- return __awaiter$l(this, void 0, void 0, function* () {
10398
+ return __awaiter$n(this, void 0, void 0, function* () {
10328
10399
  return yield target.hold(...args);
10329
10400
  });
10330
10401
  }, 'Call.hold');
10331
10402
  }
10332
10403
  case 'resume': {
10333
10404
  return this._context.withAsyncErrorTeedToState(function (...args) {
10334
- return __awaiter$l(this, void 0, void 0, function* () {
10405
+ return __awaiter$n(this, void 0, void 0, function* () {
10335
10406
  return yield target.resume(...args);
10336
10407
  });
10337
10408
  }, 'Call.resume');
10338
10409
  }
10339
10410
  case 'addParticipant': {
10340
10411
  return this._context.withAsyncErrorTeedToState(function (...args) {
10341
- return __awaiter$l(this, void 0, void 0, function* () {
10412
+ return __awaiter$n(this, void 0, void 0, function* () {
10342
10413
  return yield target.addParticipant(...args);
10343
10414
  });
10344
10415
  }, 'Call.addParticipant');
@@ -10546,7 +10617,7 @@ class RemoteVideoStreamSubscriber {
10546
10617
 
10547
10618
  // Copyright (c) Microsoft Corporation.
10548
10619
  // Licensed under the MIT license.
10549
- var __awaiter$k = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
10620
+ var __awaiter$m = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
10550
10621
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
10551
10622
  return new (P || (P = Promise))(function (resolve, reject) {
10552
10623
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -10556,7 +10627,7 @@ var __awaiter$k = (window && window.__awaiter) || function (thisArg, _arguments,
10556
10627
  });
10557
10628
  };
10558
10629
  function createViewRemoteVideo(context, internalContext, callId, participantId, stream, options) {
10559
- return __awaiter$k(this, void 0, void 0, function* () {
10630
+ return __awaiter$m(this, void 0, void 0, function* () {
10560
10631
  // Render RemoteVideoStream that is part of a Call
10561
10632
  const streamId = stream.id;
10562
10633
  let participantKey;
@@ -10664,7 +10735,7 @@ function createViewRemoteVideo(context, internalContext, callId, participantId,
10664
10735
  });
10665
10736
  }
10666
10737
  function createViewLocalVideo(context, internalContext, callId, options) {
10667
- return __awaiter$k(this, void 0, void 0, function* () {
10738
+ return __awaiter$m(this, void 0, void 0, function* () {
10668
10739
  _logEvent(callingStatefulLogger, {
10669
10740
  name: EventNames.START_LOCAL_STREAM_RENDERING,
10670
10741
  level: 'info',
@@ -10780,7 +10851,7 @@ function createViewLocalVideo(context, internalContext, callId, options) {
10780
10851
  });
10781
10852
  }
10782
10853
  function createViewUnparentedVideo(context, internalContext, stream, options) {
10783
- return __awaiter$k(this, void 0, void 0, function* () {
10854
+ return __awaiter$m(this, void 0, void 0, function* () {
10784
10855
  const renderInfo = internalContext.getUnparentedRenderInfo(stream);
10785
10856
  if (renderInfo && renderInfo.status === 'Rendered') {
10786
10857
  console.warn('Unparented LocalVideoStream is already rendered');
@@ -11408,7 +11479,7 @@ class CallSubscriber {
11408
11479
 
11409
11480
  // Copyright (c) Microsoft Corporation.
11410
11481
  // Licensed under the MIT license.
11411
- var __awaiter$j = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
11482
+ var __awaiter$l = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
11412
11483
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
11413
11484
  return new (P || (P = Promise))(function (resolve, reject) {
11414
11485
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -11428,14 +11499,14 @@ class ProxyIncomingCall {
11428
11499
  switch (prop) {
11429
11500
  case 'accept': {
11430
11501
  return this._context.withAsyncErrorTeedToState(function (...args) {
11431
- return __awaiter$j(this, void 0, void 0, function* () {
11502
+ return __awaiter$l(this, void 0, void 0, function* () {
11432
11503
  return yield target.accept(...args);
11433
11504
  });
11434
11505
  }, 'IncomingCall.accept');
11435
11506
  }
11436
11507
  case 'reject': {
11437
11508
  return this._context.withAsyncErrorTeedToState(function (...args) {
11438
- return __awaiter$j(this, void 0, void 0, function* () {
11509
+ return __awaiter$l(this, void 0, void 0, function* () {
11439
11510
  return yield target.reject(...args);
11440
11511
  });
11441
11512
  }, 'IncomingCall.reject');
@@ -11483,6 +11554,16 @@ class IncomingCallSubscriber {
11483
11554
  }
11484
11555
 
11485
11556
  // Copyright (c) Microsoft Corporation.
11557
+ // Licensed under the MIT license.
11558
+ (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
11559
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
11560
+ return new (P || (P = Promise))(function (resolve, reject) {
11561
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
11562
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
11563
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
11564
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
11565
+ });
11566
+ };
11486
11567
  /**
11487
11568
  * ProxyCallAgent proxies CallAgent and saves any returned state in the given context. It will subscribe to all state
11488
11569
  * updates in the CallAgent and in the contained Calls and RemoteParticipants. When dispose is called it will
@@ -11636,10 +11717,10 @@ class ProxyCallAgent {
11636
11717
  };
11637
11718
  }
11638
11719
  case 'dispose': {
11720
+ /* @conditional-compile-remove(calling-beta-sdk) */
11639
11721
  return () => {
11640
- return target.dispose().then(() => {
11641
- this.unsubscribe();
11642
- });
11722
+ target.dispose();
11723
+ this.unsubscribe();
11643
11724
  };
11644
11725
  }
11645
11726
  /**
@@ -11773,7 +11854,7 @@ class InternalCallContext {
11773
11854
 
11774
11855
  // Copyright (c) Microsoft Corporation.
11775
11856
  // Licensed under the MIT license.
11776
- var __awaiter$i = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
11857
+ var __awaiter$k = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
11777
11858
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
11778
11859
  return new (P || (P = Promise))(function (resolve, reject) {
11779
11860
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -11795,7 +11876,7 @@ class ProxyCallClient {
11795
11876
  get(target, prop) {
11796
11877
  switch (prop) {
11797
11878
  case 'createCallAgent': {
11798
- return this._context.withAsyncErrorTeedToState((...args) => __awaiter$i(this, void 0, void 0, function* () {
11879
+ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$k(this, void 0, void 0, function* () {
11799
11880
  // createCallAgent will throw an exception if the previous callAgent was not disposed. If the previous
11800
11881
  // callAgent was disposed then it would have unsubscribed to events so we can just create a new declarative
11801
11882
  // callAgent if the createCallAgent succeeds.
@@ -11808,7 +11889,7 @@ class ProxyCallClient {
11808
11889
  }), 'CallClient.createCallAgent');
11809
11890
  }
11810
11891
  case 'getDeviceManager': {
11811
- return this._context.withAsyncErrorTeedToState(() => __awaiter$i(this, void 0, void 0, function* () {
11892
+ return this._context.withAsyncErrorTeedToState(() => __awaiter$k(this, void 0, void 0, function* () {
11812
11893
  // As of writing, the SDK always returns the same instance of DeviceManager so we keep a reference of
11813
11894
  // DeviceManager and if it does not change we return the cached DeclarativeDeviceManager. If it does not we'll
11814
11895
  // throw an error that indicate we need to fix this issue as our implementation has diverged from the SDK.
@@ -11931,7 +12012,7 @@ const chatStatefulLogger = logger.createClientLogger('communication-react:chat-s
11931
12012
 
11932
12013
  // Copyright (c) Microsoft Corporation.
11933
12014
  // Licensed under the MIT license.
11934
- var __awaiter$h = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
12015
+ var __awaiter$j = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
11935
12016
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
11936
12017
  return new (P || (P = Promise))(function (resolve, reject) {
11937
12018
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -12206,7 +12287,7 @@ class ChatContext$1 {
12206
12287
  * @throws ChatError. Exceptions thrown from `f` are tagged with the failed `target.
12207
12288
  */
12208
12289
  withAsyncErrorTeedToState(f, target) {
12209
- return (...args) => __awaiter$h(this, void 0, void 0, function* () {
12290
+ return (...args) => __awaiter$j(this, void 0, void 0, function* () {
12210
12291
  try {
12211
12292
  return yield f(...args);
12212
12293
  }
@@ -12313,7 +12394,7 @@ const convertChatMessage = (message, status = 'delivered', clientMessageId) => {
12313
12394
 
12314
12395
  // Copyright (c) Microsoft Corporation.
12315
12396
  // Licensed under the MIT license.
12316
- var __awaiter$g = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
12397
+ var __awaiter$i = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
12317
12398
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
12318
12399
  return new (P || (P = Promise))(function (resolve, reject) {
12319
12400
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -12397,7 +12478,7 @@ class EventSubscriber {
12397
12478
  this.fetchLastParticipantMessage(event.threadId, 'participantAdded');
12398
12479
  };
12399
12480
  // This is a hot fix that no participant message is received for onChatMessageReceived event, which should be handled by JS SDK
12400
- this.fetchLastParticipantMessage = (threadId, actionType) => __awaiter$g(this, void 0, void 0, function* () {
12481
+ this.fetchLastParticipantMessage = (threadId, actionType) => __awaiter$i(this, void 0, void 0, function* () {
12401
12482
  var e_1, _a;
12402
12483
  try {
12403
12484
  for (var _b = __asyncValues$1(this.chatClient
@@ -12483,7 +12564,7 @@ class EventSubscriber {
12483
12564
 
12484
12565
  // Copyright (c) Microsoft Corporation.
12485
12566
  // Licensed under the MIT license.
12486
- var __awaiter$f = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
12567
+ var __awaiter$h = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
12487
12568
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
12488
12569
  return new (P || (P = Promise))(function (resolve, reject) {
12489
12570
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -12505,7 +12586,7 @@ const createDecoratedIterator = (iteratorCreator, context, decorateFn) => {
12505
12586
  const threadsIterator = iteratorCreator(...args);
12506
12587
  return {
12507
12588
  next() {
12508
- return __awaiter$f(this, void 0, void 0, function* () {
12589
+ return __awaiter$h(this, void 0, void 0, function* () {
12509
12590
  const result = yield threadsIterator.next();
12510
12591
  if (!result.done && result.value) {
12511
12592
  decorateFn(result.value, context);
@@ -12520,7 +12601,7 @@ const createDecoratedIterator = (iteratorCreator, context, decorateFn) => {
12520
12601
  const pages = threadsIterator.byPage(settings);
12521
12602
  return {
12522
12603
  next() {
12523
- return __awaiter$f(this, void 0, void 0, function* () {
12604
+ return __awaiter$h(this, void 0, void 0, function* () {
12524
12605
  const result = yield pages.next();
12525
12606
  const page = result.value;
12526
12607
  if (!result.done && result.value) {
@@ -12604,7 +12685,7 @@ const createDecoratedListParticipants = (chatThreadClient, context) => {
12604
12685
 
12605
12686
  // Copyright (c) Microsoft Corporation.
12606
12687
  // Licensed under the MIT license.
12607
- var __awaiter$e = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
12688
+ var __awaiter$g = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
12608
12689
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
12609
12690
  return new (P || (P = Promise))(function (resolve, reject) {
12610
12691
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -12623,14 +12704,14 @@ class ProxyChatThreadClient {
12623
12704
  return createDecoratedListMessages(chatThreadClient, this._context);
12624
12705
  }
12625
12706
  case 'getMessage': {
12626
- return this._context.withAsyncErrorTeedToState((...args) => __awaiter$e(this, void 0, void 0, function* () {
12707
+ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$g(this, void 0, void 0, function* () {
12627
12708
  const message = yield chatThreadClient.getMessage(...args);
12628
12709
  this._context.setChatMessage(chatThreadClient.threadId, convertChatMessage(message));
12629
12710
  return message;
12630
12711
  }), 'ChatThreadClient.getMessage');
12631
12712
  }
12632
12713
  case 'sendMessage': {
12633
- return this._context.withAsyncErrorTeedToState((...args) => __awaiter$e(this, void 0, void 0, function* () {
12714
+ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$g(this, void 0, void 0, function* () {
12634
12715
  // Retry logic?
12635
12716
  const [request, options] = args;
12636
12717
  const { content } = request;
@@ -12670,7 +12751,7 @@ class ProxyChatThreadClient {
12670
12751
  }), 'ChatThreadClient.sendMessage');
12671
12752
  }
12672
12753
  case 'addParticipants': {
12673
- return this._context.withAsyncErrorTeedToState((...args) => __awaiter$e(this, void 0, void 0, function* () {
12754
+ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$g(this, void 0, void 0, function* () {
12674
12755
  const result = yield chatThreadClient.addParticipants(...args);
12675
12756
  const [addRequest] = args;
12676
12757
  const participantsToAdd = addRequest.participants;
@@ -12679,7 +12760,7 @@ class ProxyChatThreadClient {
12679
12760
  }), 'ChatThreadClient.addParticipants');
12680
12761
  }
12681
12762
  case 'deleteMessage': {
12682
- return this._context.withAsyncErrorTeedToState((...args) => __awaiter$e(this, void 0, void 0, function* () {
12763
+ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$g(this, void 0, void 0, function* () {
12683
12764
  // DeleteMessage is able to either delete local one(for failed message) or synced message
12684
12765
  const [messageId] = args;
12685
12766
  if (this._context.deleteLocalMessage(chatThreadClient.threadId, messageId)) {
@@ -12697,7 +12778,7 @@ class ProxyChatThreadClient {
12697
12778
  return createDecoratedListReadReceipts(chatThreadClient, this._context);
12698
12779
  }
12699
12780
  case 'removeParticipant': {
12700
- return this._context.withAsyncErrorTeedToState((...args) => __awaiter$e(this, void 0, void 0, function* () {
12781
+ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$g(this, void 0, void 0, function* () {
12701
12782
  const result = yield chatThreadClient.removeParticipant(...args);
12702
12783
  const [removeIdentifier] = args;
12703
12784
  this._context.deleteParticipant(chatThreadClient.threadId, communicationCommon.getIdentifierKind(removeIdentifier));
@@ -12705,7 +12786,7 @@ class ProxyChatThreadClient {
12705
12786
  }), 'ChatThreadClient.removeParticipant');
12706
12787
  }
12707
12788
  case 'updateMessage': {
12708
- return this._context.withAsyncErrorTeedToState((...args) => __awaiter$e(this, void 0, void 0, function* () {
12789
+ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$g(this, void 0, void 0, function* () {
12709
12790
  const result = yield chatThreadClient.updateMessage(...args);
12710
12791
  const [messageId, updateOption] = args;
12711
12792
  this._context.updateChatMessageContent(chatThreadClient.threadId, messageId, updateOption === null || updateOption === void 0 ? void 0 : updateOption.content);
@@ -12713,7 +12794,7 @@ class ProxyChatThreadClient {
12713
12794
  }), 'ChatThreadClient.updateMessage');
12714
12795
  }
12715
12796
  case 'updateTopic': {
12716
- return this._context.withAsyncErrorTeedToState((...args) => __awaiter$e(this, void 0, void 0, function* () {
12797
+ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$g(this, void 0, void 0, function* () {
12717
12798
  const result = yield chatThreadClient.updateTopic(...args);
12718
12799
  const [topic] = args;
12719
12800
  this._context.updateThreadTopic(chatThreadClient.threadId, topic);
@@ -12721,7 +12802,7 @@ class ProxyChatThreadClient {
12721
12802
  }), 'ChatThreadClient.updateTopic');
12722
12803
  }
12723
12804
  case 'getProperties': {
12724
- return this._context.withAsyncErrorTeedToState((...args) => __awaiter$e(this, void 0, void 0, function* () {
12805
+ return this._context.withAsyncErrorTeedToState((...args) => __awaiter$g(this, void 0, void 0, function* () {
12725
12806
  const result = yield chatThreadClient.getProperties(...args);
12726
12807
  this._context.updateThread(chatThreadClient.threadId, result);
12727
12808
  return result;
@@ -12758,7 +12839,7 @@ const createDecoratedListThreads = (chatClient, context) => {
12758
12839
 
12759
12840
  // Copyright (c) Microsoft Corporation.
12760
12841
  // Licensed under the MIT license.
12761
- var __awaiter$d = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
12842
+ var __awaiter$f = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
12762
12843
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
12763
12844
  return new (P || (P = Promise))(function (resolve, reject) {
12764
12845
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -12777,7 +12858,7 @@ const proxyChatClient = {
12777
12858
  switch (prop) {
12778
12859
  case 'createChatThread': {
12779
12860
  return context.withAsyncErrorTeedToState(function (...args) {
12780
- return __awaiter$d(this, void 0, void 0, function* () {
12861
+ return __awaiter$f(this, void 0, void 0, function* () {
12781
12862
  const result = yield chatClient.createChatThread(...args);
12782
12863
  const thread = result.chatThread;
12783
12864
  if (thread) {
@@ -12790,7 +12871,7 @@ const proxyChatClient = {
12790
12871
  }
12791
12872
  case 'deleteChatThread': {
12792
12873
  return context.withAsyncErrorTeedToState(function (...args) {
12793
- return __awaiter$d(this, void 0, void 0, function* () {
12874
+ return __awaiter$f(this, void 0, void 0, function* () {
12794
12875
  const result = yield chatClient.deleteChatThread(...args);
12795
12876
  context.deleteThread(args[0]);
12796
12877
  return result;
@@ -12810,7 +12891,7 @@ const proxyChatClient = {
12810
12891
  }
12811
12892
  case 'startRealtimeNotifications': {
12812
12893
  return context.withAsyncErrorTeedToState(function (...args) {
12813
- return __awaiter$d(this, void 0, void 0, function* () {
12894
+ return __awaiter$f(this, void 0, void 0, function* () {
12814
12895
  const ret = yield chatClient.startRealtimeNotifications(...args);
12815
12896
  if (!receiver.eventSubscriber) {
12816
12897
  receiver.eventSubscriber = new EventSubscriber(chatClient, context);
@@ -12821,7 +12902,7 @@ const proxyChatClient = {
12821
12902
  }
12822
12903
  case 'stopRealtimeNotifications': {
12823
12904
  return context.withAsyncErrorTeedToState(function (...args) {
12824
- return __awaiter$d(this, void 0, void 0, function* () {
12905
+ return __awaiter$f(this, void 0, void 0, function* () {
12825
12906
  const ret = yield chatClient.stopRealtimeNotifications(...args);
12826
12907
  if (receiver.eventSubscriber) {
12827
12908
  receiver.eventSubscriber.unsubscribe();
@@ -13010,7 +13091,7 @@ const CallCompositeIcon = (props) => (React__default['default'].createElement(re
13010
13091
  */
13011
13092
  const CallWithChatCompositeIcon = (props) => (React__default['default'].createElement(react.FontIcon, Object.assign({}, props)));
13012
13093
 
13013
- var call$d={cameraLabel:"Camera",cameraPermissionDenied:"Your browser is blocking access to your camera",cameraTurnedOff:"Your camera is turned off",chatButtonLabel:"Chat",close:"Close",complianceBannerNowOnlyRecording:"You are now only recording this meeting.",complianceBannerNowOnlyTranscription:"You are now only transcribing this meeting.",complianceBannerRecordingAndTranscriptionSaved:"Recording and transcription are being saved.",complianceBannerRecordingAndTranscriptionStarted:"Recording and transcription have started.",complianceBannerRecordingAndTranscriptionStopped:"Recording and transcription have stopped.",complianceBannerRecordingSaving:"Recording is being saved.",complianceBannerRecordingStarted:"Recording has started.",complianceBannerRecordingStopped:"Recording has stopped.",complianceBannerTranscriptionStarted:"Transcription has started.",complianceBannerTranscriptionConsent:"By joining, you are giving consent for this meeting to be transcribed.",complianceBannerTranscriptionSaving:"Transcription is being saved.",complianceBannerTranscriptionStopped:"Transcription has stopped.",configurationPageTitle:"Start a call",copyInviteLinkButtonLabel:"Copy invite link",copyInviteLinkActionedAriaLabel:"Invite link copied",defaultPlaceHolder:"Select an option",dismissSidePaneButtonLabel:"Close",failedToJoinCallDueToNoNetworkMoreDetails:"Call was disconnected due to a network issue. Check your connection and join again.",failedToJoinCallDueToNoNetworkTitle:"Call disconnected",failedToJoinTeamsMeetingReasonAccessDeniedMoreDetails:"You were not granted entry in the call. If this was a mistake, re-join the call.",failedToJoinTeamsMeetingReasonAccessDeniedTitle:"Dismissed from lobby",learnMore:"Learn more",leftCallMoreDetails:"If this was a mistake, re-join the call.",leftCallTitle:"You left the call",lobbyScreenConnectingToCallTitle:"Joining call",lobbyScreenWaitingToBeAdmittedTitle:"Waiting to be admitted",microphonePermissionDenied:"Your browser is blocking access to your microphone",microphoneToggleInLobbyNotAllowed:"Cannot mute or unmute while in lobby.",mutedMessage:"You're muted",networkReconnectMoreDetails:"Looks like something went wrong. We're trying to get back into the call.",networkReconnectTitle:"Hold on",deniedPermissionToRoomDetails:"You do not have permission to join this room.",deniedPermissionToRoomTitle:"Permission denied to room",peopleButtonLabel:"People",peoplePaneTitle:"People",peoplePaneSubTitle:"In this call",privacyPolicy:"Privacy policy",rejoinCallButtonLabel:"Re-join call",removedFromCallMoreDetails:"Another participant removed you from the call.",removedFromCallTitle:"You were removed",removeMenuLabel:"Remove",returnToCallButtonAriaDescription:"Return to Call",returnToCallButtonAriaLabel:"Back",roomNotFoundDetails:"Room ID provided is not valid.",roomNotFoundTitle:"Room not found",soundLabel:"Sound",startCallButtonLabel:"Start call",openDialpadButtonLabel:"Dial phone number",peoplePaneAddPeopleButtonLabel:"Add People",dialpadStartCallButtonLabel:"Call",dialpadModalTitle:"Dial Phone Number",dialpadModalAriaLabel:"Dialpad",dialpadCloseModalButtonAriaLabel:"Close dialpad",moreButtonCallingLabel:"More",resumeCallButtonLabel:"Resume",resumingCallButtonLabel:"Resuming...",resumeCallButtonAriaLabel:"Resume call",resumingCallButtonAriaLabel:"Resume call",holdScreenLabel:"You're on hold",openDtmfDialpadLabel:"Show dialpad",dtmfDialpadPlaceHolderText:"Enter number"};var chat$d={chatListHeader:"In this chat",uploadFile:"Upload File"};var callWithChat$d={chatButtonLabel:"Chat",chatButtonNewMessageNotificationLabel:"New Message",chatButtonTooltipClosedWithMessageCount:"Show chat ({unreadMessagesCount} unread)",chatButtonTooltipClose:"Hide chat",chatButtonTooltipOpen:"Show chat",chatPaneTitle:"Chat",copyInviteLinkButtonLabel:"Copy invite link",copyInviteLinkActionedAriaLabel:"Invite link copied",dismissSidePaneButtonLabel:"Close",moreDrawerAudioDeviceMenuTitle:"Audio Device",moreDrawerButtonLabel:"More options",moreDrawerButtonTooltip:"More options",moreDrawerMicrophoneMenuTitle:"Microphone",moreDrawerSpeakerMenuTitle:"Speaker",peopleButtonLabel:"People",peopleButtonTooltipOpen:"Show participants",peopleButtonTooltipClose:"Hide participants",peoplePaneSubTitle:"In this call",peoplePaneTitle:"People",pictureInPictureTileAriaLabel:"Video Feeds. Click to return to call screen.",removeMenuLabel:"Remove",openDialpadButtonLabel:"Dial phone number",returnToCallButtonAriaDescription:"Return to Call",returnToCallButtonAriaLabel:"Back",peoplePaneAddPeopleButtonLabel:"Add People",dialpadStartCallButtonLabel:"Call",dialpadModalTitle:"Dial Phone Number",dialpadModalAriaLabel:"Dialpad",dialpadCloseModalButtonAriaLabel:"Close dialpad",openDtmfDialpadLabel:"Show dialpad",dtmfDialpadPlaceHolderText:"Enter number"};var en_US = {call:call$d,chat:chat$d,callWithChat:callWithChat$d};
13094
+ var call$d={cameraLabel:"Camera",cameraPermissionDenied:"Your browser is blocking access to your camera",cameraTurnedOff:"Your camera is turned off",chatButtonLabel:"Chat",close:"Close",complianceBannerNowOnlyRecording:"You are now only recording this meeting.",complianceBannerNowOnlyTranscription:"You are now only transcribing this meeting.",complianceBannerRecordingAndTranscriptionSaved:"Recording and transcription are being saved.",complianceBannerRecordingAndTranscriptionStarted:"Recording and transcription have started.",complianceBannerRecordingAndTranscriptionStopped:"Recording and transcription have stopped.",complianceBannerRecordingSaving:"Recording is being saved.",complianceBannerRecordingStarted:"Recording has started.",complianceBannerRecordingStopped:"Recording has stopped.",complianceBannerTranscriptionStarted:"Transcription has started.",complianceBannerTranscriptionConsent:"By joining, you are giving consent for this meeting to be transcribed.",complianceBannerTranscriptionSaving:"Transcription is being saved.",complianceBannerTranscriptionStopped:"Transcription has stopped.",configurationPageTitle:"Start a call",copyInviteLinkButtonLabel:"Copy invite link",copyInviteLinkActionedAriaLabel:"Invite link copied",defaultPlaceHolder:"Select an option",dismissSidePaneButtonLabel:"Close",failedToJoinCallDueToNoNetworkMoreDetails:"Call was disconnected due to a network issue. Check your connection and join again.",failedToJoinCallDueToNoNetworkTitle:"Call disconnected",failedToJoinTeamsMeetingReasonAccessDeniedMoreDetails:"You were not granted entry in the call. If this was a mistake, re-join the call.",failedToJoinTeamsMeetingReasonAccessDeniedTitle:"Dismissed from lobby",learnMore:"Learn more",leftCallMoreDetails:"If this was a mistake, re-join the call.",leftCallTitle:"You left the call",lobbyScreenConnectingToCallTitle:"Joining call",lobbyScreenWaitingToBeAdmittedTitle:"Waiting to be admitted",microphonePermissionDenied:"Your browser is blocking access to your microphone",microphoneToggleInLobbyNotAllowed:"Cannot mute or unmute while in lobby.",mutedMessage:"You're muted",networkReconnectMoreDetails:"Looks like something went wrong. We're trying to get back into the call.",networkReconnectTitle:"Hold on",deniedPermissionToRoomDetails:"You do not have permission to join this room.",deniedPermissionToRoomTitle:"Permission denied to room",peopleButtonLabel:"People",peoplePaneTitle:"People",peopleButtonTooltipOpen:"Show participants",peopleButtonTooltipClose:"Hide participants",peoplePaneSubTitle:"In this call",privacyPolicy:"Privacy policy",rejoinCallButtonLabel:"Re-join call",removedFromCallMoreDetails:"Another participant removed you from the call.",removedFromCallTitle:"You were removed",removeMenuLabel:"Remove",returnToCallButtonAriaDescription:"Return to Call",returnToCallButtonAriaLabel:"Back",roomNotFoundDetails:"Room ID provided is not valid.",roomNotFoundTitle:"Room not found",soundLabel:"Sound",startCallButtonLabel:"Start call",openDialpadButtonLabel:"Dial phone number",peoplePaneAddPeopleButtonLabel:"Add People",dialpadStartCallButtonLabel:"Call",dialpadModalTitle:"Dial Phone Number",dialpadModalAriaLabel:"Dialpad",dialpadCloseModalButtonAriaLabel:"Close dialpad",moreButtonCallingLabel:"More",resumeCallButtonLabel:"Resume",resumingCallButtonLabel:"Resuming...",resumeCallButtonAriaLabel:"Resume call",resumingCallButtonAriaLabel:"Resume call",holdScreenLabel:"You're on hold",openDtmfDialpadLabel:"Show dialpad",dtmfDialpadPlaceHolderText:"Enter number"};var chat$d={chatListHeader:"In this chat",uploadFile:"Upload File"};var callWithChat$d={chatButtonLabel:"Chat",chatButtonNewMessageNotificationLabel:"New Message",chatButtonTooltipClosedWithMessageCount:"Show chat ({unreadMessagesCount} unread)",chatButtonTooltipClose:"Hide chat",chatButtonTooltipOpen:"Show chat",chatPaneTitle:"Chat",copyInviteLinkButtonLabel:"Copy invite link",copyInviteLinkActionedAriaLabel:"Invite link copied",dismissSidePaneButtonLabel:"Close",moreDrawerAudioDeviceMenuTitle:"Audio Device",moreDrawerButtonLabel:"More options",moreDrawerButtonTooltip:"More options",moreDrawerMicrophoneMenuTitle:"Microphone",moreDrawerSpeakerMenuTitle:"Speaker",peopleButtonLabel:"People",peopleButtonTooltipOpen:"Show participants",peopleButtonTooltipClose:"Hide participants",peoplePaneSubTitle:"In this call",peoplePaneTitle:"People",pictureInPictureTileAriaLabel:"Video Feeds. Click to return to call screen.",removeMenuLabel:"Remove",openDialpadButtonLabel:"Dial phone number",returnToCallButtonAriaDescription:"Return to Call",returnToCallButtonAriaLabel:"Back",peoplePaneAddPeopleButtonLabel:"Add People",dialpadStartCallButtonLabel:"Call",dialpadModalTitle:"Dial Phone Number",dialpadModalAriaLabel:"Dialpad",dialpadCloseModalButtonAriaLabel:"Close dialpad",openDtmfDialpadLabel:"Show dialpad",dtmfDialpadPlaceHolderText:"Enter number"};var en_US = {call:call$d,chat:chat$d,callWithChat:callWithChat$d};
13014
13095
 
13015
13096
  var call$c={cameraLabel:"Camera",cameraPermissionDenied:"Your browser is blocking access to your camera",cameraTurnedOff:"Your camera is turned off",close:"Close",complianceBannerNowOnlyRecording:"You are now only recording this meeting.",complianceBannerNowOnlyTranscription:"You are now only transcribing this meeting.",complianceBannerRecordingAndTranscriptionSaved:"Recording and transcription are being saved.",complianceBannerRecordingAndTranscriptionStarted:"Recording and transcription have started.",complianceBannerRecordingAndTranscriptionStopped:"Recording and transcription have stopped.",complianceBannerRecordingSaving:"Recording is being saved.",complianceBannerRecordingStarted:"Recording has started.",complianceBannerRecordingStopped:"Recording has stopped.",complianceBannerTranscriptionStarted:"Transcription has started.",complianceBannerTranscriptionConsent:"By joining, you are giving consent for this meeting to be transcribed.",complianceBannerTranscriptionSaving:"Transcription is being saved.",complianceBannerTranscriptionStopped:"Transcription has stopped.",configurationPageTitle:"Start a call",defaultPlaceHolder:"Select an option",failedToJoinCallDueToNoNetworkMoreDetails:"Call was disconnected due to a network issue. Check your connection and join again.",failedToJoinCallDueToNoNetworkTitle:"Call disconnected",failedToJoinTeamsMeetingReasonAccessDeniedMoreDetails:"You were not granted entry in the call. If this was a mistake, re-join the call.",failedToJoinTeamsMeetingReasonAccessDeniedTitle:"Dismissed from lobby",learnMore:"Learn more",leftCallMoreDetails:"If this was a mistake, re-join the call.",leftCallTitle:"You left the call",lobbyScreenConnectingToCallTitle:"Joining call",lobbyScreenWaitingToBeAdmittedTitle:"Waiting to be admitted",microphonePermissionDenied:"Your browser is blocking access to your microphone",mutedMessage:"You're muted",networkReconnectMoreDetails:"Looks like something went wrong. We're trying to get back into the call.",networkReconnectTitle:"Hold on",privacyPolicy:"Privacy policy",rejoinCallButtonLabel:"Re-join call",removedFromCallMoreDetails:"Another participant removed you from the call.",removedFromCallTitle:"You were removed",soundLabel:"Sound",startCallButtonLabel:"Start call",microphoneToggleInLobbyNotAllowed:"Cannot mute or unmute while in lobby."};var chat$c={chatListHeader:"In this chat"};var callWithChat$c={peopleButtonLabel:"People",peopleButtonTooltipOpen:"Show participants",peopleButtonTooltipClose:"Hide participants",chatButtonLabel:"Chat",chatButtonTooltipClosedWithMessageCount:"Show chat ({unreadMessagesCount} unread)",chatButtonTooltipOpen:"Show chat",chatButtonTooltipClose:"Hide chat",moreDrawerAudioDeviceMenuTitle:"Audio Device",moreDrawerMicrophoneMenuTitle:"Microphone",moreDrawerSpeakerMenuTitle:"Speaker",moreDrawerButtonLabel:"More options",moreDrawerButtonTooltip:"More options",peoplePaneTitle:"People",peoplePaneSubTitle:"In this call",chatPaneTitle:"Chat",chatButtonNewMessageNotificationLabel:"New Message",pictureInPictureTileAriaLabel:"Video Feeds. Click to return to call screen.",removeMenuLabel:"Remove",copyInviteLinkButtonLabel:"Copy invite link",dismissSidePaneButton:"Close",returnToCallButtonAriaDescription:"Return to Call",returnToCallButtonAriaLabel:"Back"};var en_GB = {call:call$c,chat:chat$c,callWithChat:callWithChat$c};
13016
13097
 
@@ -13412,7 +13493,7 @@ const convertObservableFileUploadToFileUploadsUiState = (fileUploads) => {
13412
13493
 
13413
13494
  // Copyright (c) Microsoft Corporation.
13414
13495
  // Licensed under the MIT license.
13415
- var __awaiter$c = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
13496
+ var __awaiter$e = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
13416
13497
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
13417
13498
  return new (P || (P = Promise))(function (resolve, reject) {
13418
13499
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -13538,9 +13619,9 @@ class AzureCommunicationChatAdapter {
13538
13619
  this.unsubscribeAllEvents();
13539
13620
  }
13540
13621
  fetchInitialData() {
13541
- return __awaiter$c(this, void 0, void 0, function* () {
13622
+ return __awaiter$e(this, void 0, void 0, function* () {
13542
13623
  // If get properties fails we dont want to try to get the participants after.
13543
- yield this.asyncTeeErrorToEventEmitter(() => __awaiter$c(this, void 0, void 0, function* () {
13624
+ yield this.asyncTeeErrorToEventEmitter(() => __awaiter$e(this, void 0, void 0, function* () {
13544
13625
  var e_1, _a;
13545
13626
  yield this.chatThreadClient.getProperties();
13546
13627
  try {
@@ -13574,8 +13655,8 @@ class AzureCommunicationChatAdapter {
13574
13655
  this.context.offStateChange(handler);
13575
13656
  }
13576
13657
  sendMessage(content, options = {}) {
13577
- return __awaiter$c(this, void 0, void 0, function* () {
13578
- yield this.asyncTeeErrorToEventEmitter(() => __awaiter$c(this, void 0, void 0, function* () {
13658
+ return __awaiter$e(this, void 0, void 0, function* () {
13659
+ yield this.asyncTeeErrorToEventEmitter(() => __awaiter$e(this, void 0, void 0, function* () {
13579
13660
  /* @conditional-compile-remove(file-sharing) */
13580
13661
  options.metadata = Object.assign(Object.assign({}, options.metadata), convertFileUploadsUiStateToMessageMetadata(this.context.getState().fileUploads));
13581
13662
  /* @conditional-compile-remove(file-sharing) */
@@ -13592,49 +13673,49 @@ class AzureCommunicationChatAdapter {
13592
13673
  });
13593
13674
  }
13594
13675
  sendReadReceipt(chatMessageId) {
13595
- return __awaiter$c(this, void 0, void 0, function* () {
13596
- yield this.asyncTeeErrorToEventEmitter(() => __awaiter$c(this, void 0, void 0, function* () {
13676
+ return __awaiter$e(this, void 0, void 0, function* () {
13677
+ yield this.asyncTeeErrorToEventEmitter(() => __awaiter$e(this, void 0, void 0, function* () {
13597
13678
  yield this.handlers.onMessageSeen(chatMessageId);
13598
13679
  }));
13599
13680
  });
13600
13681
  }
13601
13682
  sendTypingIndicator() {
13602
- return __awaiter$c(this, void 0, void 0, function* () {
13683
+ return __awaiter$e(this, void 0, void 0, function* () {
13603
13684
  yield this.handlers.onTyping();
13604
13685
  });
13605
13686
  }
13606
13687
  removeParticipant(userId) {
13607
- return __awaiter$c(this, void 0, void 0, function* () {
13608
- yield this.asyncTeeErrorToEventEmitter(() => __awaiter$c(this, void 0, void 0, function* () {
13688
+ return __awaiter$e(this, void 0, void 0, function* () {
13689
+ yield this.asyncTeeErrorToEventEmitter(() => __awaiter$e(this, void 0, void 0, function* () {
13609
13690
  yield this.handlers.onRemoveParticipant(userId);
13610
13691
  }));
13611
13692
  });
13612
13693
  }
13613
13694
  setTopic(topicName) {
13614
- return __awaiter$c(this, void 0, void 0, function* () {
13615
- yield this.asyncTeeErrorToEventEmitter(() => __awaiter$c(this, void 0, void 0, function* () {
13695
+ return __awaiter$e(this, void 0, void 0, function* () {
13696
+ yield this.asyncTeeErrorToEventEmitter(() => __awaiter$e(this, void 0, void 0, function* () {
13616
13697
  yield this.handlers.updateThreadTopicName(topicName);
13617
13698
  }));
13618
13699
  });
13619
13700
  }
13620
13701
  loadPreviousChatMessages(messagesToLoad) {
13621
- return __awaiter$c(this, void 0, void 0, function* () {
13622
- return yield this.asyncTeeErrorToEventEmitter(() => __awaiter$c(this, void 0, void 0, function* () {
13702
+ return __awaiter$e(this, void 0, void 0, function* () {
13703
+ return yield this.asyncTeeErrorToEventEmitter(() => __awaiter$e(this, void 0, void 0, function* () {
13623
13704
  return yield this.handlers.onLoadPreviousChatMessages(messagesToLoad);
13624
13705
  }));
13625
13706
  });
13626
13707
  }
13627
13708
  updateMessage(messageId, content, metadata, options) {
13628
- return __awaiter$c(this, void 0, void 0, function* () {
13629
- return yield this.asyncTeeErrorToEventEmitter(() => __awaiter$c(this, void 0, void 0, function* () {
13709
+ return __awaiter$e(this, void 0, void 0, function* () {
13710
+ return yield this.asyncTeeErrorToEventEmitter(() => __awaiter$e(this, void 0, void 0, function* () {
13630
13711
  /* @conditional-compile-remove(file-sharing) */
13631
13712
  return yield this.handlers.onUpdateMessage(messageId, content, metadata, options);
13632
13713
  }));
13633
13714
  });
13634
13715
  }
13635
13716
  deleteMessage(messageId) {
13636
- return __awaiter$c(this, void 0, void 0, function* () {
13637
- return yield this.asyncTeeErrorToEventEmitter(() => __awaiter$c(this, void 0, void 0, function* () {
13717
+ return __awaiter$e(this, void 0, void 0, function* () {
13718
+ return yield this.asyncTeeErrorToEventEmitter(() => __awaiter$e(this, void 0, void 0, function* () {
13638
13719
  return yield this.handlers.onDeleteMessage(messageId);
13639
13720
  }));
13640
13721
  });
@@ -13715,7 +13796,7 @@ class AzureCommunicationChatAdapter {
13715
13796
  this.emitter.off(event, listener);
13716
13797
  }
13717
13798
  asyncTeeErrorToEventEmitter(f) {
13718
- return __awaiter$c(this, void 0, void 0, function* () {
13799
+ return __awaiter$e(this, void 0, void 0, function* () {
13719
13800
  try {
13720
13801
  return yield f();
13721
13802
  }
@@ -13757,7 +13838,7 @@ const convertEventType = (type) => {
13757
13838
  *
13758
13839
  * @public
13759
13840
  */
13760
- const createAzureCommunicationChatAdapter = ({ endpoint: endpointUrl, userId, displayName, credential, threadId }) => __awaiter$c(void 0, void 0, void 0, function* () {
13841
+ const createAzureCommunicationChatAdapter = ({ endpoint: endpointUrl, userId, displayName, credential, threadId }) => __awaiter$e(void 0, void 0, void 0, function* () {
13761
13842
  const chatClient = createStatefulChatClient({
13762
13843
  userId,
13763
13844
  displayName,
@@ -13820,7 +13901,7 @@ beforeDispose) => {
13820
13901
  if (!credential || !displayName || !endpoint || !threadId || !userId) {
13821
13902
  return;
13822
13903
  }
13823
- (() => __awaiter$c(void 0, void 0, void 0, function* () {
13904
+ (() => __awaiter$e(void 0, void 0, void 0, function* () {
13824
13905
  if (adapterRef.current) {
13825
13906
  // Dispose the old adapter when a new one is created.
13826
13907
  //
@@ -13852,7 +13933,7 @@ beforeDispose) => {
13852
13933
  // Dispose any existing adapter when the component unmounts.
13853
13934
  React.useEffect(() => {
13854
13935
  return () => {
13855
- (() => __awaiter$c(void 0, void 0, void 0, function* () {
13936
+ (() => __awaiter$e(void 0, void 0, void 0, function* () {
13856
13937
  if (adapterRef.current) {
13857
13938
  if (beforeDisposeRef.current) {
13858
13939
  yield beforeDisposeRef.current(adapterRef.current);
@@ -13873,7 +13954,7 @@ beforeDispose) => {
13873
13954
  *
13874
13955
  * @public
13875
13956
  */
13876
- const createAzureCommunicationChatAdapterFromClient = (chatClient, chatThreadClient) => __awaiter$c(void 0, void 0, void 0, function* () {
13957
+ const createAzureCommunicationChatAdapterFromClient = (chatClient, chatThreadClient) => __awaiter$e(void 0, void 0, void 0, function* () {
13877
13958
  return new AzureCommunicationChatAdapter(chatClient, chatThreadClient);
13878
13959
  });
13879
13960
  const isChatError = (e) => {
@@ -14075,7 +14156,7 @@ const sendboxContainerStyles = {
14075
14156
 
14076
14157
  // Copyright (c) Microsoft Corporation.
14077
14158
  // Licensed under the MIT license.
14078
- var __awaiter$b = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
14159
+ var __awaiter$d = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
14079
14160
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
14080
14161
  return new (P || (P = Promise))(function (resolve, reject) {
14081
14162
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -14096,7 +14177,7 @@ const AvatarPersona = (props) => {
14096
14177
  const { userId, dataProvider, text, imageUrl, imageInitials, initialsColor, initialsTextColor, showOverflowTooltip } = props;
14097
14178
  const [data, setData] = React.useState();
14098
14179
  React.useEffect(() => {
14099
- (() => __awaiter$b(void 0, void 0, void 0, function* () {
14180
+ (() => __awaiter$d(void 0, void 0, void 0, function* () {
14100
14181
  if (dataProvider && userId) {
14101
14182
  const newData = yield dataProvider(userId);
14102
14183
  if (avatarDeepDifferenceCheck(data, newData)) {
@@ -14883,7 +14964,7 @@ const isDisabled$2 = (option) => {
14883
14964
 
14884
14965
  // Copyright (c) Microsoft Corporation.
14885
14966
  // Licensed under the MIT license.
14886
- var __awaiter$a = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
14967
+ var __awaiter$c = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
14887
14968
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
14888
14969
  return new (P || (P = Promise))(function (resolve, reject) {
14889
14970
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -14902,72 +14983,72 @@ _component) => {
14902
14983
  return createCompositeHandlers(useAdapter());
14903
14984
  };
14904
14985
  const createCompositeHandlers = memoizeOne__default['default']((adapter) => ({
14905
- onCreateLocalStreamView: (options) => __awaiter$a(void 0, void 0, void 0, function* () {
14986
+ onCreateLocalStreamView: (options) => __awaiter$c(void 0, void 0, void 0, function* () {
14906
14987
  return yield adapter.createStreamView(undefined, options);
14907
14988
  }),
14908
- onCreateRemoteStreamView: (userId, options) => __awaiter$a(void 0, void 0, void 0, function* () {
14989
+ onCreateRemoteStreamView: (userId, options) => __awaiter$c(void 0, void 0, void 0, function* () {
14909
14990
  return yield adapter.createStreamView(userId, options);
14910
14991
  }),
14911
- onHangUp: () => __awaiter$a(void 0, void 0, void 0, function* () {
14992
+ onHangUp: () => __awaiter$c(void 0, void 0, void 0, function* () {
14912
14993
  yield adapter.leaveCall();
14913
14994
  }),
14914
14995
  /* @conditional-compile-remove(PSTN-calls) */
14915
- onToggleHold: () => __awaiter$a(void 0, void 0, void 0, function* () {
14996
+ onToggleHold: () => __awaiter$c(void 0, void 0, void 0, function* () {
14916
14997
  var _a;
14917
14998
  return ((_a = adapter.getState().call) === null || _a === void 0 ? void 0 : _a.state) === 'LocalHold' ? yield adapter.resumeCall() : yield adapter.holdCall();
14918
14999
  }),
14919
15000
  /* @conditional-compile-remove(PSTN-calls) */
14920
- onAddParticipant: (participant, options) => __awaiter$a(void 0, void 0, void 0, function* () {
15001
+ onAddParticipant: (participant, options) => __awaiter$c(void 0, void 0, void 0, function* () {
14921
15002
  return yield adapter.addParticipant(participant, options);
14922
15003
  }),
14923
15004
  /* @conditional-compile-remove(PSTN-calls) */
14924
- onSendDtmfTone: (dtmfTone) => __awaiter$a(void 0, void 0, void 0, function* () {
15005
+ onSendDtmfTone: (dtmfTone) => __awaiter$c(void 0, void 0, void 0, function* () {
14925
15006
  yield adapter.sendDtmfTone(dtmfTone);
14926
15007
  }),
14927
- onRemoveParticipant: (userId) => __awaiter$a(void 0, void 0, void 0, function* () {
15008
+ onRemoveParticipant: (userId) => __awaiter$c(void 0, void 0, void 0, function* () {
14928
15009
  yield adapter.removeParticipant(userId);
14929
15010
  }),
14930
- onSelectCamera: (deviceInfo, options) => __awaiter$a(void 0, void 0, void 0, function* () {
15011
+ onSelectCamera: (deviceInfo, options) => __awaiter$c(void 0, void 0, void 0, function* () {
14931
15012
  yield adapter.setCamera(deviceInfo, options);
14932
15013
  }),
14933
- onSelectMicrophone: (deviceInfo) => __awaiter$a(void 0, void 0, void 0, function* () {
15014
+ onSelectMicrophone: (deviceInfo) => __awaiter$c(void 0, void 0, void 0, function* () {
14934
15015
  yield adapter.setMicrophone(deviceInfo);
14935
15016
  }),
14936
- onSelectSpeaker: (deviceInfo) => __awaiter$a(void 0, void 0, void 0, function* () {
15017
+ onSelectSpeaker: (deviceInfo) => __awaiter$c(void 0, void 0, void 0, function* () {
14937
15018
  yield adapter.setSpeaker(deviceInfo);
14938
15019
  }),
14939
15020
  onStartCall: (participants, options) => {
14940
15021
  const rawIds = participants.map((participant) => toFlatCommunicationIdentifier(participant));
14941
15022
  return adapter.startCall(rawIds, options);
14942
15023
  },
14943
- onStartScreenShare: () => __awaiter$a(void 0, void 0, void 0, function* () {
15024
+ onStartScreenShare: () => __awaiter$c(void 0, void 0, void 0, function* () {
14944
15025
  yield adapter.startScreenShare();
14945
15026
  }),
14946
- onStopScreenShare: () => __awaiter$a(void 0, void 0, void 0, function* () {
15027
+ onStopScreenShare: () => __awaiter$c(void 0, void 0, void 0, function* () {
14947
15028
  yield adapter.stopScreenShare();
14948
15029
  }),
14949
- onToggleCamera: (options) => __awaiter$a(void 0, void 0, void 0, function* () {
15030
+ onToggleCamera: (options) => __awaiter$c(void 0, void 0, void 0, function* () {
14950
15031
  isCameraOn(adapter.getState()) ? yield adapter.stopCamera() : yield adapter.startCamera(options);
14951
15032
  }),
14952
- onToggleMicrophone: () => __awaiter$a(void 0, void 0, void 0, function* () {
15033
+ onToggleMicrophone: () => __awaiter$c(void 0, void 0, void 0, function* () {
14953
15034
  var _b;
14954
15035
  return ((_b = adapter.getState().call) === null || _b === void 0 ? void 0 : _b.isMuted) ? yield adapter.unmute() : yield adapter.mute();
14955
15036
  }),
14956
- onToggleScreenShare: () => __awaiter$a(void 0, void 0, void 0, function* () {
15037
+ onToggleScreenShare: () => __awaiter$c(void 0, void 0, void 0, function* () {
14957
15038
  var _c;
14958
15039
  return ((_c = adapter.getState().call) === null || _c === void 0 ? void 0 : _c.isScreenSharingOn)
14959
15040
  ? yield adapter.stopScreenShare()
14960
15041
  : yield adapter.startScreenShare();
14961
15042
  }),
14962
- onStartLocalVideo: () => __awaiter$a(void 0, void 0, void 0, function* () {
15043
+ onStartLocalVideo: () => __awaiter$c(void 0, void 0, void 0, function* () {
14963
15044
  if (adapter.getState().call) {
14964
15045
  return adapter.startCamera();
14965
15046
  }
14966
15047
  }),
14967
- onDisposeLocalStreamView: () => __awaiter$a(void 0, void 0, void 0, function* () {
15048
+ onDisposeLocalStreamView: () => __awaiter$c(void 0, void 0, void 0, function* () {
14968
15049
  return adapter.disposeStreamView();
14969
15050
  }),
14970
- onDisposeRemoteStreamView: (userId) => __awaiter$a(void 0, void 0, void 0, function* () {
15051
+ onDisposeRemoteStreamView: (userId) => __awaiter$c(void 0, void 0, void 0, function* () {
14971
15052
  return adapter.disposeStreamView(userId);
14972
15053
  })
14973
15054
  }));
@@ -15131,13 +15212,21 @@ const Devices = (props) => {
15131
15212
  const permissions = _usePermissions();
15132
15213
  /* @conditional-compile-remove(rooms) */
15133
15214
  const locale = useLocale();
15215
+ /* @conditional-compile-remove(rooms) */
15216
+ const onlyManageSpeakers = !permissions.microphoneButton && !permissions.cameraButton;
15217
+ /* @conditional-compile-remove(rooms) */
15218
+ const onRenderDevicesIcon = () => {
15219
+ return React__default['default'].createElement(_HighContrastAwareIcon, { disabled: props.disabled, iconName: "OptionsSpeaker" });
15220
+ };
15134
15221
  return (React__default['default'].createElement(DevicesButton
15135
15222
  /* By setting `persistMenu?` to true, we prevent options menu from getting hidden every time a participant joins or leaves. */
15136
15223
  , Object.assign({
15137
15224
  /* By setting `persistMenu?` to true, we prevent options menu from getting hidden every time a participant joins or leaves. */
15138
15225
  persistMenu: true }, devicesButtonProps, { showLabel: props.displayType !== 'compact', styles: styles, "data-ui-id": "calling-composite-devices-button", disabled: props.disabled,
15139
15226
  /* @conditional-compile-remove(rooms) */
15140
- strings: getLabelFromPermissions(permissions, locale) })));
15227
+ strings: getLabelFromPermissions(permissions, locale),
15228
+ /* @conditional-compile-remove(rooms) */
15229
+ onRenderIcon: onlyManageSpeakers ? onRenderDevicesIcon : undefined })));
15141
15230
  };
15142
15231
  /* @conditional-compile-remove(rooms) */
15143
15232
  const getLabelFromPermissions = (permissions, locale) => {
@@ -15441,9 +15530,9 @@ const CallControls = (props) => {
15441
15530
  const localeStrings = useLocale();
15442
15531
  /* @conditional-compile-remove(one-to-n-calling) */
15443
15532
  const peopleButtonStrings = React.useMemo(() => ({
15444
- label: localeStrings.strings.callWithChat.peopleButtonLabel,
15445
- tooltipOffContent: localeStrings.strings.callWithChat.peopleButtonTooltipOpen,
15446
- tooltipOnContent: localeStrings.strings.callWithChat.peopleButtonTooltipClose
15533
+ label: localeStrings.strings.call.peopleButtonLabel,
15534
+ tooltipOffContent: localeStrings.strings.call.peopleButtonTooltipOpen,
15535
+ tooltipOnContent: localeStrings.strings.call.peopleButtonTooltipClose
15447
15536
  }), [localeStrings]);
15448
15537
  /* @conditional-compile-remove(PSTN-calls) */ /* @conditional-compile-remove(one-to-n-calling) */
15449
15538
  const moreButtonStrings = React.useMemo(() => ({
@@ -15480,19 +15569,21 @@ const CallControls = (props) => {
15480
15569
  ['data-ui-id']: 'call-composite-more-menu-people-button'
15481
15570
  });
15482
15571
  }
15483
- items.push({
15484
- key: 'holdButtonKey',
15485
- text: localeStrings.component.strings.holdButton.tooltipOffContent,
15486
- onClick: () => {
15487
- holdButtonProps.onToggleHold();
15488
- },
15489
- iconProps: { iconName: 'HoldCallContextualMenuItem', styles: { root: { lineHeight: 0 } } },
15490
- itemProps: {
15491
- styles: buttonFlyoutIncreasedSizeStyles
15492
- },
15493
- disabled: isDisabled$2(options === null || options === void 0 ? void 0 : options.holdButton),
15494
- ['data-ui-id']: 'hold-button'
15495
- });
15572
+ if (!isRoomsCallTrampoline()) {
15573
+ items.push({
15574
+ key: 'holdButtonKey',
15575
+ text: localeStrings.component.strings.holdButton.tooltipOffContent,
15576
+ onClick: () => {
15577
+ holdButtonProps.onToggleHold();
15578
+ },
15579
+ iconProps: { iconName: 'HoldCallContextualMenuItem', styles: { root: { lineHeight: 0 } } },
15580
+ itemProps: {
15581
+ styles: buttonFlyoutIncreasedSizeStyles
15582
+ },
15583
+ disabled: isDisabled$2(options === null || options === void 0 ? void 0 : options.holdButton),
15584
+ ['data-ui-id']: 'hold-button'
15585
+ });
15586
+ }
15496
15587
  /* @conditional-compile-remove(PSTN-calls) */
15497
15588
  // dtmf tone sending only works for 1:1 PSTN call
15498
15589
  if (alternateCallerId) {
@@ -15549,11 +15640,18 @@ const CallControls = (props) => {
15549
15640
  React__default['default'].createElement(People, { checked: props.peopleButtonChecked, showLabel: (options === null || options === void 0 ? void 0 : options.displayType) !== 'compact', onClick: props.onPeopleButtonClicked, "data-ui-id": "call-composite-people-button", strings: peopleButtonStrings, disabled: isDisabled$2(options === null || options === void 0 ? void 0 : options.participantsButton) })),
15550
15641
  isEnabled$2(options === null || options === void 0 ? void 0 : options.devicesButton) && (React__default['default'].createElement(Devices, { displayType: options === null || options === void 0 ? void 0 : options.displayType, increaseFlyoutItemSize: props.increaseFlyoutItemSize, disabled: isDisabled$2(options === null || options === void 0 ? void 0 : options.devicesButton) })),
15551
15642
  /* @conditional-compile-remove(one-to-n-calling) */ /* @conditional-compile-remove(PSTN-calls) */
15552
- isEnabled$2(options === null || options === void 0 ? void 0 : options.moreButton) && (React__default['default'].createElement(MoreButton, { strings: moreButtonStrings, menuIconProps: { hidden: true }, menuProps: { items: moreButtonContextualMenuItems() }, showLabel: !props.isMobile })),
15643
+ isEnabled$2(options === null || options === void 0 ? void 0 : options.moreButton) && moreButtonContextualMenuItems().length > 0 && (React__default['default'].createElement(MoreButton, { strings: moreButtonStrings, menuIconProps: { hidden: true }, menuProps: { items: moreButtonContextualMenuItems() }, showLabel: !props.isMobile })),
15553
15644
  customButtons['primary'],
15554
15645
  isEnabled$2(options === null || options === void 0 ? void 0 : options.endCallButton) && React__default['default'].createElement(EndCall, { displayType: options === null || options === void 0 ? void 0 : options.displayType })))));
15555
15646
  };
15556
15647
  const isEnabled$2 = (option) => option !== false;
15648
+ /** @private */
15649
+ const isRoomsCallTrampoline = () => {
15650
+ /* @conditional-compile-remove(rooms) */
15651
+ const rolePermissions = _usePermissions();
15652
+ /* @conditional-compile-remove(rooms) */
15653
+ return !!rolePermissions.role;
15654
+ };
15557
15655
 
15558
15656
  // Copyright (c) Microsoft Corporation.
15559
15657
  /**
@@ -15918,12 +16016,34 @@ const DRAG_OPTIONS = {
15918
16016
  menu: react.ContextualMenu,
15919
16017
  keepInBounds: true
15920
16018
  };
15921
- const _ModalLocalAndRemotePIP = (props) => {
16019
+ /**
16020
+ * A wrapping component with a draggable {@link LocalAndRemotePIP} component that is bound to a LayerHost component with id
16021
+ * specified by `modalLayerHostId` prop
16022
+ * @private
16023
+ */
16024
+ const ModalLocalAndRemotePIP = (props) => {
15922
16025
  var _a;
15923
16026
  const rootStyles = props.hidden ? hiddenStyle : PIPContainerStyle;
16027
+ /* @conditional-compile-remove(rooms) */
16028
+ const rolePermissions = _usePermissions();
15924
16029
  const pictureInPictureProps = useSelector$1(localAndRemotePIPSelector);
15925
16030
  const pictureInPictureHandlers = useHandlers();
15926
- const localAndRemotePIP = React.useMemo(() => React__default['default'].createElement(LocalAndRemotePIP, Object.assign({}, pictureInPictureProps, pictureInPictureHandlers)), [pictureInPictureProps, pictureInPictureHandlers]);
16031
+ const localAndRemotePIP = React.useMemo(() => {
16032
+ var _a;
16033
+ /* @conditional-compile-remove(rooms) */
16034
+ if (!rolePermissions.cameraButton && ((_a = pictureInPictureProps.dominantRemoteParticipant) === null || _a === void 0 ? void 0 : _a.userId)) {
16035
+ return React__default['default'].createElement(_RemoteVideoTile, Object.assign({}, pictureInPictureProps.dominantRemoteParticipant));
16036
+ }
16037
+ return React__default['default'].createElement(LocalAndRemotePIP, Object.assign({}, pictureInPictureProps, pictureInPictureHandlers));
16038
+ }, [
16039
+ pictureInPictureProps,
16040
+ pictureInPictureHandlers,
16041
+ /* @conditional-compile-remove(rooms) */ rolePermissions.cameraButton
16042
+ ]);
16043
+ /* @conditional-compile-remove(rooms) */
16044
+ if (!rolePermissions.cameraButton && !pictureInPictureProps.dominantRemoteParticipant) {
16045
+ return null;
16046
+ }
15927
16047
  const modalStylesThemed = react.concatStyleSets(modalStyle, (_a = props.styles) === null || _a === void 0 ? void 0 : _a.modal);
15928
16048
  return (React__default['default'].createElement(react.Stack, { styles: rootStyles },
15929
16049
  React__default['default'].createElement(_ModalClone, { isOpen: true, isModeless: true, dragOptions: DRAG_OPTIONS, styles: modalStylesThemed, layerProps: { hostId: props.modalLayerHostId }, minDragPosition: props.minDragPosition, maxDragPosition: props.maxDragPosition },
@@ -15931,15 +16051,6 @@ const _ModalLocalAndRemotePIP = (props) => {
15931
16051
  // possession of the dominant remote participant video stream
15932
16052
  !props.hidden && localAndRemotePIP)));
15933
16053
  };
15934
- /**
15935
- * A wrapping component with a draggable {@link LocalAndRemotePIP} component that is bound to a LayerHost component with id
15936
- * specified by `modalLayerHostId` prop
15937
- * @private
15938
- */
15939
- const ModalLocalAndRemotePIP = (props) => {
15940
- return (React__default['default'].createElement(CallAdapterProvider, { adapter: props.callAdapter },
15941
- React__default['default'].createElement(_ModalLocalAndRemotePIP, Object.assign({}, props), props.children)));
15942
- };
15943
16054
 
15944
16055
  // Copyright (c) Microsoft Corporation.
15945
16056
  /**
@@ -16239,8 +16350,8 @@ const AddPeopleDropdown = (props) => {
16239
16350
  if (mobileView) {
16240
16351
  return (React__default['default'].createElement(react.Stack, null,
16241
16352
  React__default['default'].createElement(Announcer, { ariaLive: 'assertive', announcementString: announcerStrings }),
16242
- React__default['default'].createElement(react.Stack.Item, { styles: copyLinkButtonContainerStyles },
16243
- React__default['default'].createElement(react.PrimaryButton, { onClick: setDrawerMenuItemsForAddPeople, styles: copyLinkButtonStylesThemed, onRenderIcon: () => PeoplePaneAddPersonIconTrampoline(), text: strings.peoplePaneAddPeopleButtonLabel, "data-ui-id": "call-add-people-button" })),
16353
+ defaultMenuProps.items.length > 0 && (React__default['default'].createElement(react.Stack.Item, { styles: copyLinkButtonContainerStyles },
16354
+ React__default['default'].createElement(react.PrimaryButton, { onClick: setDrawerMenuItemsForAddPeople, styles: copyLinkButtonStylesThemed, onRenderIcon: () => PeoplePaneAddPersonIconTrampoline(), text: strings.peoplePaneAddPeopleButtonLabel, "data-ui-id": "call-add-people-button" }))),
16244
16355
  addPeopleDrawerMenuItems.length > 0 && (React__default['default'].createElement(react.Stack, { styles: drawerContainerStyles, "data-ui-id": "call-add-people-dropdown" },
16245
16356
  React__default['default'].createElement(_DrawerMenu, { onLightDismiss: () => setAddPeopleDrawerMenuItems([]), items: addPeopleDrawerMenuItems }))),
16246
16357
  alternateCallerId && (React__default['default'].createElement(CallingDialpad, { isMobile: true, strings: strings, showDialpad: showDialpad, onDismissDialpad: onDismissDialpad, onAddParticipant: onAddParticipant, alternateCallerId: alternateCallerId }))));
@@ -16248,8 +16359,8 @@ const AddPeopleDropdown = (props) => {
16248
16359
  return (React__default['default'].createElement(React__default['default'].Fragment, null, React__default['default'].createElement(react.Stack, null,
16249
16360
  React__default['default'].createElement(Announcer, { ariaLive: 'assertive', announcementString: announcerStrings }),
16250
16361
  alternateCallerId && (React__default['default'].createElement(CallingDialpad, { isMobile: false, strings: strings, showDialpad: showDialpad, onDismissDialpad: onDismissDialpad, onAddParticipant: onAddParticipant, alternateCallerId: alternateCallerId })),
16251
- React__default['default'].createElement(react.Stack, { styles: copyLinkButtonStackStyles },
16252
- React__default['default'].createElement(react.DefaultButton, { onRenderIcon: () => PeoplePaneAddPersonIconTrampoline(), text: strings.peoplePaneAddPeopleButtonLabel, menuProps: defaultMenuProps, styles: copyLinkButtonStylesThemed, "data-ui-id": "call-add-people-button" })))));
16362
+ defaultMenuProps.items.length > 0 && (React__default['default'].createElement(react.Stack, { styles: copyLinkButtonStackStyles },
16363
+ React__default['default'].createElement(react.DefaultButton, { onRenderIcon: () => PeoplePaneAddPersonIconTrampoline(), text: strings.peoplePaneAddPeopleButtonLabel, menuProps: defaultMenuProps, styles: copyLinkButtonStylesThemed, "data-ui-id": "call-add-people-button" }))))));
16253
16364
  };
16254
16365
  function PeoplePaneOpenDialpadIconNameTrampoline() {
16255
16366
  /* @conditional-compile-remove(PSTN-calls) */
@@ -16279,7 +16390,7 @@ const AddPeopleButton = (props) => {
16279
16390
 
16280
16391
  // Copyright (c) Microsoft Corporation.
16281
16392
  // Licensed under the MIT license.
16282
- var __awaiter$9 = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
16393
+ var __awaiter$b = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
16283
16394
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
16284
16395
  return new (P || (P = Promise))(function (resolve, reject) {
16285
16396
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -16315,7 +16426,7 @@ const PeoplePaneContent = (props) => {
16315
16426
  setDrawerMenuItems
16316
16427
  ]);
16317
16428
  const participantListProps = React.useMemo(() => {
16318
- const onRemoveAParticipant = (participantId) => __awaiter$9(void 0, void 0, void 0, function* () { return onRemoveParticipant(participantId); });
16429
+ const onRemoveAParticipant = (participantId) => __awaiter$b(void 0, void 0, void 0, function* () { return onRemoveParticipant(participantId); });
16319
16430
  return Object.assign(Object.assign({}, participantListDefaultProps), {
16320
16431
  // Passing undefined callback for mobile to avoid context menus for participants in ParticipantList are clicked
16321
16432
  onRemoveParticipant: props.mobileView ? undefined : onRemoveAParticipant,
@@ -16513,7 +16624,7 @@ const useMinMaxDragPosition = (modalLayerHostId, rtl) => {
16513
16624
  return { minDragPosition: minDragPosition, maxDragPosition: maxDragPosition };
16514
16625
  };
16515
16626
 
16516
- var __awaiter$8 = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
16627
+ var __awaiter$a = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
16517
16628
  function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
16518
16629
  return new (P || (P = Promise))(function (resolve, reject) {
16519
16630
  function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
@@ -16543,11 +16654,11 @@ const CallPane = (props) => {
16543
16654
  /**
16544
16655
  * In a Call Composite when a participant is removed, we must remove them from the call.
16545
16656
  */
16546
- const removeParticipantFromCall = (participantId) => __awaiter$8(void 0, void 0, void 0, function* () {
16657
+ const removeParticipantFromCall = (participantId) => __awaiter$a(void 0, void 0, void 0, function* () {
16547
16658
  yield props.callAdapter.removeParticipant(participantId);
16548
16659
  });
16549
16660
  /* @conditional-compile-remove(PSTN-calls) */
16550
- const addParticipantToCall = (participant, options) => __awaiter$8(void 0, void 0, void 0, function* () {
16661
+ const addParticipantToCall = (participant, options) => __awaiter$a(void 0, void 0, void 0, function* () {
16551
16662
  yield props.callAdapter.addParticipant(participant, options);
16552
16663
  });
16553
16664
  const minMaxDragPosition = useMinMaxDragPosition(props.modalLayerHostId, props.rtl);
@@ -16567,7 +16678,8 @@ const CallPane = (props) => {
16567
16678
  onAddParticipant: addParticipantToCall, setDrawerMenuItems: setDrawerMenuItems, strings: strings,
16568
16679
  /* @conditional-compile-remove(PSTN-calls) */
16569
16680
  alternateCallerId: alternateCallerId }))))))),
16570
- props.mobileView && (React__default['default'].createElement(ModalLocalAndRemotePIP, { callAdapter: props.callAdapter, modalLayerHostId: props.modalLayerHostId, hidden: !props.activePane, styles: pipStyles, minDragPosition: minMaxDragPosition.minDragPosition, maxDragPosition: minMaxDragPosition.maxDragPosition })),
16681
+ props.mobileView && (React__default['default'].createElement(CallAdapterProvider, { adapter: props.callAdapter },
16682
+ React__default['default'].createElement(ModalLocalAndRemotePIP, { modalLayerHostId: props.modalLayerHostId, hidden: !props.activePane, styles: pipStyles, minDragPosition: minMaxDragPosition.minDragPosition, maxDragPosition: minMaxDragPosition.maxDragPosition }))),
16571
16683
  drawerMenuItems.length > 0 && (React__default['default'].createElement(react.Stack, { styles: drawerContainerStyles },
16572
16684
  React__default['default'].createElement(_DrawerMenu, { onLightDismiss: () => setDrawerMenuItems([]), items: drawerMenuItems })))));
16573
16685
  };
@@ -17047,6 +17159,75 @@ const optionIconStyles = react.mergeStyles({
17047
17159
  verticalAlign: 'text-top'
17048
17160
  });
17049
17161
 
17162
+ var __awaiter$9 = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
17163
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
17164
+ return new (P || (P = Promise))(function (resolve, reject) {
17165
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17166
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
17167
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
17168
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
17169
+ });
17170
+ };
17171
+ /**
17172
+ * @private
17173
+ */
17174
+ const ConfigurationpageCameraDropdown = (props) => {
17175
+ /* @conditional-compile-remove(call-readiness) */
17176
+ const theme = useTheme();
17177
+ /* @conditional-compile-remove(call-readiness) */
17178
+ const adapter = useAdapter();
17179
+ /* @conditional-compile-remove(call-readiness) */
17180
+ const devicePermissionDropdownStringsCamera = {
17181
+ placeHolderText: 'Enable Camera (optional)',
17182
+ actionButtonContent: 'Allow'
17183
+ };
17184
+ /* @conditional-compile-remove(call-readiness) */
17185
+ const cameraBlockedDropdown = (React__default['default'].createElement(_DevicePermissionDropdown, { styles: dropDownStyles(theme), onClickActionButton: () => __awaiter$9(void 0, void 0, void 0, function* () {
17186
+ yield adapter.askDevicePermission({ video: true, audio: false });
17187
+ if (props.cameraPermissionGranted) {
17188
+ adapter.queryCameras();
17189
+ }
17190
+ }), strings: devicePermissionDropdownStringsCamera, icon: React__default['default'].createElement(CallCompositeIcon, { iconName: "ControlButtonCameraOn", style: { height: '1.25rem', marginRight: '0.625rem' } }) }));
17191
+ /* @conditional-compile-remove(call-readiness) */
17192
+ return React__default['default'].createElement(React__default['default'].Fragment, null, props.cameraPermissionGranted ? props.cameraGrantedDropdown : cameraBlockedDropdown);
17193
+ };
17194
+
17195
+ var __awaiter$8 = (window && window.__awaiter) || function (thisArg, _arguments, P, generator) {
17196
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
17197
+ return new (P || (P = Promise))(function (resolve, reject) {
17198
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
17199
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
17200
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
17201
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
17202
+ });
17203
+ };
17204
+ /**
17205
+ * @private
17206
+ */
17207
+ const ConfigurationpageMicDropdown = (props) => {
17208
+ /* @conditional-compile-remove(call-readiness) */
17209
+ const theme = useTheme();
17210
+ /* @conditional-compile-remove(call-readiness) */
17211
+ const adapter = useAdapter();
17212
+ /* @conditional-compile-remove(call-readiness) */
17213
+ const devicePermissionDropdownStringsMicrophone = {
17214
+ placeHolderText: 'Enable Microphone (required)',
17215
+ actionButtonContent: 'Allow'
17216
+ };
17217
+ /* @conditional-compile-remove(call-readiness) */
17218
+ const microphoneBlockedDropdown = (React__default['default'].createElement(_DevicePermissionDropdown, { styles: dropDownStyles(theme), onClickActionButton: () => __awaiter$8(void 0, void 0, void 0, function* () {
17219
+ yield adapter.askDevicePermission({ video: false, audio: true });
17220
+ if (props.micPermissionGranted) {
17221
+ adapter.queryMicrophones();
17222
+ adapter.querySpeakers();
17223
+ }
17224
+ }), strings: devicePermissionDropdownStringsMicrophone, icon: React__default['default'].createElement(CallCompositeIcon, { iconName: "ControlButtonMicOn", style: { height: '1.25rem', marginRight: '0.625rem' } }) }));
17225
+ /* @conditional-compile-remove(call-readiness) */
17226
+ return React__default['default'].createElement(React__default['default'].Fragment, null,
17227
+ " ",
17228
+ props.micPermissionGranted ? props.micGrantedDropdown : microphoneBlockedDropdown);
17229
+ };
17230
+
17050
17231
  // Copyright (c) Microsoft Corporation.
17051
17232
  const getDropDownList = (list) => {
17052
17233
  // Remove duplicates
@@ -17094,46 +17275,62 @@ const LocalDeviceSettings = (props) => {
17094
17275
  var _a;
17095
17276
  const theme = useTheme();
17096
17277
  const locale = useLocale();
17278
+ /* @conditional-compile-remove(call-readiness) */
17279
+ const adapter = useAdapter();
17097
17280
  const defaultPlaceHolder = locale.strings.call.defaultPlaceHolder;
17098
17281
  const cameraLabel = locale.strings.call.cameraLabel;
17099
17282
  const soundLabel = locale.strings.call.soundLabel;
17100
- let isSelectCamEnabled = props.cameraPermissionGranted;
17101
- let isSelectMicEnabled = props.microphonePermissionGranted;
17283
+ const cameraPermissionGranted = props.cameraPermissionGranted;
17284
+ const micPermissionGranted = props.microphonePermissionGranted;
17285
+ let roleCanUseCamera = true;
17286
+ let roleCanUseMic = true;
17102
17287
  /* @conditional-compile-remove(rooms) */
17103
- const permissions = _usePermissions();
17288
+ const rolePermissions = _usePermissions();
17104
17289
  /* @conditional-compile-remove(rooms) */
17105
- isSelectCamEnabled = isSelectCamEnabled && permissions.cameraButton;
17290
+ roleCanUseCamera = rolePermissions.cameraButton;
17106
17291
  /* @conditional-compile-remove(rooms) */
17107
- isSelectMicEnabled = isSelectMicEnabled && permissions.microphoneButton;
17292
+ roleCanUseMic = rolePermissions.microphoneButton;
17108
17293
  // TODO: speaker permission is tied to microphone permission (when you request 'audio' permission using the SDK) its
17109
17294
  // actually granting access to query both microphone and speaker. However the browser popup asks you explicity for
17110
17295
  // 'microphone'. This needs investigation on how we want to handle this and maybe needs follow up with SDK team.
17296
+ /* @conditional-compile-remove(call-readiness) */
17297
+ React.useEffect(() => {
17298
+ if (cameraPermissionGranted) {
17299
+ adapter.queryCameras();
17300
+ }
17301
+ if (micPermissionGranted) {
17302
+ adapter.queryMicrophones();
17303
+ }
17304
+ adapter.querySpeakers();
17305
+ }, [adapter, cameraPermissionGranted, micPermissionGranted]);
17306
+ const cameraGrantedDropdown = (React__default['default'].createElement(react.Dropdown, { "data-ui-id": "call-composite-local-camera-settings", "aria-labelledby": 'call-composite-local-camera-settings-label', placeholder: defaultPlaceHolder, options: cameraPermissionGranted ? getDropDownList(props.cameras) : [{ key: 'deniedOrUnknown', text: '' }], styles: dropDownStyles(theme), disabled: !cameraPermissionGranted, errorMessage: props.cameraPermissionGranted === undefined || props.cameraPermissionGranted
17307
+ ? undefined
17308
+ : locale.strings.call.cameraPermissionDenied, defaultSelectedKey: micPermissionGranted
17309
+ ? props.selectedCamera
17310
+ ? props.selectedCamera.id
17311
+ : props.cameras
17312
+ ? (_a = props.cameras[0]) === null || _a === void 0 ? void 0 : _a.id
17313
+ : ''
17314
+ : 'deniedOrUnknown', onChange: (event, option, index) => {
17315
+ props.onSelectCamera(props.cameras[index !== null && index !== void 0 ? index : 0], localVideoViewOptions);
17316
+ }, onRenderTitle: (props) => onRenderTitle('Camera', props) }));
17317
+ const micGrantedDropdown = (React__default['default'].createElement(React__default['default'].Fragment, null, roleCanUseMic && (React__default['default'].createElement(react.Dropdown, { "aria-labelledby": 'call-composite-local-sound-settings-label', placeholder: defaultPlaceHolder, styles: dropDownStyles(theme), disabled: !micPermissionGranted, errorMessage: props.microphonePermissionGranted === undefined || props.microphonePermissionGranted
17318
+ ? undefined
17319
+ : locale.strings.call.microphonePermissionDenied, options: micPermissionGranted ? getDropDownList(props.microphones) : [{ key: 'deniedOrUnknown', text: '' }], defaultSelectedKey: micPermissionGranted
17320
+ ? props.selectedMicrophone
17321
+ ? props.selectedMicrophone.id
17322
+ : defaultDeviceId(props.microphones)
17323
+ : 'deniedOrUnknown', onChange: (event, option, index) => {
17324
+ props.onSelectMicrophone(props.microphones[index !== null && index !== void 0 ? index : 0]);
17325
+ }, onRenderTitle: (props) => onRenderTitle('Microphone', props) }))));
17111
17326
  return (React__default['default'].createElement(react.Stack, { "data-ui-id": "call-composite-device-settings", tokens: mainStackTokens },
17112
- isSelectCamEnabled && (React__default['default'].createElement(react.Stack, null,
17113
- React__default['default'].createElement(react.Label, { id: 'call-composite-local-camera-settings-label', className: react.mergeStyles(dropDownStyles(theme).label), disabled: !isSelectCamEnabled }, cameraLabel),
17114
- React__default['default'].createElement(react.Dropdown, { "data-ui-id": "call-composite-local-camera-settings", "aria-labelledby": 'call-composite-local-camera-settings-label', placeholder: defaultPlaceHolder, options: isSelectCamEnabled ? getDropDownList(props.cameras) : [{ key: 'deniedOrUnknown', text: '' }], styles: dropDownStyles(theme), errorMessage: props.cameraPermissionGranted === undefined || props.cameraPermissionGranted
17115
- ? undefined
17116
- : locale.strings.call.cameraPermissionDenied, defaultSelectedKey: isSelectMicEnabled
17117
- ? props.selectedCamera
17118
- ? props.selectedCamera.id
17119
- : props.cameras
17120
- ? (_a = props.cameras[0]) === null || _a === void 0 ? void 0 : _a.id
17121
- : ''
17122
- : 'deniedOrUnknown', onChange: (event, option, index) => {
17123
- props.onSelectCamera(props.cameras[index !== null && index !== void 0 ? index : 0], localVideoViewOptions);
17124
- }, onRenderTitle: (props) => onRenderTitle('Camera', props) }))),
17327
+ roleCanUseCamera && (React__default['default'].createElement(react.Stack, null,
17328
+ React__default['default'].createElement(react.Label, { id: 'call-composite-local-camera-settings-label', className: react.mergeStyles(dropDownStyles(theme).label), disabled: !cameraPermissionGranted }, cameraLabel),
17329
+ React__default['default'].createElement(ConfigurationpageCameraDropdown, { cameraGrantedDropdown: cameraGrantedDropdown, cameraPermissionGranted: cameraPermissionGranted !== null && cameraPermissionGranted !== void 0 ? cameraPermissionGranted : false }))),
17125
17330
  React__default['default'].createElement(react.Stack, null,
17126
- React__default['default'].createElement(react.Label, { id: 'call-composite-local-sound-settings-label', className: react.mergeStyles(dropDownStyles(theme).label), disabled: !isSelectMicEnabled }, soundLabel),
17331
+ React__default['default'].createElement(react.Label, { id: 'call-composite-local-sound-settings-label', className: react.mergeStyles(dropDownStyles(theme).label), disabled: !micPermissionGranted }, soundLabel),
17127
17332
  React__default['default'].createElement(react.Stack, { "data-ui-id": "call-composite-sound-settings", tokens: mainStackTokens },
17128
- isSelectMicEnabled && (React__default['default'].createElement(react.Dropdown, { "aria-labelledby": 'call-composite-local-sound-settings-label', placeholder: defaultPlaceHolder, styles: dropDownStyles(theme), errorMessage: props.microphonePermissionGranted === undefined || props.microphonePermissionGranted
17129
- ? undefined
17130
- : locale.strings.call.microphonePermissionDenied, options: isSelectMicEnabled ? getDropDownList(props.microphones) : [{ key: 'deniedOrUnknown', text: '' }], defaultSelectedKey: isSelectMicEnabled
17131
- ? props.selectedMicrophone
17132
- ? props.selectedMicrophone.id
17133
- : defaultDeviceId(props.microphones)
17134
- : 'deniedOrUnknown', onChange: (event, option, index) => {
17135
- props.onSelectMicrophone(props.microphones[index !== null && index !== void 0 ? index : 0]);
17136
- }, onRenderTitle: (props) => onRenderTitle('Microphone', props) })),
17333
+ React__default['default'].createElement(ConfigurationpageMicDropdown, { micGrantedDropdown: micGrantedDropdown, micPermissionGranted: micPermissionGranted !== null && micPermissionGranted !== void 0 ? micPermissionGranted : false }),
17137
17334
  React__default['default'].createElement(react.Dropdown, { "aria-labelledby": 'call-composite-local-sound-settings-label', placeholder: defaultPlaceHolder, styles: dropDownStyles(theme), disabled: props.speakers.length === 0, options: getDropDownList(props.speakers), defaultSelectedKey: props.selectedSpeaker ? props.selectedSpeaker.id : defaultDeviceId(props.speakers), onChange: (event, option, index) => {
17138
17335
  props.onSelectSpeaker(props.speakers[index !== null && index !== void 0 ? index : 0]);
17139
17336
  }, onRenderTitle: (props) => onRenderTitle('Speaker', props) })))));
@@ -17389,8 +17586,8 @@ const startCallButtonStyleMobile = react.mergeStyles({
17389
17586
  * @private
17390
17587
  */
17391
17588
  const ConfigurationPage = (props) => {
17392
- var _a;
17393
- const { startCallHandler, mobileView } = props;
17589
+ var _a, _b;
17590
+ const { startCallHandler, mobileView, /* @conditional-compile-remove(call-readiness) */ devicePermissions } = props;
17394
17591
  const options = useAdaptedSelector(getSelector$1(DevicesButton));
17395
17592
  const localDeviceSettingsHandlers = useHandlers();
17396
17593
  const { video: cameraPermissionGranted, audio: microphonePermissionGranted } = useSelector$1(devicePermissionSelector);
@@ -17406,6 +17603,17 @@ const ConfigurationPage = (props) => {
17406
17603
  // because microphone device permission is not needed for the user's role
17407
17604
  disableStartCallButton = false;
17408
17605
  }
17606
+ /* @conditional-compile-remove(call-readiness) */
17607
+ // Overrides role permissions if CallCompositeOptions devicePermissions are set
17608
+ if (devicePermissions) {
17609
+ if (['doNotPrompt', 'optional'].includes(devicePermissions.camera) &&
17610
+ ['doNotPrompt', 'optional'].includes(devicePermissions.microphone)) {
17611
+ disableStartCallButton = false;
17612
+ }
17613
+ else if (devicePermissions.camera === 'required') {
17614
+ disableStartCallButton = !cameraPermissionGranted || ((_b = deviceState.cameras) === null || _b === void 0 ? void 0 : _b.length) === 0;
17615
+ }
17616
+ }
17409
17617
  const locale = useLocale();
17410
17618
  const title = (React__default['default'].createElement(react.Stack.Item, { className: mobileView ? titleContainerStyleMobile : titleContainerStyleDesktop }, locale.strings.call.configurationPageTitle));
17411
17619
  const callDescription = locale.strings.call.configurationPageCallDetails && (React__default['default'].createElement(react.Stack.Item, { className: mobileView ? callDetailsStyleMobile : callDetailsStyleDesktop }, locale.strings.call.configurationPageCallDetails));
@@ -17770,6 +17978,7 @@ var __awaiter$5 = (window && window.__awaiter) || function (thisArg, _arguments,
17770
17978
  });
17771
17979
  };
17772
17980
  const MainScreen = (props) => {
17981
+ var _a;
17773
17982
  const { callInvitationUrl, onRenderAvatar, onFetchAvatarPersonaData, onFetchParticipantMenuItems } = props;
17774
17983
  const page = useSelector$1(getPage);
17775
17984
  const adapter = useAdapter();
@@ -17788,7 +17997,9 @@ const MainScreen = (props) => {
17788
17997
  case 'configuration':
17789
17998
  pageElement = (React__default['default'].createElement(ConfigurationPage, { mobileView: props.mobileView, startCallHandler: () => {
17790
17999
  adapter.joinCall();
17791
- } }));
18000
+ },
18001
+ /* @conditional-compile-remove(call-readiness) */
18002
+ devicePermissions: (_a = props.options) === null || _a === void 0 ? void 0 : _a.devicePermissions }));
17792
18003
  break;
17793
18004
  case 'accessDeniedTeamsMeeting':
17794
18005
  pageElement = (React__default['default'].createElement(NoticePage, { iconName: "NoticePageAccessDeniedTeamsMeeting", title: locale.strings.call.failedToJoinTeamsMeetingReasonAccessDeniedTitle, moreDetails: locale.strings.call.failedToJoinTeamsMeetingReasonAccessDeniedMoreDetails, dataUiId: 'access-denied-teams-meeting-page' }));
@@ -17852,12 +18063,33 @@ const CallComposite = (props) => {
17852
18063
  adapter.querySpeakers();
17853
18064
  return;
17854
18065
  }
18066
+ /* @conditional-compile-remove(call-readiness) */
18067
+ if (options === null || options === void 0 ? void 0 : options.devicePermissions) {
18068
+ const videoPermission = (options === null || options === void 0 ? void 0 : options.devicePermissions.camera) !== 'doNotPrompt';
18069
+ const audioPermission = (options === null || options === void 0 ? void 0 : options.devicePermissions.microphone) !== 'doNotPrompt';
18070
+ yield adapter.askDevicePermission({
18071
+ video: videoPermission,
18072
+ audio: audioPermission
18073
+ });
18074
+ if (videoPermission) {
18075
+ adapter.queryCameras();
18076
+ }
18077
+ if (audioPermission) {
18078
+ adapter.queryMicrophones();
18079
+ }
18080
+ adapter.querySpeakers();
18081
+ return;
18082
+ }
17855
18083
  yield adapter.askDevicePermission({ video: true, audio: true });
17856
18084
  adapter.queryCameras();
17857
18085
  adapter.queryMicrophones();
17858
18086
  adapter.querySpeakers();
17859
18087
  }))();
17860
- }, [adapter, /* @conditional-compile-remove(rooms) */ role]);
18088
+ }, [
18089
+ adapter,
18090
+ /* @conditional-compile-remove(rooms) */ role,
18091
+ /* @conditional-compile-remove(call-readiness) */ options === null || options === void 0 ? void 0 : options.devicePermissions
18092
+ ]);
17861
18093
  const mobileView = formFactor === 'mobile';
17862
18094
  /* @conditional-compile-remove(one-to-n-calling) */
17863
18095
  const modalLayerHostId = reactHooks.useId('modalLayerhost');
@@ -17877,7 +18109,9 @@ const CallComposite = (props) => {
17877
18109
  // the Modal because the draggable bounds thinks it has no space and will always return to its initial position after dragging.
17878
18110
  // Additionally, this layer host cannot be in the Call Arrangement as it needs to be rendered before useMinMaxDragPosition() in
17879
18111
  // common/utils useRef is called.
17880
- // Warning: this is fragile and works because the call arrangement page is only rendered after the call has connected and thus this LayerHost will be guaranteed to have rendered (and subsequently mounted in the DOM). This ensures the DOM element will be available before the call to `document.getElementById(modalLayerHostId)` is made.
18112
+ // Warning: this is fragile and works because the call arrangement page is only rendered after the call has connected and thus this
18113
+ // LayerHost will be guaranteed to have rendered (and subsequently mounted in the DOM). This ensures the DOM element will be available
18114
+ // before the call to `document.getElementById(modalLayerHostId)` is made.
17881
18115
  /* @conditional-compile-remove(one-to-n-calling) */
17882
18116
  mobileView && React__default['default'].createElement(react.LayerHost, { id: modalLayerHostId, className: react.mergeStyles(modalLayerHostStyle) })))));
17883
18117
  };
@@ -18014,7 +18248,7 @@ class CallContext {
18014
18248
  this.emitter.off('callEnded', handler);
18015
18249
  }
18016
18250
  updateClientState(clientState) {
18017
- var _a, _b, _c;
18251
+ var _a;
18018
18252
  const call = this.callId ? clientState.calls[this.callId] : undefined;
18019
18253
  const latestEndedCall = findLatestEndedCall(clientState.callsEnded);
18020
18254
  // As the state is transitioning to a new state, trigger appropriate callback events.
@@ -18022,13 +18256,11 @@ class CallContext {
18022
18256
  const newPage = getCallCompositePage(call, latestEndedCall);
18023
18257
  if (!IsCallEndedPage(oldPage) && IsCallEndedPage(newPage)) {
18024
18258
  this.emitter.emit('callEnded', {
18025
- callId: this.callId,
18026
- callEndedCode: (_a = latestEndedCall === null || latestEndedCall === void 0 ? void 0 : latestEndedCall.callEndReason) === null || _a === void 0 ? void 0 : _a.code,
18027
- callEndedSubCode: (_b = latestEndedCall === null || latestEndedCall === void 0 ? void 0 : latestEndedCall.callEndReason) === null || _b === void 0 ? void 0 : _b.subCode
18259
+ callId: this.callId
18028
18260
  });
18029
18261
  }
18030
18262
  if (this.state.page) {
18031
- this.setState(Object.assign(Object.assign({}, this.state), { userId: clientState.userId, displayName: (_c = clientState.callAgent) === null || _c === void 0 ? void 0 : _c.displayName, call, page: newPage, endedCall: latestEndedCall, devices: clientState.deviceManager, latestErrors: clientState.latestErrors }));
18263
+ this.setState(Object.assign(Object.assign({}, this.state), { userId: clientState.userId, displayName: (_a = clientState.callAgent) === null || _a === void 0 ? void 0 : _a.displayName, call, page: newPage, endedCall: latestEndedCall, devices: clientState.deviceManager, latestErrors: clientState.latestErrors }));
18032
18264
  }
18033
18265
  }
18034
18266
  }
@@ -18343,10 +18575,10 @@ class AzureCommunicationCallAdapter {
18343
18575
  const idsToAdd = participants.map((participant) => {
18344
18576
  // FIXME: `onStartCall` does not allow a Teams user.
18345
18577
  // Need some way to return an error if a Teams user is provided.
18346
- const backendId = fromFlatCommunicationIdentifier(participant);
18578
+ const backendId = _toCommunicationIdentifier(participant);
18347
18579
  if (communicationCommon.isPhoneNumberIdentifier(backendId)) {
18348
18580
  if ((options === null || options === void 0 ? void 0 : options.alternateCallerId) === undefined) {
18349
- throw new Error('unable to start call, PSTN user present with no alternateCallerId.');
18581
+ throw new Error('Unable to start call, PSTN user present with no alternateCallerId.');
18350
18582
  }
18351
18583
  return backendId;
18352
18584
  }
@@ -18372,7 +18604,10 @@ class AzureCommunicationCallAdapter {
18372
18604
  }
18373
18605
  removeParticipant(userId) {
18374
18606
  return __awaiter$4(this, void 0, void 0, function* () {
18375
- this.handlers.onRemoveParticipant(userId);
18607
+ let participant = userId;
18608
+ /* @conditional-compile-remove(PSTN-calls) */
18609
+ participant = _toCommunicationIdentifier(userId);
18610
+ this.handlers.onRemoveParticipant(participant);
18376
18611
  });
18377
18612
  }
18378
18613
  /* @conditional-compile-remove(PSTN-calls) */
@@ -19155,7 +19390,10 @@ class CallWithChatBackedCallAdapter {
19155
19390
  };
19156
19391
  this.leaveCall = () => __awaiter$3(this, void 0, void 0, function* () { return yield this.callWithChatAdapter.leaveCall(); });
19157
19392
  this.startCall = (participants, options) => {
19158
- return this.callWithChatAdapter.startCall(participants, options);
19393
+ let communicationParticipants = participants;
19394
+ /* @conditional-compile-remove(PSTN-calls) */
19395
+ communicationParticipants = participants.map(_toCommunicationIdentifier);
19396
+ return this.callWithChatAdapter.startCall(communicationParticipants, options);
19159
19397
  };
19160
19398
  this.setCamera = (sourceId, options) => __awaiter$3(this, void 0, void 0, function* () { return yield this.callWithChatAdapter.setCamera(sourceId, options); });
19161
19399
  this.setMicrophone = (sourceId) => __awaiter$3(this, void 0, void 0, function* () { return yield this.callWithChatAdapter.setMicrophone(sourceId); });
@@ -19170,7 +19408,12 @@ class CallWithChatBackedCallAdapter {
19170
19408
  this.unmute = () => __awaiter$3(this, void 0, void 0, function* () { return yield this.callWithChatAdapter.unmute(); });
19171
19409
  this.startScreenShare = () => __awaiter$3(this, void 0, void 0, function* () { return yield this.callWithChatAdapter.startScreenShare(); });
19172
19410
  this.stopScreenShare = () => __awaiter$3(this, void 0, void 0, function* () { return yield this.callWithChatAdapter.stopScreenShare(); });
19173
- this.removeParticipant = (userId) => __awaiter$3(this, void 0, void 0, function* () { return yield this.callWithChatAdapter.removeParticipant(userId); });
19411
+ this.removeParticipant = (userId) => __awaiter$3(this, void 0, void 0, function* () {
19412
+ let participant = userId;
19413
+ /* @conditional-compile-remove(PSTN-calls) */
19414
+ participant = _toCommunicationIdentifier(userId);
19415
+ yield this.callWithChatAdapter.removeParticipant(participant);
19416
+ });
19174
19417
  this.createStreamView = (remoteUserId, options) => __awaiter$3(this, void 0, void 0, function* () { return yield this.callWithChatAdapter.createStreamView(remoteUserId, options); });
19175
19418
  this.disposeStreamView = (remoteUserId, options) => __awaiter$3(this, void 0, void 0, function* () { return yield this.callWithChatAdapter.disposeStreamView(remoteUserId, options); });
19176
19419
  /* @conditional-compile-remove(PSTN-calls) */
@@ -19564,7 +19807,8 @@ const CallWithChatPane = (props) => {
19564
19807
  React__default['default'].createElement(react.Stack.Item, { verticalFill: true, styles: scrollableContainerContents },
19565
19808
  React__default['default'].createElement(react.Stack, { styles: props.activePane === 'chat' ? availableSpaceStyles : hiddenStyles }, chatContent),
19566
19809
  React__default['default'].createElement(react.Stack, { styles: props.activePane === 'people' ? availableSpaceStyles : hiddenStyles }, peopleContent)))),
19567
- props.mobileView && (React__default['default'].createElement(ModalLocalAndRemotePIP, { callAdapter: props.callAdapter, modalLayerHostId: props.modalLayerHostId, hidden: hidden, styles: pipStyles, minDragPosition: minMaxDragPosition.minDragPosition, maxDragPosition: minMaxDragPosition.maxDragPosition })),
19810
+ props.mobileView && (React__default['default'].createElement(CallAdapterProvider, { adapter: props.callAdapter },
19811
+ React__default['default'].createElement(ModalLocalAndRemotePIP, { modalLayerHostId: props.modalLayerHostId, hidden: hidden, styles: pipStyles, minDragPosition: minMaxDragPosition.minDragPosition, maxDragPosition: minMaxDragPosition.maxDragPosition }))),
19568
19812
  drawerMenuItems.length > 0 && (React__default['default'].createElement(react.Stack, { styles: drawerContainerStyles$1 },
19569
19813
  React__default['default'].createElement(_DrawerMenu, { onLightDismiss: () => setDrawerMenuItems([]), items: drawerMenuItems })))));
19570
19814
  };
@@ -19692,7 +19936,11 @@ const CallWithChatScreen = (props) => {
19692
19936
  React__default['default'].createElement(react.Stack.Item, { grow: true, styles: callCompositeContainerStyles,
19693
19937
  // Perf: Instead of removing the video gallery from DOM, we hide it to prevent re-renders.
19694
19938
  style: callCompositeContainerCSS },
19695
- React__default['default'].createElement(CallComposite, Object.assign({}, props, { formFactor: formFactor, options: { callControls: false }, adapter: callAdapter, fluentTheme: fluentTheme }))),
19939
+ React__default['default'].createElement(CallComposite, Object.assign({}, props, { formFactor: formFactor, options: {
19940
+ callControls: false,
19941
+ /* @conditional-compile-remove(call-readiness) */
19942
+ devicePermissions: props.devicePermissions
19943
+ }, adapter: callAdapter, fluentTheme: fluentTheme }))),
19696
19944
  chatProps.adapter && callAdapter && hasJoinedCall && (React__default['default'].createElement(CallWithChatPane, { chatCompositeProps: chatProps, inviteLink: props.joinInvitationURL, onClose: closePane, chatAdapter: chatProps.adapter, callAdapter: callAdapter, onFetchAvatarPersonaData: props.onFetchAvatarPersonaData, onFetchParticipantMenuItems: props.onFetchParticipantMenuItems, onChatButtonClicked: showShowChatTabHeaderButton(props.callControls) ? selectChat : undefined, onPeopleButtonClicked: showShowPeopleTabHeaderButton(props.callControls) ? selectPeople : undefined, modalLayerHostId: modalLayerHostId, mobileView: mobileView, activePane: activePane,
19697
19945
  /* @conditional-compile-remove(file-sharing) */
19698
19946
  fileSharing: props.fileSharing, rtl: props.rtl, callControls: typeof props.callControls !== 'boolean' ? props.callControls : undefined }))),
@@ -19729,7 +19977,9 @@ const CallWithChatScreen = (props) => {
19729
19977
  const CallWithChatComposite = (props) => {
19730
19978
  const { adapter, fluentTheme, rtl, formFactor, joinInvitationURL, options } = props;
19731
19979
  return (React__default['default'].createElement(BaseProvider, { fluentTheme: fluentTheme, rtl: rtl, locale: props.locale, icons: props.icons },
19732
- React__default['default'].createElement(CallWithChatScreen, Object.assign({}, props, { callWithChatAdapter: adapter, formFactor: formFactor, callControls: options === null || options === void 0 ? void 0 : options.callControls, joinInvitationURL: joinInvitationURL, fluentTheme: fluentTheme,
19980
+ React__default['default'].createElement(CallWithChatScreen, Object.assign({}, props, {
19981
+ /* @conditional-compile-remove(call-readiness) */
19982
+ devicePermissions: options === null || options === void 0 ? void 0 : options.devicePermissions, callWithChatAdapter: adapter, formFactor: formFactor, callControls: options === null || options === void 0 ? void 0 : options.callControls, joinInvitationURL: joinInvitationURL, fluentTheme: fluentTheme,
19733
19983
  /* @conditional-compile-remove(file-sharing) */
19734
19984
  fileSharing: options === null || options === void 0 ? void 0 : options.fileSharing }))));
19735
19985
  };
@@ -19976,7 +20226,10 @@ class AzureCommunicationCallWithChatAdapter {
19976
20226
  }
19977
20227
  /** Start a new Call. */
19978
20228
  startCall(participants, options) {
19979
- return this.callAdapter.startCall(participants, options);
20229
+ let communicationParticipants = participants;
20230
+ /* @conditional-compile-remove(PSTN-calls) */
20231
+ communicationParticipants = participants.map(_toCommunicationIdentifier);
20232
+ return this.callAdapter.startCall(communicationParticipants, options);
19980
20233
  }
19981
20234
  /**
19982
20235
  * Subscribe to state change events.
@@ -20006,8 +20259,10 @@ class AzureCommunicationCallWithChatAdapter {
20006
20259
  /** Remove a participant from the Call only. */
20007
20260
  removeParticipant(userId) {
20008
20261
  return __awaiter(this, void 0, void 0, function* () {
20009
- // Only remove the participant from the GroupCall. Contoso must manage access to Chat.
20010
- yield this.callAdapter.removeParticipant(userId);
20262
+ let participant = userId;
20263
+ /* @conditional-compile-remove(PSTN-calls) */
20264
+ participant = _toCommunicationIdentifier(userId);
20265
+ yield this.callAdapter.removeParticipant(participant);
20011
20266
  });
20012
20267
  }
20013
20268
  setCamera(device, options) {
@@ -20575,6 +20830,7 @@ exports.TypingIndicator = TypingIndicator;
20575
20830
  exports.UnsupportedBrowser = UnsupportedBrowser;
20576
20831
  exports.VideoGallery = VideoGallery;
20577
20832
  exports.VideoTile = VideoTile;
20833
+ exports._DevicePermissionDropdown = _DevicePermissionDropdown;
20578
20834
  exports._IdentifierProvider = _IdentifierProvider;
20579
20835
  exports.createAzureCommunicationCallAdapter = createAzureCommunicationCallAdapter;
20580
20836
  exports.createAzureCommunicationCallAdapterFromClient = createAzureCommunicationCallAdapterFromClient;