@azure/communication-react 1.3.3-alpha-202209110016.0 → 1.3.3-alpha-202209150016.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 (75) hide show
  1. package/dist/communication-react.d.ts +62 -3
  2. package/dist/dist-cjs/communication-react/index.js +227 -72
  3. package/dist/dist-cjs/communication-react/index.js.map +1 -1
  4. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js +1 -1
  5. package/dist/dist-esm/acs-ui-common/src/telemetryVersion.js.map +1 -1
  6. package/dist/dist-esm/calling-component-bindings/src/handlers/createHandlers.d.ts +8 -4
  7. package/dist/dist-esm/calling-component-bindings/src/handlers/createHandlers.js +26 -5
  8. package/dist/dist-esm/calling-component-bindings/src/handlers/createHandlers.js.map +1 -1
  9. package/dist/dist-esm/calling-component-bindings/src/index.d.ts +1 -0
  10. package/dist/dist-esm/calling-component-bindings/src/index.js.map +1 -1
  11. package/dist/dist-esm/communication-react/src/index.d.ts +3 -0
  12. package/dist/dist-esm/communication-react/src/index.js +2 -0
  13. package/dist/dist-esm/communication-react/src/index.js.map +1 -1
  14. package/dist/dist-esm/react-components/src/components/CameraButton.js +1 -7
  15. package/dist/dist-esm/react-components/src/components/CameraButton.js.map +1 -1
  16. package/dist/dist-esm/react-components/src/components/DevicesButton.js +1 -11
  17. package/dist/dist-esm/react-components/src/components/DevicesButton.js.map +1 -1
  18. package/dist/dist-esm/react-components/src/components/DomainPermissions.d.ts +45 -0
  19. package/dist/dist-esm/react-components/src/components/DomainPermissions.js +42 -0
  20. package/dist/dist-esm/react-components/src/components/DomainPermissions.js.map +1 -0
  21. package/dist/dist-esm/react-components/src/components/MicrophoneButton.js +1 -5
  22. package/dist/dist-esm/react-components/src/components/MicrophoneButton.js.map +1 -1
  23. package/dist/dist-esm/react-components/src/components/ParticipantList.js +3 -6
  24. package/dist/dist-esm/react-components/src/components/ParticipantList.js.map +1 -1
  25. package/dist/dist-esm/react-components/src/components/ScreenShareButton.js +3 -8
  26. package/dist/dist-esm/react-components/src/components/ScreenShareButton.js.map +1 -1
  27. package/dist/dist-esm/react-components/src/components/index.d.ts +2 -0
  28. package/dist/dist-esm/react-components/src/components/index.js +2 -0
  29. package/dist/dist-esm/react-components/src/components/index.js.map +1 -1
  30. package/dist/dist-esm/react-components/src/components/styles/DomainPermissions.styles.d.ts +30 -0
  31. package/dist/dist-esm/react-components/src/components/styles/DomainPermissions.styles.js +74 -0
  32. package/dist/dist-esm/react-components/src/components/styles/DomainPermissions.styles.js.map +1 -0
  33. package/dist/dist-esm/react-components/src/localization/LocalizationProvider.d.ts +3 -0
  34. package/dist/dist-esm/react-components/src/localization/LocalizationProvider.js.map +1 -1
  35. package/dist/dist-esm/react-components/src/localization/locales/en-US/strings.json +5 -0
  36. package/dist/dist-esm/react-components/src/theming/icons.d.ts +1 -0
  37. package/dist/dist-esm/react-components/src/theming/icons.js +5 -1
  38. package/dist/dist-esm/react-components/src/theming/icons.js.map +1 -1
  39. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.d.ts +3 -3
  40. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js +6 -1
  41. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/AzureCommunicationCallAdapter.js.map +1 -1
  42. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/CallAdapter.d.ts +3 -2
  43. package/dist/dist-esm/react-composites/src/composites/CallComposite/adapter/CallAdapter.js.map +1 -1
  44. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallControls.js +16 -3
  45. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallControls.js.map +1 -1
  46. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/CallPane.js.map +1 -1
  47. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LocalDeviceSettings.js +5 -5
  48. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/LocalDeviceSettings.js.map +1 -1
  49. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Devices.js +18 -1
  50. package/dist/dist-esm/react-composites/src/composites/CallComposite/components/buttons/Devices.js.map +1 -1
  51. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/ConfigurationPage.js +17 -6
  52. package/dist/dist-esm/react-composites/src/composites/CallComposite/pages/ConfigurationPage.js.map +1 -1
  53. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.d.ts +2 -1
  54. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.js +4 -3
  55. package/dist/dist-esm/react-composites/src/composites/CallComposite/utils/Utils.js.map +1 -1
  56. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/CallWithChatPane.js.map +1 -1
  57. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.d.ts +3 -2
  58. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js +8 -1
  59. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/AzureCommunicationCallWithChatAdapter.js.map +1 -1
  60. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatAdapter.d.ts +3 -2
  61. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatAdapter.js.map +1 -1
  62. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.d.ts +3 -2
  63. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.js +13 -4
  64. package/dist/dist-esm/react-composites/src/composites/CallWithChatComposite/adapter/CallWithChatBackedCallAdapter.js.map +1 -1
  65. package/dist/dist-esm/react-composites/src/composites/common/AddPeopleButton.d.ts +2 -2
  66. package/dist/dist-esm/react-composites/src/composites/common/AddPeopleButton.js.map +1 -1
  67. package/dist/dist-esm/react-composites/src/composites/common/AddPeopleDropdown.d.ts +2 -2
  68. package/dist/dist-esm/react-composites/src/composites/common/AddPeopleDropdown.js.map +1 -1
  69. package/dist/dist-esm/react-composites/src/composites/common/CallingDialpad.d.ts +2 -2
  70. package/dist/dist-esm/react-composites/src/composites/common/CallingDialpad.js.map +1 -1
  71. package/dist/dist-esm/react-composites/src/composites/common/PeoplePaneContent.d.ts +2 -2
  72. package/dist/dist-esm/react-composites/src/composites/common/PeoplePaneContent.js +6 -11
  73. package/dist/dist-esm/react-composites/src/composites/common/PeoplePaneContent.js.map +1 -1
  74. package/dist/dist-esm/react-composites/src/composites/common/icons.d.ts +1 -0
  75. package/package.json +8 -8
@@ -192,7 +192,7 @@ const fromFlatCommunicationIdentifier = (id) => {
192
192
  // Copyright (c) Microsoft Corporation.
193
193
  // Licensed under the MIT license.
194
194
  // GENERATED FILE. DO NOT EDIT MANUALLY.
195
- var telemetryVersion = '1.3.3-alpha-202209110016.0';
195
+ var telemetryVersion = '1.3.3-alpha-202209150016.0';
196
196
 
197
197
  // Copyright (c) Microsoft Corporation.
198
198
  /**
@@ -752,11 +752,14 @@ const createDefaultCallingHandlers = memoizeOne__default['default']((callClient,
752
752
  });
753
753
  /* @conditional-compile-remove(PSTN-calls) */
754
754
  const onAddParticipant = (participant, options) => __awaiter$v(void 0, void 0, void 0, function* () {
755
- if (communicationCommon.isPhoneNumberIdentifier(participant)) {
756
- yield (call === null || call === void 0 ? void 0 : call.addParticipant(participant, options));
757
- }
758
- else if (communicationCommon.isCommunicationUserIdentifier(participant) || communicationCommon.isMicrosoftTeamsUserIdentifier(participant)) {
759
- yield (call === null || call === void 0 ? void 0 : call.addParticipant(participant));
755
+ const participantType = participantTypeHelper(participant);
756
+ switch (participantType) {
757
+ case 'PSTN':
758
+ yield (call === null || call === void 0 ? void 0 : call.addParticipant(participant, options));
759
+ break;
760
+ case 'ACS':
761
+ yield (call === null || call === void 0 ? void 0 : call.addParticipant(participant));
762
+ break;
760
763
  }
761
764
  });
762
765
  /* @conditional-compile-remove(dialpad) */ /* @conditional-compile-remove(PSTN-calls) */
@@ -802,6 +805,24 @@ const createDefaultCallingHandlers = memoizeOne__default['default']((callClient,
802
805
  const createDefaultCallingHandlersForComponent = (callClient, callAgent, deviceManager, call, _Component) => {
803
806
  return createDefaultCallingHandlers(callClient, callAgent, deviceManager, call);
804
807
  };
808
+ /* @conditional-compile-remove(PSTN-calls) */
809
+ /**
810
+ * Helper function for determining participant type.
811
+ */
812
+ const participantTypeHelper = (p) => {
813
+ if (communicationCommon.isPhoneNumberIdentifier(p)) {
814
+ return 'PSTN';
815
+ }
816
+ else if (communicationCommon.isCommunicationUserIdentifier(p)) {
817
+ return 'ACS';
818
+ }
819
+ else if (communicationCommon.isMicrosoftTeamsUserIdentifier(p)) {
820
+ return 'Teams';
821
+ }
822
+ else {
823
+ return 'unknown';
824
+ }
825
+ };
805
826
 
806
827
  // Copyright (c) Microsoft Corporation.
807
828
  /**
@@ -957,7 +978,7 @@ const typingIndicatorStringStyle = react.mergeStyles({
957
978
  wordBreak: 'break-word'
958
979
  });
959
980
 
960
- 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 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};
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 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};
961
982
 
962
983
  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};
963
984
 
@@ -1949,7 +1970,9 @@ const DEFAULT_COMPONENT_ICONS = {
1949
1970
  SendBoxSendHovered: React__default['default'].createElement(reactIcons.Send20Filled, null),
1950
1971
  VideoTileMicOff: React__default['default'].createElement(reactIcons.MicOff16Filled, null),
1951
1972
  /* @conditional-compile-remove(dialpad) */ /* @conditional-compile-remove(PSTN-calls) */
1952
- BackSpace: React__default['default'].createElement(reactIcons.Backspace20Regular, null)
1973
+ BackSpace: React__default['default'].createElement(reactIcons.Backspace20Regular, null),
1974
+ /* @conditional-compile-remove(call-readiness) */
1975
+ iconBackdrop: React__default['default'].createElement(reactIcons.Circle24Filled, null)
1953
1976
  };
1954
1977
 
1955
1978
  // Copyright (c) Microsoft Corporation.
@@ -4597,12 +4620,10 @@ const ParticipantList = (props) => {
4597
4620
  const createParticipantMenuItems = React.useCallback((participant) => {
4598
4621
  var _a, _b;
4599
4622
  let menuItems = [];
4600
- let disabled = !participant.isRemovable;
4623
+ let participantIsRemovable = participant.isRemovable;
4601
4624
  /* @conditional-compile-remove(rooms) */
4602
- const isRemovable = _usePermissions().removeParticipantButton;
4603
- /* @conditional-compile-remove(rooms) */
4604
- disabled = !isRemovable || disabled;
4605
- if (participant.userId !== myUserId && onRemoveParticipant) {
4625
+ participantIsRemovable = _usePermissions().removeParticipantButton && participantIsRemovable;
4626
+ if (participant.userId !== myUserId && onRemoveParticipant && participantIsRemovable) {
4606
4627
  menuItems.push({
4607
4628
  key: 'remove',
4608
4629
  text: strings.removeButtonLabel,
@@ -4610,7 +4631,6 @@ const ParticipantList = (props) => {
4610
4631
  itemProps: {
4611
4632
  styles: (_b = (_a = props.styles) === null || _a === void 0 ? void 0 : _a.participantItemStyles) === null || _b === void 0 ? void 0 : _b.participantSubMenuItemsStyles
4612
4633
  },
4613
- disabled: disabled,
4614
4634
  'data-ui-id': ids.participantListRemoveParticipantButton
4615
4635
  });
4616
4636
  }
@@ -6736,15 +6756,7 @@ const DevicesButton = (props) => {
6736
6756
  const { onRenderIcon } = props;
6737
6757
  const localeStrings = useLocale$1().strings.devicesButton;
6738
6758
  const strings = Object.assign(Object.assign({}, localeStrings), props.strings);
6739
- /* @conditional-compile-remove(rooms) */
6740
- const isSelectMicAllowed = _usePermissions().microphoneButton;
6741
- /* @conditional-compile-remove(rooms) */
6742
- const isSelectCamAllowed = _usePermissions().cameraButton;
6743
- 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,
6744
- /* @conditional-compile-remove(rooms) */
6745
- isSelectCamAllowed,
6746
- /* @conditional-compile-remove(rooms) */
6747
- isSelectMicAllowed);
6759
+ 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);
6748
6760
  const onRenderOptionsIcon = () => (React__default['default'].createElement(HighContrastAwareIcon, { disabled: props.disabled, iconName: "ControlButtonOptions" }));
6749
6761
  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' })));
6750
6762
  };
@@ -6778,11 +6790,7 @@ const CameraButton = (props) => {
6778
6790
  const localeStrings = useLocale$1().strings.cameraButton;
6779
6791
  const strings = Object.assign(Object.assign({}, localeStrings), props.strings);
6780
6792
  const [announcerString, setAnnouncerString] = React.useState(undefined);
6781
- let disabled = props.disabled || waitForCamera;
6782
- /* @conditional-compile-remove(rooms) */
6783
- const permissions = _usePermissions();
6784
- /* @conditional-compile-remove(rooms) */
6785
- disabled = disabled || !permissions.cameraButton;
6793
+ const disabled = props.disabled || waitForCamera;
6786
6794
  const onRenderCameraOnIcon = () => (React__default['default'].createElement(HighContrastAwareIcon, { disabled: disabled, iconName: "ControlButtonCameraOn" }));
6787
6795
  const onRenderCameraOffIcon = () => (React__default['default'].createElement(HighContrastAwareIcon, { disabled: disabled, iconName: "ControlButtonCameraOff" }));
6788
6796
  if (waitForCamera && strings.tooltipVideoLoadingContent) {
@@ -6952,11 +6960,9 @@ const MicrophoneButton = (props) => {
6952
6960
  // no mics but there are speakers, then only the primary part of the button should be disabled to allow for
6953
6961
  // speaker change.
6954
6962
  const primaryDisabled = props.primaryDisabled || (isSplit && !((_b = props.microphones) === null || _b === void 0 ? void 0 : _b.length) ? true : undefined);
6955
- let disabled = props.disabled ||
6963
+ const disabled = props.disabled ||
6956
6964
  (isSplit && !((_c = props.microphones) === null || _c === void 0 ? void 0 : _c.length) && !((_d = props.speakers) === null || _d === void 0 ? void 0 : _d.length)) ||
6957
6965
  (!isSplit && props.microphones && ((_e = props.microphones) === null || _e === void 0 ? void 0 : _e.length) === 0);
6958
- /* @conditional-compile-remove(rooms) */
6959
- disabled = !_usePermissions().microphoneButton || disabled;
6960
6966
  const onRenderMicOnIcon = () => {
6961
6967
  return React__default['default'].createElement(HighContrastAwareIcon, { disabled: disabled, iconName: "ControlButtonMicOn" });
6962
6968
  };
@@ -6987,6 +6993,109 @@ const MicrophoneButton = (props) => {
6987
6993
  : undefined), menuIconProps: ((_l = props.menuIconProps) !== null && _l !== void 0 ? _l : !props.enableDeviceSelectionMenu) ? { hidden: true } : undefined, split: (_m = props.split) !== null && _m !== void 0 ? _m : props.enableDeviceSelectionMenu, "aria-roledescription": props.enableDeviceSelectionMenu ? strings.microphoneButtonSplitRoleDescription : undefined, splitButtonAriaLabel: props.enableDeviceSelectionMenu ? splitButtonAriaString : undefined, disabled: disabled, primaryDisabled: primaryDisabled }))));
6988
6994
  };
6989
6995
 
6996
+ // Copyright (c) Microsoft Corporation.
6997
+ /**
6998
+ * @internal
6999
+ */
7000
+ const iconContainerStyles = {
7001
+ root: {
7002
+ margin: 'auto',
7003
+ position: 'relative'
7004
+ }
7005
+ };
7006
+ /**
7007
+ * @internal
7008
+ */
7009
+ const textContainerStyles = {
7010
+ root: {
7011
+ margin: 'auto',
7012
+ textAlign: 'center'
7013
+ }
7014
+ };
7015
+ /**
7016
+ * @internal
7017
+ */
7018
+ const iconPrimaryStyles = {
7019
+ root: {
7020
+ position: 'absolute',
7021
+ color: '#2B88D8',
7022
+ transform: 'scale(2)',
7023
+ zIndex: 1,
7024
+ margin: 'auto'
7025
+ }
7026
+ };
7027
+ /**
7028
+ * @internal
7029
+ */
7030
+ const iconBackDropStyles = {
7031
+ root: {
7032
+ color: '#EFF6FC',
7033
+ transform: 'scale(4)'
7034
+ }
7035
+ };
7036
+ /**
7037
+ * @internal
7038
+ */
7039
+ const primaryTextStyles = {
7040
+ root: {
7041
+ fontWeight: 600,
7042
+ fontSize: _pxToRem(20),
7043
+ lineHeight: _pxToRem(28),
7044
+ paddingBottom: '1rem'
7045
+ }
7046
+ };
7047
+ /**
7048
+ * @internal
7049
+ */
7050
+ const secondaryTextStyles$1 = {
7051
+ root: {
7052
+ margin: 'auto',
7053
+ fontWeight: 400,
7054
+ paddingBottom: '0.5rem'
7055
+ }
7056
+ };
7057
+ /**
7058
+ * @internal
7059
+ */
7060
+ const linkTextStyles = {
7061
+ root: {
7062
+ margin: 'auto',
7063
+ fontWeight: 600,
7064
+ textAlign: 'inherit'
7065
+ }
7066
+ };
7067
+
7068
+ // Copyright (c) Microsoft Corporation.
7069
+ /* @conditional-compile-remove(call-readiness) */
7070
+ const DomainPermissionsContainer = (props) => {
7071
+ const { appName, onTroubleshootingClick, strings } = props;
7072
+ return (React__default['default'].createElement(react.Stack, { style: { padding: '2rem', maxWidth: '25.375rem' } },
7073
+ React__default['default'].createElement(react.Stack, { horizontal: true, style: { padding: '2rem 0' }, horizontalAlign: 'space-between' },
7074
+ React__default['default'].createElement(react.Stack, { styles: iconContainerStyles, horizontalAlign: 'center' },
7075
+ React__default['default'].createElement(react.Icon, { styles: iconPrimaryStyles, iconName: 'ControlButtonCameraOn' }),
7076
+ React__default['default'].createElement(react.Icon, { styles: iconBackDropStyles, iconName: 'iconBackdrop' })),
7077
+ React__default['default'].createElement(react.Icon, { styles: iconPrimaryStyles, iconName: 'Sparkle' }),
7078
+ React__default['default'].createElement(react.Stack, { styles: iconContainerStyles, horizontalAlign: 'center' },
7079
+ React__default['default'].createElement(react.Icon, { styles: iconPrimaryStyles, iconName: 'ControlButtonMicOn' }),
7080
+ React__default['default'].createElement(react.Icon, { styles: iconBackDropStyles, iconName: 'iconBackdrop' }))),
7081
+ React__default['default'].createElement(react.Stack, { styles: textContainerStyles },
7082
+ React__default['default'].createElement(react.Text, { styles: primaryTextStyles }, _formatString(strings.primaryText, { appName: appName })),
7083
+ React__default['default'].createElement(react.Text, { styles: secondaryTextStyles$1 }, strings.secondaryText),
7084
+ React__default['default'].createElement(react.Link, { styles: linkTextStyles, onClick: onTroubleshootingClick }, strings.linkText))));
7085
+ };
7086
+ /**
7087
+ * @beta
7088
+ *
7089
+ * Component to allow Contoso to help their end user with their devices should their permissions be blocked
7090
+ * by their browsers settings.
7091
+ */
7092
+ const DomainPermissions = (props) => {
7093
+ /* @conditional-compile-remove(call-readiness) */
7094
+ const locale = useLocale$1().strings.DomainPermissions;
7095
+ /* @conditional-compile-remove(call-readiness) */
7096
+ return React__default['default'].createElement(DomainPermissionsContainer, Object.assign({}, props, { strings: locale }));
7097
+ };
7098
+
6990
7099
  // Copyright (c) Microsoft Corporation.
6991
7100
  /**
6992
7101
  * A button to show a menu with calling or chat participants.
@@ -7146,12 +7255,9 @@ const ScreenShareButton = (props) => {
7146
7255
  const strings = Object.assign(Object.assign({}, localeStrings), props.strings);
7147
7256
  const theme = react.useTheme();
7148
7257
  const styles = screenshareButtonStyles(theme);
7149
- let disabled = props.disabled;
7150
- /* @conditional-compile-remove(rooms) */
7151
- disabled = !_usePermissions().screenShare || disabled;
7152
- const onRenderScreenShareOnIcon = () => (React__default['default'].createElement(HighContrastAwareIcon, { disabled: disabled, iconName: "ControlButtonScreenShareStop" }));
7153
- const onRenderScreenShareOffIcon = () => (React__default['default'].createElement(HighContrastAwareIcon, { disabled: disabled, iconName: "ControlButtonScreenShareStart" }));
7154
- 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: disabled })));
7258
+ const onRenderScreenShareOnIcon = () => (React__default['default'].createElement(HighContrastAwareIcon, { disabled: props.disabled, iconName: "ControlButtonScreenShareStop" }));
7259
+ const onRenderScreenShareOffIcon = () => (React__default['default'].createElement(HighContrastAwareIcon, { disabled: props.disabled, iconName: "ControlButtonScreenShareStart" }));
7260
+ 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 })));
7155
7261
  };
7156
7262
  const screenshareButtonStyles = (theme) => ({
7157
7263
  rootChecked: {
@@ -14598,16 +14704,17 @@ const disableCallControls = (callControlOptions, disabledControls) => {
14598
14704
  };
14599
14705
  /**
14600
14706
  * Check if a disabled object is provided for a button and returns if the button is disabled.
14707
+ * A button is only disabled if is explicitly set to disabled.
14601
14708
  *
14602
14709
  * @param option
14603
14710
  * @returns whether a button is disabled
14604
14711
  * @private
14605
14712
  */
14606
14713
  const isDisabled$2 = (option) => {
14607
- if (typeof option !== 'boolean') {
14608
- return !!(option === null || option === void 0 ? void 0 : option.disabled);
14714
+ if (option === undefined || typeof option === 'boolean') {
14715
+ return false;
14609
14716
  }
14610
- return option;
14717
+ return option.disabled;
14611
14718
  };
14612
14719
 
14613
14720
  // Copyright (c) Microsoft Corporation.
@@ -14856,11 +14963,24 @@ const Devices = (props) => {
14856
14963
  var _a;
14857
14964
  return concatButtonBaseStyles(props.increaseFlyoutItemSize ? devicesButtonWithIncreasedTouchTargets : {}, (_a = props.styles) !== null && _a !== void 0 ? _a : {});
14858
14965
  }, [props.increaseFlyoutItemSize, props.styles]);
14966
+ /* @conditional-compile-remove(rooms) */
14967
+ const permissions = _usePermissions();
14968
+ /* @conditional-compile-remove(rooms) */
14969
+ const locale = useLocale();
14859
14970
  return (React__default['default'].createElement(DevicesButton
14860
14971
  /* By setting `persistMenu?` to true, we prevent options menu from getting hidden every time a participant joins or leaves. */
14861
14972
  , Object.assign({
14862
14973
  /* By setting `persistMenu?` to true, we prevent options menu from getting hidden every time a participant joins or leaves. */
14863
- persistMenu: true }, devicesButtonProps, { showLabel: props.displayType !== 'compact', styles: styles, "data-ui-id": "calling-composite-devices-button", disabled: props.disabled })));
14974
+ persistMenu: true }, devicesButtonProps, { showLabel: props.displayType !== 'compact', styles: styles, "data-ui-id": "calling-composite-devices-button", disabled: props.disabled,
14975
+ /* @conditional-compile-remove(rooms) */
14976
+ strings: getLabelFromPermissions(permissions, locale) })));
14977
+ };
14978
+ /* @conditional-compile-remove(rooms) */
14979
+ const getLabelFromPermissions = (permissions, locale) => {
14980
+ if (!permissions.cameraButton && !permissions.microphoneButton) {
14981
+ return { label: locale.component.strings.microphoneButton.speakerMenuTitle };
14982
+ }
14983
+ return undefined;
14864
14984
  };
14865
14985
 
14866
14986
  // Copyright (c) Microsoft Corporation.
@@ -15239,14 +15359,25 @@ const CallControls = (props) => {
15239
15359
  const onDismissDialpad = () => {
15240
15360
  setShowDialpad(false);
15241
15361
  };
15362
+ /* @conditional-compile-remove(rooms) */
15363
+ const rolePermissions = _usePermissions();
15364
+ let screenShareButtonIsEnabled = isEnabled$2(options === null || options === void 0 ? void 0 : options.screenShareButton);
15365
+ /* @conditional-compile-remove(rooms) */
15366
+ screenShareButtonIsEnabled = rolePermissions.screenShare && screenShareButtonIsEnabled;
15367
+ let microphoneButtonIsEnabled = isEnabled$2(options === null || options === void 0 ? void 0 : options.microphoneButton);
15368
+ /* @conditional-compile-remove(rooms) */
15369
+ microphoneButtonIsEnabled = rolePermissions.microphoneButton && microphoneButtonIsEnabled;
15370
+ let cameraButtonIsEnabled = isEnabled$2(options === null || options === void 0 ? void 0 : options.cameraButton);
15371
+ /* @conditional-compile-remove(rooms) */
15372
+ cameraButtonIsEnabled = rolePermissions.cameraButton && cameraButtonIsEnabled;
15242
15373
  return (React__default['default'].createElement(react.Stack, { horizontalAlign: "center" },
15243
15374
  /* @conditional-compile-remove(PSTN-calls) */
15244
15375
  React__default['default'].createElement(SendDtmfDialpad, { isMobile: !!props.isMobile, strings: dialpadStrings, showDialpad: showDialpad, onDismissDialpad: onDismissDialpad }),
15245
15376
  React__default['default'].createElement(react.Stack.Item, null,
15246
15377
  React__default['default'].createElement(ControlBar, { layout: "horizontal", styles: controlBarStyles(theme.semanticColors.bodyBackground) },
15247
- isEnabled$2(options === null || options === void 0 ? void 0 : options.microphoneButton) && (React__default['default'].createElement(Microphone, { displayType: options === null || options === void 0 ? void 0 : options.displayType, disabled: isDisabled$2(options === null || options === void 0 ? void 0 : options.microphoneButton) })),
15248
- isEnabled$2(options === null || options === void 0 ? void 0 : options.cameraButton) && (React__default['default'].createElement(Camera, { displayType: options === null || options === void 0 ? void 0 : options.displayType, disabled: isDisabled$2(options === null || options === void 0 ? void 0 : options.cameraButton) })),
15249
- isEnabled$2(options === null || options === void 0 ? void 0 : options.screenShareButton) && (React__default['default'].createElement(ScreenShare, { option: options === null || options === void 0 ? void 0 : options.screenShareButton, displayType: options === null || options === void 0 ? void 0 : options.displayType, disabled: isDisabled$2(options === null || options === void 0 ? void 0 : options.screenShareButton) })),
15378
+ microphoneButtonIsEnabled && (React__default['default'].createElement(Microphone, { displayType: options === null || options === void 0 ? void 0 : options.displayType, disabled: isDisabled$2(options === null || options === void 0 ? void 0 : options.microphoneButton) })),
15379
+ cameraButtonIsEnabled && (React__default['default'].createElement(Camera, { displayType: options === null || options === void 0 ? void 0 : options.displayType, disabled: isDisabled$2(options === null || options === void 0 ? void 0 : options.cameraButton) })),
15380
+ screenShareButtonIsEnabled && (React__default['default'].createElement(ScreenShare, { option: options === null || options === void 0 ? void 0 : options.screenShareButton, displayType: options === null || options === void 0 ? void 0 : options.displayType, disabled: isDisabled$2(options === null || options === void 0 ? void 0 : options.screenShareButton) })),
15250
15381
  isEnabled$2(options === null || options === void 0 ? void 0 : options.participantsButton) &&
15251
15382
  /* @conditional-compile-remove(one-to-n-calling) */ /* @conditional-compile-remove(PSTN-calls) */
15252
15383
  !props.isMobile && (React__default['default'].createElement(Participants, { option: options === null || options === void 0 ? void 0 : options.participantsButton, callInvitationURL: props.callInvitationURL, onFetchParticipantMenuItems: props.onFetchParticipantMenuItems, displayType: options === null || options === void 0 ? void 0 : options.displayType, increaseFlyoutItemSize: props.increaseFlyoutItemSize, isMobile: props.isMobile, disabled: isDisabled$2(options === null || options === void 0 ? void 0 : options.participantsButton) })) && (
@@ -15966,11 +16097,11 @@ var __awaiter$9 = (window && window.__awaiter) || function (thisArg, _arguments,
15966
16097
  const PeoplePaneContent = (props) => {
15967
16098
  const { inviteLink, onFetchParticipantMenuItems, setDrawerMenuItems, strings, onRemoveParticipant } = props;
15968
16099
  const participantListDefaultProps = usePropsFor$1(ParticipantList);
15969
- const disableRemoveButton = !hasRemoveParticipantsPermissionTrampoline();
16100
+ const removeButtonAllowed = hasRemoveParticipantsPermissionTrampoline();
15970
16101
  const setDrawerMenuItemsForParticipant = React.useMemo(() => {
15971
16102
  return (participant) => {
15972
16103
  if (participant) {
15973
- let contextualMenuItems = createDefaultContextualMenuItems(participant, strings, participantListDefaultProps.onRemoveParticipant, participantListDefaultProps.myUserId, disableRemoveButton);
16104
+ let contextualMenuItems = createDefaultContextualMenuItems(participant, strings, removeButtonAllowed ? participantListDefaultProps.onRemoveParticipant : undefined, participantListDefaultProps.myUserId);
15974
16105
  if (onFetchParticipantMenuItems) {
15975
16106
  contextualMenuItems = onFetchParticipantMenuItems(participant.userId, participantListDefaultProps.myUserId, contextualMenuItems);
15976
16107
  }
@@ -15982,7 +16113,7 @@ const PeoplePaneContent = (props) => {
15982
16113
  strings,
15983
16114
  participantListDefaultProps.onRemoveParticipant,
15984
16115
  participantListDefaultProps.myUserId,
15985
- disableRemoveButton,
16116
+ removeButtonAllowed,
15986
16117
  onFetchParticipantMenuItems,
15987
16118
  setDrawerMenuItems
15988
16119
  ]);
@@ -16018,13 +16149,9 @@ const PeoplePaneContent = (props) => {
16018
16149
  * @param localParticipantUserId - Local participant user id
16019
16150
  * @returns - IContextualMenuItem[]
16020
16151
  */
16021
- const createDefaultContextualMenuItems = (participant, strings, onRemoveParticipant, localParticipantUserId, disableRemoveButton) => {
16022
- let disabled = !participant.isRemovable;
16023
- if (disableRemoveButton) {
16024
- disabled = disabled || disableRemoveButton;
16025
- }
16152
+ const createDefaultContextualMenuItems = (participant, strings, onRemoveParticipant, localParticipantUserId) => {
16026
16153
  const menuItems = [];
16027
- if ((participant === null || participant === void 0 ? void 0 : participant.userId) !== localParticipantUserId) {
16154
+ if (onRemoveParticipant && (participant === null || participant === void 0 ? void 0 : participant.userId) !== localParticipantUserId) {
16028
16155
  menuItems.push({
16029
16156
  key: 'remove',
16030
16157
  text: strings.removeMenuLabel,
@@ -16035,8 +16162,7 @@ const createDefaultContextualMenuItems = (participant, strings, onRemoveParticip
16035
16162
  },
16036
16163
  iconProps: {
16037
16164
  iconName: 'UserRemove'
16038
- },
16039
- disabled: disabled
16165
+ }
16040
16166
  });
16041
16167
  }
16042
16168
  return menuItems;
@@ -16804,9 +16930,9 @@ const LocalDeviceSettings = (props) => {
16804
16930
  // actually granting access to query both microphone and speaker. However the browser popup asks you explicity for
16805
16931
  // 'microphone'. This needs investigation on how we want to handle this and maybe needs follow up with SDK team.
16806
16932
  return (React__default['default'].createElement(react.Stack, { "data-ui-id": "call-composite-device-settings", tokens: mainStackTokens },
16807
- React__default['default'].createElement(react.Stack, null,
16933
+ isSelectCamEnabled && (React__default['default'].createElement(react.Stack, null,
16808
16934
  React__default['default'].createElement(react.Label, { id: 'call-composite-local-camera-settings-label', className: react.mergeStyles(dropDownStyles(theme).label), disabled: !isSelectCamEnabled }, cameraLabel),
16809
- 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), disabled: !isSelectCamEnabled, errorMessage: props.cameraPermissionGranted === undefined || props.cameraPermissionGranted
16935
+ 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
16810
16936
  ? undefined
16811
16937
  : locale.strings.call.cameraPermissionDenied, defaultSelectedKey: isSelectMicEnabled
16812
16938
  ? props.selectedCamera
@@ -16816,11 +16942,11 @@ const LocalDeviceSettings = (props) => {
16816
16942
  : ''
16817
16943
  : 'deniedOrUnknown', onChange: (event, option, index) => {
16818
16944
  props.onSelectCamera(props.cameras[index !== null && index !== void 0 ? index : 0], localVideoViewOptions);
16819
- }, onRenderTitle: (props) => onRenderTitle('Camera', props) })),
16945
+ }, onRenderTitle: (props) => onRenderTitle('Camera', props) }))),
16820
16946
  React__default['default'].createElement(react.Stack, null,
16821
16947
  React__default['default'].createElement(react.Label, { id: 'call-composite-local-sound-settings-label', className: react.mergeStyles(dropDownStyles(theme).label), disabled: !isSelectMicEnabled }, soundLabel),
16822
16948
  React__default['default'].createElement(react.Stack, { "data-ui-id": "call-composite-sound-settings", tokens: mainStackTokens },
16823
- React__default['default'].createElement(react.Dropdown, { "aria-labelledby": 'call-composite-local-sound-settings-label', placeholder: defaultPlaceHolder, styles: dropDownStyles(theme), disabled: !isSelectMicEnabled, errorMessage: props.microphonePermissionGranted === undefined || props.microphonePermissionGranted
16949
+ 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
16824
16950
  ? undefined
16825
16951
  : locale.strings.call.microphonePermissionDenied, options: isSelectMicEnabled ? getDropDownList(props.microphones) : [{ key: 'deniedOrUnknown', text: '' }], defaultSelectedKey: isSelectMicEnabled
16826
16952
  ? props.selectedMicrophone
@@ -16828,7 +16954,7 @@ const LocalDeviceSettings = (props) => {
16828
16954
  : defaultDeviceId(props.microphones)
16829
16955
  : 'deniedOrUnknown', onChange: (event, option, index) => {
16830
16956
  props.onSelectMicrophone(props.microphones[index !== null && index !== void 0 ? index : 0]);
16831
- }, onRenderTitle: (props) => onRenderTitle('Microphone', props) }),
16957
+ }, onRenderTitle: (props) => onRenderTitle('Microphone', props) })),
16832
16958
  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) => {
16833
16959
  props.onSelectSpeaker(props.speakers[index !== null && index !== void 0 ? index : 0]);
16834
16960
  }, onRenderTitle: (props) => onRenderTitle('Speaker', props) })))));
@@ -17104,22 +17230,33 @@ const ConfigurationPage = (props) => {
17104
17230
  const locale = useLocale();
17105
17231
  const title = (React__default['default'].createElement(react.Stack.Item, { className: mobileView ? titleContainerStyleMobile : titleContainerStyleDesktop }, locale.strings.call.configurationPageTitle));
17106
17232
  const callDescription = locale.strings.call.configurationPageCallDetails && (React__default['default'].createElement(react.Stack.Item, { className: mobileView ? callDetailsStyleMobile : callDetailsStyleDesktop }, locale.strings.call.configurationPageCallDetails));
17233
+ let mobileWithPreview = mobileView;
17234
+ /* @conditional-compile-remove(rooms) */
17235
+ mobileWithPreview = mobileWithPreview && rolePermissions.cameraButton;
17107
17236
  return (React__default['default'].createElement(react.Stack, { className: mobileView ? configurationContainerStyleMobile : configurationContainerStyleDesktop },
17108
17237
  React__default['default'].createElement(react.Stack, { styles: bannerNotificationStyles },
17109
17238
  React__default['default'].createElement(ErrorBar, Object.assign({}, errorBarProps))),
17110
- React__default['default'].createElement(react.Stack, { grow: true, horizontal: !mobileView, horizontalAlign: mobileView ? 'stretch' : 'center', verticalAlign: "center", tokens: mobileView ? configurationStackTokensMobile : configurationStackTokensDesktop },
17111
- mobileView && (React__default['default'].createElement(react.Stack.Item, null,
17239
+ React__default['default'].createElement(react.Stack, { grow: true, horizontal: !mobileWithPreview, horizontalAlign: mobileWithPreview ? 'stretch' : 'center', verticalAlign: "center", tokens: mobileWithPreview ? configurationStackTokensMobile : configurationStackTokensDesktop },
17240
+ mobileWithPreview && (React__default['default'].createElement(react.Stack.Item, null,
17112
17241
  title,
17113
17242
  callDescription)),
17114
- React__default['default'].createElement(LocalPreview, { mobileView: mobileView, showDevicesButton: mobileView }),
17243
+ localPreviewTrampoline(mobileWithPreview,
17244
+ /* @conditional-compile-remove(rooms) */ !rolePermissions.cameraButton),
17115
17245
  React__default['default'].createElement(react.Stack, { className: mobileView ? undefined : selectionContainerStyle },
17116
- !mobileView && (React__default['default'].createElement(React__default['default'].Fragment, null,
17246
+ !mobileWithPreview && (React__default['default'].createElement(React__default['default'].Fragment, null,
17117
17247
  React__default['default'].createElement(react.Stack.Item, { styles: callDetailsContainerStylesDesktop },
17118
17248
  title,
17119
17249
  callDescription),
17120
17250
  React__default['default'].createElement(LocalDeviceSettings, Object.assign({}, options, localDeviceSettingsHandlers, { cameraPermissionGranted: cameraPermissionGranted, microphonePermissionGranted: microphonePermissionGranted })))),
17121
- React__default['default'].createElement(react.Stack, { styles: mobileView ? startCallButtonContainerStyleMobile : startCallButtonContainerStyleDesktop },
17122
- React__default['default'].createElement(StartCallButton, { className: mobileView ? startCallButtonStyleMobile : undefined, onClick: startCallHandler, disabled: disableStartCallButton }))))));
17251
+ React__default['default'].createElement(react.Stack, { styles: mobileWithPreview ? startCallButtonContainerStyleMobile : startCallButtonContainerStyleDesktop },
17252
+ React__default['default'].createElement(StartCallButton, { className: mobileWithPreview ? startCallButtonStyleMobile : undefined, onClick: startCallHandler, disabled: disableStartCallButton }))))));
17253
+ };
17254
+ const localPreviewTrampoline = (mobileView, doNotShow) => {
17255
+ /* @conditional-compile-remove(rooms) */
17256
+ if (doNotShow) {
17257
+ return undefined;
17258
+ }
17259
+ return React__default['default'].createElement(LocalPreview, { mobileView: mobileView, showDevicesButton: mobileView });
17123
17260
  };
17124
17261
 
17125
17262
  // Copyright (c) Microsoft Corporation.
@@ -18052,7 +18189,12 @@ class AzureCommunicationCallAdapter {
18052
18189
  /* @conditional-compile-remove(PSTN-calls) */
18053
18190
  addParticipant(participant, options) {
18054
18191
  return __awaiter$4(this, void 0, void 0, function* () {
18055
- this.handlers.onAddParticipant(participant, options);
18192
+ if (communicationCommon.isPhoneNumberIdentifier(participant) && options) {
18193
+ this.handlers.onAddParticipant(participant, options);
18194
+ }
18195
+ else if (communicationCommon.isCommunicationUserIdentifier(participant)) {
18196
+ this.handlers.onAddParticipant(participant);
18197
+ }
18056
18198
  });
18057
18199
  }
18058
18200
  /* @conditional-compile-remove(PSTN-calls) */
@@ -18851,15 +18993,22 @@ class CallWithChatBackedCallAdapter {
18851
18993
  yield this.callWithChatAdapter.resumeCall();
18852
18994
  });
18853
18995
  /* @conditional-compile-remove(PSTN-calls) */
18854
- this.addParticipant = (participant, options) => __awaiter$3(this, void 0, void 0, function* () {
18855
- yield this.callWithChatAdapter.addParticipant(participant, options);
18856
- });
18857
- /* @conditional-compile-remove(PSTN-calls) */
18858
18996
  this.sendDtmfTone = (dtmfTone) => __awaiter$3(this, void 0, void 0, function* () {
18859
18997
  yield this.callWithChatAdapter.sendDtmfTone(dtmfTone);
18860
18998
  });
18861
18999
  this.callWithChatAdapter = callWithChatAdapter;
18862
19000
  }
19001
+ /* @conditional-compile-remove(PSTN-calls) */
19002
+ addParticipant(participant, options) {
19003
+ return __awaiter$3(this, void 0, void 0, function* () {
19004
+ if (communicationCommon.isPhoneNumberIdentifier(participant) && options) {
19005
+ return this.callWithChatAdapter.addParticipant(participant, options);
19006
+ }
19007
+ else {
19008
+ return this.callWithChatAdapter.addParticipant(participant);
19009
+ }
19010
+ });
19011
+ }
18863
19012
  }
18864
19013
  function callAdapterStateFromCallWithChatAdapterState(callWithChatAdapterState) {
18865
19014
  return {
@@ -19817,7 +19966,12 @@ class AzureCommunicationCallWithChatAdapter {
19817
19966
  /* @conditional-compile-remove(PSTN-calls) */
19818
19967
  addParticipant(participant, options) {
19819
19968
  return __awaiter(this, void 0, void 0, function* () {
19820
- return yield this.callAdapter.addParticipant(participant, options);
19969
+ if (communicationCommon.isCommunicationUserIdentifier(participant)) {
19970
+ return yield this.callAdapter.addParticipant(participant);
19971
+ }
19972
+ else {
19973
+ return yield this.callAdapter.addParticipant(participant, options);
19974
+ }
19821
19975
  });
19822
19976
  }
19823
19977
  /* @conditional-compile-remove(PSTN-calls) */
@@ -20212,6 +20366,7 @@ exports.DEFAULT_COMPONENT_ICONS = DEFAULT_COMPONENT_ICONS;
20212
20366
  exports.DEFAULT_COMPOSITE_ICONS = DEFAULT_COMPOSITE_ICONS;
20213
20367
  exports.DevicesButton = DevicesButton;
20214
20368
  exports.Dialpad = Dialpad;
20369
+ exports.DomainPermissions = DomainPermissions;
20215
20370
  exports.EndCallButton = EndCallButton;
20216
20371
  exports.ErrorBar = ErrorBar;
20217
20372
  exports.FluentThemeProvider = FluentThemeProvider;